Unit 1
Unit 1
Unit 1
Chapter 1
Introduction
• Maintenance
– Flexibility
– Maintainability
– Modularity
– Scalability
Definition of software and Software
engineering
• Difference between Program and Product
PROGRAM
A program is a set of instructions that are given to a computer
in order to achieve a specific task .
A program is one of the stages involved in the development of
the software
Definition of software and Software
engineering
Software
Software is when a program is made available for commercial
business and is properly documented along with its
licensing.
Software = Program + documentation + licensing.
Communication
Planning
Modeling
Construction
Deployment
A Process Framework
• A Process Framework
• Software Process Framework is an abstraction of the software
development process.
• It details the steps and chronological order of a process. Since it
serves as a foundation for them, it is utilized in most applications.
• Task sets, umbrella activities, and process framework activities all
define the characteristics of the software development process.
Software process includes:
– Tasks – focus on a small, specific objective.
– Action – set of tasks that produce a major work product.
– Activities – group of related tasks and actions for a major
objective.
• Process Framework Activities: The process framework is required
for representing common process activities.
A Process
Framework
Five framework activities are
described in a process
framework for software
engineering.
1. Communication
2. Planning
3. Modeling
Analysis of requirements
Design
4. Construction
Code generation
Testing
5. Deployment
A Process Framework
• Umbrella activities –
– Umbrella Activities are that take place during a software
development process for improved project management and
tracking.
• Software project tracking and control
• Risk management
• Software quality assurance
• Formal technical reviews
• Software configuration management
• Work product preparation and production
• Reusability management
• Measurement
The Capability Maturity Model Integration (CMMI)
• Capability Maturity Model Integration
– CMMI is a successor of CMM and is a more evolved model
that incorporates best components of individual disciplines of
CMM like Software CMM, Systems Engineering CMM, People
CMM, etc.
– Since CMM is a reference model of matured practices in a
specific discipline, so it becomes difficult to integrate these
disciplines as per the requirements.
– This is why CMMI is used as it allows the integration of
multiple disciplines as and when needed.
• Objectives of CMMI :
– Fulfilling customer needs and expectations.
– Value creation for investors/stockholders.
– Market growth is increased.
The Capability Maturity Model Integration (CMMI)
– Improved quality of products and services.
– Enhanced reputation in Industry.
• CMMI Representation:
– A representation allows an organization to pursue a different set of
improvement objectives. There are two representations for CMMI :
• Staged Representation:
– Pre-defined set of process areas to define improvement path.
– Provides a sequence of improvements
– Improved path is defined by maturity level.
– Maturity level describes the maturity of processes in
organization.
– Allows comparison between different organizations for
multiple maturity levels.
The Capability Maturity Model Integration (CMMI)
• Continuous Representation
– Selection of specific process areas.
– Measures improvement of an individual process area.
– Allows comparison between different organizations on a
process-area-by-process-area basis.
– Allows organizations to select processes which require more
improvement.
– Improvement of various processes can be selected which
allows the organizations to meet their objectives and
eliminate risks.
The Capability Maturity Model Integration (CMMI)
– This risk involved is lower than Initial level, but still exists.
– Quality is better than Initial level.
• Maturity level 3 : Defined
– processes are well characterized and described using
standards, proper procedures, and methods, tools, etc.
– Medium quality and medium risk involved.
– Focus is process standardization.
• Maturity level 4 : Quantitatively managed
– quantitative objectives for process performance and quality
are set.
– quantitative objectives are based on customer requirements,
organization needs, etc.
–process performance measures are analyzed quantitatively.
The Capability Maturity Model Integration (CMMI)
1. Waterfall Model
2. Iterative model
3. Spiral model
4. V-model
5. RAD Model
6. Agile SDLC model
SDLC Model - Waterfall Model
• The Waterfall Model was the first Process Model to be
introduced.
• It is also referred to as a linear-sequential life cycle model.
• It is very simple to understand and use. In a waterfall model,
each phase must be completed before the next phase can begin
and there is no overlapping in the phases.
• Design - Waterfall approach was first SDLC Model to be used
widely in Software Engineering to ensure success of the project.
• In "The Waterfall" approach, the whole process of software
development is divided into separate phases.
• In this Waterfall model, typically, the outcome of one phase acts
as the input for the next phase sequentially.
SDLC Model - Waterfall Model
The sequential phases in Waterfall model are –
SDLC Model - Waterfall Model
1.Requirement Gathering and analysis
2.System Design
3.Implementation
4.Integration and Testing
5.Deployment of system
6.Maintenance
SDLC Model - Waterfall Model
Advantages –
• Simple and easy to understand and use
• Phases are processed and completed one at a time.
• Clearly defined stages.
• Well understood milestones.
• Easy to arrange tasks.
Disadvantages-
• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• It is difficult to measure progress within stages.
• Cannot accommodate changing requirements.
SDLC Model - Incremental process
model
• The incremental process model is also known as the
Successive version model.
• First, a simple working system implementing only a
few basic features is built and then that is delivered to
the customer.
• Then thereafter many successive iterations/
versions are implemented and delivered to the
customer until the desired system is released.
• A, B, and C are modules of Software Products that are
incrementally developed and delivered.
SDLC Model - Incremental process
model
SDLC Model - Incremental process
model
• Life cycle activities –
• Requirements of Software are first broken down into
several modules that can be incrementally
constructed and delivered.
• At any time, the plan is made just for the next
increment and not for any kind of long-term plan.
• Once the core features are fully developed, then these
are refined to increase levels of capabilities by
adding new functions in Successive versions.
• Each incremental version is usually developed using an
iterative waterfall model of development.
• The feedback of the Customer is to be taken and
these were then incorporated into the next version.
SDLC Model - Incremental process
model
• Each version of the software has more additional
features than the previous ones.
• After Requirements gathering and specification,
requirements are then split into several different
versions starting with version 1.
• Types of Incremental model:
– Staged Delivery Model
– Parallel Development Model.
• When to use this:
– 1. Funding Schedule, Risk, Program Complexity,
or need for early realization of benefits.
– 2. When Requirements are known up-front.
– 3. When Projects have lengthy development
schedules.
SDLC Model - Incremental process
model
SDLC Model - Incremental process
model
• Each version of the software has more additional
features than the previous ones.
• After Requirements gathering and specification,
requirements are then split into several different
versions starting with version 1.
• Types of Incremental model:
– Staged Delivery Model
– Parallel Development Model.
• When to use this:
– 1. Funding Schedule, Risk, Program Complexity,
or need for early realization of benefits.
– 2. When Requirements are known up-front.
– 3. When Projects have lengthy development
schedules.
SDLC Model - Incremental process
model
– Staged Delivery Model
SDLC Model - Incremental process
model
– Parallel Development Model.
SDLC Model - Incremental process
model
– 4. Projects with new Technology.
• Error Reduction
• Uses divide and conquer for a breakdown of
tasks.
• Lowers initial delivery cost.
• Incremental Resource Deployment.
– 5. Requires good planning and design.
– 6. The total cost is not lower.
– 7. Well-defined module interfaces are required.
SDLC Model - Incremental process
model
Advantages-
• Prepares the software fast.
• Clients have a clear idea of the project.
• Changes are easy to implement.
• Provides risk handling support, because of its
iterations.
Disadvantages-
• A good team and proper planned execution are
required.
• Because of its continuous iterations the cost increases.
SDLC Model - Iterative model
• Iterative model –
– Iterative process starts with a simple implementation of a
small set of the software requirements and it evolve versions
until the complete system is implemented and ready to be
deployed.
– An iterative life cycle model does not attempt to start with a
full specification of requirements.
– Development begins by specifying and implementing just part
of the software, which is then reviewed to identify further
requirements.
– This process is then repeated, producing a new version of the
software at the end of each iteration of the model.
• Iterative Model – Design –
– At each iteration, design modifications are made and new
functional capabilities are added.
SDLC Model - Iterative model
– The basic idea behind this method is to develop a system
through repeated cycles (iterative) and in smaller portions at
a time (incremental).
– It is a combination of both iterative design or iterative
method and incremental build model for development.
– More than one iteration of the software development cycle
may be in progress at the same time."
– This process may be described as an "evolutionary
acquisition" or "incremental build" approach.
– The development module goes through the requirements,
design, implementation and testing phases.
– The key to a successful use of an iterative software
development lifecycle is rigorous validation of requirements,
and verification & testing of each version of the software.
SDLC Model - Iterative model
SDLC Model - Iterative model
• Iterative Model - Pros and Cons
• The advantages
– Results are obtained early and periodically.
– Parallel development can be planned.
– Progress can be measured.
– Less costly to change the scope/requirements.
– Testing and debugging during smaller iteration is easy.
• The disadvantages
– More resources may be required.
– More management attention is required.
– Not suitable for smaller projects.
– Management complexity is more.
– Highly skilled resources are required for risk analysis.
Evolutionary model
• Evolutionary model is a combination
of Iterative and Incremental model of software
development life cycle.
• Delivering it in incremental process over time is the
action done in this model.
• Some initial requirements and architecture
envisioning need to be done.
• Divides the development cycle into smaller,
incremental waterfall models in which users are
able to get access to the product at the end of each
cycle.
• Feedback is provided by the users on the product
for the planning stage of the next cycle and the
development team responds, often by changing the
product, plan or process.
Evolutionary model
Evolutionary model
Evolutionary model
• All the models have the disadvantage that the
duration of time from start of the project to the
delivery time of a solution is very high. Evolutionary
model solves this problem.
• Evolutionary model suggests breaking down of work
into smaller chunks, prioritizing them and then
delivering those chunks to the customer one by one.
• The main advantage is that the customer’s
confidence increases as he constantly gets
quantifiable goods or services from the beginning of
the project to verify and validate his requirements.
• Application of Evolutionary Model:
– It is used in large projects
– Commonly used when the customer wants to
start using the core features
Evolutionary model
– Used in object oriented software development
because the system can be easily portioned into
units in terms of objects.
• Necessary conditions for implementing this
model:-
– Customer needs are clear and been explained in
deep to the developer team.
– There might be small changes required in
separate parts but not a major change.
– As it requires time, so there must be some time left
for the market constraints.
– Risk is high and continuous targets to achieve
and report to customer repeatedly.
– It is used when working on a technology is new
and requires time to learn.
Evolutionary model
• Advantages:
– A user gets a chance to experiment partially
developed system.
– It reduces the error because the core modules get
tested thoroughly.
• Disadvantages:
– Sometimes it is hard to divide the problem into
several versions that would be acceptable to the
customer which can be incrementally implemented
and delivered.
• Following are the evolutionary process models
– 1. The prototyping model
– 2. The spiral model
– 3. Concurrent development model
The prototyping model
• Used when the requirements of the product are not
clearly understood or are unstable.
• It can also be used if requirements are changing
quickly.
• This model can be successfully used for developing
user interfaces, high technology software-intensive
systems, and systems with complex algorithms and
interfaces.
• It is also a very good choice to demonstrate the
technical feasibility of the product.
• Prototyping is defined as the process of developing a
working replication of a product or system that has
to be engineered.
The prototyping model
• One of the most popularly used Software
Development Life Cycle Models (SDLC models).
• In this process model, the system is partially
implemented before or during the analysis phase
• The process starts by interviewing the customers
and developing the incomplete high-level paper model.
• This document is used to build the initial prototype
supporting only the basic functionality as desired by
the customer.
• Once the customer figures out the problems, the
prototype is further refined to eliminate them. The
process continues until the user approves the
prototype and finds the working model to be
satisfactory.
• There are four types of models available:
The prototyping model
A) Rapid Throwaway Prototyping –
– This technique offers a useful method of exploring
ideas and getting customer feedback for each of
them.
– Customer feedback helps in preventing
unnecessary design faults and hence, the final
prototype developed is of better quality.
B) Evolutionary Prototyping –
– In this method, the prototype developed initially
is incrementally refined on the basis of customer
feedback till it finally gets accepted.
– In comparison to Rapid Throwaway Prototyping, it
offers a better approach which saves time as well
as effort.
The prototyping model
C) Incremental Prototyping –
– In this type of incremental Prototyping, the final
expected product is broken into different small
pieces of prototypes and being developed
individually.
– In the end, when all individual pieces are properly
developed, then the different prototypes are
collectively merged into a single final product in
their predefined order. It’s a very efficient
approach that reduces the complexity of the
development process
D) Extreme Prototyping –
– This method is mainly used for web development.
It is consists of three sequential independent
phases:
The prototyping model
The prototyping model
• In this phase a basic prototype with all the
existing static pages are presented in the
HTML format.
• In the 2nd phase, Functional screens are
made with a simulated data process using a
prototype services layer.
• This is the final step where all the services are
implemented and associated with the final
prototype.
• The different phases of Prototyping model are:
– Communication
– Quick design
– Modeling quick design
– Construction of prototype
– Deployment, delivery, feedback
The prototyping model
• Advantages of Prototyping Model
– Need not know the detailed input, output,
processes, adaptability of operating system and full
machine interaction.
– Users are actively involved.
– Best platform to understand the system by the
user.
– Errors are detected much earlier.
– Gives quick user feedback for better solutions.
– It identifies the missing functionality, confusing or
difficult functions easily.
• Disadvantages of Prototyping Model:
– The client involvement is more and it is not always
considered by the developer.
The prototyping model
– It is a slow process because it takes more time for
development.
– Many changes can disturb the rhythm of the
development team.
– It is a thrown away prototype when the users are
confused with it.
SDLC Model - Spiral model
• The spiral model combines the idea of iterative development with
the systematic, controlled aspects of the waterfall model.
• This Spiral model is a combination of iterative development
process model and sequential linear development model
• It allows incremental releases of the product or incremental
refinement through each iteration around the spiral.
• Spiral Model – Design –
– The spiral model has four phases. A software project repeatedly
passes through these phases in iterations called Spirals.
• Identification - This phase starts with gathering the business
requirements in the baseline spiral.
• Design - Starts with the conceptual design in the baseline
spiral and involves architectural design, logical design of
modules, physical product design and the final design in the
subsequent spirals.
SDLC Model - Spiral model
SDLC Model - Spiral model
• Construct or Build - The Construct phase refers to
production of the actual software product at every spiral.
• Evaluation and Risk Analysis - Risk Analysis includes
identifying, estimating and monitoring the technical
feasibility and management risks, such as schedule slippage
and cost overrun. After testing the build, at the end of first
iteration, the customer evaluates the software and provides
feedback. Based on the customer evaluation, the software
development process enters the next iteration. The
following illustration is a representation of the Spiral Model,
listing the activities in each phase.
• Spiral Model - Pros and Cons - The advantages
– Changing requirements can be accommodated.
– Allows extensive use of prototypes.
– Requirements can be captured more accurately.
SDLC Model - Spiral model
– 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.
• The disadvantages
– Management is more complex.
– End of the project may not be known early.
– Process is complex
– Spiral may go on indefinitely.
– Large number of intermediate stages requires excessive
documentation.
SDLC Model - V-model
• The V-model is an SDLC model where execution of processes
happens in a sequential manner in a V-shape. It is also known
as Verification and Validation model.
• The V-Model is an extension of the waterfall model and is based
on the association of a testing phase for each corresponding
development stage.
• This is a highly-disciplined model and the next phase starts only
after completion of the previous phase.
• V-Model – Design –
• Testing phase of the development phase is planned in parallel. So,
there are Verification phases on one side of the ‘V’ and Validation
phases on the other side.
• The Coding Phase joins the two sides of the V-Model. The following
illustration depicts the different phases in a V-Model of the SDLC.
SDLC Model - V-model
SDLC Model - V-model
• There are several Verification phases in the V-Model, each of these
are explained in detail below.
– Business Requirement Analysis - The product requirements are
understood from the customer’s perspective. This phase
involves detailed communication with the customer to
understand his expectations and exact requirement.
– System Design - Once you have the clear and detailed product
requirements, it is time to design the complete system. The
system design will have the understanding and detailing the
complete hardware and communication setup for the product
under development.
– Architectural Design - Usually more than one technical
approach is proposed and based on the technical and financial
feasibility the final decision is taken. The data transfer and
communication between the internal modules and with the
outside world (other systems) is clearly understood and defined
SDLC Model - V-model
– Module Design - The detailed internal design for all the system
modules is specified, referred to as Low Level Design (LLD). Unit
tests can be designed at this stage based on the internal module
designs.
– Coding Phase - The actual coding of the system modules
designed in the design phase is taken up in the Coding phase.
The best suitable programming language is decided based on
the system and architectural requirements.
In c e p t io n
c o n s t ru c t io n
Re le a s e
t ra n s it io n
s oft wa re inc re m e nt
p ro d u c t io n
The Unified Process
• The construction phase
– The construction phase of the UP is identical to
the construction activity defined for the generic
software process.
– Using the architectural model as input, the
construction phase develops or acquires the
software components that will make each use-case
operational for end-users.
• The transition phase
– The transition phase of the UP encompasses the
latter stages of the generic construction activity
and the first part of the generic deployment
activity.
– Software is given to end-users for beta testing, and
user feedback reports both defects and necessary
changes.
The Unified Process
UP Phases
Ince ption Elaborat ion Const ruct ion Transit ion Product ion
Workflows
Requirements
Analysis
Design
Implementation
Test
Support
Iterations #1 #2 #n-1 #n
The Unified Process
• The production phase
– The production phase of the UP coincides with the
development activity of the generic process.
– The on-going use of the software is monitored,
support for the operating environment is provided
and defect reports and requests for changes are
submitted and evaluated.
Agile Software Development Process
What is Agile?
• Agile is the ability to create and respond to change. It is a way of
dealing with, and ultimately succeeding in, an uncertain and
turbulent environment.
What is Agile Software Development?
• Agile software development is more than frameworks such
as Scrum, Extreme Programming, or Feature-Driven Development
(FDD).
• One thing that separates Agile from other approaches to software
development is the focus on the people doing the work and how
they work together.
Agile is a Mindset –
• Agile is a mindset informed by the Agile Manifesto’s values and
principles. Those values and principles provide guidance on how to
create and respond to change and how to deal with uncertainty
Agile Software Development
What are Agile Methodologies?
• A methodology is the set of conventions that a team agrees to
follow. That means that each team will have its own
methodology, which will be different in either small or large ways
from every other team’s methodology.
• Key Agile Concepts
– User Stories
– Daily Meeting
– Personas
– Team
– Incremental Development
– Iterative Development
– Milestone Retrospective
Agile Software Development
• Characteristics of agile development success
1. Agile development releases and fixed-length iterations
2. Agile development delivers working, tested software
3. Value-driven development
4. Continuous (adaptive) planning
5. Multi-level planning in agile development
6. Relative estimation
7. Emergent feature discovery
8. Continuous testing
9. Continuous improvement
10. Small, cross-functional teams