Module 3 Software Development Life Cycle
Lesson 1 Phases of SDLC
User / Stakeholder's requirements
Requirements are intended to meet the needs/objectives of user/stakeholder.
Feasibility Study
A preliminary study which investigates the information needs of users and resource requirements of a proposed project.
- Technical Feasibility
- Confirms whether the hardware and software are capable of satisfying the needs of a proposed system or an existing system.
- Financial / Economical feasibility
- It signifies the profitability of a proposed or implemented product/project.
- Operational feasibility
- Willingness and ability of users or operators of a proposed / an existing product / project / system.
- Behavioural feasibility
- Friendliness and safetibility of the software product.
Requirement Analysis and Specification
Starts after the successful completion of feasibility study. Requirement Engineering (RE) determines the exact requirements of the user and organizes them into a Software Requirement Specification (SRS) document.
Design
This phase is fed with the SRS and results in a logical document called DDS (Design Document Specification). Determines data, process, modularization, and relationships.
Coding
Translates the DDS into executable code under a suitable programming environment. Emphasizes programming efficiency and reduced execution time.
Testing
Associated with quality control. Executes specific test cases to compare actual results against expected outputs, resulting in test and error reports.
Certification
Compares the software's performance against standards framed by recognized organizations like SEI, CMM, and ISO.
Implementation
Concerned with site preparation, file conversion, and tasks leading to a fully operational system, including final user testing.
Maintenance and Review
Involves correcting errors and making necessary updates. It is classified as:
- Corrective
- Adaptive
- Perfective
- Preventive
Lesson 2 Software Process Model
- Linear sequential model
- Proceeds in a linear, orderly fashion (e.g., Waterfall and RAD models).
- Iterative model
- Proceeds in iterations using prototypes and continuous customer feedback.
- Evolutionary model
- A core product is developed first; new features are added as requirements emerge.
- Formal methods model
- Transforms mathematical system specifications into a program.
- System assembly from reusable components
- Focuses on integrating existing, reusable components rather than developing from scratch.
Lesson 3 The Waterfall
Proposed by Winston Royce in 1970. In practice, it acts as a rigidly sequential model (Linear sequential model).
Stages of the Waterfall Model:
- System engineering:
- Requirements are determined and allocated across hardware, software, and databases.
- Requirement analysis:
- Requirements are graphically analyzed to avoid ambiguity.
- Design phase:
- Traditional: Structured analysis of detailed requirements.
- Object-Oriented (OOD): Identifying objects and their relationships for better maintainability.
- Coding:
- Writing programs in a suitable language.
- Testing:
- Modules are progressively integrated and tested in planned steps.
- Maintenance:
- Correcting errors, adapting to environment changes, and improving features.
Pros & Cons
- Advantages: Provides maximum ordering and a structured template for engineering.
- Disadvantages: Difficult to gather all requirements upfront; working versions are seen very late in the process.
Lesson 4 Prototyping Model
Based on the iterative model to give clients a feel of the actual system. Highly applicable for complicated systems when requirements are not clearly known.
- Evolutionary prototyping:
- Develops an initial implementation, exposed to user comments, and refined continuously.
- Throwaway prototyping:
- Implements poorly understood requirements to formulate a validated specification, then discarded.
RAD (Rapid Application Development) Model
A linear sequential model emphasizing short development cycles and rapidity achieved by using readymade reusable components.
The Incremental Model
Consists of stepwise development where increments of an operational software product are delivered one after another based on customer feedback.
Spiral Model
Introduced by Barry Boehm (1986). It incorporates a "Project risk" factor, acting as an evolutionary model that mixes the iterative nature of prototyping with the systematic aspects of the waterfall model.