0% found this document useful (0 votes)
51 views20 pages

TCSS 360, Spring 2005 Lecture Notes: Software Engineering and The Software Lifecycle

The document discusses software engineering and the software development lifecycle. It defines software engineering as the profession of creating and maintaining software applications by applying techniques from computer science, project management, and other fields. The document then discusses various roles in software development projects, common problems with software projects today, and different approaches to the software development lifecycle including ad-hoc development, code-and-fix, evolutionary prototyping, waterfall, and spiral models.

Uploaded by

Ashish_Anand
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views20 pages

TCSS 360, Spring 2005 Lecture Notes: Software Engineering and The Software Lifecycle

The document discusses software engineering and the software development lifecycle. It defines software engineering as the profession of creating and maintaining software applications by applying techniques from computer science, project management, and other fields. The document then discusses various roles in software development projects, common problems with software projects today, and different approaches to the software development lifecycle including ad-hoc development, code-and-fix, evolutionary prototyping, waterfall, and spiral models.

Uploaded by

Ashish_Anand
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 20

TCSS 360, Spring 2005

Lecture Notes

Software Engineering and the


Software Lifecycle

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.

 Software engineering has accepted as its charter, "How to program if


you cannot." -- E. Dijkstra
 The first step toward the management of disease was replacement of
demon theories and humours theories by the germ theory. That very
step, the beginning of hope, in itself dashed all hopes of magical
solutions. It told workers that progress would be made stepwise, at
great effort, and that a persistent, unremitting care would have to be
paid to a discipline of cleanliness. So it is with software engineering
today. -- F. Brooks
2
Roles of people in software
 people involved in software production
 customer / client: wants software built
 often doesn't know what he/she wants
 managers / designers: plan software
 difficult to foresee all problems and issues in advance
 developers: write code to implement software
 it is hard to write complex code for large systems
 testers: perform quality assurance (QA)
 it is impossible to test every combination of actions
 users: purchase and use software product
 users can be fickle and can misunderstand the product
3
Problems with software today
 Example: Space shuttle software
 cost: $10 Billion, millions of dollars more than planned
 time: 3 years late
 quality: first launch of Columbia was cancelled because of a
synchronization problem with the Shuttle's 5 onboard
computers
 error was traced back to a change made 2 years earlier when a
programmer changed a delay factor in an interrupt handler from 50
to 80 milliseconds
 the likelihood of the error was small enough, that the error caused
no harm during thousands of hours of testing
 substantial errors still exist in the code
 astronauts are supplied with a book of known software problems
"Program Notes and Waivers"
 reusabilty: shuttle software cannot be reused
 Have to develop each software product from scratch 4
Ad-hoc software development
 ad-hoc development: creating software
without any formal guidelines or process

 what are some disadvantages of ad-hoc


development?
 some important actions (testing, design) may go
ignored
 not clear when to start or stop doing each task

 does not scale well to multiple people

 not easy to review or evaluate one's work

5
The software lifecycle
 software lifecycle: series of steps / phases, through
which software is produced
 can take months or years to complete

 goals of each phase:


 mark out a clear set of steps to perform
 produce a tangible document or item
 allow for review of work
 specify actions to perform in the next phase

 common observation: The later a problem is found in


software, the more costly it is to fix
6
Lifecycle phases
 standard phases
1. Requirements Analysis & Specification
2. Design
3. Implementation, Integration
4. Testing, Profiling, Quality Assurance
5. Operation and Maintenance

 other possible phases


 risk assessment: examining what actions are critical and
performing them first (part of Spiral model)
 prototyping: making a quick version of the product and
using it to guide design decisions
7
One view of SW cycle phases

Requirements System Object Implemen-


Analysis Testing
Elicitation Design Design tation

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?

 code becomes expensive to fix (bugs are not


found until late in the process)
 code didn't match user's needs (no
requirements phase!)
 code was not planned for modification, not
flexible
11
Evolutionary model
Requirements

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?

 difficult to distinguish from code-and-fix


 assumes user's initial spec will be flexible; fails for:
 separate pieces that must then be integrated
 "information sclerosis": temporary fixes become permanent
constraits
 bridging; new software trying to gradually replace old
 wrong order: makes lots of hard-to-change code
13
Waterfall model (Royce, 1970)

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

(phases may not be


completed in this order Retirement
any more!)
18
Spiral model problems
 What are some positives and negatives about
this method?
+ focuses attention on reuse
+ accommodates changes, growth
+ eliminates errors and unattractive choices early
+ limits to how much is enough (not too much design, reqs, etc)
+ treats development, maintenance same way
- matching to contract software (doesn't work well when you're
bound to a fixed inflexible contract)
- relying on developers to have risk-assessment expertise
- need for further elaboration of project steps (clearer milestones)
19
Tools for software engineers
 CASE (Computer-Aided Software Engineering)
 requirements / spec generation software
 design diagram (UML) software
 integrated development environments (IDEs)
 test suites (JUnit) and benchmarking / profiling
software

20

You might also like