Software Development Life Cycle Models and Methodologies
Evolutionary Model
This model focuses on early product delivery and continuous evolution. It’s suitable for systems expecting changes throughout their lifespan, where requirements are difficult to stabilize initially. The project cycle becomes the life cycle.
Disadvantages
- Lack of planning
- Poorly structured software production
- Difficult code modification due to premature system analysis
- Integration challenges with other applications
- Limited use in large systems due to change control complexity
- Not recommended for replacing well-defined systems
Incremental Model
Similar to the evolutionary model, the system is built by adding functional components incrementally. Each step updates the system, integrating software and results.
Disadvantages
- Potential for re-testing unstructured solutions and errors
- User reluctance due to uncertainty about the final product
Spiral Model
Developed by Barry Boehm, this model addresses the limitations of the classic life cycle by introducing risk analysis. It consists of a series of cycles, visualized as a spiral divided into four quadrants: planning, risk analysis, prototyping, and assessment/review. The project starts at the center and progresses outward.
Planning
- Identify product objectives
- Study alternative solutions and constraints
Risk Analysis
- Assess alternatives against objectives and constraints
- Analyze uncertainties
- Prototype elements of risk
- Address potential risks like unqualified personnel, budget constraints, unrealistic planning, incorrect software functions, wrong user interface requirements, continuous change, shortcomings of purchased items, gaps in external work, and exceeding engineering possibilities
Development and Testing
- Develop and test the product for the next level
Assessment/Review
- Review the outcomes of the cycle
Advantages
- Combines the best aspects of other models while mitigating their weaknesses
- Considers reuse options from the outset
- Prepares for development, growth, and change
- Incorporates quality objectives
- Eliminates errors and unattractive options early on
- Determines effort levels for each phase
- Applies the same development procedure for maintenance
- Offers flexibility and adapts well to object-oriented design and programming
Disadvantages
- Developed for commercial contracting, not internal development
- Requires risk assessment expertise, which may not always be available
- Involves additional processing steps
- Relatively new and less widely used compared to waterfall or prototyping models
Differences with Other Models
- Explicitly recognizes different alternatives for achieving project objectives
- Focuses on identifying and resolving risks
- Divides projects into stages with final agreements, allowing for changes or termination based on learnings
- Adapts to various activities, including external consultant consultations
Methodologies
A systematic and disciplined approach is crucial for software development. Methodologies directly influence the construction process and are developed based on one or more life cycles. There’s no universal agreement on the definition of “methodology.”
Definition
A set of steps and procedures to be followed for software development.
What Methodology Covers
- Improved application development process
- Establishment of organizational standards
Objectives of Methodologies
- Successfully establish software system requirements
- Build a system within time and budget constraints
- Create well-documented and maintainable systems
- Identify necessary changes early in the development process
- Deliver a system that satisfies all stakeholders
Desirable Features in a Methodology
- Predefined rules
- Full life cycle coverage
- Intermediate checks
- Planning and control
- Effective communication
- Wide project applicability
- Easy training
- CASE tools
- Activities for process improvement
- Support for software reuse and maintenance
Method vs. Methodology
There’s often confusion between methodology, approach, and life cycle. A methodology can follow one or more life cycle models. The life cycle defines the stages of a project, while the methodology defines how to navigate those stages. Methodology is a broader concept than method, encompassing a set of methods.
Classification
- Structured
- Process-oriented
- Data-oriented (hierarchical data structures)
- Mixed (object-oriented)