The Software Process Flashcards
The Software Process
- Specification
- Architecture
- Design
- Implementation
- Testing
- Evolution
Types of Approaches
- Plan-driven
- Agile
- Hybrid (most realistic)
Plan-Driven Approach
Phased, software works only in final phase, overhead communication, testing only at final stage, predictive planning
Agile Approach
Iterative and incremental, always have MVP, less overhead communication, validation driven, adaptive planning
Software Process Model Examples
- Waterfall model
- Incremental development
- Reuse-oriented SWE
The Waterfall Model
Linear and plan driven.
PROS: Used mostly for large projects.
CONS: Inflexible for responding to changing customer requirements. Working program only available at end of process.
Incremental Development
Multiple concurrent activities.
PROS: Can easily accommodate changing customer requirements. Consistent feedback loop. Usable software is available early in the process.
CONS: Process not visible. System structure can degrade over time if initial is low quality. Hard to define common features.
Prototyping Model
Involves creating and possible dumping many designs to find optimal one.
PROS: Improved usability, matches user needs, high design quality, high maintainability, reduced development effort
CONS: not working product may confuse customer, implementation compromises to get quick model
Spiral Model
Each loop is a phase in process, no fixed phases (like specs or design) can be chosen by team, risk assessment is integral part of process
CONS: hard to convince customers that process is controllable, requires risk management expertise
Specification Phase
- Feasibility study
- Requirements elicitation/analysis
- Requirements specification
- Requirements validation
Architecture Phase
Create level of abstraction between:
- User needs/requirements
- Design Elements (data structures & algorithms)
Layered Architecture
All components in separate layers. Most important in core. Outer layers must communicate w all layers before getting to core.
Design and Implementation Phase
Converting system specs to executable system
Testing Phase
Uses VERIFICATION and VALIDATION. Testing the entire system.
Verification
Is the system built the right way? Meets requirements, right process, meets standards.