CSC340: Tutorial 1 Software Lifecycles TA: Yuan An

Transcription

CSC340: Tutorial 1 Software Lifecycles TA: Yuan An
CSC340: Tutorial 1
Software Lifecycles
TA: Yuan An
Date: 9:00-10:00am, Fri. Oct. 3, 2003
Location: BA1130
In This Tutorial:
 The stages in the waterfall life cycle
 About prototyping and incremental life
cycles
 The importance of project management
 How users may be involved in a project
 The role of CASE tools in systems
development
The Development Lifecycle
Starting an information system
• Reasons for development of an information
system
• Why does an information system fail?
Project Lifecycle
•
•
•
•
Waterfall life cycle model
Waterfall life cycle with iteration
Prototyping
Evaluation of prototyping
Starting an Information Systems
• Many reasons for development of
information systems:
– Problem driven: competition, crisis…
– Change-driven: new needs, growth, change in
business, change in environment…
– Opportunity-driven: new technology…
– Part of previous plan…
– ….
• But failure does happen.
Why Does an Information System
Fail?
• End user’s perspective:
– No system: “what system? I haven’t seen a system.”
– Unusable
– Insufficient power
• Client’s perspective:
–
–
–
–
Too expensive
Too late
Change of mind
Change of requirements
• Developer’s perspective:
–
–
–
–
–
Wrong requirements
Insufficient resources
Incomplete requirements
Impossible requirements
Blame the others
Problems Causing Failures
• Quality problems:
–
–
–
–
The wrong problem is addressed.
Wider influence are neglected.
Analysis is carried out incorrectly.
Project undertaken for the wrong reasons.
• Process problems:
–
–
–
–
Requirements drift.
External events change the environment.
Implementation is not feasible.
Poor project management.
Avoiding the Problems
• We need to adopt strategies and
procedures that will minimize the
occurrence of the problems.
• There is no such thing as a ‘right’ or a
‘wrong’ strategy or procedure which
produces a quality system.
• One major source of difficulty is the
inherent complexity of software
development.
A General Perspective
Building computerized information
Systems can be viewed as a form of problem
Solving.
Problem Solving Model
• Main phases are
– Data gathering
– Problem redefinition
– Finding ideas
– Finding solutions
– Implementation


These focus on understanding
what the problem is about
Concerned with understanding
more about the nature of the
problem and possible solutions
The Development Life Cycle
• The information systems development process
is a partially ordered collection of actions,
carried out by one or more developers, testers,
users, or other information systems in order to
accomplish a task.
• The development life cycle is a process by which
a information system is developed, tested,
installed and maintained throughout its useful
history.
• The concept of lifecycle is a useful project
management tool. A lifecycle consists of
phases, each of which is a process.
The Breakdown of Costs
• For large software systems, involving >10k lines of code, the
breakdown of costs between different phases is as follows:
–
–
–
–
–
Requirements Analysis
Design
Programming-in-the-small
Integration
Maintenance and Evolution
5%
10%
15%
10%
60%
• Small software systems<5k LOC
–
–
–
–
–
–
Specification
Decomposition
Coding
Optimization
Testing
Validation
10%
20%
20%
15%
25%
10%
• Systems analysis and design more important.
What is Described by a Life Cycle?
• The lifecycle describes the temporal, causal and
I/O relationships between different lifecycle
phases.
• The lifecycle concept includes the concept of
feedback (returning to a previous phase) as well
as moving forward to the next phase.
• In the past, the lifecycle concept was applied to
the management of complex systems that had
some sort of physical hardware as their end
product, e.g., missiles, communication networks,
spacecraft, etc.
What Does a Life Cycle Consist of?
• A series steps through which the product
progresses.
• A life cycle specifies:
– The various phases of the process.
– The order in which they are carried out.
– The guidance for project management.
• Next: The Waterfall Life Cycle…
The Waterfall Life Cycle Model
Waterfall Life Cycle
• The traditional life cycle (TLC) for information
systems development is also known as the
waterfall life cycle model
– So called because of the difficulty of returning to an
earlier phase
• The model shown here is one of several more or
less equivalent alternatives
– Typical deliverables are shown for each phase
Waterfall Model (cont’)
• Consists of a set of phases that a project progresses through
in a sequential order.
• Each phase must be completed before the project can progress
to the next phase.
• At the end of each phase is some form of gateway, usually a
formal review where that decision is made.
• There is no overlap between phases.
• Straight forward, simple to understand and use.
• Deliverables are frozen at the end of each phase and serve as
the baseline for the following phases.
• You do not see the software until the end of the project (big
bang software development).
• Changes are not supposed to happen or are limited or are
tightly controlled.
TLC Deliverables
• System Engineering
– High Level Architectural Specification
• Requirements Analysis
– Requirements Specification
– Functional Specification
– Acceptance Test Specifications
Life cycle deliverables (adapted from Sommerville, 1992).
TLC Deliverables
• Design
– Software architecture specification
– System test specification
– Design specification
– Sub-system test specification
– Unit test specification
Life cycle deliverables (adapted from Sommerville, 1992).
TLC Deliverables
• Construction
– Program code
• Testing
– Unit test report
– Sub-system test report
– System test report
– Acceptance test report
– Completed system
Life cycle deliverables (adapted from Sommerville, 1992).
TLC Deliverables
• Installation
– Installed System
• Maintenance
– Change requests
– Change request report
Life cycle deliverables (adapted from Sommerville, 1992).
Problems with TLC
• Real projects rarely follow such a simple
sequential life cycle
• Iterations are almost inevitable
• Time elapses between system engineering
and the final installation
• The design is unresponsive to business
changes during the project
The Waterfall Life Cycle with
Iteration
Iteration added to solve
some of the problems
Strengths of TLC
• Tasks in phases may be assigned to
specialized teams
• Project progress evaluated at the end of
each phase
• Manage projects with high levels of risks
• Next: Prototyping
Prototyping—Advantages
• Early demonstrations of system functionality
help identify any misunderstandings between
developer and client
• Client requirements that have been missed are
identified
• Difficulties in the interface can be identified
• The feasibility and usefulness of the system can
be tested, even though, by its very nature, the
prototype is incomplete
Prototyping
Initial
analysis
Define
objectives
Specify
Prototyping
completed
Evaluate
Construct
Prototyping—Problems
• The client may perceive the prototype as
part of the final system
• The prototype may divert attention from
functional to solely interface issues
• Prototyping requires significant user
involvement
• Managing the prototyping life cycle
requires careful decision making
Unified Software Development Process
• Captures many elements of best practice
• Main phases
– Inception is concerned with determining the scope
and purpose of the project
– Elaboration focuses requirements capture and
determining the structure of the system
– Construction's main aim is to build the software
system
– Transition deals with product installation and rollout
Project
Phases
Workflows
Requirements
Inception
Analysis
Design
Implementation
Test
1
2
Elaboration
Size of square
relative to time
spent on
workflow
3
4
Construction
5
6
7
8
Transition
9
10
Iterations within each phase
User Involvement
• Users can be involved in various ways
– As part of the development team (DSDM)
– Via a consultative approach
– In fact gathering
Computer Aided Software
Engineering
• CASE tools typically provide a range of features including
– checks for syntactic correctness
– repository support
– checks for consistency and completeness
– navigation to linked diagrams
– layering
– requirements tracing
– report generation
– system simulation
– performance analysis
– code generation
The Spiral Life Cycle Model