Uploaded by charanjakkulapjss15

Software Engineering

advertisement
Software Engineering
Dr. Sachin Kumar Yadav
What is software?
• Computer programs
and
associated documentation
What is software?
Documentation consists of different types of manuals
are
Formal Specification
Analysis
/Specification
ContextDiagram
Data Flow
Diagrams
Design
Flow Charts
Entity-Relationship
Diagram
Documentation
Manuals
Source Code Listings
Implementation
Testing
List of documentation manuals
Cross-Reference
Listing
Test Data
Test Results
Operating Procedures consists of different types of
manuals are
System Overview
User
Manuals
Beginner’s Guide
Tutorial
Reference Guide
Operating
Procedures
Installation Guide
Operational
Manuals
System
Administration Guide
List of operating procedure manuals.
Software Product
• Software
products
may
be
developed
for
a
particular customer
or may be developed for a general
market
What is software engineering?
Software engineering is an engineering discipline which
is concerned with all aspects of software production
Software engineers should
– adopt a systematic and organised approach to their
work
– use appropriate tools and techniques depending on
• the problem to be solved,
• the development constraints and
– use the resources available
What is software engineering?
At the first conference on software engineering in 1968, Fritz
Bauer defined software engineering as “The establishment and
use of
sound engineering principles in order to obtain
economically developed software that is reliable and works
efficiently on real machines”.
Stephen Schach defined the same as “A discipline whose aim is
the production of quality software, software that is delivered on
time, within budget, and that satisfies its requirements”.
Both the definitions are popular and acceptable to majority. However, due to increase in
cost of maintaining software, objective is now shifting to produce quality software that is
maintainable, delivered on time, within budget, and also satisfies its requirements.
Introduction to Software Engineering
CONT…
• Software engineering is the branch of computer science that deals
with the design, development, testing, and maintenance
of software applications.
• Software Engineering is an engineering branch related to the
evolution of software product using well-defined scientific principles,
techniques, and procedures.
• Software Engineering is the process of designing, developing, testing,
and maintaining software. It is a systematic and disciplined approach
to software development that aims to create high-quality, reliable,
and maintainable software.
Software Characteristics:
Comparison of constructing a bridge and writing a program.
Sr.
No
Constructing a bridge
1.
The problem is well understood
2.
There are many existing bridges
3.
The requirement for a bridge typically do
not change much during construction
4.
The strength and stability of a bridge can
be calculated with reasonable precision
When a bridge collapses, there is a
detailed investigation and report
5.
6.
7.
Engineers have been constructing bridges
for thousands of years
Materials (wood, stone,iron, steel) and
techniques (making joints in wood,
carving
stone, casting iron) change
slowly.
Writing a program
Only some parts of the problem
are understood, others are not
Every program is different and
designed for special applications.
Requirements
typically
change during all
phases of development.
Not possible to calculate correctness
of a program with existing methods.
When a program fails, the reasons
are often unavailable or even
deliberately concealed.
Developers have been writing
programs for 50 years or so.
Hardware and software changes rapidly.
Software Characteristics:
Software does not wear out.
Failure Intensity
Burn-in
phase
Wear out
phase
Useful life
phase
Time
Characteristics (Component of S/W
characteristics) of software engineering
Functionality
Functionality refers to the set of
features and capabilities that a
software program or system
provides to its users. It is one of the
most important characteristics of
software, as it determines the
usefulness of the software for the
intended purpose.
Data storage and retrieval
Data processing and manipulation
User interface and navigation
Communication and networking
Security and access control
Reporting and visualization
Automation and scripting
Reliability
Reliability is a characteristic of
software that refers to its
ability to perform its intended
functions
correctly
and
consistently
over
time.
Reliability is an important
aspect of software quality, as it
helps ensure that the software
will work correctly and not fail
unexpectedly.
Examples of factors that can affect the
reliability of software include:
1.Bugs and errors in the code
2.Lack of testing and validation
3.Poorly designed algorithms and data
structures
4.Inadequate error handling and recovery
5.Incompatibilities with other software or
hardware
Efficiency
Efficiency
is
a
characteristic of software
that refers to its ability to
use resources such as
memory,
processing
power,
and
network
bandwidth in an optimal
way.
Examples of factors that can affect the efficiency of the
software include:
1.Poorly designed algorithms and data structures
2.Inefficient use of memory and processing power
3.High network latency or bandwidth usage
4.Unnecessary processing or computation
5.Unoptimized code
Usability
It refers to the extent to which the software can be used with ease. the
amount of effort or time required to learn how to use the software.
Required functions are:
Maintainability
It refers to the ease with which modifications can be made in a
software system to extend its functionality, improve its performance, or
correct errors.
Required functions are:
Portability
A set of attributes that bears on the ability of software to be
transferred from one environment to another, without minimum
changes.
• Required functions are:
Importance of software engineering
software applications
Role of Management in Software
Development
Factors
People
Project
Product
Process
Role of Management in Software
Development
1) People
The management has to deal with people in every stage of the software
developing process. From the ideation phase to the final deployment phase,
including the development and testing phases in between, there are people
involved in everything, whether they be the customers or the developers, the
designers or the salesmen. Hence, how they contact and communicate with
each other must be managed so that all the required information is
successfully delivered to the relevant person and hence there is no
communication gap between the customers and the service providers.
2) Project
From the ideation phase to the deployment phase, we term the process as a
project. Many people work together on a project to build a final product that
can be delivered to the customer as per their needs or demands. So, the
entire process that goes on while working on the project must be managed
properly so that we can get a worthy result after completing the project and
also so that the project can be completed on time without any delay.
3) Process
Every process that takes place while developing the software, or we
can say while working on the project must be managed properly and
separately. For example, there are various phases in a software
development process and every phase has its process like the
designing process is different from the coding process, and similarly,
the coding process is different from the testing. Hence, each process
is managed according to its needs and each needs to be taken special
care of.
4) Product
Even after the development process is completed and we reach our
final product, still, it needs to be delivered to its customers. Hence the
entire process needs a separate management team like the sales
department.
Software Process
The software process is the way in
which we
produce
software.
Why is it difficult to improve software
process ? Or software process
improvement fails.
• Not enough time
• Lack of knowledge
• Wrong motivations
• Insufficient commitment or Due
to lack of true commitment
Process improvement learning curve
There are four basic key process activities:
1.Software Specifications –
In this process, detailed description of a software system to be developed with its
functional and non-functional requirements.
2.Software Development –
In this process, designing, programming, documenting, testing, and bug fixing is
done.
3.Software Validation –
In this process, evaluation software product is done to ensure that the software
meets the business requirements as well as the end users needs.
4.Software Evolution –
It is a process of developing software initially, then timely updating it for various
reasons.
Software Crisis
Software crisis is a term used in
the early days of computing
science for the difficulty of writing
useful and efficient computer
programs in the required time.
The software crisis was due to
the rapid increases in computer
power and the complexity of the
problems that could not be
tackled.
a time of great danger or difficulty; the moment when
things change and either improve or get worse
CONT…
Factors Contributing to Software Crisis
• Poor project management.
• Lack of adequate training in software engineering.
• Less skilled project members.
• Low productivity improvements.
Solution of Software Crisis
There is no single solution to the crisis. One possible solution to a
software crisis is software engineering, because software engineering is
a systematic, disciplined, and quantifiable approach. For preventing
software crises, there are some guidelines:
• Reduction in software over budget.
• The quality of the software must be high.
• Less time is needed for a software project.
• Experienced and skilled people working on the software project.
• Software must be delivered.
• Software must meet user requirements.
Some Software failures
Ariane 5
It took the European Space Agency 10 years and $7
billion to produce Ariane 5, a giant rocket capable of
hurling a pair of three-ton satellites into orbit with each
launch and intended to give Europe
overwhelming
supremacy
in
the
commercial space business.
The rocket was destroyed after 39 seconds of its
launch, at an altitude of two and a half miles along
with its payload of four expensive and uninsured
scientific satellites.
Some Software failures
When the guidance system’s own computer
tried to convert one piece of data the
sideways velocity of the rocket from a 64 bit
format to a 16 bit format; the number was
too big, and an overflow error resulted after
36.7 seconds. When the guidance system
shutdown, it passed control to an identical,
redundant unit, which was there to provide
backup in case of just such a failure.
Unfortunately, the second
unit, which had failed in the few
identical
manner
a
milliseconds before.
Some Software failures
Y2K problem:
It was simply the ignorance about the
adequacy or otherwise of using only last
two digits of the year.
The 4-digit date format, like 1964, was
shortened to 2-digit format, like 64.
Some Software failures
The Patriot Missile
o First time used in Gulf war
o Used as a defense from Iraqi Scud
missiles
o Failed several times including one that
killed 28 US soldiers in Dhahran, Saudi
Arabia
Reasons:
A small timing error in the system’s clock
accumulated to the point that after 14 hours,
the tracking system was no longer accurate.
In the Dhahran attack, the system had been
operating for more than 100 hours.
Some Software failures
The Space Shuttle
Part of an abort scenario for the
Shuttle requires fuel dumps to lighten
the spacecraft. It was during the
second of these
dumps that a
(software) crash occurred.
...the fuel management module, which
had performed one
dump and
successfully exited, restarted when
recalled for the second fuel dump...
SOFTWARE METRICS
A
metric
is
a
quantitative measure
of the degree to which
a system, component
or process possesses a
given attribute.
A software metric is a
measure of software
characteristics which
are measurable or
countable.
Software metrics are
valuable for many reasons,
including measuring software
performance, planning work
items, measuring productivity
, and many other uses.
Software Process and Product Metrics
Process metrics quantify the attributesof softwaredevelopment
whereas product metrics are measures for the software product.
• Examples
•Process metrics: Productivity, Quality, Efficiency etc.
• Product metrics: Size, Reliability, Complexity etc.
Software measurement
A measure provides a
quantitative indication
of
the
extent,
dimension,
size,
capacity, efficiency,
productivity
or
reliability of some
attributes of a product
or process.
Measurement is the
act of evaluating a
measure.
Software Measurement
A measurement is a manifestation of the size, quantity, amount, or
dimension of a particular attribute of a product or process.
Software Measurement Principles:
The software measurement process can be characterized by five activities1.Formulation: The derivation of software measures and metrics appropriate
for the representation of the software that is being considered.
2.Collection: The mechanism used to accumulate data required to derive the
formulated metrics.
3.Analysis: The computation of metrics and the application of mathematical
tools.
4.Interpretation: The evaluation of metrics results in insight into the quality of
the representation.
5.Feedback: Recommendation derived from the interpretation of product
metrics transmitted to the software team.
Need for Software Measurement
• Create the quality of the current product or process.
• Anticipate future qualities of the product or process.
• Enhance the quality of a product or process.
• Regulate the state of the project concerning budget and schedule.
• Enable data-driven decision-making in project planning and control.
• Ensure that industry standards and regulations are followed.
• Give software products and processes a quantitative basis for
evaluation.
• Enable the ongoing improvement of software development practices.
Classification of Software Measurement
• Direct Measurement: In direct measurement, the product, process,
or thing is measured directly using a standard scale.
• Indirect Measurement: In indirect measurement, the quantity or
quality to be measured is measured using related parameters i.e. by
use of reference.
Software Metrics
A metric is a measurement of the level at which any attribute belongs
to a system product or process.
Software metrics is a quantifiable or countable assessment of the
attributes of a software product. There are 4 functions related to
software metrics:
• Planning
• Organizing
• Controlling
• Improving
Characteristics of software Metrics:
• Quantitative: Metrics must possess quantitative nature. It means
metrics can be expressed in numerical values.
• Understandable: Metric computation should be easily understood,
and the method of computing metrics should be clearly defined.
• Applicability: Metrics should be applicable in the initial phases of the
development of the software.
• Repeatable: When measured repeatedly, the metric values should be
the same and consistent in nature.
• Economical: The computation of metrics should be economical.
• Language Independent: Metrics should not depend on any
programming language.
Classification of Software Metrics
• Product Metrics: Product metrics are used to evaluate the state of the product,
tracing risks and undercover prospective problem areas. The ability of the team
to control quality is evaluated. Examples include lines of code, cyclomatic
complexity, code coverage, defect density, and code maintainability index.
• Process Metrics: Process metrics pay particular attention to enhancing the longterm process of the team or organization. These metrics are used to optimize the
development process and maintenance activities of software. Examples include
effort variance, schedule variance, defect injection rate, and lead time.
• Project Metrics: The project metrics describes the characteristic and execution of
a project. Examples include effort estimation accuracy, schedule deviation, cost
variance, and productivity.Usually measures•
•
•
•
Number of software developer
Staffing patterns over the life cycle of software
Cost and schedule
Productivity
Types of Metrics
• Internal metrics: Internal metrics are the metrics used for measuring
properties that are viewed to be of greater importance to a software
developer. For example, Lines of Code (LOC) measure.
• External metrics: External metrics are the metrics used for measuring
properties that are viewed to be of greater importance to the user, e.g.,
portability, reliability, functionality, usability, etc.
• Hybrid metrics: Hybrid metrics are the metrics that combine product,
process, and resource metrics. For example, cost per FP where FP stands
for Function Point Metric.
• Project metrics: Project metrics are the metrics used by the project
manager to check the project's progress. Data from the past projects are
used to collect various metrics, like time and cost; these estimates are used
as a base of new software. Note that as the project proceeds, the project
manager will check its progress from time-to-time and will compare the
effort, cost, and time with the original effort, cost and time.
Advantages of Software Metrics :
1.Reduction in cost or budget.
2.It helps to identify the particular area for improvising.
3.It helps to increase the product quality.
4.Managing the workloads and teams.
5.Reduction in overall time to produce the product,.
6.It helps to determine the complexity of the code and to test the code with
resources.
7.It helps in providing effective planning, controlling and managing of the entire
product.
Disadvantages of Software Metrics :
1.It is expensive and difficult to implement the metrics in some cases.
2.Performance of the entire team or an individual from the team can’t be
determined. Only the performance of the product is determined.
3.Sometimes the quality of the product is not met with the expectation.
4.It leads to measure the unwanted data which is wastage of time.
5.Measuring the incorrect data leads to make wrong decision making.
Project Monitoring and Control
• Monitoring and Controlling are processes needed to track, review, and regulate the
progress and performance of the project. It also identifies any areas where changes to
the project management method are required and initiates the required changes.
CONT…
• Monitor and control project work: The generic step under which all other
monitoring and controlling activities fall under.
• Perform integrated change control: The functions involved in making
changes to the project plan. When changes to the schedule, cost, or any
other area of the project management plan are necessary, the program is
changed and re-approved by the project sponsor.
• Validate scope: The activities involved with gaining approval of the
project's deliverables.
• Control scope: Ensuring that the scope of the project does not change and
that unauthorized activities are not performed as part of the plan.
• Control schedule: The functions involved with ensuring the project work is
performed according to the schedule, and that project deadlines are met.
CONT…
• Control costs: The tasks involved with ensuring the project costs stay
within the approved budget.
• Control quality: Ensuring that the quality of the projects deliverables is to
the standard defined in the project management plan.
• Control communications: Providing for the communication needs of each
project stakeholder.
• Control Risks: Safeguarding the project from unexpected events that
negatively impact the project's budget, schedule, stakeholder needs, or any
other project success criteria.
• Control procurements: Ensuring the project's subcontractors and vendors
meet the project goals.
• Control stakeholder engagement: The tasks involved with ensuring that all
of the project's stakeholders are left satisfied with the project work.
Software Life Cycle Models
The goal of Software Engineering is to provide models and processes that
lead to the production of well-documented maintainable software in a manner
that is predictable.
Software development life cycle
(SDLC) is a structured process
that is used to design, develop,
and test good-quality software.
SDLC, or software development life
cycle, is a methodology that defines
the entire procedure of software
development step-by-step.
Stages of the Software Development Life Cycle
Model
What are the main phases of SDLC?
• The main phases of SDLC include Requirements, Design,
Implementation (Coding), Testing, Deployment and Maintenance.
These phases represent the stages a software project goes through
from initiation to completion.
Chief Technology Officer
Stage 1: Planning and Requirement Analysis
• Requirement analysis is the most important and fundamental stage in
SDLC. It is performed by the senior members of the team with inputs
from the customer, the sales department, market surveys and domain
experts in the industry. This information is then used to plan the basic
project approach and to conduct product feasibility study in the
economical, operational and technical areas.
• Planning for the quality assurance requirements and identification of
the risks associated with the project is also done in the planning
stage. The outcome of the technical feasibility study is to define the
various technical approaches that can be followed to implement the
project successfully with minimum risks.
Functional Requirements
Non Functional Requirements
A functional requirement defines a system or its
component.
A non-functional requirement defines the quality
attribute of a software system.
It specifies “What should the software system do?”
It places constraints on “How should the software
system fulfill the functional requirements?”
Functional requirement is specified by User.
Non-functional requirement is specified by technical
peoples e.g. Architect, Technical leaders and software
developers.
It is captured in use case.
It is captured as a quality attribute.
Defined at a component level.
Applied to a system as a whole.
Helps you verify the functionality of the software.
Helps you to verify the performance of the software.
Functional Testing like System, Integration, End to End,
Non-Functional Testing like Performance, Stress,
API (application programming interface) testing,
Usability, Security testing, etc are done.
etc are done.
Example
1) Authentication of user whenever he/she logs into
the system.
2) System shutdown in case of a cyber attack.
3) A Verification email is sent to user whenever he/she
registers for the first time on some software system.
Example
1) Emails should be sent with a latency of no greater
than 12 hours from such an activity.
2) The processing of each request should be done
within 10 seconds
3) The site should load in 3 seconds when the number
of simultaneous users are > 10000
SRS
• A software requirements specification (SRS) is a detailed description
of a software system to be developed with its functional and nonfunctional requirements. The SRS is developed based the agreement
between customer and contractors. It may include the use cases of
how user is going to interact with software system.
• SRS is a formal report, which acts as a representation of software that
enables the customers to review whether it (SRS) is according to their
requirements.
1. Introduction
1.1 Purpose
1.2 Intended Audience
1.3 Intended Use
1.4 Product Scope
1.5 Definitions and Acronyms
2. Overall Description
2.1 User Needs
2.2 Assumptions and Dependencies
3. System Features and Requirements
3.1 Functional Requirements
3.2 External Interface Requirements
3.3 System Features
3.4 Nonfunctional Requirements
Quality Characteristics of a good SRS
• Complete: The SRS should include all the requirements for the
software system, including both functional and non-functional
requirements.
• Consistent: The SRS should be consistent in its use of terminology and
formatting, and should be free of contradictions.
• Unambiguous: The SRS should be clear and specific, and should avoid
using imprecise language.
• Verifiable: The SRS should be verifiable, which means that the
requirements can be tested and validated to ensure that they are
being met.
• Modifiable: The SRS should be modifiable, so that it can be updated
and changed as the software development process progresses.
CONT…
• Testable: The SRS should be written in a way that allows the
requirements to be tested and validated.
• Relevant: The SRS should be relevant to the software system that is
being developed, and should not include unnecessary or irrelevant
information.
• Human-readable: The SRS should be written in a way that is easy for
non-technical stakeholders to understand and review.
• Aligned with business goals: The SRS should be aligned with the
overall business goals and objectives of the organization, so that the
software system meets the needs of the business.
Stage 3: Designing the Product Architecture
• SRS is the reference for product architects to come out with the best
architecture for the product to be developed. Based on the requirements
specified in SRS, usually more than one design approach for the product
architecture is proposed and documented in a DDS - Design Document
Specification.
• This DDS is reviewed by all the important stakeholders and based on
various parameters as risk assessment, product robustness, design
modularity, budget and time constraints, the best design approach is
selected for the product.
• A design approach clearly defines all the architectural modules of the
product along with its communication and data flow representation with
the external and third party modules. The internal design of all the
modules of the proposed architecture should be clearly defined with the
minutest of the details in DDS.
Stage 4: Building or Developing the Product
• In this stage of SDLC the actual development starts and the product is
built. The programming code is generated as per DDS during this
stage. If the design is performed in a detailed and organized manner,
code generation can be accomplished without much hassle.
• Developers must follow the coding guidelines defined by their
organization and programming tools like compilers, interpreters,
debuggers, etc. are used to generate the code. Different high level
programming languages such as C, C++, Pascal, Java and PHP are used
for coding. The programming language is chosen with respect to the
type of software being developed.
Stage 5: Testing the Product
• This stage is usually a subset of all the stages as in the modern SDLC
models, the testing activities are mostly involved in all the stages of
SDLC. However, this stage refers to the testing only stage of the
product where product defects are reported, tracked, fixed and
retested, until the product reaches the quality standards defined in
the SRS.
Stage 6: Deployment in the Market and
Maintenance
• Once the product is tested and ready to be deployed it is released
formally in the appropriate market. Sometimes product deployment
happens in stages as per the business strategy of that organization.
The product may first be released in a limited segment and tested in
the real business environment (UAT- User acceptance testing).
• Then based on the feedback, the product may be released as it is or
with suggested enhancements in the targeting market segment. After
the product is released in the market, its maintenance is done for the
existing customer base.
Software Development Life Cycle Models
SDLC-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.
• This model is easy to understand and reinforces the notion of “define
before design” and “design before code”.
Waterfall Model
Requirement
Analysis & Specification
Design
This model is named “waterfall
model” because its diagrammatic
representation resembles a cascade of
waterfalls.
Implementation
and unit testing
Integration and
system testing
Operationand
maintenance
•Requirement Gathering and analysis − All possible
requirements of the system to be developed are
captured in this phase and documented in a
requirement specification document.
•System Design − The requirement specifications from
first phase are studied in this phase and the system
design is prepared. This system design helps in
specifying hardware and system requirements and
helps in defining the overall system architecture.
•Implementation − With inputs from the system design,
the system is first developed in small programs called
units, which are integrated in the next phase. Each unit
is developed and tested for its functionality, which is
referred to as Unit Testing.
•Integration and Testing − All the units developed in the
implementation phase are integrated into a system
after testing of each unit. Post integration the entire
system is tested for any faults and failures.
•Deployment of system − Once the functional and nonfunctional testing is done; the product is deployed in
the customer environment or released into the market.
•Maintenance − There are some issues which come up
in the client environment. To fix those issues, patches
are released. Also to enhance the product some better
versions are released. Maintenance is done to deliver
these changes in the customer environment.
When to use SDLC Waterfall Model?
• When the requirements are constant and not changed
regularly.
• A project is short
• The situation is calm
• Where the tools and technology used is consistent and is not
changing
• When resources are well prepared and are available to use.
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
•High amounts of risk and uncertainty.
•Not a good model for complex and object-oriented
projects.
•Poor model for long and ongoing projects.
•Not suitable for the projects where requirements are at
a moderate to high risk of changing. So, risk and
uncertainty is high with this process model.
•It is difficult to measure progress within stages.
•Cannot accommodate changing requirements.
•Adjusting scope during the life cycle can end a project.
Prototype Model
The prototyping model is
a systems development
method
in
which
a prototype is built,
tested
and
then
reworked as necessary
until
an acceptable
outcome is achieved
from which the complete
system or product can be
developed.
Steps of Prototype Model
1.Requirement Gathering and Analyst
2.Quick Decision
3.Build a Prototype
4.Assessment or User Evaluation
5.Prototype Refinement
6.Engineer Product
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 the
program is run regularly to prevent failures.
Advantages of the prototyping model
Using a prototype model can bring multiple advantages, including the
following:
•Customers get a say in the product early on, increasing customer
satisfaction.
•Missing functionality and errors are detected easily.
•Prototypes can be reused in the future, for more complicated projects.
•It emphasizes team communication and flexible design practices.
•Users have a better understanding of how the product works.
•Quicker customer feedback provides a better idea of customer needs.
Disadvantages of the prototyping model
The main disadvantage of this methodology is that it is more costly in terms
of time and money when compared to alternative development methods,
such as the spiral or Waterfall model. Since in most cases the prototype is
discarded, some companies may not see the value in taking this approach.
Incremental Process Models
They are effective in the situations where requirements
are defined precisely and there is no confusion about the
functionality of the final product.
After every cycle a useable product is given to the
customer.
Popular particularly when we have to quickly deliver a
limited functionality system.
Incremental:
An
incremental
approach
breaks the software
development
process
down
into
small,
manageable
portions
known as increments.
Each increment builds
on the previous version
so that improvements
are made step by step.
A, B, and C are modules of
Software Products that are
incrementally developed and
delivered.
• Incremental Model is a
process of software
development
where
requirements divided
into multiple standalone
modules of the software
development cycle. In
this
model,
each
module goes through
the
requirements,
design, implementation
and testing phases.
Every
subsequent
release of the module
adds function to the
previous release. The
process continues until
the complete system
achieved.
Incremental Model:
•Early Delivery: Incremental development allows for the
early delivery of functional parts of the system, providing
tangible benefits to clients sooner in the project timeline.
•Partial Functionality: Clients can start using and
benefiting from partial functionality earlier, which can be
crucial in projects where rapid deployment of certain
features is essential.
•Easier Management: Each increment can be managed
as a standalone project, simplifying control and
monitoring of progress.
Types of Incremental Model
1. Staged Delivery Model
2. Parallel Development Model
When we use the Incremental Model?
• When the requirements are superior.
• A project has a lengthy development schedule.
• When Software team are not very well skilled or trained.
• When the customer demands a quick release of the product.
• You can develop prioritized requirements first.
Advantages of Incremental Process Model
1.Prepares the software fast.
2.Clients have a clear idea of the project.
3.Changes are easy to implement.
4.Provides risk handling support, because of its iterations.
5.Adjusting the criteria and scope is flexible and less costly.
6.Comparing this model to others, it is less expensive.
7.The identification of errors is simple.
Disadvantages of Incremental Process Model
1.A good team and proper planned execution are required.
2.Because of its continuous iterations the cost increases.
3.Issues may arise from the system design if all needs are not gathered
upfront throughout the duration of the program lifecycle.
4.Every iteration step is distinct and does not flow into the next.
5.It takes a lot of time and effort to fix an issue in one unit if it needs to be
corrected in all the units.
Iterative Enhancement Model
This model has the same phases as the waterfall model, but with fewer
restrictions. Generally the phases occur in the same order as in the
waterfall model, but they may be conducted in several cycles. Useable
product is released at the end of the each cycle, with each release
providing additional functionality.
✓ Customers and developers specify as many requirements as possible
and prepare a SRS document.
✓ Developers and customers then prioritize these requirements
✓ Developers implement the specified requirements in one or more
cycles of design, implementation and test based on the defined
priorities.
Iterative Enhancement Model
•Iterative:
An iterative
model
means
software development
activities
are
systematically
repeated in cycles
known as iterations.
• A new version of the
software is produced after
each iteration until the
optimal
product
is
achieved.
Iterative Model:
•Flexibility: Iterative development is highly flexible
and adaptive to changes in requirements, making it
suitable for projects with evolving or uncertain needs.
•Continuous Improvement: The iterative approach
allows for continuous refinement of the software
through successive cycles, resulting in a potentially
more polished end product.
•Client Involvement: Regular feedback cycles involve
clients throughout the development process, ensuring
that the product aligns closely with their expectations.
Advantages of Iterative Enhancement Model
•Adaptation to changing requirements is made possible by its flexibility in
accomodating modifications and improvement during each iteration.
•Early software iterations provide clients with functional portions of the product,
facilitating prompt feedback and validation.
•Problems and risks can be identified and addressed early in the developement
process, reduces chances of issue for future stages.
•Feedback and constant client involvement are encouraged to make sure the
finished product lives up to user expectations.
•Every iteration is put through testing and improvement, leading to higher
quality product.
Disadvantages of Iterative Enhancement Model
•Especially in larger projects, managing several iterations at once can add
complexity.
•Higher cost
•Due to constant changes, there may be delays in documentation, making it
more difficult to maintain comprehensive documentation.
•Continuous customer engagement may not be possible in all scenarios, which
impacts the effectiveness of the model.
Aspect
Development Approach
Iterative Model
Incremental Model (Iterative Enhanced
Model)
Repetitive cycles with continuous refinement
Delivering the software in functional parts
Highly flexible and adaptive to changes
Offers flexibility but less than iterative
Testing is integrated throughout the cycle
Testing is done for each increment
Complete features are developed in each iteration
Features are delivered incrementally
Risk Management
Risks are identified and addressed in each cycle
Risks are managed as increments are
delivered
Client Feedback
Feedback is collected and incorporated regularly
Feedback is obtained after each increment
Project Visibility
Provides a clearer view of the project’s progress
Offers visible progress with each delivered
increment
Dependencies can be identified and resolved in each
iteration
Dependencies between increments need
careful management
Completion Time
May take longer to deliver the complete product
Allows for partial delivery in shorter
timeframes
Example Analogy
Writing a draft and refining it multiple times
Building a house floor by floor
Flexibility
Testing
Delivery of Features
Dependency Management
Spiral Model
Important software projects have failed because project risks
were neglected & nobody was prepared when something
unforeseen happened.
Barry Boehm recognized this and tired to incorporate the
“project risk” factor into a life cycle model.
The result is the spiral model, which was presented in 1986.
Spiral Model
Spiral Model
The radial dimension of the model represents the cumulative costs. Each path
around the spiral is indicative of increased costs. The angular dimension
represents the progress made in completing each cycle. Each loop of the spiral
from X-axis clockwise through 360o represents one phase. One phase is split
roughly into four sectors of major activities.
▪ Planning: Determination of objectives, alternatives & constraints.
▪ Risk Analysis:
Analyze alternatives and
attempts
to
identify and resolve the risks involved.
▪ Development: Product development and testing product.
▪ Assessment: Customer evaluation
Spiral Model
▪
An important feature of the spiral model is that each phase is
completed with a review by the people concerned with the project
(designers and programmers)
▪
The advantage of this model is the wide range of options to
accommodate the good features of other life cycle models.
The spiral model has some difficulties that need to be resolved before it can
be a universally applied life cycle model. These difficulties include lack of
explicit process guidance in determining, objectives, constraints,
alternatives; relying on risk assessment expertise; and provides more
flexibility than required for many applications.
When to use Spiral Model?
•When deliverance is required to be frequent.
•When the project is large
•When requirements are unclear and complex
•When changes may require at any time
•Large and high budget projects
Advantages
•High amount of risk analysis
•Useful for large and mission-critical projects.
Disadvantages
•Can be a costly model to use.
•Risk analysis needed highly particular expertise
•Doesn't work well for smaller projects.
Agile Model
The agile model was
mainly designed to adapt
to changing requests
quickly. The main goal of
the Agile model is to
facilitate quick project
completion. The agile
model refers to a group
of
development
processes.
These
processes have some
similar
characteristics
but also possess certain
subtle differences among
themselves.
The Agile Model is an incremental and iterative process of software development. It defines each iteration’s
number, duration, and scope in advance.
Phases of Agile Model:
Following are the phases in
the Agile model are as
follows:
1.Requirements gathering
2.Design the requirements
3.Construction/ iteration
4.Testing/ Quality assurance
5.Deployment
6.Feedback
Agile Modeling (AM) is a collection of values, principles, and practices for modeling
software that can be applied on a software development project in an effective and
lightweight manner.
A Graphical illustration of the Agile Model
Agile Manifesto principles
• Individuals and interactions − In Agile development, self-organization and
motivation are important, as are interactions like co-location and pair
programming.
• Working software − Demo working software is considered the best means
of communication with the customers to understand their requirements,
instead of just depending on documentation.
• Customer collaboration − As the requirements cannot be gathered
completely in the beginning of the project due to various factors,
continuous customer interaction is very important to get proper product
requirements.
• Responding to change − Agile Development is focused on quick responses
to change and continuous development.
When to use the Agile Model?
•When frequent changes are required.
•When a highly qualified and experienced team is available.
•When a customer is ready to have a meeting with a software team all the time.
•When project size is small.
Advantage(Pros) of Agile Method:
1.Frequent Delivery
2.Face-to-Face Communication with clients.
3.Efficient design and fulfils the business requirement.
4.Anytime changes are acceptable.
5.It reduces total development time.
Disadvantages(Cons) of Agile Model:
1.Due to the shortage of formal documents, it creates confusion and crucial
decisions taken throughout various phases can be misinterpreted at any time by
different team members.
2.Due to the lack of proper documentation, once the project completes and the
developers allotted to another project, maintenance of the finished project can
become a difficulty.
Download