software engineering paradigms

advertisement
ESE Module 1-2
Software Engineering Paradigms
A paradigm is the model of a process. It defines the
flow of activities that occur as the process progresses
from start to end. In the context of software engineering, a paradigm provides a framework that identifies
major activities (sometime called phases), detailed
work tasks, milestones and deliverables.
A number of different paradigms can be applied
during a software project. These will be discussed in
this ESE module.
Software Engineering Paradigm
If you're wondering what all the fuss is about ... "paradigms, schmaradigms ... we sit down and start writing
code." you weren't paying too much attention during
Module 1-1! Building high-quality computer software
demands an engineering approach (and that's
encompasses far more than writing code). And an
engineering approach must be applied within the
context of a process model. The paradigm that you
choose will have a lot to do with the success of your
software engineering process.
Exercise 1-3.
Do You Use Software Engineering
Paradigm?
Think about a typical software project within your
organization and answer Yes or No to the following
questions:
1. Does a written project plan (it can be a few
pages or an in-depth document) exist before the project begins?
2. Is there a predictable set of tasks (other than coding) that will be performed on every project?
3. Do practitioners (e.g., programmers, engineers)
apply a predictable set of methods as the software
project proceeds?
4. Do your customers understand your approach to
software development or maintenance and their role
within your approach?
5. Does everyone have a clear understanding of the
milestones that represent progress on a software project?
6. Do practitioners understand what deliverables to
produce and what the content of these deliverables
should be?
If you answered Yes to all of the above questions, you
probably have a defined software process and have
established a software engineering paradigm.
Describe the major activities below, and then compare them to the paradigms discussed in the video
portion of this module.
Readings
The discussion of software engineering paradigms in
the video portion of this module presented evolutionary models as one of a number of alternative process
models. The following excerpt discusses the evolutionary model in a bit more detail.
The Evolutionary Process Model:
A New Attempt to Achieve Process Quality
Every evolutionary process model exhibits a "spiraling"
characteristic. Work proceeds along a spiral that passes
through a number of task regions in which a variety of
related software engineering tasks are conducted. With
each pass around the spiral, the software becomes more
complete.
Figure 1 depicts a multi-entry point, multi-task region,
evolutionary model. The task flow may be initiated at four
different entry points. Therefore, an individual or group
may enter the task flow at a number of different locations,
defined by the nature of the project that is to be undertaken. Typical entry points might be:
I. Concept feasibility projects that evolve as a result of
some new concept or the application of some new technology
II. New application projects to be undertaken as a consequence of a specific customer request for a computer-based
system
III. Roll-out projects that occur when a new application is
to be disseminated to many users
IV. Maintenance and/or support projects that correct,
adapt, or extend an existing application or system.
Projects in each of the above categories begin at a different
place in the task flow that is defined by the evolutionary
model.
A task region indicates a time span in the task flow
during which functionally related tasks are conducted. The
task regions for the model shown in Figure 1 are:

communication-tasks required to establish effective
communication between developer and customer
1-2.2 ·· Essential Software Engineering
 planning--tasks required to define resources, timelines,
and other project-related information
 risk assessment--tasks required to assess both technical
and management risks
 engineering--tasks required to build one or more representations of the application
 installation-tasks required to test, install, and provide
user support (e.g., documentation and training)
 customer evaluation--tasks required to obtain customer
