You are on page 1of 29

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

You might also like