Software engineering paradigms ,Challenges
and process models
1/30/2024 Basics of software engineering 1
A software development methodology is a series of processes like
System Analysis
Modeling
Design
Implementation
Testing and Maintenance
that leads to the development of an application.
1/30/2024 Basics of software engineering 2
Two Orthogonal views of Software
There are two orthogonal views of software development.
1) Traditional Technique – focuses on data and functions.
2) Object Oriented methodologies – focuses on objects that
combines data and functionality.
1/30/2024 Basics of software engineering 3
Object oriented systems development develop software by
building objects that can be easily replaced, modified and reused.
Objects has attribute (data) and methods (functions).
Object Oriented systems are
Easier to adapt to changes
Easier to maintain
Promote greater design and code reuse
Creates modules of functionality
1/30/2024 Basics of software engineering 4
Software Process
Software process is a set of activities that leads to the production of a
software product.
Increasingly, new software is developed by extending and modifying
existing systems and by configuring (organizing) and integrating off-the-
shelf software or system components.
Software processes are complex and , like all intellectual(logical) and
creative processes rely on people making decisions and judgments.
Because of the need for judgment and creativity , attempts (challenge) to
automate software processes have met with limited success.
There is no ideal process that can fit to all types of software system
development.
Processes have evolved(developed) to exploit(use) the capabilities of the
people in an organization and the specific characteristics of the system
that are being developed.
1/30/2024 Basics of software engineering 5
What is paradigm/approach
The following are some of the definitions:
“model”, “example” or “pattern”
“an example that serves as pattern or model”
“a model of something which explains it(the thing to be explained) or
shows how it can be produced”
paradigms are models for solving class of problems (architectural,
interaction, design and so on)
“paradigm refers to a set of related concepts which are used by a
person to perceive(see) the real world or a part of it”. From S/E and
modeling point of view
“a conceptual framework for a scientific discipline; a set of assumptions,
methodologies, and objectives that determine a scientific investigation”. Sc.P
Basics of software engineering 6
The software process paradigms/models
Software process model is an abstract representation of a
software process.
Each process models represents a process from a particular
perspective , and thus provides only partial information about
that process.
The generic models are not definitive(best) descriptions of
software process. Rather they are abstractions of the process
that can be used to explain the different approaches to
software development.
We can think of them as a process frameworks(supporting
structure) that may be extended and adapted to create more
specific software engineering processes.
1/30/2024 Basics of software engineering 7
The Most Widely Used Generic Process Models Are
The waterfall model: this takes the fundamental process
activities of specification, development, validation and evolution
and represents them as the separate process phase.
Evolutionary development: this approach interleaves the
activities of specification, development and validation.
An initial system is rapidly developed from abstract specification
Then refined(developed) with customer input to produce a system
that satisfies the customer’s needs.
1/30/2024 Basics of software engineering 8
Component based software engineering: this approach is
based on the existence of a significant number of reusable
components.
These system development process focuses on integrating these
components into a system rather than developing them from the
scratch.
These generic models are not mutually exclusive
(commonly ristrected)and are often used together ,
specially for large systems development.
1/30/2024 Basics of software engineering 9
The Waterfall Model
It is so named because it can be graphically modeled
(represented) as a cascade from establishing requirements, to
design , to program implementation, to system test, to release to
customer.
The main stages of the model map to fundamental development
activities.
In principle the result of each phase is one or more documents that
are approved and the following phase should not start until the
previous phase finished.
1/30/2024 Basics of software engineering 10
1/30/2024 Basics of software engineering 11
But in practice these stages overlap and feed
information to each other.
The stages in waterfall includes
Requirements definition
System and software design
Implementation and unit testing
Integration and system testing
Operation and maintenance
1/30/2024 Basics of software engineering 12
Because of the cost of producing and approving
documents, iterations are costly and involve
significant rework.
As a result premature(early) freezing of iterations occur.
This method might work satisfactorily if design
requirements could be perfectly addressed before
flowing down to design, and if the design were perfect
when program implementation began, and if the code
were perfect before testing began, and if testing
guaranteed that no bugs remained in the code before
the users applied it, and of course if the users never
changed their minds about requirements.
1/30/2024 Basics of software engineering 13
Pros and cons of the waterfall model
Advantage
Documentation is produced at each phase and that it
fits with other engineering process models.
Disadvantages
Its inflexible partitioning of the project into distinct
stages.
Requires commitment (risponsiblity)during
requirement elicitation.
1/30/2024 Basics of software engineering 14
1/30/2024 Basics of software engineering 15
Evolutionary approach
• Evolutionary development is based on the idea of developing
an initial implementation, exposing(explain) this to the user
comment and refining it through many versions until an
adequate system has been developed.
• Specification , development and validation activities are
interleaved rather than separate, with rapid feedback across
activities.
• As a result, these approach is often more effective than the
waterfall approach in producing systems that meets the immediate
needs of customers.
1/30/2024 Basics of software engineering 16
1/30/2024 Basics of software engineering 17
The two fundamental types of evolutionary development are
Exploratory development
The objective of Incremental/Exploratory development is to
deliver a working system to end users. This means that you
should normally start with the user requirements that are best
understood and that have the highest priority. Lower priority and
vague requirements are implemented when and if the users
demand them.
Throwaway prototyping
The objective of throw away prototyping is to validate or derive
the system requirements that are not well understood because you
need to find out more about them. Requirements that are straight
forward may never need to be prototyped.
For large systems it is recommended to combine the best
features of waterfall and evolutionary development
approaches.
1/30/2024 Basics of software engineering 18
Pros and cons of evolutionary development approach
Advantages
Accelerated delivery of customer services: early increments
of the system can deliver high priority functionality so that
customers can get value from the system early in its
development . Customers can see their requirements in
practice and specify changes to be incorporated in the later
releases of the system.
User engagement with the system: users of the system have
to be involved in the incremental development process
because they have to provides feedback to the development
team on delivered increments. Their involvement does not
just mean that the system more likely to meet their
requirements; It also means that the system end users have
made a commitment to it and are likely to want to make it
1/30/2024
work. Basics of software engineering 19
Disadvantages
Management problems: software management structures for
large systems are set up to deal with a software process model
that generates regular deliverables to assess progress.
Contractual problems : the normal contractual model between
the a customer and a software developer is based around a
system specification.
Validation problems
Maintenance problem: continual change tends to corrupt the
structure of any system. This means that anyone apart from the
original developers may face difficulty to understand the
system.
1/30/2024 Basics of software engineering 20
Component based approach
component is an independent software unit that can be composed
with other components to create a software system
This reuse-oriented approach relies(depend on) on a large base of
reusable software components and some integrating framework
for these components.
Sometimes these components are systems on their own right or
commercial off the shelf systems that may provide specific
functionality.
CBSE is the process of defining, implementing and integrating or
composing loosely joined independent components into systems.
It is driven by determined
increased size and complexity of systems
Increased demand of more dependable software's
The need of faster delivery.
1/30/2024 Basics of software engineering 21
Essentials of CBSE
Independent components must exist
Component standard that facilitate the integration of components
Middleware that provides software support for component
integration
These generic reuse-oriented approach has the ff stages
Requirement specification
Component analysis
Requirement modification
System design with reuse
Development and integration
1/30/2024 Basics of software engineering 22
1/30/2024 Basics of software engineering 23
Inherent(natural) Problems of CBSE
Component trustworthiness
Component certification
Emergent property prediction
Requirement trade-offs
Advantages
Reducing the amount of software to be developed and so
reducing cost and risk.
Faster delivery of the software
Disadvantages
Requirement compromise that leads to a system that do not
meet the real needs of the users.
Control over evolution of the system is lost.
1/30/2024 Basics of software engineering 24
Agile methods
These method allows the development team to focus on the
software itself rather than on its design and documentation .
Agile methods universally relay on an iterative approach to
software specification, development and delivery, and were
designed primarily to support business application
development where the system requirements usually changed
rapidly during the development process.
They are intended to deliver working software quickly to
customers, who can then propose new and changed
requirements to be included in later iterations of the system.
1/30/2024 Basics of software engineering 25
1/30/2024 Basics of software engineering 26
Principles of agile methods
Customer involvement:- customers should be closely involved
through the development process. their role is provide and prioritize
new system requirements and to evaluate the iterations of the system.
Incremental delivery:- the software is developed in increments with
the customer specifying the requirements to be included in each
increment.
People not process:- the skills of the development team should be
recognized and exploited. Team members should be left to develop
their own ways of working without prescriptive processes.
Embrace change:- expect(wait for) the system requirements to
change, so design the system to accommodate( contain ) these
changes .
Maintain simplicity:- focus on simplicity in both the software
being developed and in the development process. Wherever
possible , actively
1/30/2024
work to eliminate complexity from the
Basics of software engineering 27
Challenges of software engineering
Heterogeneity: Developing techniques for
building software that can cope (deal with)with
heterogeneous platforms and execution
environments;
Delivery : Developing techniques that lead to
faster delivery of software;
Trust: Developing techniques that demonstrate
that software can be trusted by its users.
1/30/2024 Basics of software engineering 28
1/30/2024 Basics of software engineering 29