Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Unit 1

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 125

Unit 1

Chapter 1
Introduction

Dr. Monica Sankat


Definition of software and Software
engineering
• Software - Software is a program or set of programs
containing instructions that provide desired functionality

• Engineering is the process of designing and building


something that serves a particular purpose and finds a cost-
effective solution to problems. 

• Software Engineering - Software engineering is defined as a


process of analyzing user requirements and then designing,
building, and testing software application which will satisfy
those requirements.
Definition of software and Software
engineering
Why Software
Engineering is
Popular?
• Large software
• Scalability
• Adaptability
• Cost
• Dynamic Nature
• Quality Management
Definition of software and Software
engineering
Challenges of Software Engineering
• In safety-critical areas such as space, aviation, nuclear power
plants, etc.
• The cost of software failure can be massive because lives are
at risk.
• Increased market demands for fast turnaround time.
• Dealing with the increased complexity of software need for
new applications.
• The diversity of software systems should be communicating
with each other.
Definition of software and Software
engineering
Characteristics of Good Software
• Operational
– Budget
– Efficiency
– Usability
– Dependability
– Correctness
– Functionality
– Safety
– Security
Definition of software and Software
engineering
• Transitional
– Interoperability
– Reusability
– Portability
– Adaptability

• Maintenance
– Flexibility
– Maintainability
– Modularity
– Scalability
Definition of software and Software
engineering
• Difference between Program and Product

Dual Role of Software: 


As a product –  
As a vehicle for delivering a 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.

Software development usually follows a life cycle, which


