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
- they are gathered from all stakeholders (everybody that have a saying related to the final product)
- previous work
- 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.
- high level ideal spec
- 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