Show understanding of the purpose of a development life cycle and how it supports the creation of reliable, maintainable software.
Why Use a Development Life Cycle?
Provides a structured approach to software creation.
Ensures that all stakeholder requirements are captured and met.
Facilitates planning, budgeting and resource allocation.
Reduces risk by identifying problems early.
Improves communication between developers, users and managers.
Typical Stages of the PDLC
Planning and Feasibility Study
Define the problem and objectives.
Assess technical and economic feasibility.
Requirements Analysis
Gather functional and non‑functional requirements.
Create a requirements specification document.
Design
High‑level (architectural) design – modules, interfaces, data flow.
Detailed design – algorithms, data structures, pseudo‑code.
Implementation (Coding)
Translate design into source code using a suitable programming language.
Follow coding standards and document the code.
Testing
Unit testing, integration testing, system testing and acceptance testing.
Verify that the software meets the requirements.
Deployment
Install the software in the target environment.
Provide user training and documentation.
Maintenance
Correct defects, improve performance, add new features.
Manage version control and configuration.
Comparison of Linear vs. Iterative Models
Aspect
Linear (Waterfall)
Iterative (Agile, Spiral)
Flexibility
Low – changes are costly after a stage is completed.
High – allows repeated refinement.
Risk Management
Risk identified late.
Risk assessed continuously.
Customer Involvement
Limited after requirements phase.
Frequent feedback through iterations.
Documentation
Extensive upfront documentation.
Documentation evolves with each iteration.
Key Benefits of Following a PDLC
Predictable project timelines and costs.
Higher quality software through systematic testing.
Easier maintenance due to clear documentation and modular design.
Improved stakeholder confidence and satisfaction.
Illustrative Example
Consider developing a simple inventory management system for a small business.
Planning – Determine that the system must track stock levels, generate reports, and support multiple users.
Requirements – Capture that the system should allow adding/removing items, alert when stock < \$5\$, and export CS \cdot files.
Design – Choose a three‑tier architecture: presentation, business logic, and database layers.
Implementation – Write code in Python using Flask for the web interface and SQLite for storage.
Testing – Create unit tests for each function, perform integration testing of the API, and conduct user acceptance testing with the business owner.
Deployment – Host the application on a local server and provide a user manual.
Maintenance – Add a new feature to handle supplier orders after six months of use.
Mathematical Perspective on Effort Estimation
The effort \$E\$ (in person‑months) for a project can be approximated using the basic COCOMO model:
\$\$
E = a \times (KLOC)^{b}
\$\$
where \$a\$ and \$b\$ are constants based on project type and \$KLOC\$ is the estimated thousands of lines of code.
Summary
A well‑defined development life cycle is essential for producing software that meets user needs, stays within budget, and can be maintained over time. By progressing through clearly defined stages—planning, analysis, design, implementation, testing, deployment, and maintenance—developers can manage complexity, mitigate risk, and deliver high‑quality solutions.
Suggested diagram: Flowchart showing the sequential or iterative progression through the PDLC stages.