involves the feasibility study of the project, requirement
gathering, development of a prototype, system design,
coding, and testing.
Definition of software and Software
engineering
Objectives of Software Engineering: 
• Maintainability
• Efficiency
• Correctness
• Reusability
• Testability
• Reliability
• Portability
• Adaptability
• Interoperability 
The Nature of Software
• The software is instruction or computer program that when
executed provide desired features, function, and performance. A
data structure that enables the program to adequately
manipulate information and document that describe the
operation and use of the program.
• Changing Nature of Software: Nowadays, seven broad categories
of computer software present continuing challenges for software
engineers .which is given below:
– System Software: System software is a collection of programs
which are written to service other programs. 
– Application Software: Application software is defined as
programs that solve a specific business need.  
– Engineering and Scientific Software: This software is used to
facilitate the engineering function and task. Computer-aided
design, system simulation.
The Nature of Software
– Embedded Software: Embedded software resides within the
system or product and is used to implement and control
feature and function for the end-user and for the system itself.
– Product-line Software: Designed to provide a specific
capability for use by different customers, It focus on the
limited and esoteric marketplace or address the mass
consumer market.
– Web Application: It is a client-server computer program which
the client runs on the web browser.
– Artificial Intelligence Software: Artificial intelligence software
makes use of a nonnumerical algorithm to solve a complex
problem that is not amenable to computation or
straightforward analysis.
A generic view of process
• A process was defined as a collection of work activities, actions,
and tasks that are performed when some work product is to be
created. Each of these activities, actions, and tasks reside within a
framework or model that defines their relationship with the
process and with one another.
• Three Phases of the Generic View of Software Engineering:
– 1. Definition Phase: The definition phase focuses on “what”. 
– what information is to be processed,
– what function and performance are desired,
– what system behavior can be expected,
– what interfaces are to be established,
– what design constraints exist, and
– what validation criteria are required to define a successful
system.
A generic view of process
– During this, three major tasks will occur in some form: system
or information engineering, software project planning and
requirements analysis.
– 2. Development Phase: The development phase focuses on
“how”.
– how data are to be structured
– how function is to be implemented within a software
architecture,
– how interfaces are to be characterized,
– how the design will be translated into a programming
language, and how testing will be performed.
– During this, three specific technical tasks should always occur;
software design, code generation, and software testing.
– 3. Support Phase: The support phase focuses on “change” 
A generic view of process
– associated with error correction,
– adaptations required as the software’s environment evolves,
and
– changes due to enhancements brought about by changing
customer requirements.
• The software process is represented schematically in Figure
2.1.
• Framework activity is populated by a set of software
engineering actions. Each software engineering action is
defined by a task set that identifies the work tasks that are to
be completed, the work products that will be produced, the
quality assurance points that will be required, and the
milestones that will be used to indicate progress.
A generic view of process
• A generic process framework for software engineering defines
five framework activities—communication, planning, modeling,
construction, and deployment.
• In addition, a set of umbrella activities—project tracking and
control, risk management, quality assurance, configuration
management, technical reviews, and others—are applied
throughout the process.
• One important aspect of the software process is called process
flow—describes how the framework activities and the actions
and tasks that occur within each framework activity are organized
with respect to sequence and time and is illustrated in Figure 2.2.
– Communication - In this step, we communicate with the
clients and end-users. We discuss the requirements of the
project with the users.
A generic view of process
– Planning - In this step, we plan the steps for project
development. After completing the final discussion, we report
on the project. We discuss the risks involved in the project.
– Modelling - In this step, we create a model to understand the
project in the real world. We showcase the model to all the
developers.
– Construction - In this step, we follow a procedure to develop
the final product. If any code is required for the project
development, we implement it in this phase. We also test the
project in this phase.
– Deployment - In this phase, we submit the project to the
clients for their feedback and add any missing requirements.
We get the client feedback.
A generic view of process
• A linear process flow executes each of the five framework
activities in sequence, beginning with communication and
culminating with deployment (Figure 2.2a).
– An iterative process flow repeats one or more of the activities
before proceeding to the next (Figure 2.2b).
– An evolutionary process flow executes the activities in a
“circular” manner. (Figure 2.2c).
– A parallel process flow (Figure 2.2d) executes one or more
activities in parallel with other activities.
• Identifying a Task Set - A task set defines the actual work to be
done to accomplish the objectives of a software engineering
action.
• Process Pattern – A process-related problem that is encountered
during software engineering work, identifies the environment in
which the problem has been encountered, and suggests solutions
A generic view of process
• It provides you with a template a consistent method for
describing problem solutions within the context of the software
process.  
• Process pattern types-
– Stage patterns — defines a problem associated with a
framework activity for the process.
– Task patterns — defines a problem associated with a software
engineering action or work task and relevant to successful
software engineering practice
– Phase patterns — define the sequence of framework activities
that occur with the process, even when the overall flow of
activities is iterative in nature.
A layered Technology
• Software engineering is a fully layered technology, to develop
software we need to go from one layer to another.
• All the layers are connected and each layer demands the
fulfillment of the previous layer.
• Layered technology is divided into four parts:
– A quality focus: 
• Continuous process improvement principles of software.
• Provides integrity that means providing security
• It also focuses on maintainability and usability.
– Process: 
• Foundation or base layer of software engineering.
• It is key that binds all the layers together
• Defines a framework that must be established for the
effective delivery .
A layered Technology
• Covers all the activities, actions, and tasks required to be
carried out for software development. 
– 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, and support.
– 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.  
A layered Technology
Process activities are listed
below:-

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)

• CMMI Model – Maturity Levels : In CMMI with staged


representation, there are five maturity levels described as follows  
• Maturity level 1 : Initial
– processes are poorly managed or controlled.
– unpredictable outcomes of processes involved.
– ad hoc and chaotic approach used.
– No KPAs (Key Process Areas) defined.
– Lowest quality and highest risk.
• Maturity level 2 : Managed
– requirements are managed.
– processes are planned and controlled.
– projects are managed and implemented according to their
documented plans.
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)

–higher quality of processes is achieved.


–lower risk
• Maturity level 5 : Optimizing
– continuous improvement in processes and their performance.
– improvement has to be both incremental and innovative.
– highest quality of processes.
– lowest risk in processes and their performance.

• CMMI Model – Capability Levels –


