SDLC
Software Development Lifecycle
- Analysis = Gathering and document requirements
- Design = System architecture: components/modules
- Implementation = Code the modules
- Testing = Verification that they meet the specification
- Maintenance = Any evolution after initial deployment
Waterfall process for software dev
- Do each phase in order
- Each completes before starting next phase
- Outputs of one phase are inputs to next phase
A few agile techniques
Analysis
Gathering and documenting requirements.
- Identify the stakeholders.
- Users of system. Also there can be different categories of users:
- Administrative users, end users, power users
- Investors/owners
- Dev staff, incl maintenance/operations
- Functional requirements
- What the system has to DO
- “Functionality”
- vs Non-functional requirements
- Constraints on the development/operation of system
- aka the “-ilities”
- Reliability
- Availability (“uptime”)
- Usability = “user-friendly”
- Consistency
- Applicability
- Efficiency
- Utility
- Readability
- Maintainability
- Vulnerability (security)
- Scalability = How much data/ how many users can it support?
Want requirements to be specific, realistic, testable.
Part of being specific is that they should be quantified (especially the ilities). Here are some examples of quantification
- Availability: 99% vs 99.9% vs 99.99% “nines”
- Usability: what kind(s) of users, how long should it take them to become proficient?
- Efficiency: eg, process \(N\) GB data in \(M\) seconds