Software Engg. (Unit-1-B)

You might also like

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

Software Engineering

Module- II
SRM University, Delhi- NCR,
Sonepat, Haryana.
Software Engineering: A
Layered Technology

 Software Engineering is a layered


technology. It is the application of
principles used in the field of
engineering, which usually deals with
physical systems, to the design,
development, testing, deployment and
management of systems.
Software Engineering: A
Layered Technology
 The main objective of software
engineering layers is to help software
developers obtain high-quality
software. There are four types of
layers in Software Engineering such
as – Tools, methods, process, A
quality focus.
Software Engineering: A
Layered Technology
 1. A quality focus: It defines the
continuous process improvement
principles of software. It provides
integrity that means providing security
to the software so that data can be
accessed by only an authorized
person, no outsider can access the
data. It also focuses on maintainability
and usability.
Software Engineering: A
Layered Technology
 2. Process: It is the foundation or base layer
of software engineering. It is key that binds
all the layers together which enables the
development of software before the deadline
or on time. Process defines a framework
that must be established for the effective
delivery of software engineering technology.
The software process covers all the
activities, actions, and tasks required to be
carried out for software development.
Software Engineering: A
Layered Technology
 3. Method: During the process of software
development the answers to all “how-to-do”
questions are given by method. It has the
information of all the tasks which includes
communication, requirement analysis, design
modeling, program construction, testing, & support.
 4. Tools: Software engineering tools provide a
self-operating system for processes and methods.
Tools are integrated which means information
created by one tool can be used by another.
Software Engineering: A
Layered Technology
 What are the five generic process framework
activities?
 The following generic process framework is
applicable to the majority of software projects.
 Communication.
 Planning.
 Modeling.
 Construction.
 Deployment.
Software Processes
 Software Processes is a coherent set of activities
for specifying, designing, implementing and testing
software systems. A software process model is an
abstract representation of a process that presents
a description of a process from some particular
perspective. There are many different software
processes but all involve:
 Software specifications: The functionality of the
software and constraints on its operation must be
defined.
 Software development: The software to meet the
requirement must be produced.
Software Processes
 Software validation: The software must be
validated to ensure that it does what the customer
wants.
 Software evolution: The software must evolve to
meet changing client needs.
 software process model is an abstraction of the
software development process. The models
specify the stages and order of a process. So,
think of this as a representation of the order of
activities of the process and the sequence in
which they are performed.
Types software process
model
 Linear Sequential Model
 RAD model
 Prototype model
 Evolutionary Software Process Model
 Component- Based Development
 Waterfall model
 V model
 Incremental model
 Agile model
 Iterative model
 Spiral model
Software Development Life
Cycle (SDLC)
 A software life cycle model (also termed process model) is a
pictorial and diagrammatic representation of the software life
cycle. A life cycle model represents all the methods required
to make a software product transit through its life cycle
stages. It also captures the structure in which these methods
are to be undertaken.
 A software life cycle model describes entry and exit criteria
for each phase. A phase can begin only if its stage-entry
criteria have been fulfilled. So without a software life cycle
model, the entry and exit criteria for a stage cannot be
recognized. Without software life cycle models, it becomes
tough for software project managers to monitor the progress
of the project.
Software Development Life
Cycle (SDLC)
Software Development Life
Cycle (SDLC)
 Stage 1: Planning Planning & Analysis
Defining the requirements of the application, both functional and
nonfunctional.
 Stage 2: Design
Translate the business needs into technical plans. Just like building a
house, you need to make plans before starting the construction.
 Stage 3: Implementation
The translation of plans into applications or components, building the
walls.
 Stage 4: Testing & Integration
Ensuring everything is working both in a functional and non-functional
way.
 Stage 5: Maintenance
After the application is done, we need to go to production. Ensuring the
application is running as expected
Waterfall or The Linear
Sequential Model
 Waterfall is also referred to as a linear-sequential
