What is Software Engineering? - FSU Computer Science Department

advertisement
An Introduction to Software
Engineering
Objectives


Introduce software engineering and to explain its
importance
Set out the answers to key questions about software
engineering
FAQs about software engineering


What is software engineering?
What is the difference between software engineering,
computer science, and systems engineering?

What is the software crisis?

What are the costs of software engineering?

What is software and what are the attributes of good
software?

What is a software process and a software process model?

What are software engineering methods?

What is CASE (Computer-Aided Software Engineering)

What are the key challenges facing software engineering?
What is software engineering?
From Wikipedia
“Software engineering is the application of a systematic, disciplined,
quantifiable approach to the development, operation, and
maintenance of software.’’
Classic Definition (1969)
“The establishment and use of sound engineering principles in
order to obtain economically built software that is reliable and
works efficiently on real machines.”
IEEE Definition (1993)
“Software Engineering: (1) The application of a systematic,
disciplines, 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).”
Software Engineering vs. Computer Science


Computer science is concerned with theory and
fundamentals; software engineering is concerned
with the practicalities of developing and
delivering useful software.
Computer science theories are still insufficient to
act as a complete underpinning for software
engineering (unlike e.g. physics and electrical
engineering).
Software Engineering vs. Computer Science
COMPUTER
SCIENCE
Theories
CUSTOMER
Computer
Functions
SOFTWARE
ENGINEERING
Tools and
Techniques to
Solve Problem
Problem
Software vs. Hardware

You can’t see, touch, or feel software

Software is only engineered, not manufactured

Software doesn’t wear out

Software is complex

Software is a differentiator

Software can behave like an aging factory
Communication is a critical element.
Software Engineering vs. System Engineering



System engineering is concerned with all aspects of
computer-based systems development including
hardware, software and process engineering.
Software engineering is part of this process
concerned with developing the software
infrastructure, control, applications and databases in
the system.
System engineers are involved in system
specification, architectural design, integration and
deployment.
What to Study in Software Engineering?

Products produced
The final products are software components. They may be fully
executables components, programs, modules, systems, or simply
methods. There are many software deliverables between the
specification of the products and the actual products.

Processes used to produce the products
The software development life cycle describes the development
process for producing software products. However there are many
other items within the process. We will investigate the full process
of software engineering.
Some core questions

What is the software product?

Who does software engineering of the product?

Why is software important?

What are the steps in software engineering?


What is the work product of the engineering
process?
How do we ensure products are built correctly and
that the correct product is built?
Problems Behind the “Software Crisis”





Increased size and complexity of systems
Cost overruns
Design bugs after implementation
Maintenance ripple effect
Requirements and design needed
development tools, not just in the
programming tools
Software Crisis

Research from Standish Group Data on 9236 development projects
completed in 2004.
Abandoned or Cancelled Projects
http://articles.directorym.net/An_Introduction_to_Catastrophe_Disentanglement
_Lynchburg_VA-r923574-Lynchburg_VA.html
Software Crisis

2002 survey of information technology
organizations by Cutter Consortium Data

78% have been involved in disputes ending in
litigation
In 67% of the disputes, the functionality of the
information system as delivered did not meet up to the
claims of the developers
o In 56% of the disputes, the promised delivery date
slipped several times
o In 45% of the disputes, the defects were so severe
that the information system was unusable
o
New Aspects of Crisis





(In)security - we have allowed ourselves to become too
dependent on software (and hardware) that was never
designed to be robust or secure
Over complexity - competition for more features, ease of
use, and integration are making products too large to
comprehend and maintain
Internationalization – this is a problem for the US, which has
been presumptuously complacent about its leadership
Software patents - these legal "land mines" are beginning to
choke the software industry
Rapid changes – tower of Babel, multicore, etc.
Weapons Against Software Crisis


Improving software engineering
methodologies
High-level languages and tools that
encourage and enforce these principles
Software Engineering Definition
The software crisis yielded yet another
definition of software engineering:

Discipline whose aim is the production of faultfree software, delivered on time and within
budget, that satisfies the client’s needs.
Costs of Software Engineering

Software costs dominate computer systems
costs.


Roughly 60% of costs are development costs, 40% are
testing costs. For custom software, evolution costs
often exceed development costs.
Software maintenance costs are more than
software development costs.

For systems with a long life the maintenance may be
several times the development costs. And often even
bad software has a long life.
Costs of Software Engineering

Costs vary depending on the type of system being
developed.


The costs depend of the requirements of system attributes
such as performance and system reliability as well as the
complexity of the type of system being developed.
Distribution of costs depends on the development
model that is used.
Activity cost distribution
Product development costs
Maintenance Costs
(a) Between 1976 and 1981
(b) Between 1992 and 1998
Changing View of Maintenance


