Know the purpose of a software development life cycle and the common stages they contain.
Know the different software development life cycles that can be used when developing a new program and the factors that should be considered when choosing one.
Know the benefits and drawbacks of different software development life cycles.
Specifies time management and development order. Only 3 to know for exam:
Waterfall, Iterative & RAD (Rapid Application Development)
Factors to consider when choosing a suitable Development cycle:
Problem big or small?
Problem simple?
Are requirements well understood by client and developer?
Are requirements likely to change?
How much involvement does the client need?
How quickly is the program needed?
How much risk is involved?
Does the program need to be delivered all in one or in stages?
OUTDATED BUT STILL USED! - Several stages completed in order, a decision must be made at end of each stage to see if it can be moved onto the next one:
Used for:
Small & Large programs
Simple programs
when requirements are fully understood at the start
When requirements aren’t likely to change during
When client doesn’t need much involvement
When its not needed quickly
When there’s little risk
If the program can be delivered at the very end
Pros | Cons |
Used on big and small projects | Difficult to use on complex programs |
Ideal when requirements aren’t likely to change | Difficult to change requirements during development. |
Clear structured stages, therefore easy to predict next stage | Client has limited involvement so not much feedback provided, could lead to problems at the end. |
Less client involvement, so less burden and interruption on team. | Generally have an increased development time. |
Team members responsible for 1 area, so responsibilities are known. | Carries lot of risk -product might not meet clients needs (see Con 3) |
Program not created until late in project. |
Completed in smaller stages known as ITERATIONS. Each phrase given time frame to complete, has a focused goal which is planned, developed, tested & reviewed before next iteration.
Client gets to see different versions (prototypes) of program much earlier and provide feedback to feed into next phase.
Used for:
Small & Large programs
Simple & Complex programs
When requirements ARENT fully understood at the start
When requirements ARE likely to change during
When client needs lots of involvement
Pros | Cons |
Ideal if requirements aren’t fully understood at the start | Requires development team to work in close colab with each other. |
Easy to change requirements during | Lots of client involvement can burden and slow down development |
Client has lots of involvement, so feedback can be given to reduce problems at end. | |
Develop parts of program early & deliver to client in stages | |
Usually have reduced development time |
Quick feasibility check at start & once approved prototype is designed, coded, tested and evaluated by client. Prototype then either refined or next prototype developed until new program fully complete.
Used for:
Smaller Programs
Simple Programs
When requirements ARENT fully understood at start
When requirements ARE likely to change during
When client needs lots of involvement
When programs needed quickly
Pros | Cons |
Ideal if requirements arent fully understood at start | Focus on program usability instead of quality coding |
Easy to change requirements during | Lots of client involvement can burden and slow down developers |
Client has lots of involvement, so feedback can be given to reduce problems at end | Software usually “good enough” |
Develop program parts (prototypes) early & deliver it to client in stages | Not suitable for large teams/projects or complex |
Usually have reduced development time |
Some cycles i.e. Waterfall follow stages in linear fashion others i.e. Iterative are more fluid
Program requirements gathered from client
Feasibility study conducted to determine if its a viable project
Potential risks are identified & investigated
Functional specification created to describe how program should behave and what features should be included
Non-functional specification created to describe performance, security, scalability & usability of program
User stories created to describe how users interact with program and achieve their goals.
Overall structure defined, including components, modules & their interactions
Structure charts made to show different program modules, different parameters passed between the, & order that steps need to be completed.
State-transition diagrams created to show various program states, the transitions between them & how they’re triggered.
UI (User Interface) & UX (User eXperience) are designed
Algorithms made to design program logic & rules
Testing table made to outline how programs tested
Prototypes/mock-ups made to show client early version of program to allow for feedback.
UI is developed
Programming language chosen based on designs & requirements
Designs translated to code that forms a functional program
Code optimised to ensure efficiency & offers optimal performance
Program tested to locate & fix syntax, logic & run-time errors.
Test strategy made to describe program testing approach. i.e. how often, how much time & who tests it
Test plan made to outline specific tests to be carried out
Test data selected ((ab)normal, extreme, boundary data) to test as many different combos of user input & pathways as possible
Test plan completed to document test outcome.
Perfective maintenance carried out to make enhancements/improvements to program- to improve performance, maintainability or usability.
Adaptive maintenance carried out to modify, to accommodate a new need.
Corrective maintenance carried out to fix errors/bugs discovered after program release.