Unit 12.1 Program Development Life Cycles

Aims

  • 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.

Program 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?

Waterfall Development Life Cycle

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.

Iterative Development Cycle

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

RAD (Rapid Application Development) Cycle

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

General Stages

Some cycles i.e. Waterfall follow stages in linear fashion others i.e. Iterative are more fluid

Analysis

  • 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.

Design

  • 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.

Coding

  • 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

Testing

  • 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.

Maintenance

  • 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.

robot