| Demo Lecture Overview
of Software Engineering
About
This Lecture
This course
is intended to cover the object-oriented approach to software engineering,
combining both the theoretical principles and the practical aspects of
software design using the JAVA language. Students will learn the fundamentals
of object-oriented software engineering and participate in a group project
on software design using JAVA.
|
Lecture
Menu
About
this Lecture
The
Software Crisis
Summary
Scope
of Software Engineering
Software
Life Cycle
Programming
Team
An
Example |
| The
Software Crisis
The Problems
- Schedule slippage
- cost over-runs
- questionable quality
- customer dissatisfaction
- poor maintainability
The Reasons
- Poor/inadequate
planning
- loose control and
review
- technical incompetence
- non-engineering approach
Development Myths
- A general
statement of objectives" is all I need from the customer. I will
fill in the details later.
- As a customer
I can keep changing my mind and redefining the intent of a program.
After all, software is flexible, isn't it?
- I have got to begin coding because we are already late!
- The only deliverable for a successful project is a
source code listing.
- It is impossible to assess the quality of a program until after it
is written and working.
- Once the program is written, we are done.
- Any competent engineer can write programs.
- Let us run a few test cases and then we'll be finished!
- I know what the program does, I don't have time to document it.
- I am working on programs that were originally written 30 years ago.
How can I use modern software engineering techniques?
The Solution
- Apply
an engineering approach to software development.
- Include procedures for planning, development, quality
control, validation and maintenance.
- Apply the approach consistently, across all types of software.
A software lifecycle
- Planning
- Development
- Maintenance
Computer-based
products and systems require a coordinated engineering effort for both
software and hardware. Other system elements must also be integrated properly.
Key Criteria
- A well-defined
methodology
- Predictable milestones
- traceability among steps
- documentation
- control
Software Configuration
The collection of documents including: software plan,
requirements, specification, design documents, walk-through reports, source
codes, testing results, maintenance reports. and other related documents.
|
Summary
- A software
crisis encompasses many problems
- Myths cause management confusion and technical resistance
- A software life cycle model helps to deal with problems
- Software
engineering addresses the life cycle in a systematic way
|
| Scope
of Software Engineering Characteristics
of Software
What is the difference
between building bridges and building operating systems?
Answer: Bridges are
engineered to withstand every reasonably anticipated condition; while
operating systems are often built so that damages caused by unanticipated
conditions are minimized.
Corollary: Bridges
are assumed to be perfectly engineered; while operating systems are assumed
to be imperfectly engineered.
Another major difference:
Bridges are not drastically modified during its useful life; while operating
systems are often drastically modified. (People don't rotate the bridge
90% in the maintenance phase, but people do want to modify a batch operating
system so that it supports time-sharing operation!)
Software
Engineering is defined as the discipline whose aim is the production of
fault-free software that satisfies th user's needs and that is delivered
on time and within budget.
|
| Software
Life Cycle
The waterfall model
considers software design as consisting of a number of stages, or phases.
1. Requirement Phase
2. Specification Phase
3. Planning Phase
4. Design Phase
5. Implementation Phase
6. Testing and Integration Phase
7. Maintenance Phase
8. Retirement |
| Approximate
Costs of the Various Phases of the Software Life Cycle
1. Requirement
Phase (2%)
2. Specification Phase (4%)
3. Planning Phase (1%)
4. Design Phase (6%)
5. Implementation Phase (5%)
6. Testing and Integration Phase (15%)
7. Maintenance Phase (67%)
8. Retirement
We need
techniques, tools and practices to reduce maintenance costs! |
| Errors
The cost of fixing a fault increases at later stages of the software life
cycle.
Many faults
are introduced at the early stages of the design process.
We need
better techniques to produce better specification and design. |
| Programming
Team
Unless the
team is properly organized, an inordinate amount of time can be wasted
in conferences between team members.
If you put
more people on a project that is already late, it can only delay it further!
There are
different types of teams:
- chief-programmer
team
- democratic team
- hierarchical team
Common Problems:
- Lack of
understanding of other team members' job functions, expertise, etc.
- Improper delegation of authority
- Failure to report changes to other team members
- Failure to coordinate efforts
- Constant turn-over of team members
|
| Object-Oriented
Paradigm
The structured
paradigm consists of structured systems analysis, structured design,
structured programming and structured testing. They were introduced between
1975 and 1985, and looked promising at the time.
Two problems with
structured paradigm:
- Could not scale
up: Good for products with 5,000 or 50,000 LOC (lines of code), but
inadequate for products with 500,000 LOC or more.
- Could not reduce maintenance costs.
The reason is that
structured techniques are either action oriented (such as data flow analysis)
or data oriented (such as Jackson method) but not both.
Object-oriented paradigm
considers data and action to be of equal importance.
In structured paradigm,
there are abrupt transitions between specification phase and the design
phase. In object-oriented paradigm, the transition is smooth, because
objects enter the life cycle at the very beginning. The objects are extracted
in the analysis phase, designed in the design phase, and coded in the
implementation phase. Thus, the object-oriented paradigm is an integrated
approach.
|
| Structured
Paradigm
Specification
phase
. Determine what the product does
Design Phase
. Architectural design (extract the modules)
. Detailed design (refine the modules)
|
Object-Oriented
Paradigm
Object-oriented
analysis phase
. Determine what the product does
. Extract the objects
Object-oriented design phase
. Detailed design (refine the objects)
|
| An
Example
Suppose you live in
New Orleans and you want to have a floral arrangement delivered to our
aunt in Iowa City on her birthday. One way would be to try to obtain a
list of all the florists in Iowa City and then determine which one is
closest to your aunt's home. The other way is to call 1-800-FLOWERS and
leave the entire responsibility for delivering the floral arrangement
to that organization. You do not have to know the identity of the Iowa
City florist who will deliver the flowers.
In exactly the same way, when a message is sent to an object, the object
itself is totally responsible for every detail of carrying out the message.
This leads to the
concept of responsibility-driven design or design by contract.
|