Intro to Steps - raisercostin/software-wiki GitHub Wiki

There are several activities in software development

  • requirements => list of requirements
    • List of random, unconnected things that might be needed on a topic. Facts desired from the software.
    • dimensions/attributes on each requirement
      • they must have priority based on impact
      • needed
      • not in scope - to be explicit on what is NOT needed
    • sources of information
      • previous work
        • other requirements, specs, designs, implementations
      • interviews with some stakeholders
        • they are gathered from all stakeholders (everybody that have a saying related to the final product)
          • payers - who pays for the product
          • users - who will use the end product
            • there are multiple roles for the users
        • users' managers - who think that they will use the product but will not
  • analysis => specification
    • high level ideal spec
      • How an ideal possible system implementing all requirements (because infinite funds and time) would look like. Not under the hood. How will be used? -> High level specification -> Consistency (forces decision between contradictory things)
      • This is how the ideal system should be.
      • Steps
        • Analysis
        • Publish Specification (and the requirements that supports) - document the specification as an issue task list ?
        • Incorporate feedback from team, and eventually modify requirements and start with analysis again.
          • The feedback can be perceived as new requirements items added to the problem
    • Low level MVP spec
      • What should be done from a practical viewpoint. What is doable taking into consideration the finite funds, time and knowledge.
    • Low level next stages specs
      • DO not do this. YAGNI.
  • design
    • How the system will be constructed top-down based on what needs to be done
    • MVP design
      • Based on MVP Specification, considering the impact of the Ideal Specification as design forces but keep in mind YAGNI.
  • coding

spec1 = analysis(req1)
spec2 = combine(spec1,analysis(req2)) - combine checks any inconsistencies
spec3 = combine(spec2,analysis(req3)) - combine checks any inconsistencies