Title: Lecture 2: Software Development
1Lecture 2 Software Development
- Software Development Terminology
- Design Objectives and Design Problems
- Why Do Things Go Wrong?
- Project Life Cycles
- The waterfall model
- The spiral model
- The Unified Process
2Software DevelopmentTerminology
- Systems Analysis
- Process of seeking to understand organization of
system - Investigation and modelling of system
requirements - Software Design
- Process of producing solution to analysed
requirements - Specifying detail of how system will meet
requirements - Software Engineering
- Application of a systematic, disciplined approach
- Adherence to high standards of professional
ethics
3What Do We Need?
- We need software that is
- Useful and usable fit for purpose
- Reliable free of bugs
- Flexible can adapt to changing needs of users
- Affordable to buy and to maintain
- Available delivered, portable and maintainable
- Objectives are
- Easy to state, but
- may be hard to achieve in practice!
4When Programs Go Wrong
- Total failure of software
- The London Ambulance Service
- TAURUS stock trading system
- ARIANE 5 Launcher
- August 14th 2003, east coast USA power blackout
- Failure can be catastrophic and very costly
- but, its the exception rather than the rule
- Nature of problem depends on stakeholder you ask
- The end users
- The clients
- The software developers
5The Stakeholders
End-users
Client
Different stakeholders may have very different,
requirements. Competing needs may not be easy to
satisfy.
?
Software developers
6Why Do Things Go Wrong?
- No one reason for failure
- Complexity of software
- Complexity of development process
- Failures broadly due to
- Unacceptable quality
- Poor productivity
- What are the major reasons?
7Avoiding the Problems
- We need to
- Adopt a well-defined development process
- Clear phases with deliverables
- Built in verification and validation
- Effective management
- Be clear about project requirements
- Make use of relevant knowledge
- Make sensible use of tools
- Communicate!
8Project Life Cycles
- The development process can be divided into
various phases - A number of different models
- The traditional waterfall life cycle
- The spiral model (Boehm 1988)
- The unified process
9The Waterfall Life Cycle
Waterfall model process moves from one stage to
another, but never back!
Analysis
Design
Construction
Testing
Deployment
Maintenance
10Pros and Cons of the Waterfall
- Advantages
- Highly structured with clear phases and
deliverables - Easy to evaluate project progress
- Can be effective for risk management
- Disadvantages
- Requires perfect decision-making
- Projects rarely follow a simple sequence
- Iterations and revisions are almost inevitable
11Waterfall with Iteration
Analysis
Models ability to revise earlier stages in the
process.
Design
Construction
Testing
Deployment
Revision can be costly and difficult to manage
Maintenance
12The Spiral Model (Boehm 1988)
Evaluate
Design, deploy, test
Analyse risks and plan
Analyse requirements for this iteration
13Advantages of the Spiral Model
- Iteration
- embraces iterative nature of process
- Prototyping
- each loop of the spiral leads a system prototype
- Risk analysis
- adds notion of risk management as a central
concept
14The Rational Unified Process(Booch, Jacobson,
Rumbaugh)
- Four distinct phases
- Inception determine scope and purpose of the
project - Elaboration requirements capture and system
architecture - Construction build software system
- Transition installation
- Workflows within each phase
- Requirements, Analysis, Design, Deployment, Test
- See also The Rational Edge e-Zine
15The Unified Process
- Project passes through four stages in a
sequential manner (phases) - Iterations occur within each phase (spiral model)
- Each iteration involves a series of different
activities (workflows) - Amount of work spent on each activity changes
between phases/iterations
16The Rational Unified Process
17Other Process Models
- Phased release model
- Waterfall extended to include incremental
development - The evolutionary model
- Emphasizes overlap in loops of spiral model
- Makes explicit differing amounts of effort
needed - Concurrent engineering model
- Accounts for the divide and conquer principle
- Extreme programming
18Summary
- Software development is a complex process
- Many possible paths from start to end-product
- Involves balancing needs of various stakeholders
- Development has distinct stages (waterfall)
- Software life cycle iterative (e.g. spiral)
- Prototyping
- Risk management
- There is no one best process model
- Different methodologies suit different projects