1.6 Software Development Flashcards
Software Development Life Cycles
Analysis Stage: Stakeholders input product requirements
- Define problem & system requirements by:
- Analysing current problem-solving methods
- Considering data types & volume
Design Stage: New system aspects designed, including:
Inputs, Outputs, Security features, Hardware setup, User interface & Creation of a test plan
Development Stage:
- Use design to break project into modules
- Allocate modules to teams for programming
Testing Stage: Various types of testing conducted:
- Alpha testing: In-house, bug identification
- Beta testing: End-user feedback
- White box testing: All possible routes tested
- Black box testing: Input-output testing
Implementation Stage: Software installed after necessary testing
Evaluation Stage: Assess software effectiveness against defined requirements
- Consider criteria like robustness, reliability, portability, maintainability
Maintenance Stage: End-user feedback for errors/improvements
- Regular software updates for bug fixes, security, and improvements
Waterfall Lifecycle
- Software development follows sequential series of stages from start to finish
- Analysis Stage: Includes a feasibility study using ‘TELOS’ (Technical, Economic, Legal, Operational, Scheduling) to evaluate project feasibility
- Inflexible, unsuitable for projects w/ changing requirements.
- User involvement limited to initial & final stages
- Stages progress linearly, cannot revisit prior stages easily-
- Used for low risk, general purpose software
Agile Methodologies
- Collection of methodologies that enhance development flexibility & adaptability to user requirement changes
- Different stages developed simultaneously (E.g design & analysis)
- Delivery of a working prototype w/ iterative improvements
- Poor documentation, requires consistent interaction
- Used for small-medium projects
Extreme Programming
- Agile model focused on a pair of programmers working w/ end-user representative
- System requirements based on “user stories” provided by end-users, guiding program design
- Enhances code quality through continuous critique & improvement during code writing
- Each cycle iteration results in “working version” of program
- High-quality code, high usability
- Effective communication is vital, High cost
- Small-med projects w/ high useability
Spiral
- Aimed at managing high-risk projects effectively through four key stages:
- Analyzing system requirements
- Identifying & mitigating risks
- Development, testing, & implementation
- Evaluating to guide next iteration
- Thorough risk analysis, caters to changing needs
- Expensive, lack of focus on code efficiency
- Suited for very large-scale projects due to its cost-intensive nature
Rapid Application Development (RAD)
- Iterative methodology useing partially functioning prototypes that are continually built-upon
- User requirements initially gathered w/ focus groups & used to develop an ‘incomplete’ version of the solution given to the user to trial
- Feedback used to generate the improved prototype, continuing until prototype matches requirements, becoming the final product
- Caters to changing user requirments
- Poor documentation, fast pace reduces code quality
- Small-med low budget projects w/ short time frames