You are on page 1of 62

Software Engineering Overview

Contents

 Background of software engineering (software crisis)


 Definition of software engineering
 Software process model
 Knowledge system of software engineering
 Ethics for software engineers
 Brief summary
What is software?

 Software is another part of computer system that is interdependent with hardware.


It is a complete collection of program, data and related documents.
 Software = Program + Data + Document
 A program is a sequence of instructions executed in accordance with pre-designed functional
and performance requirements
 Data is a data structure that enables a program to manipulate information normally
 Documents are literal and graphic materials related to program development, maintenance and
use
Features of software——Very complicated

 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

 Various forms of maintenance


 Corrective maintenance: modify the fault
 perfective maintenance: add function
 Adaptive maintenance: Migration
 Higher and higher maintenance costs
 55%-70 %
 Maintenance may cause other problems
History of Software
Early stage Stage two Stage three Stage four
For batch Multi user Distributed Object oriented
processing system technology
Real time
Embed Expert system
Finite Data base "intelligence"
distribution Artificial neural
Software Low cost
Custom hardware network
product
software Parallel
Consumer
impact computing

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

 Software quality is not guaranteed


 The launch of the Ariana rocket in Europe failed in the 1980s because of software
errors
 The launch of the American Atlas rocket failed because of a software failure
 Folios, an office information system developed in 1986 in the United Kingdom, was
cancelled in 1989 due to its unsatisfactory performance
 Japan's fifth generation machine failed in 1993 after spending 5 billion dollars
because of software problems
Symptoms of software crisis

 Schedule is difficult to control


 Projects are always delayed
 Software projects are always cancelled due to schedule issue
 Only a small part of projects can be completed on time
 Maintenance is very difficult
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

 A correct understanding of computer software(software ≠ program)


 It must be fully realized that software development is not a mysterious skill of individual, but an
engineering project with good organization, strict management, cooperation of all kinds of
individuals. Not Impersonal heroism
 The successful techniques and methods of developing software summarized in practice should be
popularized.
 Develop and use better software tools.
Software engineering arises from 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

Proposed at a meeting by NATO in Germany in 1968

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

 From two aspects


 the perspective of management
 a technical point of view
The technical way to solve the crisis

 Propose effective methods and tools to support software development


 Put forward the concept and thought of software engineering in 1968
 Structural software development method in 1970s
 Object oriented software development method in 1980s
 New technologies: software reuse, rapid prototyping, requirements engineering

 Typical technologies: com, Java, C + +, J2EE,. Net .


 Support tools and environments: JBuilder, visual studio, Weblogic
The management way to solve the 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

 Background of software engineering (software crisis)


 Definition of software engineering
 Software process model
 Knowledge system of software engineering
 Ethics for software engineers
 Brief summary
Definition of software engineering (1)

The establishment and use of sound engineering


principles (methods) in order to obtain economically
software that is reliable and works on real machines.
(1968- Fritz Bauer)
Definition of software engineering (2)

Software engineering. (1) The application of a


systematic, disciplined, quantifiable approach to
the development, operation, and maintenance of
software; that is, the application of engineering to
software. (2) The study of approaches as in (1).
(IEEE(The Institute for Electrical and Electronic
engineers) Std 610-1990. )
Definition of software engineering (3)

SEI software engineering definition from 1990

Engineering is the systematic application of scientific knowledge in


creating and building cost-effective solutions to practical problems in
the service of mankind.
Software engineering is that form of engineering that applies the
principles of computer science and mathematics to achieving cost-
effective solutions to software problems.
Contents

 Background of software engineering (software crisis)


 Definition of software engineering
 Software process model
 Knowledge system of software engineering
 Ethics for software engineers
 Brief summary
Software process model

 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

 The basic framework of software process model is provided.


 The strict sequence of activities in each stage was emphasized.
 Documents drive the next stage of work.
 Users can see their own products later in the development phase

What are the problems of traditional


waterfall model?
Disadvantages of traditional (idealized)
waterfall model

 1. There are order and dependence between stages.


 2. Postpone the implementation.
 3. The traditional waterfall model is too idealized. In fact, it's impossible for people not
to make mistakes in the process of work.
 Errors in specification documents can occur during the design phase.
 And the design defects or errors may appear in the implementation process.
 Many errors in the requirements analysis, design, or coding phase may be found in the
integrated test phase.
When is waterfall model suitable for?

 Waterfall model is suitable for the development of software projects


with clear, complete user requirements and no significant changes.
Advantages 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

Requirement analysis Starts with small functional subsystem and adds


functionality with each new release

System design

Complete program design, coding and


integration for each component, and
deliver to users after testing

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?

 Customers can accept phased delivery


 the requirement of engineering period is pressing.
 Users can participate in the whole software development process
 Software development organizations should have better class library and
component library.

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

Possible risks of software project:

 The user may not be satisfied after the product is delivered ;


 By the scheduled delivery date, the software development may have not
been finished ;
 Actual development costs may exceed budget ;
 Some key developers “job hop" before the product is finished ;
 Before the product was put into the market, competitors released a
software with similar functions and lower price.
Spiral Model

 Suggested by Boehm (1988)


 Combines development activities with risk management to minimize and
control risks.
 The model is presented as a spiral in which each iteration is represented by a
circuit around four major activities.
 Plan
 Determine goals, alternatives and constraints
 Evaluate alternatives and risks
 Develop and test
Advantages of spiral model

 Reduce the risk of the software project


Disadvantages of spiral model

 Requires experienced expertise in risk assessment, otherwise the risk is greater


 Too many iterations will increase development cost and delay delivery time.
When is spiral model suitable for?

 Large scale software project of internal development: convenient suspension.


 There are many uncertainties, many things cannot be planned at the beginning.
Summary of four models
Waterfall model: has a long history and is widely known. Advantages: its
standardization and document driven. Problem: the resulting software may be be
what users really need.

The rapid prototype model is proposed to overcome the shortcomings of waterfall


model. It can quickly build a prototype system that can run on a computer, let users
try out the prototype and collect feedback from users, to obtain the real needs of
users.

Incremental model has the advantages of easy maintenance However, its inherently
difficult is the software is required to have an open structure.

The risk driven spiral model is applicable to large-scale software projects


developed internally, but only when the developers have experience and expertise
in risk analysis and risk elimination.
Contents

 Background of software engineering (software crisis)


 Definition of software engineering
 Software process model
 Knowledge system of software engineering
 Ethics for software engineers
 Brief summary
Guide to the Software Engineering Body of Knowledge 2004
Version IEEE-ACM

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

 Background of software engineering (software crisis)


 Definition of software engineering
 Software process model
 Knowledge system of software engineering
 Ethics for software engineers
 Brief summary
Professional quality of Software Engineer

 Communication skills

 Honesty/Integrity

 Teamwork skills

 Interpersonal skills

 Motivation/Initiative

 Strong work ethic


Contents

 Background of software engineering (software crisis)


 Definition of software engineering
 Software process model
 Knowledge system of software engineering
 Ethics for software engineers
 Brief summary
Brief summary

 Software = program + data + document


 Software crisis: causes, phenomena, methods(SE)
 Software Engineering(SE)
 Software life cycle process: waterfall model, rapid prototype model, incremental model,
spiral model

You might also like