Software Engineering Introduction
Software Engineering Introduction
Software
What is Software?
Software is a set of items
or objects that form a
configuration that
includes
programs
documents
data ...
Software
Computer software has become a driving force.
It is the engine that drives business decision making.
It serves as the basis for modern scientific
investigation and engineering problem solving.
It is a key factor that differentiates modern products
and services.
It is embedded in systems of all kinds: transportation,
medical, telecommunications, military, industrial
processes, entertainment, office products, . . . The list
is almost endless.
Software delivers the most important product of our
timeinformation.
Software transforms personal data (e.g., an
individuals financial transactions) so that the data can
be more useful in a local context; it manages business
information to enhance competitiveness;
Software is
(1) instructions (computer programs) that
when executed provide desired function and
performance,
(2) data structures that enable the programs
to adequately manipulate information,
(3) documents that describe the operation
and use of the programs.
Software characteristics
Software is developed or engineered,
it is not manufactured in the classical
sense.
Software doesn't "wear out.
Most software continues to be
custom built.
Failure
rate
increased failure
rate due to side effects
change
actual curve
idealized curve
Time
...functions efficiently
SOFTWARE ENGINEERING:
TECHNOLOGY
A LAYERED
Quality
Total quality management and
similar philosophies foster a
continuous process improvement
The bedrock that supports software
engineering is a quality focus.
Process
The foundation for software engineering is the
process layer.
Software engineering process is the glue that
holds the technology layers together and
enables rational and timely development of
computer software.
Process defines a framework for a set of key
process areas that must be established for
effective delivery of software engineering
Methods
Software engineering methods provide
the technical how-to's for building
software.
Methods encompass a broad array of
tasks that include requirements
analysis, design, program construction,
testing, and support.
Tools
Software engineering tools provide automated
or semi-automated support for the process and
the methods.
When tools are integrated so that information
created by one tool can be used by another, a
system for the support of software
development, called computer-aided software
engineering, is established.
Level 1: Initial.
Level 2: Repeatable.
Level 3: Defined.
Level 4: Managed.
Level 5: Optimizing.
The SEI has associated key process areas (KPAs) with each of the
maturity levels.
The KPAs describe those software engineering functions (e.g.,
software project planning, requirements management) that must be
present to satisfy good practice at a particular level.
Each KPA is described by identifying the following characteristics:
Goalsthe overall objectives that the KPA must achieve.
Commitmentsrequirements (imposed on the organization) that
must be met to achieve the goals or provide proof of intent to comply
with the goals.
Abilitiesthose things that must be in place (organizationally and
technically)
to enable the organization to meet the commitments.
Activitiesthe specific tasks required to achieve the KPA function.
Methods for monitoring implementation the manner in
which the activities are monitored as they are put into place.
Methods for verifying implementation the manner in which
proper practice for the KPA can be verified