life cycle model and a classical software
development methodology that was first introduced
by Winston W. Royce in 1970. It is a linear and
sequential approach to software development that
consists of several phases that must be completed
in a specific order. The phases include:
 Requirements Gathering and Analysis: The first
phase involves gathering requirements from
stakeholders and analyzing them to understand the
scope and objectives of the project.
Waterfall or The Linear
Sequential Model
 Design: Once the requirements are understood, the design phase
begins. This involves creating a detailed design document that outlines
the software architecture, user interface, and system components.
 Implementation: The implementation phase involves coding the
software based on the design specifications. This phase also includes
unit testing to ensure that each component of the software is working as
expected.
 Testing: In the testing phase, the software is tested as a whole to
ensure that it meets the requirements and is free from defects.
 Deployment: Once the software has been tested and approved, it is
deployed to the production environment.
 Maintenance: The final phase of the Waterfall Model is maintenance,
which involves fixing any issues that arise after the software has been
deployed and ensuring that it continues to meet the requirements over
time.
Waterfall or The Linear
Sequential Model
Waterfall Model - Advantages
 Simple and easy to understand and use
 Easy to manage due to the rigidity of the model. Each
phase has specific deliverables and a review process.
 Phases are processed and completed one at a time.
 Works well for smaller projects where requirements are
very well understood.
 Clearly defined stages.
 Well understood milestones.
 Easy to arrange tasks.
 Process and results are well documented.
Waterfall Model-Disadvantages
 In this model, the risk factor is higher, so this model is not
suitable for more significant and complex projects.
 This model cannot accept the changes in requirements
during development.
 It becomes tough to go back to the phase. For example, if
the application has now shifted to the coding phase, and
there is a change in requirement, It becomes tough to go
back and change it.
 Since the testing done at a later stage, it does not allow
identifying the challenges and risks in the earlier phase, so
the risk reduction strategy is difficult to prepare.
The Prototype Model
 The prototype model requires that before carrying out the
development of actual software, a working prototype of the
system should be built. A prototype is a toy implementation
of the system. A prototype usually turns out to be a very
crude version of the actual system, possible exhibiting
limited functional capabilities, low reliability, and inefficient
performance as compared to actual software.
 In many instances, the client only has a general view of what
is expected from the software product. In such a scenario
where there is an absence of detailed information regarding
the input to the system, the processing needs, and the
output requirement, the prototyping model may be
employed.
The Prototype Model
The Prototype Model Phases
 Step 1: Requirement Gathering and Analysis: This is the initial step in
designing a prototype model. In this phase, users are asked about what they
expect or what they want from the system.
 Step 2: Quick Design: This is the second step in Prototyping Model. This model
covers the basic design of the requirement through which a quick overview can
be easily described.
 Step 3: Build a Prototype: This step helps in building an actual prototype from
the knowledge gained from prototype design.
 Step 4: Initial User Evaluation: This step describes the preliminary testing
where the investigation of the performance model occurs, as the customer will
tell the strength and weaknesses of the design, which was sent to the developer.
 Step 5: Refining Prototype: If any feedback is given by the user, then
improving the client’s response to feedback and suggestions, the final system is
approved.
 Step 6: Implement Product and Maintain: This is the final step in the phase of
the Prototyping Model where the final system is tested and distributed to
production, here program is run regularly to prevent failures.
Prototype Model- Advantages
 This model is flexible in design.
 It is easy to detect errors.
 We can find missing functionality easily.
 It can be reused by the developer for more complicated projects in
the future.
 It ensures a greater level of customer satisfaction and comfort.
 It is ideal for online system.
 It helps developers and users both understand the system better.
 Integration requirements are very well understood and
deployment channels are decided at a very early stage.
 It can actively involve users in the development phase.
Prototype Model- Disadvantages
 This model is costly.
 It has poor documentation because of continuously changing
customer requirements.
 There may be too much variation in requirements.
 Customers sometimes demand the actual product to be