Postdelivery maintenance

Development-then-maintenance model

Temporal definition
Modern maintenance

Occurs whenever a fault is fixed or the
requirements change, irrespective of whether
it takes place before or after installation of
the product
Cost to Detect and Correct a Fault
© The McGraw-Hill Companies, 2002
Slide 1. 15
Why So Costly?

To correct a fault early in the life cycle


Usually just a document needs to be changed
To correct a fault late in the life cycle

Change the code and the documentation

Test the change itself

Perform regression testing

Reinstall the product on the client’s computer(s)
Wear vs. Deterioration
increased failure
rate due to side effects
Failure
rate
change
actual curve
idealized curve
Roger S. Pressman, Software Engineering: A
Practitioner's Approach, Fourth Edition 1997
Time
The Cost of Change
60-100x
1.5-6x
1x
Definition
Development
After release
Roger S. Pressman, Chapter 1 Page 19, Software
Engineering: A Practitioner's Approach, Fourth Edition 1997
What is a Software Product?
A set of items or objects called a configuration. It
includes things like:






Multiple separate programs
Configuration files which are used to set up these programs
System documentation which describes the structure of
the system
Developer and User documentation which explains how to
use the system
Data for the system
Web sites for users to download recent product
information
What is software?



Computer programs and associated documentation
such as requirements, design models and user
manuals.
Software products may be developed for a
particular customer or may be developed for a
general market.
New software can be created by developing new
programs, configuring generic software systems or
reusing existing software.
What is software?
Software products may be

GENERIC


developed to be sold to a range of different customers
e.g. PC software such as Excel or Word.
referred to as commercial off-the-shelf (COTS)
software or clickware supplied by a vendor
BESPOKE (custom) - developed for a single customer
according to their specification.
Product specification controlled by the product developer
Software Terminology

Open-source software

Developed and maintained by a team of
volunteers

May be downloaded and used free of charge

Examples:
o
Linux operating system
o
Firefox web browser
o
Apache web server
Software Types
o
o
o
o
o
o
o
o
system software
real-time software
business software
engineering/scientific software
embedded software
PC software
AI software
WebApps (Web applications)
What are the attributes of good software?


The software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and acceptable.
Maintainability


Dependability


Software must be trustworthy;
Efficiency


Software must evolve to meet changing needs;
Software should not make wasteful use of system resources;
Acceptability

Software must accepted by the users for which it was designed. This
means it must be understandable, usable and compatible with other
systems.
What are the attributes of good software?


From the Users Perspective

Correctness

Reliability

Efficiency

Maintainability

Usability

Robustness
From the Developers Perspective

Consistency

Understandability

Testability

Compactness

Compatibility

Integrity
Software Process


A set of activities and associated results
which produce a software product
Incorporates a software life-cycle model,
techniques, the tools used, and the
software developers
What is a software process model?



A simplified representation of a software process, presented
from a specific perspective.
Examples of process perspectives are

Workflow perspective - sequence of activities;

Data-flow perspective - information flow;

Role/action perspective - who does what.
Generic process models

Waterfall;

Iterative development;

Component-based software engineering.
Software Life-cycle Models


Specifies the various phases of the
software process and the order in which
they are to be carried out.
Covered in Chapter 1 Dennis
What are software engineering methods?


Structured approaches to software development which
include system models, notations, rules, design advice and
process guidance.
Model descriptions


Rules


Constraints applied to system models;
Recommendations


Descriptions of graphical models which should be produced;
Advice on good design practice;
Process guidance

What activities to follow.
What is CASE?


Computer-Aided Software Engineering
Software systems that are intended to provide automated
support for software process activities.

CASE systems are often used for method support.

Upper-CASE


Tools to support the early process activities of requirements and
design;
Lower-CASE

Tools to support later activities such as programming, debugging and
testing.
What are the key challenges facing
software engineering?




Heterogeneity - platforms and execution environments
Delivery – faster time to market
Trust –includes reliability, security
Shifts in economics of computing




Lower hardware costs and greater development and
maintenance costs.
Shifts in technology

Extensive networking

Availability and adoption of OO technology

Graphical user interfaces
Budgets and costs
Maintaining quality
Key points




SWE is an engineering discipline that is concerned with all
aspects of software production.
Software products consist of developed programs and
associated documentation. Essential product attributes are
maintainability, dependability, efficiency and usability.
The software process consists of activities that are involved
in developing software products. Basic activities are software
specification, development, validation and evolution.
CASE tools are software systems which are designed to
support routine activities in the software process such as
editing design diagrams, checking diagram consistency and
keeping track of program tests which have been run.
Download