1.3 Perspective and Specialized Process

Download as pdf or txt
Download as pdf or txt
You are on page 1of 49

SUBJECT CODE

TYPE THE SUBJECT NAME HERE

UNIT NO 1

1. SOFTWARE PROCESS AND AGILE


DEVELOPMENT
1.3 PERSPECTIVE AND SPECIALIZED
III V PROCESS MODELS

CS8494
SOFTWARE ENGINEERING
CS8494

SOFTWARE ENGINEERING

PROCESS MODELS

●PRESCRIPTIVE PROCESS MODELS


○ Waterfall model
○ Incremental Process model
Incremental model
RAD model
○ Evolutionary model
Prototyping
Spiral model
Concurrent model
● SPECIALIZED PROCESS MODELS
○ Component-Based Development
○ The Formal Methods Model
○ Aspect-Oriented Software Development
CS8494

SOFTWARE ENGINEERING

PRESCRIPTIVE PROCESS MODEL

● Prescriptive process models are sometimes referred to as


“traditional” process models

● A prescriptive process model strives for structure and order in


software development. Activities and tasks occur sequentially
with defined guidelines for progress

● The prescriptive process approach in which order and project


consistency are dominant issues.

● It prescribes a set of process elements—framework activities,


software engineering actions, tasks, work products, quality
assurance, and change control mechanisms for each project.
Each process model also prescribes a process fl ow (also
called a work fl ow )—that is, the manner in which the process
elements are interrelated to one another.
CS8494
SOFTWARE ENGINEERING

WATERFALL MODEL

●Classic life cycle or Linear sequential model


●The classic life cycle suggests a systematic, sequential approach to software
development
●It is the oldest paradigm for SE.
● This model is used for projects when requirements are well defined and
reasonably stable
CS8494

SOFTWARE ENGINEERING

The waterfall model


CS8494
SOFTWARE ENGINEERING

PHASES OF WATERFALL MODEL

The principal stages of the waterfall model directly reflect the fundamental
development activities:

1. Requirements analysis and definition The system’s services, constraints,


and goals are established by consultation with system users. They are then
defined in detail and serve as a system specification.

2. System and software design The systems design process allocates the
requirements to either hardware or software systems by establishing an overall
system architecture. Software design involves identifying and describing the
fundamental software system abstractions and their relationships.

3. Implementation and unit testing During this stage, the software design is
realized as a set of programs or program units. Unit testing involves verifying that
each unit meets its specification.
CS8494
SOFTWARE ENGINEERING

PHASES OF WATERFALL MODEL

4. Integration and system testing The individual program units or programs are
integrated and tested as a complete system to ensure that the software
requirements have been met.

After testing, the software system is delivered to the customer.

5. Operation and maintenance Normally (although not necessarily), this is the


longest life cycle phase. The system is installed and put into practical use.

Maintenance involves correcting errors which were not discovered in earlier


stages of the life cycle, improving the implementation of system units and
enhancing the system’s services as new requirements are discovered.
CS8494
SOFTWARE ENGINEERING

WATERFALL MODEL

● In principle, the result of each phase is one or more documents that are approved
(‘signed off’). The following phase should not start until the previous phase has
finished.
● In practice, these stages overlap and feed information to each other. During
design, problems with requirements are identified. During coding, design problems
are found and so on.
● The software process is not a simple linear model but involves feedback from one
phase to another.
● Documents produced in each phase may then have to be modified to reflect the
changes made.
● Because of the costs of producing and approving documents, iterations can be
costly and involve significant rework.
CS8494

SOFTWARE ENGINEERING

ADVANTAGES OF WATERFALL MODEL

● This model is very simple and is easy to understand.


● Phases in this model are processed one at a time.
● Each stage in the model is clearly defined.
● This model has very clear and well understood milestones.
● Process, actions and results are very well documented.
● This model works well for smaller projects and projects where requirements are
well understood.
CS8494

