Professional Documents
Culture Documents
Chapter 10: Software Engineering
Chapter 10: Software Engineering
Chapter 10: Software Engineering
Ali Kassem
Presentation slides are copyright 2002 by John Lewis and William Loftus. All rights reserved.
Instructors using the textbook may use and modify these slides for pedagogical purposes.
Software Engineering
The quality of the software is a direct result of the process
we follow to create it
Ali Kassem 2
The Software Life Cycle
The overall life cycle of a program includes use and
maintenance: (Editor: can you center “Use” in the box?)
Use
Development
Maintenance
Development
Use and
Maintenance
Ali Kassem 5
Development and Maintenance Effort
Development Maintenance
Development Maintenance
Ali Kassem 6
Development and Maintenance Effort
Often the maintainers of a program are not the program’s
original developers
Ali Kassem 8
The Build-and-Fix Approach
Write Modify
program program
Ali Kassem 9
The Waterfall Model
The waterfall model was developed in the mid 1970s
Ali Kassem 10
The Waterfall Model
Establish
requirements
Create
design
Implement
code
Test
system
Ali Kassem 11
Iterative Development
Iterative development allows the developer to cycle through
the different development stages
Ali Kassem 12
An Iterative Development Process
Ali Kassem 13
Testing
The results of each stage should be evaluated carefully
prior to going on to the next stage
Ali Kassem 14
Testing Techniques
A design or an implementation may be evaluated during a
walkthrough
Ali Kassem 16
Black-Box Testing
Black-box testing maps a set of specific inputs to a set of
expected outputs
Ali Kassem 17
White-Box Testing
White-box testing also is referred to as glass-box testing
Ali Kassem 18
Prototypes
A prototype is a program created to explore a particular
concept
Ali Kassem 19
Throw-away vs. Evolutionary
Prototypes
A “quick and dirty” prototype to test an idea or a concept
is called a throw-away prototype
Ali Kassem 21
An Evolutionary Development Model
Establish
Establish Architectural
refinement System test
requirements design
scope
Identify
Implementation
relationships
Detailed
design
Ali Kassem 22
Refinement Cycle
First, we establish the refinement scope to define the specific
nature of the next refinement
For example:
• the user interface
• the feasibility of a particular requirement
• utility classes for general program support
Ali Kassem 23
Refinement Cycle
Next, we identify classes and objects that relate to the current refinement
Ali Kassem 24
Refinement Cycle
Next we identify relationships among classes
• general association (“uses”)
• aggregation (“has-a”)
• inheritance (“is-a”)
Ali Kassem 25
Refinement Cycle
Inheritance, discussed in detail in Chapter 7, may lead to
the creation of a new class whose sole purpose is to gather
common data and common methods in one place
Ali Kassem 27
The PaintBox Project
Now we explore the evolutionary development model using
a project larger than any we’ve seen so far