– A capability level includes relevant specific and generic
practices for a specific process area that can improve the
organization’s processes associated with that process area.
– There are six capability levels as described below  
The Capability Maturity Model Integration (CMMI)

• Capability level 0 : Incomplete


– incomplete process – partially or not performed.
– one or more specific goals of process area are not met.
– No generic goals are specified for this level.
– this capability level is same as maturity level 1.
• Capability level 1 : Performed
– process performance may not be stable.
– objectives of quality, cost and schedule may not be met.
– a capability level 1 process is expected to perform all
specific and generic practices for this level.
– only a start-step for process improvement.
• Capability level 2 : Managed
– process is planned, monitored and controlled.
The Capability Maturity Model Integration (CMMI)

– managing the process by ensuring that objectives are


achieved.
– objectives are both model and other including cost, quality,
schedule.
– actively managing processing with the help of metrics.
• Capability level 3 : Defined
– a defined process is managed and meets the organization’s
set of guidelines and standards.
– focus is process standardization.
• Capability level 4 : Quantitatively Managed
– process is controlled using statistical and quantitative
techniques.
– process performance and quality is understood in statistical
terms and metrics.
The Capability Maturity Model Integration (CMMI)

– quantitative objectives for process quality and performance


are established.
• Capability level 5 : Optimizing
– focuses on continually improving process performance.
– performance is improved in both ways – incremental and
innovation.
– emphasizes on studying the performance results across the
organization to ensure that common causes or issues are
identified and fixed.
Process Assessment
• A software process assessment is a disciplined examination of the
software processes used by an organization, based on a process
model.
• The assessment includes the identification and characterization of
current practices, identifying areas of strengths and weaknesses,
and the ability of current practices to control or avoid significant
causes of poor (software) quality, cost, and schedule.

• A software assessment (or audit) can be of three types.