SOFTWARE ENGINEERING

DRAWBACKS

1. Real projects rarely follow the sequential fl ow 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.

2. It is often difficult for the customer to state all requirements explicitly. The waterfall
model requires this and has difficulty accommodating the natural uncertainty that
exists at the beginning of many projects.

3. The customer must have patience. A working version of the program(s) will not be
available until late in the project time span. A major blunder, if undetected until the
working program is reviewed, can be disastrous.

4. The linear nature of the classic life cycle leads to “blocking states” in which some
project team members must wait for other members of the team to complete
dependent tasks.
CS8494

SOFTWARE ENGINEERING

V- MODEL (a variation of waterfall model)

❖ A variation in the representation of the waterfall model is called the V-model.


CS8494

SOFTWARE ENGINEERING

V- MODEL

● The V-model depicts the relationship of quality assurance actions to the actions
associated with communication, modeling, and early construction activities

● As a software team moves down the left side of the V, basic problem requirements are
refined into progressively more detailed and technical representations of the problem
and its solution.

● Once code has been generated, the team moves up the right side of the V, essentially
performing a series of tests (quality assurance actions) that validate each of the models
created as the team moves down the left side.

● In reality, there is no fundamental difference between the classic life cycle and the
V-model. The V-model provides a way of visualizing how verification and validation
actions are applied to earlier engineering work.
CS8494

SOFTWARE ENGINEERING

INCREMENTAL PROCESS MODEL

• Incremental development is based on the idea of developing an initial


implementation, exposing this to user comment and evolving it through several
versions until an adequate system has been developed

• This model combines elements of both linear sequential model with the
iterative philosophy of prototyping

• The incremental model applies linear sequences in a staggered fashion as


calendar time progresses. Each linear sequence produces a deliverable
“increment” of the software
CS8494

SOFTWARE ENGINEERING

INCREMENTAL PROCESS MODEL


CS8494

SOFTWARE ENGINEERING

INCREMENTAL PROCESS MODEL

• When an incremental model is used, the first increment is often a core


product. That is, basic requirements are addressed, but many supplementary
features (some known, others unknown) remain undelivered.

• The core product is used by the customer (or undergoes detailed review). As a
result of use and/or evaluation, 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.

• The incremental model focuses on the delivery of an operational product with


each increment. Early increments are stripped down versions of the final
product, but they do provide capability that serves the user and also provide a
platform for evaluation by the user.
CS8494

SOFTWARE ENGINEERING

INCREMENTAL PROCESS MODEL

● Incremental development is particularly useful when staffing is unavailable for a


complete implementation by the business deadline that has been established
for the project.

● Early increments can be implemented with fewer people. If the core product is
well received, then additional staff (if required) can be added to implement the
next increment.
CS8494

SOFTWARE ENGINEERING

INCREMENTAL PROCESS MODEL


For example,

word-processing software developed using the incremental paradigm might deliver


basic fi le 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.

It should be noted that the process flow for any increment can incorporate the
prototyping paradigm
CS8494

SOFTWARE ENGINEERING

RAPID APPLICATION DEVELOPMENT MODEL(RAD)


• RAD is an incremental software development process model.
• It emphasizes short development cycle
• “high speed” adaptation of linear sequential model in which rapid
application is achieved by using component-based construction.
• If requirements are well understood and project scope is constrained, the
RAD process enables a development team to create a “fully functional
system” within very short time periods (e.g., 60 to 90 days)
• The phases are
❖ Business modeling
❖ Data modeling
❖ Process modeling
❖ Application generation
❖ Testing & turnover
CS8494

SOFTWARE ENGINEERING

RAPID APPLICATION DEVELOPMENT MODEL(RAD)


CS8494

SOFTWARE ENGINEERING

RAPID APPLICATION DEVELOPMENT MODEL(RAD)

1. Business modeling: The information flow among business