delivered soon after seeing an early prototype.
 Customers may not be satisfied or interested in the product
after seeing the initial prototype.
 There may be incomplete or inadequate problem analysis.
The RAD (Rapid Application
Development) Model
 The Rapid Application Development Model was first
proposed by IBM in the 1980s. The RAD model is a type of
incremental process model in which there is extremely short
development cycle. When the requirements are fully
understood and the component-based construction
approach is adopted then the RAD model is used.
The RAD Model

 1.Business Modeling: The information flow among


business functions is defined by answering questions like
what data drives the business process, what data is
generated, who generates it, where does the information go,
who process it and so on.
 2. Data Modeling: The data collected from business
modeling is refined into a set of data objects (entities) that
are needed to support the business. The attributes
(character of each entity) are identified, and the relation
between these data objects (entities) is defined.
The RAD Model
 3. Process Modeling: The information object defined in the
data modeling phase are transformed to achieve the data
flow necessary to implement a business function.
Processing descriptions are created for adding, modifying,
deleting, or retrieving a data object.
 4. Application Generation: Automated tools are used to
facilitate construction of the software.
 5. Testing & Turnover: Many of the programming
components have already been tested since RAD emphasis
reuse. This reduces the overall testing time. But the new part
must be tested, and all interfaces must be fully exercised.
The RAD Model- Advantages
 This model is flexible for change.
 Changing requirements can be accommodated.
 Progress can be measured.
 Iteration time can be short with use of powerful
RAD tools.
 Productivity with fewer people in a short time.
 Reduced development time.
 Increases reusability of components.
 Quick initial reviews occur.
 Encourages customer feedback.
The RAD Model- Disadvantages
 It required highly skilled designers.
 All application is not compatible with RAD.
 For smaller projects, we cannot use the RAD
model.
 On the high technical risk, it's not suitable.
 Required user involvement.
 High dependency on Modeling skills.
Evolutionary Software Process
Model
 Evolutionary process models are iterative. They are highly
useful to a software engineer to develop more complex
version soft wares.
 Software requirements are fragmented into several chunks
that can be built and transferred incrementally. In other
words, you develop a skeleton of the product and in
successive versions, you add more functionalities. Services
are not required for the core module (first stage) of the
system. The iterative waterfall model is used for developing
an evolutionary model. In simple words, “Iterative” +
“Incremental model” = Evolutionary model
Evolutionary Software Process
Model
 Three types in evolutionary process model:
 1. The prototyping model
 2. The spiral model
 3. The concurrent development model
Advantages of the Evolutionary
Process Model
 During the development phase, the customer gives feedback
regularly because the customer’s requirement gets clearly
specified.
 After every iteration risk gets analyzed.
 Suitable for big complex projects.
 The first build gets delivered quickly as it used an iterative
and incremental approach.
 Disadvantages of the Evolutionary Process Model
 It is not suitable for small projects.
 The complexity of the spiral model can be more than the
other sequential models.
 The cost of developing a product through a spiral model is
high.
Spiral Model
 Spiral Model is a risk-driven software development process
model. It is a combination of waterfall model and iterative
model. Spiral Model helps to adopt software development
elements of multiple process models for the software project
based on unique risk patterns ensuring efficient
development process.

 Each phase of spiral model in software engineering begins


with a design goal and ends with the client reviewing the
progress. The spiral model in software engineering was first
mentioned by Barry Boehm in his 1986 paper.
Spiral Model
Spiral Model
 Objectives determination and identify alternative
solutions: Requirements are gathered from the customers and the
objectives are identified, elaborated, and analyzed at the start of every
phase. Then alternative solutions possible for the phase are proposed in
this quadrant.
 Identify and resolve Risks: During the second quadrant, all the possible
solutions are evaluated to select the best possible solution. Then the risks
associated with that solution are identified and the risks are resolved using
the best possible strategy. At the end of this quadrant, the Prototype is
built for the best possible solution.
 Develop the next version of the Product: During the third quadrant, the
