0% found this document useful (0 votes)
13K views49 pages

1.3 Perspective and Specialized Process

The document discusses various software process models including prescriptive process models like the waterfall model and incremental model. It describes the phases of the waterfall model as requirements, design, implementation, testing, and maintenance. Some advantages of the waterfall model are that it is simple, phases are clearly defined and documented, and it works well for smaller projects. However, it is difficult to state all requirements upfront and the customer must wait until late in the project for a working version. The V-model is presented as a variation of the waterfall model that depicts the relationship between development and testing activities. The incremental process model combines elements of the linear sequential and iterative models by producing deliverables in increments with each increment building upon the previous one.

Uploaded by

Mohamed Bilal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13K views49 pages

1.3 Perspective and Specialized Process

The document discusses various software process models including prescriptive process models like the waterfall model and incremental model. It describes the phases of the waterfall model as requirements, design, implementation, testing, and maintenance. Some advantages of the waterfall model are that it is simple, phases are clearly defined and documented, and it works well for smaller projects. However, it is difficult to state all requirements upfront and the customer must wait until late in the project for a working version. The V-model is presented as a variation of the waterfall model that depicts the relationship between development and testing activities. The incremental process model combines elements of the linear sequential and iterative models by producing deliverables in increments with each increment building upon the previous one.

Uploaded by

Mohamed Bilal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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

Common questions

Powered by AI

The Concurrent Development Model differs from prescriptive models by allowing iterative and concurrent elements, contrary to the sequential nature of prescriptive models such as the Waterfall model . Instead of completing each phase linearly, it operates as a process network where activities can occur simultaneously, enabling quicker adaptation to changes . This flexibility allows teams to respond more effectively to new requirements and facilitates accurate project status representation, benefiting projects by reducing bottlenecks and improving responsiveness to stakeholder feedback .

The Spiral model is an iterative and risk-driven process model focusing on addressing risks through continuous refinement and evolution at each cycle . It combines elements of both design and prototyping, adjusting for risks at every stage. In contrast, the Component-Based Development model builds applications using prepackaged software components, emphasizing reuse and reducing development time . While the Spiral model emphasizes risk management and evolutionary development, CBD focuses on constructing software using existing components, facilitating quicker development but with less emphasis on custom risk analysis at each iteration.

Formal Methods provide a mathematical approach to specifying, developing, and verifying software systems, which is particularly beneficial for safety-critical applications. These methods help discover and eliminate ambiguities, inconsistencies, and incompleteness in requirements early in the development process . By offering a solid foundation for designing and describing complex systems, Formal Methods enhance the reliability and safety of software, crucial for systems where failures could have severe consequences .

The Spiral model would be preferable in scenarios involving large-scale systems with high risk and complexity, where understanding and reacting to risks progressively is crucial. The model's iterative nature allows for analyzing and mitigating risks at any project phase . Conversely, the RAD model is suited for projects with well-defined requirements and a constrained scope, focusing on rapid development cycles . The Spiral model’s focus on risk management is less of a concern in the RAD model, which emphasizes speed over risk handling.

The Waterfall model follows a linear and sequential approach where each phase must be completed before the next one begins, making it less flexible when changes are introduced . In contrast, the Incremental Process model develops software through a series of iterations, or increments, each delivering a functional product version. This model allows for user feedback and adjustments across multiple cycles, making it more accommodating of changes and iterative improvements .

AOSD improves modularization by enabling the separation of concerns that crosscut multiple parts of an application. By encapsulating these concerns into separate modules, known as aspects, it allows for better modularity in the code structure . This decomposition enhances maintainability by localizing changes needed for specific system-wide concerns without affecting other system parts, reducing overall maintenance and evolution costs . It also facilitates code reuse due to the isolation of crosscutting concerns.

The V-model enhances quality assurance by emphasizing verification and validation at each stage of the development process. It is designed to correspond testing activities directly with their development counterparts. As the software team progresses down the left side of the V, detailed problem requirements are refined, and corresponding testing activities on the right side of the V ensure these requirements are met. Therefore, it provides a more rigorous framework for ensuring quality compared to the linear and more rigid Waterfall model .

Prototyping and user evaluation are central to the Incremental Process model as they enable the development of software through successive versions. Prototyping allows for early user feedback on core functionality, which guides subsequent iterations and supports incremental refinement and addition of features . User evaluation after each increment helps identify areas for improvement and ensures that the incremental development aligns with user needs, ultimately leading to a more robust and user-focused final product .

The RAD model ensures fast delivery by emphasizing component-based construction and short development cycles, allowing a development team to quickly assemble a functional system . It leverages clear-cut phases such as Business, Data, and Process modeling to speed up application generation and testing. However, this speed can lead to challenges when project requirements are not well understood upfront, as RAD's quick cycles might not adequately address complex, evolving requirements, potentially compromising quality for speed . Additionally, it is less effective for large-scale or poorly defined systems where detailed integration and verification are critical .

The Waterfall model's rigidity in phase progression makes it unsuitable for accommodating changes. Since each phase must be completed before moving to the next, any changes necessitate revisiting completed phases, leading to confusion and potential project delays . Additionally, it assumes that all requirements can be understood upfront, which is often unrealistic, leading to significant risks if major issues are discovered late in the process . Its sequential nature also causes 'blocking states' where team members might be idle, waiting for others to complete their tasks .

You might also like