functions is modeled in a way that answers the following
questions:
What information drives the business process?
What information is generated?
Who generates it?
Where does the information go?
Who processes it?
2. Data modeling: The information flow defined as part of the
business modeling phase is refined into a set of data objects that
are needed to support the business. The characteristics (called
attributes) of each object are identified and the relationships
between these objects defined.
CS8494

SOFTWARE ENGINEERING

RAPID APPLICATION DEVELOPMENT MODEL(RAD)

3. Process modeling: The data objects defined in the data modeling phase
are transformed to achieve the information flow necessary to implement a
business function. Processing descriptions are created for adding,
modifying, deleting, or retrieving a data object.

4. Application generation: RAD assumes the use of fourth generation


techniques. Rather than creating software using conventional third
generation programming languages the RAD process works to reuse
existing program components (when possible) or create reusable
components (when necessary). In all cases, automated tools are used to
facilitate construction of the software.

5. Testing and turnover:Since the RAD process emphasizes reuse, many


of the program components have already been tested. This reduces overall
testing time. However, new components must be tested and all interfaces
must be fully exercised.
CS8494

SOFTWARE ENGINEERING

Advantages

• Use of reusable components helps to reduce the cycle time of the


project.
• Encourages user involvement
• Reduced cost.
• Flexible and adaptable to changes
CS8494

SOFTWARE ENGINEERING

Disadvantages

• For large scalable projects, RAD requires sufficient human resources to

create the right number of RAD teams.

• If developers and customers are not committed to the rapid-fire activities, then

project will fail. If a system cannot properly be modularized, building the


components necessary for RAD will be problematic.
• The use of powerful and efficient tools requires highly skilled professionals.
• Customer involvement is required throughout the life cycle.
CS8494

SOFTWARE ENGINEERING

EVOLUTIONARY PROCESS MODELS

Evolutionary process models produce an increasingly more complete


version of the software with each iteration.

Two types of evolutionary approaches are

o Prototyping

o Spiral models.
CS8494

SOFTWARE ENGINEERING

PROTOTYPING

A prototype is an initial version of a software system that is used to


demonstrate concepts, try out design options, and find out more about
the problem and its possible solutions
A software prototype can be used in a software development process to
help anticipate changes that may be required:

1. In the requirements engineering process, a prototype can help


with the elicitation and validation of system requirements.

2. In the system design process, a prototype can be used to explore


particular software solutions and to support user interface design.
CS8494

SOFTWARE ENGINEERING

PROTOTYPING
CS8494

SOFTWARE ENGINEERING

PROTOTYPING

● The prototyping paradigm begins with communication. You meet with other
stakeholders to define the overall objectives for the software, identify whatever
requirements are known, and outline areas where further defi nition is mandatory.

● A prototyping iteration is planned quickly, and modeling (in the form of a “quick
design”) occurs.

● A quick design focuses on a representation of those aspects of the software that


will be visible to end users (e.g., human interface layout or output display
formats).
CS8494

SOFTWARE ENGINEERING

PROTOTYPING

● The quick design leads to the construction of a prototype.

● The prototype is deployed and evaluated by stakeholders, who provide feedback


that is used to further refine requirements.

● Iteration occurs as the prototype is tuned to satisfy the needs of various


stakeholders, while at the same time enabling you to better understand what
needs to be done.

● Ideally, the prototype serves as a mechanism for identifying software


requirements. If a working prototype is to be built, you can make use of existing
program fragments or apply tools that enable working programs to be generated
quickly.
CS8494

SOFTWARE ENGINEERING

PROTOTYPING

● The same prototype cannot meet all objectives.

● If the objectives are left unstated, management or end-users may


misunderstand the function of the prototype. Consequently, they may not get
the benefits that they expected from the prototype development.

● Although problems can occur, prototyping can be an effective paradigm for


software engineering. The key is to define the rules of the game at the
beginning; that is, all stakeholders should agree that the prototype is built to
serve as a mechanism for defi ning requirements.

