301 Software Engineering Unit-1 PDF
301 Software Engineering Unit-1 PDF
Analysis
Define
Analyze and Specify Functional
Software Requirements Requirements
Define
Non-Functional
Requirements
Perform General
Requirements Perform General
Analysis Requirements
Analysis
Perform General Define Define
Requirements Functional
Analysis Requirements Non-Functional
Define Requirements
Functional Define
Requirements Functional
Requirements
Define
Non-Functional
Define b. Parallel enactment
Requirements Non-Functional
Requirements
a. Sequential enactment
b. Iterative enactment
Iterative enactment follows an underlying sequential order, but allows a step to be only partially completed
before the following step begins. Then at the end of a sequence, the steps can be re-enacted to complete
some additional work. When each step is fully completed, the entire sequence is done. In Figure b, some
initial work on general analysis can be completed, enough to start the function requirements analysis. After
some functional requirements are done, work on the non-functional requirements can begin. Then the three
steps are repeated until each is complete.
Parallel enactment allows two or more steps to be performed at the same time, independent of one another.
When the work of each step is completed, the process moves on to the subsequent steps.
Which of these enactment styles to use is determined by the mutual dependencies among the steps? For
some projects, the determination may be made that a complete understanding of the general requirements is
necessary before the functional and non-functional requirements begin. In this case, a strictly sequential
order is followed. In other projects, it may be determined that general requirements need only be partially
understood initially, in which case an in iterative order is appropriate.
In this particular example that deals with analysis, a purely parallel order is probably not appropriate,
since at least some understanding of the general requirements is necessary before functional and non-
functional requirements are analyzed. Given this, a hybrid process order can be employed, such as shown in
Figure 5. In this hybrid style of enactment, a first pass at general analysis is performed. Then the functional
and nonfunctional analysis proceed in parallel. The process then iterates back to refine the general
requirements and then proceed with further functional and non-functional refinements.
The three styles of process enactment discussed so far apply to process steps that are performed in some
order relative to one another. A fourth kind of enactment is pervasive. A pervasive process step is per-
formed continuously throughout the entire process, or at regularly scheduled points in time. A good
Perform General
Requirements
Analysis
Define Define
Functional
Requirements Non-Functional
Requirements
Manage
Specify
Configure
Prototype
Design
teet Test
Implement
Document
Deploy
Reuse
The problems that are sometimes encountered when the waterfall model is applied are:
Real projects rarely follow the sequential flow that the model proposes. Although the linear
model can accommodate iteration, it does so indirectly. As a result, changes can cause confusion as the
project team proceeds.
increment #
n
Pl a nn i n g
M od e l ing
D ep l o ym e n t
a n a l y si s Co n str u
ct i o
de li v e
C o m m u ni c a i o n r yf e e d b a
desi g n
deliv ery of
c k
increment # co d e
2 nt h
C o m m u ni c atio
te s t increment
n Pl a nn i n g
M od eli n g
desig n
a n a l y si s
co d e
C o n st r c ti
D ep l o ym e n t
deliv ery of
o n
increment # test
d eli v er
1
yf e e d b a
ck
2ndincremen
C o m m u ni c a i o
n
Pl a nn i n g t
M od eli n g
a n a l ys i
C o n st r u ct i o n
deliv ery of
1st
sd e s i g n
m en t
co d e D ep lo y
increment
te s t d eli
v e r y
fe ed
b a c k
The incremental model combines elements of the waterfall model applied in an iterative fashion.
The incremental model delivers a series of releases called increments that provide progressively more
functionality for the customer as each increment is delivered.
When an incremental model is used, the first increment is often a core product. That is, basic requirements
are addressed. The core product is used by the customer. As a result, a plan is developed for the next
increment.
The plan addresses the modification of the core product to better meet the needs of the customer and the
delivery of additional features and functionality.
This process is repeated following the delivery of each increment, until the complete product is produced.
For example, word-processing software developed using the incremental paradigm might deliver basic file
management editing, and document production functions in the first increment; more sophisticated editing,
and document production capabilities in the second increment; spelling and grammar checking in the third
increment; and advanced page layout capability in the fourth increment.
Difference: The incremental process model, like prototyping and other evolutionary approaches, is
iterative in nature. But unlike prototyping, the incremental model focuses on delivery of an operational
M o d e lin g
business m odeling
dat a m odeling
Co n st ru ct io n
Planning
De ployme nt
Team # 1 int egrat ion
process m odeling
deliv ery
feedback
Mode ling
business modeling
dat a modeling
process modeling
Const ruct ion
component reuse
aut omat ic code
generat ion
t est ing
6 0 - 9 0 days
Qu ick
Com municat p lan
ion
Mo d e lin g
Qu ick d e sig n
Context:
If a customer defines a set of general objectives for software, but does not identify detailed input, processing,
or output requirements, in such situation prototyping paradigm is best approach.
If a developer may be unsure of the efficiency of an algorithm, the adaptability of an operating system then he
can go for this prototyping method.
Advantages:
The prototyping paradigm assists the software engineer and the customer to better understand what is to be
built when requirements are fuzzy.
The prototype serves as a mechanism for identifying software requirements. If a working prototype is built, the
developer attempts to make use of existing program fragments or applies tools.
Prototyping can be problematic for the following reasons:
The customer sees what appears to be a working version of the software, unaware that the prototype is held
together ―with chewing gum and baling wire‖, unaware that in the rush to get it working we haven‘t
considered overall software quality or long-term maintainability. When informed that the product must be
rebuilt so that high-levels of quality can be maintained, the customer cries foul and demands that ―a few
fixes‖ be applied to make the prototype a working product. Too often, software development relents.
The developer often makes implementation compromises in order to get a prototype working quickly. An
inappropriate operating system or programming language may be used simply because it is available and
known; an inefficient algorithm may be implemented simply to demonstrate capability. After a time, the
RCR Institute of Management and Technology Page 13
Prepared by Mrs.P.Lalitha Software Engineer
developer may become comfortable with these choices and forget all the reasons why they were
inappropriate. The less-than-ideal choice has now become an integral part of the system.
THE SPIRAL MODEL
The spiral model, originally proposed by Boehm, is an evolutionary software process model that couples
the iterative nature of prototyping with the controlled and systematic aspects of the waterfall model.
The spiral model can be adapted to apply throughout the entire life cycle of an application, from
concept development to maintenance.
Using the spiral model, software is developed in a series of evolutionary releases. During early iterations,
the release might be a paper model or prototype. During later iterations, increasingly more complete
versions of the engineered system are
Context: The spiral model can be adopted to apply throughout the entire life cycle of an application, from
concept development to maintenance.
Advantages:
It provides the potential for rapid development of increasingly more complete versions of the software.
The spiral model is a realistic approach to the development of large-scale systems and software. The spiral
model uses prototyping as a risk reduction mechanism but, more importantly enables the developer to apply
the prototyping approach at any stage in the evolution of the product.
Draw Backs:
The spiral model is not a panacea. It may be difficult to convince customers that the evolutionary approach
is controllable. 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.
Component-Based Development (CBD)
Component-based development (CBD) is a procedure that accentuates the design and development of
computer-based systems with the help of reusable software components. With CBD, the focus shifts from
software programming to software system composing
Component-based development techniques involve procedures for developing software systems by
choosing ideal off-the-shelf components and then assembling them using a well-defined software
architecture. With the systematic reuse of coarse-grained components, CBD intends to deliver better quality
and output
Component-based development is also known as component-based software engineering (CBSE).