Você está na página 1de 25

Reference

• Chapter 2 : The Process

AKK/SE/P02 - 1 SOFTWARE ENGINEERING


Objective of the Session
• Software Engineering - A Layered
Technology
• The Software Process
• Software Process Models
• The Linear Sequential Model
• The Prototyping Model
• The RAD Model
• The Evolutionary Software Process Models

AKK/SE/P02 - 2 SOFTWARE ENGINEERING


Software Engineering
A Layered Technology
• Definition
• Process, Methods, and Tools
• A Generic View of Software Engineering

AKK/SE/P02 - 3 SOFTWARE ENGINEERING


Definition
• Software engineering is the establishment
and use of sound engineering principles in
order to obtain economically software that
is reliable and works efficiently on real
machines

AKK/SE/P02 - 4 SOFTWARE ENGINEERING 1/2


Definition
• Software Engineering: (1) The application
of a systematic, disciplined, quantifiable
approach to development, operation, and
maintenance of software; that is, the
application of engineering to software.
(2) The study of approaches as in (1)

AKK/SE/P02 - 5 SOFTWARE ENGINEERING 2/2


Process, Methods, and Tools
• Software Engineering Layers
tools
methods
process
A quality focus

AKK/SE/P02 - 6 SOFTWARE ENGINEERING 1/4


Process, Methods, and Tools
• The foundation for software engineering is
the process layer.
• Process defines a framework for a set of key
process areas (KPAs) that must be
established for effective delivery of
software engineering technology.
• The key process areas form the basis for
management control of software projects.

AKK/SE/P02 - 7 SOFTWARE ENGINEERING 2/4


Process, Methods, and Tools
• Software engineering methods provide
technical “how to’s” for building software.
• Methods encompass a broad array of tasks
that include requirements analysis, design
program construction, testing, and
maintenance.

AKK/SE/P02 - 8 SOFTWARE ENGINEERING 3/4


Process, Methods, and 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 (CASE), is established.

AKK/SE/P02 - 9 SOFTWARE ENGINEERING 4/4


A Generic View of Software
Engineering
• Engineering is the analysis, design,
construction, verification, and management of
technical (or social) entities.
• Regardless of the entity that is to be
engineered, the following questions must be
asked and answered:
– What is the problem to be solved?
– What are the characteristics of the entity that is
used to solve the problem?
AKK/SE/P02 - 10 SOFTWARE ENGINEERING 1/5
A Generic View of Software
Engineering
– How will the entity (and the solution) be realized?
– How will the entity be constructed?
– What approach will be used to uncover errors that
were made in the design and construction of the
entity?
– How will the entity be supported over the long
term, when corrections, adaptations, and
enhancements are requested by users of the entity?

AKK/SE/P02 - 11 SOFTWARE ENGINEERING 2/5


A Generic View of Software
Engineering
• Throughout the discussion we focus on a
single entity - computer software.

AKK/SE/P02 - 12 SOFTWARE ENGINEERING 3/5


A Generic View of Software
Engineering
• 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.
– The development phase focuses on how.
– The maintenance phase focuses on change.

AKK/SE/P02 - 13 SOFTWARE ENGINEERING 4/5


A Generic View of Software
Engineering
• The maintenance phase focuses on change.
– Correction
– Adaptation
– Enhancement
– Prevention

AKK/SE/P02 - 14 SOFTWARE ENGINEERING 5/5


The Software Process
Common Process Framework
Framework Activities
Task Sets
Tasks

Milestones, deliverables

SQA Points

Umbrella activities

AKK/SE/P02 - 15 SOFTWARE ENGINEERING


Software Process Models
• To solve a problem in an industry setting, a
software engineer or a team of engineers must
incorporate a development strategy that
encompasses the process, methods, and tools
and the generic phases.
• This strategy is often referred to as a process
model or a software engineering paradigm.

AKK/SE/P02 - 16 SOFTWARE ENGINEERING 1/3


Software Process Models
• 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.
• All software development can be characterized
as a problem solving loop.

AKK/SE/P02 - 17 SOFTWARE ENGINEERING 2/3


The Problem Solving Loop
• The phases of a problem solving loop.

problem
definition

technical
status
development
quo

solution
integration
AKK/SE/P02 - 18 SOFTWARE ENGINEERING 3/3
The Linear Sequential Model
• “classic life cycle” or “waterfall model”

System/information
modeling

analysis design code test

AKK/SE/P02 - 19 SOFTWARE ENGINEERING 1/2


The Linear Sequential Model
• Among the problems that are sometimes
encountered when the linear sequential model
is applied are:
– Real projects rarely follow the sequential flow that
the model proposes.
– It is often difficult for the customer to state all
requirements explicitly.
– The customer must have patience.
– Developers are often delayed unnecessarily.

AKK/SE/P02 - 20 SOFTWARE ENGINEERING 2/2


The Prototyping Model

listen to build/revise
customer mock-up

customer
test-drives
mock-up

AKK/SE/P02 - 21 SOFTWARE ENGINEERING 1/2


The Prototyping Model
• Prototyping can be problematic for the
following reasons:
– The customer sees what appears to be working
version of the software, unaware that the prototype
is held together.
– The developer often makes implementation
compromises in order to get a prototype working
quickly.

AKK/SE/P02 - 22 SOFTWARE ENGINEERING 2/2


The RAD Model
business
modeling

data
modeling

process
modeling

application
generation

testing
and turnover
AKK/SE/P02 - 23 SOFTWARE ENGINEERING
The RAD Model
• Like all process models, the RAD approach
has drawbacks:
– For large, but scalable projects, RAD requires
sufficient human resources to create the right
number of RAD teams.
– RAD requires developers and customers who are
committed to the rapid-fire activities necessary to
complete a system in a much abbreviated time
frame.

AKK/SE/P02 - 24 SOFTWARE ENGINEERING


The Evolutionary Software
Process Models
• The Incremental Model
• The Spiral Model
• The Concurrent Development Model

AKK/SE/P02 - 25 SOFTWARE ENGINEERING

Você também pode gostar