● It is then discarded (at least in part), and the actual software is engineered
with an eye toward quality.
CS8494

SOFTWARE ENGINEERING

SPIRAL MODEL

• It couples the iterative nature of prototyping with the controlled and


systematic aspects of the linear sequential model.

• Software is developed in a series of incremental releases

• It is divided into a number of framework activities,also called task regions.


● Customer Communication
● Planing
● Risk analysis
● Engineering
● Construction and release
● Customer evaluation
CS8494

SOFTWARE ENGINEERING

SPIRAL MODEL
CS8494

SOFTWARE ENGINEERING

SPIRAL MODEL

• The first circuit around the spiral might result in the development of a product
specification; subsequent passes around the spiral might be used to develop
a prototype and then progressively more sophisticated versions of the
software.
• Each pass through the planning region results in adjustments to the project
plan.
• Cost and schedule are adjusted based on feedback derived from the
customer after delivery.
• In addition, the project manager adjusts the planned number of iterations
required to complete the software.
CS8494

SOFTWARE ENGINEERING

SPIRAL MODEL

● The spiral model is a realistic approach to the development of large-scale


systems and software. Because software evolves as the process progresses,
the developer and customer better understand and react to risks at each
evolutionary level.

● It maintains the systematic stepwise approach suggested by the classic life


cycle but incorporates it into an iterative framework that more realistically refl
ects the real world.

● The spiral model demands a direct consideration of technical risks at all


stages of the project and, if properly applied, should reduce risks before they
become problematic.
CS8494

SOFTWARE ENGINEERING

CONCURRENT DEVELOPMENT MODEL

● The concurrent process model can be represented schematically as a


series of major technical activities, tasks, and their associated states.
● Allow a software team to represent iterative and concurrent elements of
any of the process models.
● For example, the modeling activity defined for the spiral model is
accomplished by invoking one or more of the following actions:
prototyping, analysis and design.
CS8494

SOFTWARE ENGINEERING

CONCURRENT DEVELOPMENT MODEL


CS8494

SOFTWARE ENGINEERING

CONCURRENT DEVELOPMENT MODEL

● For example, communication activity has completed its first


iteration and in the awaiting changes state. The modeling
activity was in inactive state, now makes a transition into the
under development state. If customer indicates changes in
requirements, the modeling activity moves from the under
development state into the awaiting changes state.

● Concurrent modeling is applicable to all types of software


development
CS8494

SOFTWARE ENGINEERING

CONCURRENT DEVELOPMENT MODEL

● This provides an accurate picture of the current state of a project.

● Rather than confining software engineering activities, actions


and tasks to a sequence of events, it defines a process
network.

● Each activity, action or task on the network exists


simultaneously with other activities, actions or tasks.

● Events generated at one-point trigger transitions among the states.


CS8494

SOFTWARE ENGINEERING

SPECIALISED PROCESS MODELS

These models tend to be applied when a specialized or narrowly


defined software engineering approach is chosen.

● Component based development – the process to apply when


reuse is a development objective ( like spiral model)
● Formal methods—emphasizes the mathematical specification
of requirements ( easy to discover and eliminate ambiguity,
incompleteness and inconsistency)
● Aspect Oriented software development (AOSD)— provides a
process and methodological approach for defining, specifying,
designing, and constructing aspects
CS8494

SOFTWARE ENGINEERING

Component-Based Development

● The component-based development model incorporates many


of the characteristics of the spiral model.
● It is evolutionary in nature, uses an iterative approach to the creation
of software.
● The component-based development model constructs
applications from prepackaged software components.
● Modeling and construction activities begin with the identification
of candidate components.
● These components can be designed as either conventional
software modules or object- oriented classes or packages of
classes.
CS8494

SOFTWARE ENGINEERING

Component-Based Development

● The component-based development model incorporates the following steps


to develop the software:
1. Available component-based products are researched and evaluated
for the application domain in question.
2. Component integration issues are considered.

