9618 AS Computer Science
In order to develop a successful program that is going to be used by others to perform a specific task or solve a given problem, the development needs to be well ordered and clearly documented, so that it can be understood and used by other developers!
The Program Development Life Cycle (PDLC) is a structured process used to develop software in a systematic way. It consists of five main stages that ensure a program is developed correctly, efficiently, and meets user requirements.
The Program Development Life Cycle provides a structured framework for developing software that ensures:
The Analysis stage is the first step in solving a problem. It involves investigating issues and the current system if there is one. The problem needs to be defined clearly and precisely.
Remember: Analysis is about understanding WHAT needs to be built, not HOW it will be built. The output of analysis is a Requirements Specification document!
The Design stage uses the program specification from the analysis stage to show HOW the program should be developed. This is where you plan your solution in detail.
To design a solution, an identifier table is a good starting point. This leads to thinking about:
After designing the solution, we need to choose a suitable high-level programming language. If we know more than one programming language, we have to weigh up pros and cons of each one.
This stage is often referred to as implementation. When you start writing programs:
| Error Type | Description | When Found |
|---|---|---|
| Syntax Error | A 'grammatical' error where a statement does not follow rules of the language | During compilation/interpretation - flagged by IDE |
| Logic Error | Program runs but produces incorrect results | During testing - output is wrong |
| Runtime Error | Program crashes during execution | During execution - program stops |
Depending on program IDE, we may have some helpful facilities:
The "Eureka moment" - 'It works!!!!' - doesn't mean the program does what it was meant to do! Always verify against the requirements specification.
Testing ensures the program really works under all circumstances. The purpose of testing is to discover any errors which are present in the software.
Testing can never be guaranteed to find all errors! It can only show that errors are present, not prove they are absent.
Testing can be done through a trace table, which records the values of variables as the program executes step by step.
| Development Model | When Testing Occurs |
|---|---|
| Waterfall Model | Only when all coding is completed |
| Iterative Model | Testing is on-going; done after every iteration |
| RAD Model | Testing is an on-going process throughout development |
Maintenance is the process of making sure that the program continues to work during use. The program is maintained throughout its life to ensure it continues to work effectively.
| Maintenance Type | Purpose | Example |
|---|---|---|
| Corrective | Fixing bugs and errors discovered after release | Patching a security vulnerability |
| Adaptive | Adapting program to meet new requirements or environments | Updating for new operating system |
| Perfective | Improving functionality or performance | Adding new features users requested |
| Preventive | Preventing future problems | Refactoring code for better structure |
Studies show that maintenance typically accounts for 60-80% of the total cost of software over its lifetime. This is why good documentation and clean code design are so important!
The Waterfall Model is a linear sequential development cycle where each stage is completed and signed off before the next stage is begun. This is the simplest model which can be easily understood.
The Waterfall model is most suitable for projects where:
| Benefits | Drawbacks |
|---|---|
| Simple and linear - easy to understand and follow | Inflexible - difficult to make changes once development begins |
| Clear stages and milestones - easy to track progress | Expensive to fix late problems - issues found late are harder to resolve |
| Ideal for well-defined projects - works best when requirements are fixed | Long development cycle - each stage must be completed before moving on |
| Stages do not overlap - completed one at a time | Not suitable for programs where requirements could change |
| Easy to manage due to fixed stages | No working software produced until late in the life cycle |
| Each stage has specific deliverables | Not suitable for long, complex, object-oriented projects |
| Works well for smaller programs where requirements are known | Difficult to measure progress within stages |
| Integration done at end - doesn't identify technical issues early |
Think of a waterfall: water flows DOWN only, it can't flow back UP. Similarly, in the Waterfall model, you can't easily go back to previous stages!
The Iterative Model (also known as Agile) is a software development methodology that promotes adaptability and high customer involvement. It first develops a simple subset of requirements, then expands or enhances the model and runs the development cycle again.
| Benefits | Drawbacks |
|---|---|
| Some working programs developed quickly at early stage | Only large software projects can benefit - hard to break small systems into modules |
| Easier to test and debug smaller programs | Design issues may arise because not all requirements gathered at beginning |
| More flexible - easier to alter requirements | More resources may be required |
| Progress can be measured | Needs good planning overall and for every stage |
| Customers involved at each iteration - no surprises | Defining increments may require definition of complete system |
| Software produced early - facilitates customer feedback | Requires experienced team members |
| Better suited for large, mission-critical projects | Risk of team burnout - intense collaboration can tire team |
| Parallel development can be planned | May lack documentation - flexibility reduces written records |
| Less costly to change scope/requirements | Scope creep risk - changing goals may lead to uncontrolled growth |
| Risks identified and resolved during iteration | |
| Easier to manage risk - high-risk part done first |
The Iterative model is most suitable for:
Rapid Application Development (RAD) is a software development methodology that emphasizes fast and iterative development. Different parts of requirements are developed in parallel, using prototyping to provide early user involvement in testing.
| Benefits | Drawbacks |
|---|---|
| Reduced overall development time | System needs to be modular |
| Rapid, frequent customer feedback informs development | Needs strong teams of skilled developers and designers |
| Very flexible - requirements evolve from feedback | Not suitable for short, simple projects |
| Modification easier - each part works independently | Best for component-based, scalable systems |
| Progress can be measured | Requires strong team collaboration |
| Reduces development time | Potential quality issues - speed may reduce testing |
| Encourages customer feedback | Scope creep risk - flexibility can expand requirements |
RAD is most suitable for:
| Feature | Waterfall | Iterative | RAD |
|---|---|---|---|
| Customer Involvement | Low (start/end only) | High (every iteration) | Very High (continuous) |
| Flexibility | Low | High | Very High |
| Documentation | Extensive | Minimal | Minimal |
| Testing | At end only | Continuous | Continuous |
| Best For | Small, well-defined projects | Large, evolving projects | Rapid delivery needed |
| Risk Management | Low | High (risks found early) | Medium |
Answer:
Answer:
Principles:
When to use:
Answer:
Benefits:
Drawbacks:
Answer:
Recommend: Iterative Model
NOT Waterfall (too inflexible for changing requirements); NOT RAD (banking system needs thorough testing and documentation)
Answer:
Syntax Error:
Logic Error:
Waterfall - MOST SUITABLE:
Iterative - NOT SUITABLE:
RAD - NOT SUITABLE:
| Analysis | First stage of PDLC - investigation leading to specification of what program is required to do |
| Coding | Stage of PDLC - writing the program or suite of programs |
| Design | Stage of PDLC - uses specification from analysis to show how program should be developed |
| Iterative Model | Development cycle where simple subset is developed, then enhanced, cycle repeated until full system complete |
| Logic Error | Error where program runs but produces incorrect results |
| Maintenance | Stage of PDLC - ensuring program continues to work during use |
| Prototyping | Creating early version of software to get user feedback |
| RAD | Rapid Application Development - develops different parts in parallel with prototyping |
| Requirements Specification | Document defining what the program is required to do |
| Syntax Error | Grammatical error where statement doesn't follow language rules |
| Testing | Stage of PDLC - verifying program works under all conditions |
| Trace Table | Table recording variable values during step-by-step algorithm execution |
| Waterfall Model | Linear sequential development cycle - each stage completed before next begins |
| Topic | Key Point |
|---|---|
| Analysis Output | Requirements Specification |
| Design Tools | Flowcharts, Pseudocode, Structure Charts |
| Syntax Error | Grammar error, found during compilation |
| Logic Error | Wrong output, found during testing |
| Waterfall Testing | At end only |
| Iterative/RAD Testing | Continuous throughout |
| Maintenance Types | Corrective, Adaptive, Perfective, Preventive |