– A self-assessment (first-party assessment) is performed
internally by an organization's own personnel.
– A second-party assessment is performed by an external
assessment team or the organization is assessed by a
customer.
– A third-party assessment is performed by an external party.
Process Assessment
• Software process assessments are performed in an open and
collaborative environment.
• They are for the use of the organization to improve its software
processes, and the results are confidential to the organization.
• Software Process Maturity Assessment
– The scope of a software process assessment can cover all the
processes in the organization.
– Most of the standard-based process assessment approaches
are invariably based on the concept of process maturity.
– There are two reasons for the different results. They are,
• The organization being investigated must be determined.
• Even in what appears to be the same organization, the
sample of projects selected to represent the organization
may affect the scope and outcome.
Process Assessment
• When the target unit of assessment is at the project level, the
assessment should include all meaningful factors that contribute
to the success or failure of the project.
• It should not be limited by established dimensions of a given
process maturity model relevant when an organization intends to
embark.
• Here the degree of implementation and their effectiveness as
substantiated by project data are assessed.
• Process maturity become overall long-term improvement
strategy. Software project assessments should be independent
assessments in order to be objective.
• Software Process Assessment Cycle -The CMM-based assessment
approach uses a six-step cycle. They are −
– Select a team
Process Assessment
– The representatives of the site to be appraised complete the
standard process maturity questionnaire.
– Performs an analysis of the questionnaire responses and
identifies the areas that warrant further exploration according
to the CMM key process areas.
– Conducts a site visit to gain an understanding of the software
process followed by the site.
– Produces a list of findings that identifies the strengths and
weakness of the organization's software process.
– Prepares a Key Process Area (KPA) profile analysis and
presents the results to the appropriate audience.
Personal and Team Process Models
• PSP –
– The SEI CMM which is reference model for raising the maturity
levels of software and predicts the most expected outcome
from the next project undertaken
– Organizations does not tell software developers about how to
analyze, design, code, test and document the software
products, but expects that the developers use effectual
practices.
– It is the skeleton or the structure that assist the engineers in
finding a way to measure and improve the way of working to a
great extend.
– It helps them in developing their respective skills at a personal
level and the way of doing planning, estimations against the
plans.
Personal and Team Process Models
• Objectives of PSP: The aim of PSP is to give software engineers
with the regulated methods for the betterment of personal
software development processes.
– The PSP helps software engineers to: 
– Improve their approximating and planning skills.
– Make promises that can be fulfilled.
– Manage the standards of their projects.
– Reduce the number of faults and imperfections in their work.
• Time measurement
• PSP Planning
• Levels of Personal Software Process: (PSP) has four levels-
– PSP 0 – The first level of Personal Software Process, PSP 0
includes Personal measurement, basic size measures, coding
standards.
Personal and Team Process Models
– PSP 1 – This level includes the planning of time and
scheduling.
– PSP 2 – This level introduces the personal quality
management, design and code reviews.
– PSP 3 – The last level of the Personal Software Process is for
the Personal process evolution.
• TSP –
• It is a guideline for software product development teams.
• Focuses on helping development teams to improve their
quality and productivity to better meet goals of cost and
progress.
• It is designed for groups ranging from 2 persons to 20 persons.
TSP can be applied to large multiple-group processes for up to
150 persons.
Personal and Team Process Models
• Objectives of TSP
– To build a self-directed teams that plan and track their work,
establish goals and own their process and plans.
– Shows managers how to coach and motivate the team
members so that they can give peak (high) performance.
– It accelerate (increases) the software process development
• Goal of TSP –
– To build a Self-Directed project teams
– Organizes itself to produce high quality software. 
• Activities of TSP
– Project Launch: It reviews project objective and describes the
TSP structure and content.
– High Level Design: it creates the high level design, specify the
design, inspect the design and develop the integration plan.
Personal and Team Process Models
– 3) Implementation: This uses the PSP to implement the
modules and the functions.
– 4) Integration and Testing: Testing builds and integrates the
system.
– 5) Postmortem: Writes the cycle report and produces peer
and team review.
• TSP Advantages
– Defines roles and responsibilities for each team member.
– Track quantitative project data.
– Identifies a team process that is appropriate for the project
and a strategy
– Defines local standards that are applicable to the team‘s
– Continually assesses risk and reacts to it;
– Tracks, manages, and reports project status.
Personal and Team Process Models
Personal and Team Process Models
Personal and Team Process Models
Software Process Model
• 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.
• It can also be defined as a simplified representation
of a software process. Each model represents a process
from a specific perspective.
• There are many different software processes but all
involve:
– Specification
– Design and implementation
– Validation
– Evolution
Software Process Model
• Basic software process models on which different type
of software process models can be implemented:  
– A workflow Model
– The Waterfall Model
– Dataflow Model
– Evolutionary Development Model
– Role / Action Model
• Types of Software Process Model –
• Software processes, methodologies and frameworks
range from specific prescriptive steps that can be used
directly by an organization
• Day-to-day work, to flexible frameworks that an
organization uses to generate a custom set of steps
tailored to the needs of a specific project or group.
Software development life cycle
Software Development Life Cycle (SDLC) is a process used by
the software industry to design, develop and test high
quality software’s.
Aims to produce high-quality software that meets or exceeds
customer expectations, reaches completion within times
and cost estimates.
The life cycle defines a methodology for improving the quality
of software and the overall development process.
A typical Software Development Life Cycle consists of the
following stages −

• Stage 1: Requirement Analysis & Planning


• Stage 2: Defining Requirements
Software development life cycle
Stage 3: Designing the Product
Architecture
Stage 4: Building or Developing the
Product
Stage 5: Testing the Product
Stage 6: Deployment in the Market
and Maintenance

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.

• The different Validation Phases in a V-Model are explained in detail


