Title: CS 501: Software Engineering
1CS 501 Software Engineering
Lecture 2 Software Processes
2Administration
Project teams Any short notices to class? Course
team email address When you have formed your
team and reached agreement with your client,
please send a message to cs501-l_at_lists.cs.cornell.
edu with the names of the team, the client's
name, and the topic of the project.
Letter "l"
3Project Concept Legal Information Institute
Spaeth database of Supreme Court
statistics Federal rulemaking documents Tom
Bruce, Director Legal Information Institute
4Project Concept Student Disability Services
(SDS)
Booking system for CULift service Michele D.
Fish, Student Disability Services Center for
Learning Teaching
5Project SuggestionCheaper and Better Textbooks
Cheaper and Better Textbooks Paul Francis,
Computer Science Department
6Project Suggestion eCommons
Harvesting from Web sites Drag and drop
user interface John Saylor, Cornell University
Library
7Project ConceptCollaborative Text Editor
Collaborative Text Editor Adam Engst
8Project Concept Weill Cornell Medical Library
Weill Cornell Medical Library eResources Paul
Albert, Digital Services Librarian
9Project Concept Predict Systems
Additunes music recommendation system Blazej
Kot, Predict Systems Cornell Information Science
10Project Concept Cornell Cooperative Extension
Systems for online content management and
dissemination Raj Smith, Department of Natural
Resources and Cooperative Extension
11A Classic Book
Frederick P. Brooks, Jr. The Mythical Man Month.
Addison-Wesley, 1972.
12Software Process
Fundamental Assumption Good processes lead
to good software Good processes reduce risk
Good processes enhance visibility
13Variety of Software Processes
Software products are very varied... Therefore,
there is no standard process for all software
engineering projects BUT successful software
development projects all need to address similar
issues. This creates a number of process steps
that must be part of all software projects
14Basic Process Steps in all Software Development
Feasibility and planning Requirements System
and program design Implementation and
testing Acceptance testing and
release Operation and maintenance It is
essential to distinguish among these process
steps and to be clear which you are are doing at
any given moment. Do not confuse requirements
and design
15Process Step Feasibility and Planning
A feasibility study precedes the decision to
begin a project. What is the scope of the
proposed project? Is the project technically
feasible? What are the projected
benefits? What are the costs, timetable? A
feasibility study leads to a decision go or
no-go.
16Process Step Requirements
- Requirements define the function of the system
from the client's viewpoint. - The requirements establish the system's
functionality, constraints and goals by
consultation with the client and users. They are
then defined in a manner that is understandable
by both the client and the development staff. - This phase is sometimes divided into
- Requirements analysis
- Requirements definition
- Requirements specification
17Process Step System and Program Design
- Design describes the system from the software
developers' viewpoint - System design Match the requirements to
hardware or software systems. Establishes an
overall system architecture - Program design Represent the software system
functions in a form that can be transformed into
one or more executable programs - Unified Modeling Language (UML)
18Process Step Implementation and Testing
Implementation (coding) The software design is
realized as a set of programs or program units.
(The software components may be written
specifically, acquired from elsewhere, or
modified.) Testing Individual components are
tested against specifications. The individual
program units are integrated and tested against
the design by the development staff as a complete
system.
19Process Step Acceptance Testing and Release
Acceptance testing The complete system is tested
against the requirements by the client. Delivery
and release The complete system is delivered to
the client and released into production.
20Process Step Operation and Maintenance
Operation The system is put into practical
use. Maintenance Errors and problems are
identified and fixed. Evolution The system
evolves over time as requirements change, to add
new functions or adapt the technical
environment. Phase out The system is withdrawn
from service. This is sometimes called the
Software Life Cycle
21Sequence of Processes
Every software project will include these basic
processes, in some shape or form, but They
may be formal or informal They may be carried
out in various sequences Major alternatives Sequ
ential As far as possible, complete each process
step before beginning the next (but see the next
few slides). Waterfall model. Iterative Go
quickly through all process steps to create a
rough system, then repeat them to improve the
system. Iterative refinement.
22Sequential DevelopmentThe Waterfall Model
Requirements
Feasibility study
Requirements
Design
System design
Implementation
Program design
Implementation (coding)
Testing
Acceptance release
Operation maintenance
23Discussion of the Waterfall Model
Advantages Process visibility
Separation of tasks Quality control at each
step Cost monitoring at each
step Disadvantages Each stage in the process
reveals new understanding of the previous stages,
that often requires the earlier stages to be
revised.
The Waterfall Model is not enough!
24Sequence of Processes
A pure sequential model is impossible Examples
A feasibility study cannot create a proposed
budget and schedule without a preliminary study
of the requirements and a tentative
design. Detailed design or implementation
usually reveals gaps in the requirements
specification. The plan must allow for some form
of iteration.
25Modified Waterfall Model
Waterfall model with feedback This is better
Feasibility study
Requirements
System design
Program design
Implementation (coding)
Testing
Acceptance release
Operation maintenance
26Iterative Development Iterative Refinement
(Evolutionary Development)
Concept Initial implementation for client and
user comment, followed by refinement until system
is complete. Vaporware user interface
mock-up Throw-away software components
Dummy modules Rapid prototyping
Successive refinement Get something working as
quickly as possible!
27Iterative Refinement
Requirements
Evaluation
Design
Implementation
28Iterative Refinement
Evaluation may be continuous
Concurrent Activities
Initial Version
Requirements
Outline Description
Intermediate Versions
Design
Implementation
Final Version
29Mixed Processes Phased Development
- Combine sequential and iterative elements
- A simple system with basic functionality is
brought quickly into production (Phase 1). - Subsequent phases are based on experience gained
from users of each previous phase. - Advantages
- Pay-back on investment begins soon.
- Requirement are more clearly understood in
developing - subsequent phases
30Phased Development Online
When software is released online it is possible
to divide it into very small phases that are
developed and released in quick
succession. Example Amazon.com divides most
software development into phases of about four
weeks elapsed time. This approach is excellent
for continual enhancement of a system within a
well established architecture. It is not possible
for shrink wrapped software, embedded systems, or
similar environments.
31ExampleIterative Refinement Waterfall Model
Problem Add graphics package to a programming
environment Phase 1 Iterative refinement
Extend current environment with a preprocessor
and run-time support package. Test with users.
Make several new versions until users are pleased
with function. Phase 2 Modified waterfall Use
the results of Phase 1 as the basis for a
detailed set of requirements. Write new compiler
and run-time system incorporating graphics
elements. Make minor adjustments to requirements
as needed.
32Observations about Software Processes
Completed projects should have the basic process
steps but ... the development process is always
partly evolutionary. Risk is lowered by
Prototyping key components Dividing into
phases Following a visible software process
Making use of reusable components Conclusion It
is not possible to complete each step and throw
it over the wall.
33CS 501 Project Presentations Sequential Option
1. Requirements
Feasibility study
Requirements
2. Design
System design
Program design
3. Implementation
Implementation (coding)
Testing
If you follow a sequential process the three
presentations should be as shown.
Acceptance release
Operation maintenance
34CS 501 Project Presentations Iterative Option
Evaluation
Requirements
first presentation
second presentation
third presentation
Implementation
Design