CHAP:1
- Introduction
to Software Engineering
|
1.
System
software:-
·
System software is a collection of programs written to service
other programs.
·
Some system software (e.g., compilers, editors, and file
management utilities) process complex, but determinate,information structures.
·
Other systems applications (e.g., operating system components,
drivers, telecommunications processors) process largely indeterminate data.
1.
Real-time software.
Software that monitors/analyzes/controls real-world events as
they occur is called real time.
2.
Business software. Business
information processing is the largest single software application area.
3.
Engineering and scientific software. Engineering
and scientific software have been characterized by "number crunching"
algorithms.
4.
Embedded software. Intelligent
products have become commonplace in nearly every consumer and industrial
market. Embedded software resides in read-only memory and is used to control
products and systems for the consumer and industrial markets.
5.
Personal computer software. The
personal computer software market has burgeoned over the past two decades.
6.
Web-based software. The
Web pages retrieved by a browser are software that incorporates executable
instructions (e.g., CGI, HTML, Perl, or Java), and data (e.g., hypertext and a
variety of visual and audio formats).
7.
Artificial intelligence software. Artificial
intelligence (AI) software makes use of nonnumerical algorithms to solve
complex problems that are not amenable to computation or straightforward
analysis.
2. SOFTWARE
ENGINEERING: A LAYERED TECHNOLOGY
· 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.
LAYERS:
· 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 (KPAs)
[PAU93] that must be established for effective delivery of software engineering
technology.
· The
key process areas form the basis for management control of software projects
and establish the context in which technical methods are applied, work products
(models, documents, data, reports, forms, etc.) are produced, milestones are
established, quality is ensured, and change is properly managed.
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.
· Software
engineering methods rely on a set of basic principles that govern each area of
the technology and include modeling activities and other descriptive
techniques.
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.
· CASE
combines software,hardware, and a software engineering database to create a software engineering environment
analogous to CAD/CAE (computer-aided design/engineering) for hardware.
3.
A
Generic View of Software Engineering
Engineering
is the analysis, design, construction, verification, and management of technical
(or social) entities. Regardless of the entity to be engineered, the following questions
must be asked and answered:
· What
is the problem to be solved?
· What
characteristics of the entity are used to solve the problem?
· 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.
The work
associated with software engineering can be categorized into three generic
phases, regardless of application area, project size, or complexity. Each phase
addresses one or more of the questions noted previously.
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, and 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,and how testing will be performed.
The support
phase focuses on change associated
with error correction, adaptations required as the software's environment
evolves, and changes due to enhancements brought about by changing customer
requirements.
Correction:-
Even with the best quality
assurance activities, it is likely that the customer will uncover defects in
the software. Corrective maintenance changes the
software to correct defects.
Adaptation:-
Over time, the original environment (e.g., CPU, operating system,
business rules, external product characteristics) for which the software was
developed is likely to change. Adaptive maintenance results
in modification to the software to accommodate changes to its external
environment.
Enhancement:-
As software is used, the customer/user will recognize additional functions
that will provide benefit. Perfective maintenance extends
the software beyond its original functional requirements.
Prevention:-
Computer software deteriorates due to change, and because of this,
preventive maintenance, often
called software reengineering, must be
conducted to enable the software to serve the needs of its end users.
In essence,
preventive maintenance makes changes to computer programs so that they can be
more easily corrected, adapted, and enhanced.
The phases
and related steps described in our generic view of software engineering are
complemented by a number of umbrella activities. Typical
activities in this category include:
· Software
project tracking and control
· Formal
technical reviews
· Software
quality assurance
· Software
configuration management
· Document
preparation and production
· Reusability
management
· Measurement
· Risk
management
4. SOFTWARE
PROCESS MODELS
· Software Process Models
–
Waterfall
model
–
Evolutionary
development
–
Component-based
software engineering
–
Incremental
model
–
Spiral model
· Software process is organized set
of activities aimed at building a software system
· Software process model is an
abstract representation of a software process
· Fundamental software process activities:
–
Software
specification
–
Software
design
–
Software
implementation
–
Software
validation
–
Software
evolution
1.
The Waterfall model:
·
Main
characteristics:
–
Also called classic software life cycle or
sequential model
–
Process activities (phases/stages) are
clearly separated
–
After a number of iterations, phases of
the life cycle (such as specification and design) are “frozen”
· Advantages:
–
Organized approach, provides robust
separation of phases
–
Reflects common engineering practice
· Disadvantages:
–
Doesn’t cope well with changes required by
the client
–
Development teams might wait for each
other
–
A working version of the product is
available only late
· Applicability:
–
When
requirements are well known and few changes are likely to be needed
–
Can be used
also for parts of larger software systems
2.
Evolutionary
Development:
The Evolutionary development
model has a peculiar characteristic that the processes are well checked and
tested at every development stage and the communication part plays a very
important role in this.
This can be clearly viewed from
the diagram of this process model.
· Main characteristics:
–
The phases of the software construction
are interleaved
–
Feedback from the user is used throughout
the entire process
–
The software product is refined through
many versions
· Types of evolutionary development:
–
Exploratory development
–
Throw-away prototyping
· Advantages:
–
Deals
constantly with changes
–
Provides
quickly an initial version of the system
–
Involves all
development teams
· Disadvantages:
–
Quick fixes may be involved
–
“Invisible” process, not well-supported by
documentation
–
The system’s structure can be corrupted by
continuous change
–
Special tools and techniques may be
necessary
–
The client may have the impression the
first version is very close to the final product and thus be less patient
· Applicability:
–
When
requirements are not well understood
–
When the
client and the developer agree on a “rapid prototype” that will be thrown away
–
Good for
small and medium-sized software systems.
3.
Spiral
Model:
· Main characteristics:
–
Also a hybrid model that support process
iteration
–
The process is represented as a spiral,
each loop in the spiral representing a process phase
–
Four sectors per loop: objective setting, risk
assessment and reduction, development and validation, planning
–
Risk is explicitly taken into
consideration
· Advantages:
–
Risk reduction mechanisms are in place
–
Supports iteration and reflects real-world
practices
–
Systematic approach
· Disadvantages:
–
Requires expertise in risk evaluation and
reduction
–
Complex, relatively difficult to
follow strictly
–
Applicable only to large systems
· Applicability:
–
Internal
development of large systems
4.
Phases
of Linear Sequential Model
· Designing:
–
In this
phase, the requirements are converted into design to be used in the next phase.
The design includes various elements such as database structures, software
architecture and procedures.
–
The design
is first passes through the quality test and then documented.
· Coding:
–
In this
phase the actual coding of the software is done. The design of the previous
phase is converted into the code.
· Testing:
–
In this
phase, the output generated is checked to ensure that it matches the
requirements. The programs developed in the previous phase are checked for the
logical and syntax errors.
· Maintenance and Support:
–
The software
developed needs to maintenance and support. This refers to the changes as well
as new requirements in the software after delivery.
5.
Incremental Model (INM):
In the Incremental model the
processes in the sequential model are repeated at some instances of time to add
different functionalities. After adding the functionality the processes are
repeated again and all the phases are repeated to complete the process of
adding all the requirements given by the user at the end of each communication.
· Main
characteristics:
–
The phases of the software construction
are interleaved
–
Feedback from the user is used throughout
the entire process
–
The software product is refined through
many versions
·
Advantages:
–
Deals
constantly with changes.
–
Provides
quickly an initial version of the system.
–
Involves all
development teams.
·
Disadvantages:
–
Quick fixes may be involved.
–
“Invisible” process, not well-supported by
documentation.
–
The system’s structure can be corrupted by
continuous change
–
Special tools and techniques may be
necessary
–
The client may have the impression the
first version is very close to the final product and thus be less patient
· Applicability:
–
When requirements are not well understood
–
When the
client and the developer agree on a “rapid prototype” that will be thrown away
–
Good for
small and medium-sized software systems.
6.
Phases of Prototyping Model:
·
Advantages:
–
Due to the interaction
between the client and developer right from the beginning, the objectives and
requirements of the software is well established.
–
Suitable for
the projects when client has not clear idea about his requirements.
–
The client
can provide its input during development of
the prototype.
–
The
prototype serves as an aid for the development of the final product.
·
Disadvantages:
–
The quality
of the software development is compromised in the rush to present a working
version of the software to the client.
–
The clients
look at the working version of the product at the outset and expect the final
version of the product to be delivered immediately. This cause additional
pressure over the developers to adopt shortcut in order to meet the final
product deadline.
7.
Rapid
Application Development:
–
RAD is a
high speed version of linear sequential model. It is characterized by a very
short development life cycle, in which the objective is to accelerate the
development.
–
The RAD
model follows a component based approach.
–
In this
approach individual components developed by different people are assembled to
develop a large software system.
· Advantages:
–
Due to
emphasis on rapid development, it results in the delivery of fully functional
project in short time period.
–
It encourages
the development of program component reusable.
· Disadvantages:
–
It requires
dedication and commitment on the part of the developers as well as the client to meet the deadline.
If either party is indifferent in needs of other, the project will run into serious
problem.
–
Its
application area is restricted to systems that are modular and reusable in
nature.
–
It is not
suitable for the applications that have a high degree of technical risk.
COMPARISON BETWEEN THE DIFFERENT
MODELS :
STRENGTH
|
WEAKNESS
|
WHEN TO USE??
|
|
WATERFALL MODEL
|
a.
Easy
to understand, easy to use.
b.
Provides
structure to inexperienced staff.
c.
Milestones
are well understood
d.
Sets
requirements stability
e.
Good
for management control (plan, staff, track)
f.
Works
well when quality is more important than cost or schedule
Waterfall
|
a)
All
requirements must be known upfront
b)
Deliverables
created for each phase are considered frozen –inhibits flexibility
c)
Integration
is one big bang at the end
d)
Little
opportunity for customer to preview the system (until it may be too late)
|
a)
Requirements
are very well known
b)
Product
definition is stable
c)
Technology
is understood
d)
Porting
an existing product to a new platform.
|
PROTOTYPING MODEL
|
a)
Customers
can ―see the system requirements as they are being gathered
b)
Developers
learn from customers
c)
A
more accurate end product
d)
Allows
for flexible design and development
e)
Steady,
visible signs of progress produced
|
a)
Bad
reputation for ―quick-and dirty methods.
b)
The
customer may want the prototype delivered
c)
Process
may continue forever (scope creep)
|
a)
Requirements
are unstable or have to be clarified.
b)
As
the requirements clarification stage of a waterFall model.
c)
Develop
user interface.
d)
Short
lived demonstrations.
|
INCREAMENTAL MODEL
|
a)
Develop
high-risk or major functions first
b)
Each
release delivers an operational product
c)
Customer
can respond to each build
d)
Lowers
initial delivery cost
e)
Initial
product delivery is faster
f)
Customers
get important functionality early
g)
Risk
of changing requirements is reduced
|
a)
Requires
good planning and design
b)
Requires
early definition of a complete and fully functional system to allow for the
definition of increments
c)
Total
cost of the complete system is not lower
|
a)
Most
of the requirements are known up-front but are expected to evolve over time
b)
A
need to get basic functionality to the market early
c)
On
projects which have lengthy development schedules
d)
On
a project with new technology
|
SPIRAL MODEL
|
a)
Each
cycle is this model is completed by their view of the product as well as the
plans. Thus it is helpful for development and enhancement.
b)
Software
evolves gradually so the customer and developer better understand and deal
with the risks at each revolutionary stages.
c)
The
spiral model demands a direct consideration of technical risks at all stages
of
d)
The
project and, if properly applied, should reduce risks before they become
problematic.
e)
“This
model is very useful in high risk projects.
|
a)
It
demands considerable risk assessment expertise and relies on this expertise for
success. If a major risk is not uncovered and managed, problems will
undoubtedly occur.
b) Finally, the model has not been
used as widely as the linear sequential or prototyping paradigms.
c)
It
may be difficult to convince customers (particularly in contract situations)
that the evolutionary approach is controllable.
|
a) It is a realistic approach and is used in development of
large scale systems and software.
|
CONCURRENT MODEL
|
a)
Estimates
(i.e. budget, schedule, etc.) become more realistic as work progresses,
because important issues are discovered earlier.
b) It is more able to
cope with the (nearly inevitable) changes that software development generally
entails.
c)
Software engineers (who can get restless
with protracted design processes) can get their hands in and start working on
a project earlier.
|
a) Highly customized limiting re-usability
b)
Applied
differently for each application
c)
Risk of not meeting budget or schedule
|
a)
When
knowing every stage transition of
activity is necessary
|
No comments:
Post a Comment