below.
– Unit Testing - Unit tests designed in the module design phase
are executed on the code during this validation phase.  
– Integration Testing - Integration testing is associated with the
architectural design phase.  
SDLC Model - V-model
– System Testing - System testing is directly associated with the
system design phase. System tests check the entire system
functionality and the communication of the system. 
– Acceptance Testing - Associated with the business requirement
analysis phase and involves testing the product in user
environment. Acceptance tests uncover the compatibility issues
with the other systems available in the user environment.  
• V-Model - Pros and Cons
• The advantages 
– This is a highly-disciplined model and Phases are completed one
at a time.
– Works well for smaller projects where requirements are very
well understood.
– Simple and easy to understand and use.
– Easy to manage due to the rigidity of the model.  
SDLC Model - V-model
• The disadvantages  
– High risk and uncertainty.
– Not a good model for complex and object-oriented projects.
– Poor model for long and ongoing projects.
– Once an application is in the testing stage, it is difficult to go
back and change a functionality.
– No working software is produced until late during the life cycle.
SDLC Model - RAD Model
• The RAD (Rapid Application Development) model is based on
prototyping and iterative development with no specific planning
involved.
• In the RAD model, the functional modules are developed in
parallel as prototypes and are integrated to make the complete
product for faster product delivery.
• Since there is no detailed preplanning, it makes it easier to
incorporate the changes within the development process.
• The most important aspect for this model to be successful is to
make sure that the prototypes developed are reusable.
• RAD Model Design –
– RAD model distributes the analysis, design, build and test
phases into a series of short, iterative development cycles.
Following are the various phases of the RAD Model –
SDLC Model - RAD Model
– Business Modelling - The business model for the product under
development is designed in terms of flow of information and
the distribution of information between various business
channels.
– Data Modelling - The information gathered in the Business
Modelling phase is reviewed and analyzed to form sets of data
objects vital for the business.
– Process Modelling - The data object sets defined in the Data
Modelling phase are converted to establish the business
information flow needed to achieve specific business objectives
as per the business model.  
– Application Generation - The actual system is built and coding
is done by using automation tools to convert process and data
models into actual prototypes.
 Rapid Application development
SDLC Model - RAD Model
• Testing and Turnover - The overall testing time is reduced in the
RAD model as the prototypes are independently tested during
every iteration.

RAD Model - Pros  


– Progress can be measured.
– Productivity with fewer people in a short time.
– Reduced development time.
– Increases reusability of components.
– Quick initial reviews occur.
– Encourages customer feedback.
• RAD Model - Cons  
– Only system that can be modularized can be built using RAD.
– Requires highly skilled developers/designers.
– High dependency on Modelling skills.
SDLC Model - RAD Model
– Management complexity is more.
– Requires user involvement throughout the life cycle.
– Suitable for project requiring shorter development times.
SDLC Model - Agile SDLC model
• Agile SDLC
– Combination of iterative and incremental process models
– Focus on process adaptability and customer satisfaction by
rapid delivery of working software product.
– Agile Methods break the product into small incremental
builds. These builds are provided in iterations.
– Each iteration typically lasts from about one to three weeks.
Every iteration involves cross functional teams working
simultaneously on various areas like – 
• Planning
• Requirements Analysis
• Design
• Coding
• Unit Testing and Acceptance Testing.
SDLC Model - Agile SDLC model
SDLC Model - Agile SDLC model
• Model believes that every project needs to be handled
differently and the existing methods need to be tailored to best
suit the project requirements.
• The tasks are divided to time boxes (small time frames) to deliver
specific features for a release.
• Iterative approach is taken and working software build is
delivered after each iteration. Each build is incremental in terms
of features.
• Becoming popular with time due to its flexibility and
adaptability.
• The most popular Agile methods include Rational Unified
Process, Scrum, Crystal Clear, Extreme Programming, Adaptive
Software Development, Feature Driven Development and
Dynamic, Systems Development Method.
SDLC Model - Agile SDLC model
• These are now collectively referred to as Agile Methodologies.
The Agile Manifesto has following principles –
• Individuals and interactions.
• Working software 
• Customer collaboration
• Responding to change
• Agile Model - Pros and Cons 
• The advantages of the Agile Model are as follows −
– Is a very realistic approach to software development.
– Promotes teamwork and cross training.
– Functionality can be developed rapidly and demonstrated.
– Resource requirements are minimum.
– Suitable for fixed or changing requirements
SDLC Model - Agile SDLC model
– Delivers early partial working solutions.
– Good model for environments that change steadily.
– Minimal rules, documentation easily employed.
• The disadvantages of the Agile Model are as follows −
– An overall plan, an agile leader and agile PM practice is a must
without which it will not work.
– Strict delivery management dictates the scope, functionality to
be delivered, and adjustments to meet the deadlines.
– Depends heavily on customer interaction, so if customer is not
clear, team can be driven in the wrong direction.
– There is a very high individual dependency, since there is
minimum documentation generated.
– Transfer of technology to new team members may be quite
challenging due to lack of documentation.
Concurrent Model
• Concurrent Process model is an evolutionary process
model in software engineering.
• The term concurrent mean “done at the same time”.
• If we take waterfall model as an example, you will not
know the activities going on in each phase, only after
the phase is over, you get a work product or a
document.
• Suppose we want to know the state of activities of the
design phase and at the same time we want to know
about testing phase activities. Which ones are
complete and which are not?
• The concurrent process model shows the current state
of activities, tasks and their associated states that
remain in different phases.
The Concurrent Development Model
•  The concurrent development model, sometimes called
concurrent engineering.
• The concurrent process model can be represented
schematically as a series of major technical
activities, tasks, and their associated states.
• For example, the engineering activity defined for the
spiral model is accomplished by invoking the following
tasks: prototyping and/or analysis modeling,
requirements specification, and design
• The activity—analysis—may be in any one of the
states noted at any given time. Similarly, other
activities e.g., design or customer communication
can be represented in an analogous manner.
• All activities exist concurrently but reside in different
states.
The Concurrent Development Model
 
