0% found this document useful (0 votes)
33 views

Software Engineering Introduction

Work very hard to understand what you have to do before you start any project. Having a clear understanding of the details and requirements up front reduces risks. The more information you can gather, the less uncertainty you will face later on.
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views

Software Engineering Introduction

Work very hard to understand what you have to do before you start any project. Having a clear understanding of the details and requirements up front reduces risks. The more information you can gather, the less uncertainty you will face later on.
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 32

Work very hard to understand

what you have to do before


you start. You may not be
able to develop every detail,
but the more you know, the
less risk you take.

Why does it take so long to get


software finished?
Why are development costs so high?
Why can't we find all the errors
before we give the software to
customers?
Why do we continue to have difficulty
in measuring progress as software is
being developed?

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

Software product characteristics


Successful software...

...provides the required functionality

...is usable by real (i.e. naive) users

...is predictable, reliable and dependable

...functions efficiently

...has a "life-time" (measured in years)

...provides an appropriate user interface

...is accompanied by complete documentation

...may have different configurations

...can be "easily" maintained

Software Poses Challenges


How do we ensure the quality of the software that
we produce?
How do we meet growing demand and still
maintain budget control?
How do we upgrade an aging "software plant?"
How do we avoid disastrous time delays?
How do we successfully institute new software
technologies?

First part Engineering


of the course
Software
Software engineering (SE) is the application of
systematic, disciplined, quantifiable approach to the
development, operation and maintenance of
software; that is, the application of engineering to
software.
SE is an engineering discipline concerned with all
aspects of software production from early
specifications through to maintenance.
SE is the profession that creates and maintains software
applications by applying technologies and practices
from computer science, project management,
engineering, application domain, and other fields.

SOFTWARE ENGINEERING:
TECHNOLOGY

A LAYERED

Software engineering is a layered


technology. Any engineering approach
(including software engineering) must
rest on an organizational commitment
to quality.
tools
Methods
Process
A quality Focus

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.

A Generic View of Software Engineering

Engineering is the analysis, design,


construction, verification, and
management of technical (or social)
entities
The work associated with software
engineering can be categorized into three
generic phases, regardless of application
area, project size, or complexity.

The definition phase focuses on what


That is, during definition, the software
engineer attempts to identify what
information is to be processed,
what function and performance are
desired,
what system behavior can be expected,
what interfaces are to be established,
what design constraints exist,
what validation criteria are required to
define a successful system.

The development phase focuses on how.


That is, during development a software
engineer attempts to define how data are to be
structured,
how function is to be implemented within a
software architecture,
how procedural details are to be implemented,
how interfaces are to be characterized,
how the design will be translated into a
programming language (or nonprocedural
language),
and how testing will be performed.

The support phase focuses on change


associated with
error correction,
adaptations required as the software's
environment evolves,
changes due to enhancements brought
about by changing customer
requirements.

Four types of change are encountered during the


support phase:
Correction : Corrective maintenance changes
the software to correct defects.
Adaptation: Adaptive maintenance results in
modification to the software to accommodate
changes to its external environment.
Enhancement : Perfective maintenance extends
the software beyond its original functional
requirements.
Prevention : preventive maintenance makes
changes to computer programs so that they can
be more easily corrected, adapted, and
enhanced.

THE SOFTWARE PROCESS


The Software Engineering Institute (SEI) has developed a
comprehensive model predicated on a set of software
engineering capabilities that should be present as organizations
reach different levels of process maturity.
To determine an organizations current state of process
maturity, the SEI uses an assessment that results in a five point
grading scheme.
The grading scheme determines compliance with a capability
maturity model (CMM) that defines key activities required at
different levels of process maturity.

The SEI approach provides a measure of


the global effectiveness of a company's
software engineering practices and
establishes five process maturity levels
that are defined in the following manner
:

Level 1: Initial.

Level 2: Repeatable.

Level 3: Defined.

Level 4: Managed.

Level 5: Optimizing.

Level 1: Initial. The software process is characterized


as ad hoc and occasionally even confusing. Few
processes are defined, and success depends on an
individual effort.

Level 2: Repeatable. Basic project management


processes are established to track cost, schedule, and
functionality. The necessary process discipline is in
place to repeat earlier successes on projects with similar
applications.

Level 3: Defined. The software process for


both management and engineering activities is
documented, standardized, and integrated into
an organization wide software process.
All projects use a documented and approved
version of the organization's process for
developing and supporting software. This level
includes all characteristics defined for level 2.

Level 4: Managed. Detailed measures of the


software process and product quality are
collected.
Both the software process and products are
quantitatively understood and controlled using
detailed measures.
This level includes all characteristics defined for
level 3.

Level 5: Optimizing. Continuous


process improvement is enabled by
quantitative feedback from the
process and from testing innovative
ideas and technologies.
This level includes all characteristics
defined for level 4.

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

The following KPAs should be achieved at each process maturity level :


Process maturity level 2
Software configuration management
Software quality assurance
Software subcontract management
Software project tracking and oversight
Software project planning
Requirements management
Process maturity level 3
Peer reviews
Intergroup coordination
Software product engineering
Integrated software management
Training program
Organization process definition
Organization process focus
Process maturity level 4
Software quality management
Quantitative process management
Process maturity level 5
Process change management
Technology change management
Defect prevention

All software development can be characterized as a


problem solving loop in which four distinct stages
are encountered:
status quo
problem definition
technical development
solution integration.
Status quo : represents the current state of affairs
problem definition : identifies the specific problem
to be solved;
technical development : solves the problem through
the application of some technology
solution integration :delivers the results (e.g.,
documents, programs, data, new business function,
new product) to those who requested the solution in
the first place.

To solve actual problems in an industry setting, a software engineer or a team


of engineers must incorporate a development strategy that encompasses the
process, methods, and tools.
This strategy is often referred to as a process model or a software
engineering paradigm. A process model for software engineering is
chosen based on the nature of the project and application, the methods and
tools to be used, and the controls and deliverables that are required.

You might also like