feedback based on evaluation of the software representations created during the engineering stage and implemented during the installation stage.
Management and technical tasks are defined for each of the
task regions. To accommodate the need for an adaptive
process (e.g., one that adapts itself to the characteristics of
the project at hand), the evolutionary model should define
a number of task sets. Each task set contains software engineering tasks, milestones, and deliverables that have been
chosen to meet the needs of different types of projects.
Each task set must provide enough discipline to achieve
high software quality. But at the same time, it must not
burden the project team with unnecessary work.
Although any number of task sets can be suggested,
the following are typical:
Casual. The process model does not apply to the project,
but selected tasks may be applied informally and basic
principles of software engineering must still be followed.
Disciplined. The process model will be applied for the
project with a degree of discipline that will ensure high
quality and good application maintainability.
Rigorous. All process model tasks, documents, and milestones will be applied to the project. High quality, good
documentation, and long maintainability are paramount.
Quick reaction. The process model will be applied for the
project, but because of extremely tight time constraints,
only those tasks essential to maintaining good quality will
be applied. When necessary, "back-filling" (e.g., developing a complete set of documentation) will be accomplished
after the application is delivered to the customer.
The process model should provide a set of adaptation
criteria that can be used to guide a project manager in
selecting the right task set. Each adaptation criterion is
assigned a grade that is chosen based on a set of project
characteristics. Some suggested adaptation criteria follow:
Size of project. This criterion can be estimated in work
units (e.g., person-months) or product units (e.g., number
of lines of code to be generated).
Number of potential clients/customers. This criterion provides information on the potential market and, by inference, the amount of support required.
Business criticality. This criterion provides an indication
of the relative business impact of the project.
Longevity. This criterion estimates the number of years
that the application to be built will be in active use.
Stability of requirements. This criterion indicates the
degree to which software requirements are understood and
will remain stable throughout the project.
Ease of customer-developer communication. This criterion provides an indication of the ease with which communication can be conducted between customer and developer.
It is often affected by the location of developer and customer.
Maturity of technology. This criterion provides a relative
indication of the risk associated with the technology to be
implemented.
Performance constraints. This criterion provides a relative
indication of the overall performance demanded of the
application and the risk associated with achieving it.
Hardware and software environment. This criterion
defines the maturity and risk associated with the hardware
and software environment into which the application is to
be placed.
The Process Framework
The software engineering paradigm becomes one
part of the process model that establishes a framework for your software project. The detailed character
of your framework will vary, depending on local
requirements, the kinds of software that you develop
and maintain, and a variety of other factors. In this
portion of ESE Module 1-2, the basic attributes of the
framework are discussed.
Software Engineering Paradigms ·· 1-2.3
Exercise 1-4.
Designing a Common Process
Framework
Using information presented in the video and further
information contained in the next Readings section,
outline a common process framework for your organization. Perform the following tasks:
1. Identify the framework activities that will be
applicable for all projects.
2. Define the major tasks that are appropriate for
each framework activity.
3. Define the deliverables that are associated with
each task.
4. Indicate what milestones will be used and how
quality will be assessed as a consequence of reaching
each milestone.
Discuss your work with colleagues to obtain construetive criticism of your process model.
Readings
Before any organization can succeed in establishing
effective software engineering practices, it must
develop a common process framework. The following
excerpt from A Manager's Guide to Software
Engineering describes the attributes of a common
process framework and proposes at set of questions
that can serve as a prototype for selecting a framework and the technologies that populate it.
The common process framework encompasses a common
set of tasks, milestones and deliverables that establish the
criteria for task completion at each step in the software
engineering process. Organizational responsibility is
defined for each deliverable. Reviews are conducted to
confirm completion. The framework also incorporates the
activities and responsibilities of quality assurance and configuration management.
A common process framework should be easily adapted to different technical methods (e.g., analysis, design or
testing methods) that are used for information system
development. It establishes milestones (checkpoints) and
deliverables for all projects and should be used for both
new work and maintenance.
While a minimum set of document deliverables are
necessary at each framework checkpoint, the formats can
be tailored to meet organizational and project needs as
long as the intent of the common deliverable is met.
A combination of a common framework, a conforming
(to the intent of the common framework) set of technical ·
methods, and a set of conforming (to the intent of the common framework) deliverables define the software engineering process.
In order to develop an appropriate common process
framework, it is important to establish a set of criteria for
the framework that your organization can live with. The
following criteria should get you started:
1. The process model should define tasks, milestones and
deliverables in a way that will guide project managers in
their work.
2. The process model should be adaptable. That is, it
should provide a framework for both large and small projects.
3. The process model should be applicable to both new
development and maintenance work.
4. The process model should demand appropriate documentation, but should not bury developers/maintainers
under an avalanche of documents.
5. The process model should serve as a first step toward
ther development of software engineering standards.
You goal is to select a set of methods that will complement
the software engineering tasks chosen as part of a common
process framework. To do this, you can begin with the following criteria that I have listed for each of the major methods areas. You should supplement these with criteria of
your own:
Analysis
 Does the analysis method support facilitated application specification with customers?
 Does the analysis modeling approach support a graphical notation that is widely used and understood?
 Are data, functional, and behavioral modeling supported?
 Is partitioning of all models supported?
· Does the method lead directly to (1) a specification or
(2) a prototype?
 Is the model that is created capable of being mapped
into a design?
 Is the method supported by a number of different
CASE tools supplied by different vendors on different platforms?
Design
 Does the design method support data design, architectural design, and procedural design?
 Does the design modeling approach support a graphical notation that is widely used and understood?
 Are design fundamentals such as support for abstraction, refinement, functional independence, or modularity
directly implemented using the method?
 Are design quality criteria explicitly stated?
 Does the design method result in the derivation of
reusable components?
 Is the method supported by a number of different
CASE tools supplied by different vendors on different platforms?
Programming Languages and 4GLs
 Are the programming languages that have been chosen best for your application domain?
 Are the programming languages that have been cho-