The Concurrent Development Model
• For example,
– Early in a project the customer communication
activity is not shown in the figure, has completed
its first iteration and exists in the awaiting changes
state. The analysis activity, which existed in the
none state while initial customer communication was
completed, now makes a transition into the under
development state. The customer indicates that
changes in requirements must be made, the
analysis activity moves from the under development
state into the awaiting changes state.
• The concurrent process model defines a series
of events that will trigger transitions from
state to state for each of the software
engineering activities.
The Concurrent Development Model
• The concurrent process model is often used as the
paradigm for the development of client/server
applications.
• A client/server system is composed of a set of
functional components. When applied to
client/server, the concurrent process model defines
activities in two dimensions:
• A system dimension - System level issues are
addressed using three activities:
– Design
– Assembly
– Use. 
• A component dimension - The component dimension
is addressed with two activities:
• Design and Realization. 
The Concurrent Development Model
• Concurrency is achieved in two ways:  
– System and component activities occur
simultaneously and can be modeled using the state-
oriented approach described previously;
–A typical client/server application is
implemented with many components, each of
which can be designed and realized concurrently.
• In reality, the concurrent process model is applicable
to all types of software development and provides an
accurate picture of the current state of a project.
• Each activity on the network exists simultaneously
with other activities. Events generated within a
given activity or at some other place in the activity
network trigger transitions among the states of an
activity.
The Concurrent Development Model
• Main Point –  
– The concurrent development model is called as
concurrent model.
– The communication activity has completed in the
first iteration and exits in the awaiting changes
state.
– The modeling activity completed its initial
communication and then go to the
underdevelopment state.
– If the customer specifies the change in the
requirement, then the modeling activity moves from
the under development state into the awaiting
change state.
– The concurrent process model activities moving
from one state to another state.
The Concurrent Development Model
• Advantages of the concurrent development model 
– This model is applicable to all types of software
development processes.
– It is easy for understanding and use.
– It gives immediate feedback from testing.
– It provides an accurate picture of the current state
of a project.
• Disadvantages of the concurrent development
model
– It needs better communication between the team
members. This may not be achieved all the time.
– It requires to remember the status of the different
activities.
Specialized Process Models
•  Specialized process models take on many of the
characteristics of one or more of the traditional models.
• These models tend to be applied when a specialized or
narrowly defined software engineering approach is
chosen.
• There are 3 types of specialized process models:
1. Component Based Development
2. Formal Methods Model
3. Aspect Oriented Software development

