TCSS 360, Spring 2005 Lecture Notes: Software Engineering and The Software Lifecycle
TCSS 360, Spring 2005 Lecture Notes: Software Engineering and The Software Lifecycle
Lecture Notes
1
Software engineering
Software engineering: the profession, practiced by
developers, concerned with creating and maintaining
software applications by applying technologies and
practices from computer science, project
management, and other fields.
5
The software lifecycle
software lifecycle: series of steps / phases, through
which software is produced
can take months or years to complete
Implemented
Expressed in By
Structured By Realized By
Terms Of Verified
By
class...
class...
class... ?
class.... ?
Use Case Application Solution
Domain Subsystems Source Test
Model Domain
Objects Code Cases
Objects
8
Some software models
Several models for developing software
(besides ad-hoc) have been attempted:
code-and-fix: write some code, debug it, repeat
until finished
evolutionary: build initial requirement spec, write
it, then "evolve" the spec and code as needed
waterfall: perform the standard phases
(requirements, design, code, test) in sequence
rapid prototyping: write an initial "throwaway"
version of the product, then design, code, test
spiral: assess risks at each step, and do the most
critical action immediately
9
code-and-fix model
Code First
Version
Modify until
Client is satisfied
Operations Mode
Retirement
10
Problems with code-and-fix
What are some reasons not to use the code-
and-fix model?
Verify
Arch. Design
Verify
For each build:
Perform detailed
design, implement.
Test. Deliver.
Operations
Retirement
12
Problems with evolutionary
The evolutionary model is similar to code-and-fix, but
it assumes the repetitions are "evolutions" of the
code, not necessarily bug fixes. Problems with this?
Req. Change
Requirements
Verify
Design
Verify
Implementation
Test
Operations
Retirement
14
Rapid prototyping model
Req. Change
Rapid Prototype
Verify
Redesign
Verify
Re-implementation
Test
Operations
Retirement
15
Waterfall / Prototyping issues
The waterfall models (with or without
prototyping) are perhaps the most common
model for software development
we will use waterfall in this course!
What are some positives and negatives about
this method?
+ formal, standard, has specific phases with clear goals
+ good feedback loops between adjacent phases
- rigid, too linear; not very adaptable to change in the product
- requires a lot of planning up front (not always easy / possible)
- assumes that requirements will be clear and well-understood 16
Spiral model (Boehm)
Cumulative
cost
Progress
through
Determine steps Evaluate alternatives,
objectives, identify, resolve risks
alternatives,
constraints
(OAC) Risk
Assessment
Concrete
Specification
OAC Risk
Assessment
Abstract
Specifcation
OAC Risk Risk
Requirements Assessment Control
Risk
OAC Control
Risk
Commit Control
Review
partition Requirements
Concept of
Plan
Operation
Requirements
Abstract Specification Abstract
Plan Specification Concrete
Requirements Specification
Validation
Concrete Specification
Plan
Abstract Specification
Validation
Software Concrete
Plan next phases Development Plan Specification Validation Develop, verify
and Verification next-level product
17
Another view of spiral model
Risk Assessment
Req. Change
Requirements
Risk Assessment
Verify
Design
Risk Assessment
Verify
Implementation
Test
Adds a Risk Analysis
step to each phase
Operations
20