Program Development Life Cycle (Copy)
12.1.1 Purpose of a Program Development Lifecycle
- Definition: The program development lifecycle is a structured process used to design, develop, test, and maintain software programs efficiently.
- Importance: Ensures software meets user needs, is well-documented, and can be understood and modified by other developers.
- Continuous Process: Since software may require updates due to changing requirements or discovered errors, the lifecycle remains active until the software is no longer in use.
12.1.2 Stages of the Program Development Lifecycle
The lifecycle consists of five primary stages:
1. Analysis
- Purpose: Clearly defines the problem and requirements before development begins.
- Key Activities:
- Feasibility Study: Assesses technical, economic, and operational viability.
- Fact-Finding Techniques: Includes interviews, surveys, observation, and document review.
- Requirements Specification: Documents functional and non-functional requirements.
- Outcome: A well-defined problem statement and set of requirements.
2. Design
- Purpose: Converts requirements into a blueprint for the software.
- Key Design Aspects:
- Data Structures & Algorithms: Defines how data will be stored and manipulated.
- User Interface (UI) Design: Plans user interactions and visual elements.
- System Architecture: Outlines how components interact.
- Documentation Tools:
- Structure Charts: Illustrates module hierarchy.
- State-Transition Diagrams: Represents state changes.
- Pseudocode & Flowcharts: Describes logic before implementation.
- Outcome: A detailed design specification.
3. Coding (Implementation)
- Purpose: Translates design into an executable program using a programming language.
- Key Considerations:
- Choosing a Suitable Language: Based on project requirements.
- Modular Programming: Breaks down code into smaller, reusable functions or classes.
- Code Documentation: Comments and structured coding practices for maintainability.
- Version Control: Uses tools like Git to track changes.
- Outcome: A functional software product ready for testing.
4. Testing
- Purpose: Ensures the software works correctly and meets requirements.
- Testing Methods:
- Unit Testing: Tests individual components.
- Integration Testing: Checks if modules interact correctly.
- System Testing: Verifies overall system functionality.
- User Acceptance Testing (UAT): Confirms software meets user needs.
- Types of Errors:
- Syntax Errors: Issues in code structure.
- Logical Errors: Incorrect program logic.
- Run-time Errors: Errors occurring during execution.
- Outcome: A validated and reliable software product.
5. Maintenance
- Purpose: Ensures the software remains functional and efficient after deployment.
- Types of Maintenance:
- Corrective Maintenance: Fixes bugs and errors.
- Perfective Maintenance: Improves performance or usability.
- Adaptive Maintenance: Modifies software for new environments or requirements.
- Outcome: An updated and robust software product.
12.1.3 Different Software Development Models
1. Waterfall Model
- Description: A sequential, linear approach where each phase is completed before moving to the next.
- Advantages:
- Simple and easy to manage.
- Well-documented process.
- Suitable for projects with well-defined requirements.
- Disadvantages:
- Difficult to accommodate changes.
- Late-stage testing can reveal major issues.
- Not ideal for complex or evolving projects.
2. Iterative Model
- Description: Develops a basic version of the software and enhances it through repeated cycles.
- Advantages:
- Allows early detection of issues.
- More flexible for changing requirements.
- Produces working software at each iteration.
- Disadvantages:
- Requires extensive planning.
- Can be complex to manage.
- Not suitable for very small projects.
3. Rapid Application Development (RAD)
- Description: Uses parallel development cycles and prototyping for quick delivery.
- Advantages:
- Shortens development time.
- Encourages user involvement.
- Increases flexibility.
- Disadvantages:
- Requires highly skilled developers.
- Needs strong modular design.
- Not suitable for small-scale projects.
Conclusion
- The program development lifecycle provides a systematic approach to software creation.
- Understanding the different models helps in choosing the best approach based on project needs.
- Each stage plays a crucial role in ensuring software quality, maintainability, and usability.