• Component Based Development :


• Commercial off-the-shelf (COTS) software
components, developed by vendors who offer them as
products, provide targeted functionality with well-
defined interfaces that enable the component to be
integrated into the software that is to be built.
Specialized Process Models
  • 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.
• Modeling and construction activities begin with the
identification of candidate components.
• Regardless of the technology that is used to create the
components, the component-based development
model incorporates the following steps:
• Available component-based products are
researched and evaluated for the application
domain in question.
• Component integration issues are considered.
• A software architecture is designed to
accommodate the components.
Specialized Process Models
• Components are integrated into the architecture.
• Comprehensive testing is conducted to ensure
proper functionality
• The component-based development model leads to
software reuse, and reusability provides software
engineers with a number of measurable benefits.
• Formal Methods Model
• The formal methods model encompasses a set of
activities that leads to formal mathematical
specification of computer software.
• Formal methods enable to specify, develop, and
verify a computer-based system by applying a
rigorous, mathematical notation.
• A variation on this approach, called clean-room
software engineering is currently applied by some
software development organizations.
Specialized Process Models
• When formal methods are used during development,
they provide a mechanism for eliminating many of
the problems that are difficult to overcome using other
software engineering paradigms.
• Ambiguity, incompleteness, and inconsistency can
be discovered and corrected more easily, through the
application of mathematical analysis.
• When formal methods are used during design, they
serve as a basis for program verification and
therefore enable you to discover and correct errors that
might otherwise go undetected.
• The formal methods model offers the promise of
defect-free software.
• There are some of the disadvantages too:
– The development of formal models is currently quite
time consuming and expensive.
Specialized Process Models
– 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.
• Aspect Oriented Software Development
• Regardless of the software process that is chosen, the
builders of complex software invariably implement a
set of localized features, functions, and
information content.
• As modern computer-based systems become more
sophisticated certain concerns span the entire
architecture. Some concerns are high-level properties
of a system, Other concerns affect functions, while
others are systemic.
Specialized Process Models
• Aspectual requirements define those crosscutting
concerns that have an impact across the software
architecture.
• Aspect-oriented software development (AOSD), often
referred to as aspect-oriented programming (AOP), is
a relatively new software engineering paradigm that
provides a process and methodological approach for
defining, specifying, designing, and constructing
aspects.
• A distinct aspect-oriented process has not yet
matured. However, it is likely that such a process will
adopt characteristics of both evolutionary and
concurrent process models. The evolutionary model
is appropriate as aspects are identified and
The Unified Process
• A “use-case driven, architecture-centric, iterative
and incremental” software process closely aligned
with the Unified Modeling Language (UML).
• The UP is an attempt to draw on the best features
and characteristics of conventional software process
models,
• The UP recognizes the importance of customer
communication and streamlined methods for
describing the customer’s view of a system.
• UML provides the necessary technology to support
Object Oriented Software Engineering practice
• The UML developers developed the Unified Process, a
framework Object Oriented Software Engineering using
UML.
The Unified Process
Phases of the Unified Process 
• The Inception phase
– The Inception phase of the UP encompasses both
customer communication and planning activities.
– A use-case describes a sequence of actions that are
performed by an actor (person, machine, another
system) as the actor interacts with the Software.  
• The elaboration phase
– The elaboration phase encompasses the customer
communication and modeling activities of the
generic process model.
– Elaboration refines and expands the preliminary
use-cases that were developed as part of the inception
phase and expands the architectural
representation
The Unified Process
• Phases of the Unified Process 
Ela b o ra t io n

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

You might also like