1-2.4 ·· Essential Software Engineering
sen best for your design approach?
 Are tools available for automatically generating source
code?
 Does the language enable you to maintain coding style
standards?
 Are the languages supported by a number of different
CASE tools supplied by different vendors on different platforms?
Testing
 Do the testing methods chosen support both black box
and white box testing philosophies?
 Are the testing methods supported by CASE tools?
Are the testing methods amenable to automated management by CASE tools?
 Do the testing methods provide path and condition
coverage?
 Are the test methods consistent with the testing strategy specified in the common process framework?
Reengineering Maintenance
· Can the chosen analysis/design/testing methods be
used during maintenance activities? How must they be
modified, if at all?
Are specialized tools available to support re-engineering methods?
Software Quality Assurance
 Do the SQA methods enable quality checking after
each major software engineering step?
Do the SQA methods support the collection of quantitative data?
 Are the methods to be applied by an independent
group? Are they easily learned?
 Is the formal technical review (FTR approach that has
been chosen well suited to the culture and personalities of
the organization's staff?
 Does the FTR method demand record keeping?
Software Configuration Management
 Do the methods for SCM provide the procedural controls implied by the process framework?
 Is SCM an integral part of any CASE repository?
 Are the SCM methods supported by a number of different CASE tools supplied by different vendors on different platforms?
Project Management
 Are cost estimation methods predicated on the collection of historical data?
 Are cost estimates to be derived using two different
and independent methods?
 Is there a way of assessing the risks inherent in a software project?
 Do scheduling methods make use of the tasks implied
in the common process framework?
 Are the project management methods supported by a
number of different CASE tools supplied by different vendors on different platforms?
Post-Test, Module I-2
This post-test has been designed to help you assess
the degree to which you've absorbed the information
presented in this ESE Module.
Software Engineering Paradigms
1. If requirements are well defined and there is little
likelihood that changes will occur, the simplest model
to implement is:
a. the classic lifecycle
b. prototyping
c. the spiral model
d. formal methods
2. One of the problems associated with the linear,
sequential paradigm is:
a. it doesn't accommodate change particularly well
b. it doesn't have well defined milestones
c. it requires the use of structured methods
d. it can't be used when empirical estimation
methods are applied
3. The prototyping model can be used when:
a. requirements are uncertain and the software is
amenable to prototyping
b. the customer demands quick turn around
c. testing is unimportant
d. it can always be used, regardless of the
problem to be solved
4. When an evolutionary model is used:
a. the project plan will evolve
b. the design will evolve
c. the program will evolve
d. all of the above
5. What happens as a project moves outward on
the spiral?
a. risk is reduced
b. the project moves closer to completion
c. changes will not occur
d. none of the above
6. The cube model is a sophisticated version of the
evolutionary model because:
a. it moves toward more detail as time passes
b. it flattens the project organizationaI structure
c. it accommodates multiple, asynchronous
project activities
d. it demands more iterations prior to completion
Software Engineering Paradigms ·· 1-2.5
7. The reuse model is appropriate for object-oriented projects because:
a. it supports object-oriented programming
b. it accommodates evolutionary development and
the use of a class library
c. it has well-defined milestones
d. it supports structured methods
8. The clean room model makes use of formal
methods. This means that:
a. proof of correctness will be used
b. specification will be represented mathematically
c. inspections will be conducted
d. all of the above
9. A process framework will establish:
a. a set of activities that will be used on every
project, no matter what!
b. a set of activities that should be used on
every project
c. a set of activities that may be used on
every project, at the discretion of the individual
project manager
d. a set of activities that are recommended for use
10. The task set must be adaptable because:
a. different projects require different skills
b. different projects require different tasks to get the
job done effectively
c. data, function, and behavior must be
adequately modeled
d. the task set should not be adaptable!
11. All other things being equal, a large project would
have:
a. more framework activities than a smaller project
b. fewer framework activities than a smaller project
c. different framework activities from a smaller
project
d. an identical set of framework activities as a
smaller project
12. All other things being equal, a large project would
have
a. fewer tasks, milestones, and deliverables than a
smaller project
b. more tasks, milestones, and deliverables than a
smaller project
c. an identical set of tasks, milestones, and
deliverables as a smaller project
d. there's really no way to know
Copyright 1995 R.S. Pressman & Associates, Inc.
No part of this material may be electronically copied,
transmitted, or posted without the express written permission of
R.S. Pressman & Associates, Inc.
These materials have been posted on the Local Web Server of
the Department of Computer Science with permission of
R.S. Pressman & Associates, Inc. and are for use only by
students registered for DCS/235 at Queen Mary and Westfield
College
Download