identified features are developed and verified through testing. At the end
of the third quadrant, the next version of the software is available.
 Review and plan for the next Phase: In the fourth quadrant, the
Customers evaluate the so-far developed version of the software. In the
end, planning for the next phase is started.
Spiral Model- Advantages

 Changing requirements can be accommodated.


 Allows extensive use of prototypes.
 Requirements can be captured more accurately.
 Users see the system early.
 Development can be divided into smaller parts and
the risky parts can be developed earlier which helps
in better risk management.
Spiral Model- Disadvantages

 Management is more complex.


 End of the project may not be known early.
 Not suitable for small or low risk projects and could
be expensive for small projects.
 Process is complex.
 Spiral may go on indefinitely.
 Large number of intermediate stages requires
excessive documentation.
The concurrent development
model

 Sometimes called concurrent engineering, can be


represented schematically as a series of framework
activities, software engineering actions, tasks and
their associated states.
 The model defines a series of events that will
trigger transitions from state to state for each of the
software engineering activities, actions, or tasks.
The concurrent development
model
The concurrent development
model- Advantages
 Reduced overall development time: By working on
various aspects of the project simultaneously.
 Reduced development costs: Working on multiple
aspects of the project concurrently can help to
reduce the overall development costs.
 Increased customer satisfaction: The development
team can deliver the final product to the customer
sooner by completing the project in a shorter time.
 Improved quality of the final product: By
simultaneously working on various aspects of the
project, the development team can quickly identify
and resolve potential problems.
The concurrent development
model- Disadvantages
 Increased complexity: Working on multiple aspects
of the project simultaneously can increase the
project's complexity.
 Increased risk of errors: If communication and
collaboration among team members are not well-
organized, there is a greater risk of errors.
 Requires more planning time: To properly implement
concurrent engineering, the development team must
spend more time planning and organizing the
project.
The Component based
development
 The component based development model
incorporates many of the characteristics of the spiral
model. It is evolutionary in nature, demanding an
iterative approach to the creation of software.
 However, the model focuses on prepackaged
software components. It promotes software
reusability.
 Modeling and construction activities begin with the
identification of candidate components. Candidate
components can be designed as either conventional
software modules or object oriented packages.
The Component based
development
 The component based development model
incorporates many of the characteristics of the spiral
model. It is evolutionary in nature, demanding an
iterative approach to the creation of software.
 However, the model focuses on prepackaged
software components. It promotes software
reusability.
 Modeling and construction activities begin with the
identification of candidate components. Candidate
components can be designed as either conventional
software modules or object oriented packages.
The Component based
development
 Component based development has the following
steps:
 1. Available component based products are
researched and evaluated for the application
domain.
 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.
The Component based
development
The Component based
development- Advantages
 Ease of deployment − As new compatible versions become
available, it is easier to replace existing versions with no
impact on the other components or the system as a whole.
 Reduced cost − The use of third-party components allows
you to spread the cost of development and maintenance.
 Ease of development − Components implement well-known
interfaces to provide defined functionality, allowing
development without impacting other parts of the system.
 Reusable − The use of reusable components means that
they can be used to spread the development and
maintenance cost across several applications or systems.
 Modification of technical complexity − A component
modifies the complexity through the use of a component
container and its services.
The Component based
development- Advantages
 Reliability − The overall system reliability increases since the
reliability of each individual component enhances the
reliability of the whole system via reuse.
 System maintenance and evolution − Easy to change and
update the implementation without affecting the rest of the
system.
 Independent − Independency and flexible connectivity of
components. Independent development of components by
different group in parallel. Productivity for the software
development and future software development.
The Component based
development- Disadvantages
 Component trustworthiness - how can a component with
no available source code be trusted?
 Component certification - who will certify the quality of
components?
 Emergent property prediction - how can the emergent
properties of component compositions be predicted?
 Requirements trade-offs - how do we do trade-off analysis
between the features of one component and another?

You might also like