3. A software architecture is designed to accommodate the components.

4. Components are integrated into the architecture.

5. Comprehensive testing is conducted to ensure proper functionality.


CS8494

SOFTWARE ENGINEERING

Component-Based Development

● The component-based development model leads to software reuse, and


reusability provides software engineers with a number of measurable
benefits.
● This model helps to reduce the development cycle time as well as the project
cost
CS8494

SOFTWARE ENGINEERING

Formal Methods Model


● Every software engineering methodology is based on a recommended
development process proceeding through several phases:
● Requirements, Specification, Design
● Coding, Unit Testing
● Integration and System Testing, Maintenance
● Formal methods can
■ Be a foundation for designing safety critical systems
■ Be a foundation for describing complex systems
■ Provide support for program development
● The formal methods model has a set of activities that leads to formal
mathematical specification of computer software.
● Formal methods help to specify, develop, and verify a computer-based system by
applying a mathematical notation
CS8494

SOFTWARE ENGINEERING

Formal Methods Model

● Ambiguity, incompleteness, and inconsistency can be discovered and


corrected more easily
● When formal methods are used during design, they help in program
verification and therefore enable to discover and correct errors
● Thus the formal methods model provides defect-free software
Drawbacks:

➔ The development of formal models is quite time consuming and expensive


➔ Because few software developers have the necessary background to
apply formal methods, extensive training is required
➔ It is difficult to use the models as a communication mechanism for
technically unsophisticated customers
CS8494

SOFTWARE ENGINEERING

Aspect-Oriented Software Development

● Aspect-oriented software development (AOSD) aims to address


crosscutting concerns by providing means for systematic identification,
separation, representation and composition.
● Crosscutting concerns are encapsulated in separate modules, known
as aspects, so that localization can be promoted.
● This results in better support for modularization hence reducing
development, maintenance and evolution costs.
CS8494

SOFTWARE ENGINEERING

Aspect-Oriented Software Development

● Some Crosscutting concerns are high-level properties of a system


(e.g., security, fault tolerance). Other concerns affect functions (e.g.,
the application of business rules), while others are systemic (e.g., task
synchronization or memory management).

● Aspect-oriented software development (AOSD) is often referred as


aspect-oriented programming (AOP), provides a process and
methodological approach for defining, specifying, designing, and
constructing aspects.
CS8494

SOFTWARE ENGINEERING

Aspect-Oriented Software Development

● An aspect-oriented process is likely to adopt both evolutionary and


concurrent process models
● The evolutionary model is appropriate as aspects are identified and then
constructed.
● The parallel nature of concurrent development is essential
because aspects are engineered independently of localized
software components.
CS8494

SOFTWARE ENGINEERING

Aspect-Oriented Software Development

● Advantages:
○ Provides better modularization support of software designs,
reducing software design, development and maintenance
costs
○ Because concerns are encapsulated into different modules,
localization of crosscutting concerns is better promoted and
handled.
○ Promotes reusability of code
○ Smaller code size, due to tackling cross cutting concerns
CS8494

SOFTWARE ENGINEERING

Aspect-oriented component engineering (AOCE)


● AOCE uses a concept of horizontal slices through vertically-decomposed
software components, called “aspects,” to characterize cross-cutting
functional and non-functional properties of components.
● Systemic aspects include user interfaces, collaborative work, distribution,
persistency, memory management, transaction processing, security, integrity
and so on.
● Components may provide aspect details relating to a particular aspect, such
as a viewing mechanism, extensible affordance and interface kind (user
interface aspects); event generation, transport and receiving (distribution
aspects); data store/retrieve and indexing (persistency aspects);
authentication, encoding and access rights (security aspects); transaction
atomicity, concurrency control and logging strategy (transaction aspects); and
so on.
CS8494

SOFTWARE ENGINEERING

Video URL:

https://www.youtube.com/watch?time_continue=1190&v=i7f075xlCoc&fe
ature=emb_logo

You might also like