Professional Documents
Culture Documents
Contents
Logic complexity
Much higher than the logic complexity of hardware
Development complexity
The cost is hard to estimate
Schedule is difficult to control
High requirements for developers’ quality
Quality is not guaranteed
Features of software——High cost
Features of software——High risk
Statistical analysis of Standish Consulting Group in 1995 (software projects to the early 1990s)
Succeed : 16.2%
Failed : 31 %
Challenged : 53.8%
Statistics in recent years
Succeed : 26%
Failed : 28 %
Challenged : 46%
Features of software——Maintenance difficulties
1950
In 1960
October 1968, 1970the North Atlantic
scientists from 1980 1990
Treaty Organization
(NATO) formally raised the issue of software crisis at an academic
conference held in Germany.
Software Crisis
In 1963, the U.S. rocket to Mars exploded, causing $10 million in damage. The
reason is FORTRAN program:
DO 5 Ⅰ=1 , 3
is mistakenly written as : DO 5 Ⅰ=1 . 3
Software Crisis
In 1967, when the Soviet union-1 manned spacecraft returned to the Earth, the
software ignored a decimal point, and it was burned because it could not open a
parachute when it entered the atmosphere.
Software Crisis
The operating system of IBM 360 was developed by IBM company from 1963 to 1966. This project
took 5000 people a year, with 1000 people working on development at most, and nearly 1 million
line source programs. Every time a new version is released, 1000 program errors are found from the
previous version. F.D. brook, the project leader, concludes: "it's like a wild animal that escapes into a
mire and makes a dying struggle. The more it struggles, the deeper it gets. In the end, we can't
escape from the disaster of extinction. "
Symptoms of software crisis
High cost
IBM 360 OS(1963 - 1966) , spent more than $200
million
The U.S. global military command and control system
spent $100 million in hardware and $720 million in
software
Symptoms of software crisis
The estimation of software development cost and schedule is often inaccurate. It is not uncommon
for the development cost to exceed the budget and the actual progress to be delayed over and over
again than scheduled.
Users are often dissatisfied with the "completed" system.
The quality of software products is often unreliable. Bug after bug, patch after patch.
The maintainability of the software is very low.
Software often does not have proper documentation.
The cost of software is increasing.
The improvement of software development productivity can't catch up with the development of
hardware and the growth of people's demand.
Reasons of software crisis
Related to the characteristics of the software itself (difficult to maintain, complex logic)
Related to incorrect methods of software development and maintenance:
Software ≠ program
Eager for success
No method
Ways to eliminate software crisis
Developing a software system with certain scale and complexity is different from writing
a simple program
building a doghouse VS a high building
The development of large and complex software system is a project. The production and
management of software must be organized according to the engineering method, and a
series of software processes and activities such as analysis, design, implementation,
testing and maintenance must be carried out
Software Engineering
ItIttakes
takessoftware
softwareas
asan
anindustrial
industrialproduct
productand
andrequires
requiresus
usto
to
plan,develop
plan, developand
andmaintain
maintainthe
thesoftware
softwareusing
using“engineering”
“engineering”
principleand
principle andmethod.
method.
Software engineering: efforts to overcome
software crisis
In the late 1980s, DOD and industry began to realize the importance of management
According to a DOD study, 70% of projects are difficult to control progress,
cost and quality due to poor management;
Further research shows that management is the overall factor that affects the
successful development of software projects, while technology only affects
local factors
If the software development organization can't manage the software project
effectively, it can't fully utilize software development methods and tools,
and can't develop high quality software products efficiently
Contents
Every stage of the software life cycle has a clear task, which makes the software development easy to
control and manage.
How to connect the activities of each stage, what kind of strategy should be adopted in the
development process, and what kind of regulations and restrictions should be abided by? These
activity frameworks (ignoring unnecessary details) are represented by a model called software
process model (or software development model or software life cycle model).
Software process model
Waterfall Model
Prototype Model
Incremental Model
Spiral Model
Waterfall Model
Characteristics of waterfall model
Document driven
Can force developers to adopt a standardized approach;
Strictly stipulate the documents that must be submitted in each stage;
All products required to be delivered at each stage must be carefully verified by the quality
assurance team.
Disadvantages of waterfall model
Document driven
The actual projects seldom follow the order given by the model;
It is often difficult for users to give all the requirements clearly;
Users must be patient until the system development is complete.
Software process model
Waterfall Model
Prototype Model
Incremental Model
Spiral Model
Rapid Prototype Model
In many cases when the user cannot give a complete and accurate description of the
requirements, or the developer cannot determine the validity of the algorithm, the
adaptability of the operating system or the form of human-computer interaction, a prototype
(operable software) can be built quickly according to a group of basic requirements of the
user, and then evaluated, further refined and adjusted to meet the requirements of the user, It
also enables developers to have a better understanding of what will be done.
Problems in prototype model
In order to make the prototype work as soon as possible, the overall quality and
long-term maintainability of the software are not considered.
In order to demonstrate the prototype, improper operating system, programming
language and inefficient algorithm may be used, which are the components of the
system.
The development process is not easy to manage.
How to use prototype?
Prototypes are built only to define requirements and then discarded (or partially
discarded).
Software process model
Waterfall Model
Prototype Model
Incremental Model
Spiral Model
Incremental Model
System design
Maintenance
Increment R D P T Deliver
1
Increment R D P T Deliver
2
Increment R D P T Deliver
3
Increment R D P T Deliver
4
● ● ● ● ●
Incremental model
R: requirement analysis
D: design
P: program
T: test
Advantages of incremental models
It can submit products that can complete part of the work to users in a short
time.
The whole software product is decomposed into many incremental
components, and the developers can develop one component by one.
The gradual increase of product functions can give users plenty of time to
learn and adapt to new products.
The incremental model needs more careful design than the waterfall model
and the rapid prototype model, but the extra work in the design phase will
be rewarded in the maintenance phase.
The difficulty of incremental model
When we integrate each new incremental component into the existing software
architecture, we must not destroy the original developed products. In addition, the
software architecture must be designed to be easy to expand in this way, and the
process of adding new components to existing products must be simple and
convenient, that is to say, the software architecture must be open.
There is a risk that multiple components can not be integrated.
When is incremental model suitable for?
Tips: When software enterprises develop large-scale projects, they usually adopt
incremental model, because subsystems can be implemented one by one according
to priorities
Difference between incremental model, waterfall
model and rapid prototype model
waterfall model and rapid prototype model :
One time delivery of a product to meet all needs
incremental model :
Delivery in batches
Software process model
Waterfall Model
Prototype Model
Incremental Model
Spiral Model
Spiral Model
Incremental model has the advantages of easy maintenance However, its inherently
difficult is the software is required to have an open structure.
Knowledge Areas , KA ,
Software Requirements
Software Design
Software Construction Development
Software Testing
Software Maintenance
Software Configuration Management
Software Engineering Management
Software Engineering Process Support process
Software Engineering Tools and Methods
Software Quality
Software engineering related disciplines
Computer Engineering
Computer Science
Management
Mathematics
Project Management
Quality Management
Software Ergonomics( 软件人类工程学 )
Systems Engineering
Contents
Communication skills
Honesty/Integrity
Teamwork skills
Interpersonal skills
Motivation/Initiative