[go: up one dir, main page]

0% found this document useful (0 votes)
11 views35 pages

UNIT 1

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 35

Software Engineering (BCS601)

UNIT-1 INTRODUCTION
What is Software Engineering?
 The term software engineering is the product of two words, software, and
engineering. The software is a collection of integrated programs.
 Software subsists of carefully-organized instructions and code written by
developers on any of various particular computer languages.
 Computer programs and related documentation such as requirements,
design models and user manuals.
 Engineering is the application of scientific and practical knowledge to
invent, design, build, maintain, and improve frameworks, processes, etc.
 Software Engineering is an engineering branch related to the evolution of
software product using well-defined scientific principles, techniques, and
procedures. The result of software engineering is an effective and reliable
software product.
 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.
1. Software engineering includes a variety of techniques, tools, and
methodologies, including requirements analysis, design, testing, and
maintenance.
2. It is a rapidly evolving field, and new tools and technologies are constantly
being developed to improve the software development process.
3. By following the principles of software engineering and using the
appropriate tools and methodologies, software developers can create high-
quality, reliable, and maintainable software that meets the needs of its
users.
4. Software Engineering is mainly used for large projects based on software
systems rather than single programs or applications.
5. The main goal of Software Engineering is to develop software applications
for improving quality, budget, and time efficiency.
6. Software Engineering ensures that the software that has to be built should
be consistent, correct, also on budget, on time, and within the required
requirements.

Need of Software Engineering


The necessity of software engineering appears because of a higher rate of
progress in user requirements and the environment on which the program is
working.

 Huge Programming: It is simpler to manufacture a wall than to a house or


building, similarly, as the measure of programming become extensive
engineering has to step to give it a scientific process.
 Adaptability: If the software procedure were not based on scientific and
engineering ideas, it would be simpler to re-create new software than to
scale an existing one.
 Cost: As the hardware industry has demonstrated its skills and huge
manufacturing has let down the cost of computer and electronic hardware.
But the cost of programming remains high if the proper process is not
adapted.
 Dynamic Nature: The continually growing and adapting nature of
programming hugely depends upon the environment in which the client
works. If the quality of the software is continually changing, new upgrades
need to be done in the existing one.
 Quality Management: Better procedure of software development provides
a better and quality software product.

Key Principles of Software Engineering


 Modularity: Breaking the software into smaller, reusable components that
can be developed and tested independently.
 Abstraction: Hiding the implementation details of a component and
exposing only the necessary functionality to other parts of the software.
 Encapsulation: Wrapping up the data and functions of an object into a
single unit, and protecting the internal state of an object from external
modifications.
 Reusability: Creating components that can be used in multiple projects,
which can save time and resources.
 Maintenance: Regularly updating and improving the software to fix bugs,
add new features, and address security vulnerabilities.
 Testing: Verifying that the software meets its requirements and is free of
bugs.
 Design Patterns: Solving recurring problems in software design by providing
templates for solving them.
 Agile methodologies: Using iterative and incremental development
processes that focus on customer satisfaction, rapid delivery, and flexibility.
 Continuous Integration & Deployment: Continuously integrating the code
changes and deploying them into the production environment.

Main Attributes of Software Engineering


Software Engineering is a systematic, disciplined, quantifiable study and approach
to the design, development, operation, and maintenance of a software system.
There are four main Attributes of Software Engineering.

 Efficiency: It provides a measure of the resource requirement of a software


product efficiently.
 Reliability: It assures that the product will deliver the same results when
used in similar working environment.
 Reusability: This attribute makes sure that the module can be used in
multiple applications.
 Maintainability: It is the ability of the software to be modified, repaired, or
enhanced easily with changing requirements.

Dual Role of Software


There is a dual role of software in the industry. The first one is as a product and
the other one is as a vehicle for delivering the product. We will discuss both of
them.

1. As a Product

 It delivers computing potential across networks of Hardware.


 It enables the Hardware to deliver the expected functionality.
 It acts as an information transformer because it produces, manages,
acquires, modifies, displays, or transmits information.

2. As a Vehicle for Delivering a Product

 It provides system functionality (e.g., payroll system).


 It controls other software (e.g., an operating system).
 It helps build other software (e.g., software tools).

Objectives of Software Engineering


 Maintainability: It should be feasible for the software to evolve to meet
changing requirements.
 Efficiency: The software should not make wasteful use of computing
devices such as memory, processor cycles, etc.
 Correctness: A software product is correct if the different requirements
specified in the SRS Document have been correctly implemented.
 Reusability: A software product has good reusability if the different
modules of the product can easily be reused to develop new products.
 Testability: Here software facilitates both the establishment of test criteria
and the evaluation of the software concerning those criteria.
 Reliability: It is an attribute of software quality. The extent to which a
program can be expected to perform its desired function, over an arbitrary
time period.
 Portability: In this case, the software can be transferred from one computer
system or environment to another.
 Adaptability: In this case, the software allows differing system constraints
and the user needs to be satisfied by making changes to the software.
 Interoperability: Capability of 2 or more functional units to process data
cooperatively.

Software components
In software engineering, software components refer to modular, self-contained
parts of a software system that can be independently developed, tested, and
reused. They are designed to perform specific functions and interact with other
components to form a complete system.

Here are the key types of software components:

1. Libraries/Frameworks:
Libraries are collections of pre-written code that developers can use to
perform common tasks, like handling input/output or working with
databases. A framework is a more extensive structure that provides a
foundation for building applications, often with predefined conventions
and tools.
2. Modules:
These are smaller, logical components of a software system that typically
handle a specific feature or functionality, such as user authentication or
data processing.
3. Services (in Service-Oriented Architecture - SOA):
Services are autonomous, self-contained components that communicate
with other services or clients over a network. Each service focuses on a
specific task (e.g., payment processing or data storage).
4. Micro-services:
An architectural style where the software is composed of small,
independent services that work together. Each micro-service is responsible
for a specific business function and can be developed, deployed, and scaled
independently.
5. APIs (Application Programming Interfaces):
An API is an interface that allows different software components or
systems to communicate with one another. APIs define the methods and
data formats required for interaction between components or services.
6. Objects (in Object-Oriented Programming):
In object-oriented programming (OOP), components are often represented
as objects that encapsulate both data and the methods that operate on the
data. These objects interact with each other through method calls.
7. Database Components:
These include components like tables, stored procedures, views, and other
database objects that store and manage data within a software system.
8. User Interface (UI) Components:
These are components dedicated to presenting information to users and
accepting user inputs. Examples include buttons, forms, tables, and dialog
boxes.
9. Middleware:
Software that acts as a bridge between different applications or between
an application and a database, providing communication and data
management services.
10.External Systems:
Sometimes components are external to the core system but still part of the
overall architecture. These can include third-party services or external
libraries integrated into the system.

The goal of using components is to make software systems more maintainable,


scalable, and easier to modify, by reducing complexity through modularization
and promoting code reuse.
What is Software Crisis?
Software Crisis is a term used in computer science for the difficulty of writing
useful and efficient computer programs in the required time. The software crisis
was due to using the same workforce, same methods, and same tools even
though rapidly increasing software demand, the complexity of software, and
software challenges. With the increase in software complexity, many software
problems arose because existing methods were insufficient.

Suppose we use the same workforce, same methods, and same tools after the
fast increase in software demand, software complexity, and software challenges.
In that case, there arise some issues like software budget problems, software
efficiency problems, software quality problems, software management, and
delivery problems, etc. This condition is called a Software Crisis.

Causes of Software Crisis

Following are the causes of Software Crisis:


Size: Software is becoming more expensive and more complex with the growing
complexity and expectation out of software. For example, the code in the
consumer product is doubling every couple of years.

Quality: Many software products have poor quality, i.e., the software products
defects after putting into use due to ineffective testing technique. For example,
Software testing typically finds 25 errors per 1000 lines of code.

Cost: Software development is costly i.e. in terms of time taken to develop and
the money involved. For example, Development of the FAA's Advanced
Automation System cost over $700 per lines of code.

Delayed Delivery: Serious schedule overruns are common. Very often the
software takes longer than the estimated time to develop, which in turn leads to
cost shooting up. For example, one in four large-scale development projects is
never completed.

Factor Contributing to Software Crisis are:

 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.

Software Processes
The term software specifies to the set of computer programs, procedures and
associated documents (Flowcharts, manuals, etc.) that describe the program and
how they are to be used.

A software process is the set of activities and associated outcome that produce a
software product. Software engineers mostly carry out these activities. These are
four key process activities, which are common to all software processes. These
activities are:

1. Software specifications: The functionality of the software and constraints


on its operation must be defined.
2. Software development: The software to meet the requirement must be
produced.
3. Software validation: The software must be validated to ensure that it does
what the customer wants.
4. Software evolution: The software must evolve to meet changing client
needs.

The Software Process Model


A software process model is a specified definition of a software process, which is
presented from a particular perspective. Models, by their nature, are a
simplification, so a software process model is an abstraction of the actual process,
which is being described. Process models may contain activities, which are part of
the software process, software product, and the roles of people involved in
software engineering. Some examples of the types of software process models
that may be produced are:
1. A workflow model: This shows the series of activities in the process along
with their inputs, outputs and dependencies. The activities in this model
perform human actions.
2. A dataflow or activity model: This represents the process as a set of
activities, each of which carries out some data transformations. It shows
how the input to the process, such as a specification is converted to an
output such as a design. The activities here may be at a lower level than
activities in a workflow model. They may perform transformations carried
out by people or by computers.
3. A role/action model: This means the roles of the people involved in the
software process and the activities for which they are responsible.

There are several various general models or paradigms of software development:

1. The waterfall approach: This takes the above activities and produces them
as separate process phases such as requirements specification, software
design, implementation, testing, and so on. After each stage is defined, it is
"signed off" and development goes onto the following stage.
2. Evolutionary development: This method interleaves the activities of
specification, development, and validation. An initial system is rapidly
developed from a very abstract specification.
3. Formal transformation: This method is based on producing a formal
mathematical system specification and transforming this specification,
using mathematical methods to a program. These transformations are
'correctness preserving.' This means that you can be sure that the
developed programs meet its specification.
4. System assembly from reusable components: This method assumes the
parts of the system already exist. The system development process target
on integrating these parts rather than developing them from scratch.
Similarities Between Software Engineering Process and
Conventional Engineering Process
Software Engineering Process is an engineering process that is mainly related to
computers and programming and developing different kinds of applications
through the use of information technology.

Conventional Engineering Process is an engineering process that is highly based


on empirical knowledge and is about building cars, machines, and hardware. It is a
process that mainly involves science, mathematics, etc.

Conventional Engineering is related to computers, writing programs, and


implementing them.

 Both Software Engineering and Conventional Engineering Processes


become automated after some time.
 Both these processes are making our day-to-day place better.
 Both these processes have a fixed working time.
 Both processes must consist of deeper knowledge.

Difference Between Software Engineering Process and


Conventional Engineering Process

Software Engineering Conventional


Aspect
Process Engineering Process
Software Engineering The conventional
Process is a process Engineering Process is
Process that majorly involves a process that majorly
computer science, involves science,
information technology, mathematics, and
and discrete empirical knowledge.
mathematics.
It is mainly related to It is about building
computers, cars, machines,
Focus Area programming, and hardware, buildings,
writing codes for etc.
building applications.
In Software In Conventional
Engineering Process Engineering Process
Cost construction and construction and
development costs are development cost is
low. high.
It can involve the It usually applies only
application of new and known and tested
Application
untested elements in principles to meet
software projects. product requirements
In the Software In Conventional
Engineering Process, Engineering Process,
most development most development
Development Effort
effort goes into building efforts are required to
new designs and change old designs.
features.
It majorly emphasizes It majorly emphasizes
Emphasis
quality. mass production.
Product development Product
develops intangible development
Product Nature products (software). develops tangible
products (e.g.
bridges, buildings).
Design requirements Design Requirements
may change are typically well-
Design Requirement
throughout the defined upfront.
development process.
Testing is an integral Testing occurs mainly
part of the after product
Testing completion
development
process
Prototyping is common Prototyping is less
Prototyping
and helps to refine common due to cost
requirements. and time.
Maintenance and Maintenance is
updates are necessary typically scheduled or
Maintenance
to keep software reactive.
relevant.
Software development Conventional
often involves complex engineering may have
Complexity
logic and algorithms. more complex physical
properties to deal with.
Software development Conventional
often follows engineering may have
Framework established standards well-established
and frameworks. regulations and
standards.
Software development Conventional
is typically less engineering may be
expensive to start, but more expensive to
Cost Dynamics costs may increase start due to materials
with maintenance and and construction but
updates may have lower
maintenance costs.
Agile methodologies Conventional
are commonly used in engineering may use
Methodologies software development. more traditional project
management
approaches.
Software Development Life Cycle (SDLC)
A software life cycle model (also termed process model) is a pictorial and
diagrammatic representation of the software life cycle. A life cycle model
represents all the methods required to make a software product transit through
its life cycle stages. It also captures the structure in which these methods are to
be undertaken.

In other words, a life cycle model maps the various activities performed on a
software product from its inception to retirement. Different life cycle models may
plan the necessary development activities to phases in different ways. Thus, no
element which life cycle model is followed, the essential activities are contained
in all life cycle models though the action may be carried out in distinct orders in
different life cycle models. During any life cycle stage, more than one activity may
also be carried out.

Need of SDLC
The development team must determine a suitable life cycle model for a particular
plan and then observe to it.

Without using an exact life cycle model, the development of a software product
would not be in a systematic and disciplined manner. When a team is developing
a software product, there must be a clear understanding among team
representative about when and what to do. Otherwise, it would point to chaos
and project failure. This problem can be defined by using an example. Suppose a
software development issue is divided into various parts and the parts are
assigned to the team members. From then on, suppose the team representative is
allowed the freedom to develop the roles assigned to them in whatever way they
like. It is possible that one representative might start writing the code for his part,
another might choose to prepare the test documents first, and some other
engineer might begin with the design phase of the roles assigned to him. This
would be one of the perfect methods for project failure.

A software life cycle model describes entry and exit criteria for each phase. A
phase can begin only if its stage-entry criteria have been fulfilled. So without a
software life cycle model, the entry and exit criteria for a stage cannot be
recognized. Without software life cycle models, it becomes tough for software
project managers to monitor the progress of the project.

SDLC Cycle
SDLC Cycle represents the process of developing software. SDLC framework
includes the following steps:

The stages of SDLC are as follows:

Stage1: Planning and requirement analysis

Requirement Analysis is the most important and necessary stage in SDLC.


The senior members of the team perform it with inputs from all the stakeholders
and domain experts or SMEs in the industry.

Planning for the quality assurance requirements and identifications of the risks
associated with the projects is also done at this stage.

Business analyst and Project organizer set up a meeting with the client to gather
all the data like what the customer wants to build, who will be the end user, what
is the objective of the product. Before creating a product, a core understanding or
knowledge of the product is very necessary.

Stage2: Defining Requirements

Once the requirement analysis is done, the next stage is to certainly represent
and document the software requirements and get them accepted from the
project stakeholders.

This is accomplished through "SRS"- Software Requirement Specification


document which contains all the product requirements to be constructed and
developed during the project life cycle.

Stage3: Designing the Software

The next phase is about to bring down all the knowledge of requirements,
analysis, and design of the software project. This phase is the product of the last
two, like inputs from the customer and requirement gathering.

Stage4: Developing the project

In this phase of SDLC, the actual development begins, and the programming is
built. The implementation of design begins concerning writing code. Developers
have to follow the coding guidelines described by their management and
programming tools like compilers, interpreters, debuggers, etc. are used to
develop and implement the code.

Stage5: Testing
After the code is generated, it is tested against the requirements to make sure
that the products are solving the needs addressed and gathered during the
requirements stage.

During this stage, unit testing, integration testing, system testing, acceptance
testing are done.

Stage6: Deployment

Once the software is certified, and no bugs or errors are stated, then it is
deployed.

Then based on the assessment, the software may be released as it is or with


suggested enhancement in the object segment.

After the software is deployed, then its maintenance begins.

Stage7: Maintenance

Once when the client starts using the developed systems, then the real issues
come up and requirements to be solved from time to time.

This procedure where the care is taken for the developed product is known as
maintenance.

SDLC Models
Software Development life cycle (SDLC) is a spiritual model used in project
management that defines the stages include in an information system
development project, from an initial feasibility study to the maintenance of the
completed application.

There are different software development life cycle models specify and design,
which are followed during the software development phase. These models are
also called "Software Development Process Models." Each process model follows
a series of phase unique to its type to ensure success in the step of software
development.

Here, are some important phases of SDLC life cycle:

Waterfall model
Winston Royce introduced the Waterfall Model in 1970.This model has five
phases: Requirements analysis and specification, design, implementation, and
unit testing, integration and system testing, and operation and maintenance. The
steps always follow in this order and do not overlap. The developer must
complete every phase before the next phase begins. This model is named
"Waterfall Model", because its diagrammatic representation resembles a cascade
of waterfalls.

1. Requirements analysis and specification phase: The aim of this phase is to


understand the exact requirements of the customer and to document them
properly. Both the customer and the software developer work together so as to
document all the functions, performance, and interfacing requirement of the
software. It describes the "what" of the system to be produced and not "how."In
this phase, a large document called Software Requirement Specification (SRS)
document is created which contained a detailed description of what the system
will do in the common language.

2. Design Phase: This phase aims to transform the requirements gathered in the
SRS into a suitable form which permits further coding in a programming language.
It defines the overall software architecture together with high level and detailed
design. All this work is documented as a Software Design Document (SDD).

3. Implementation and unit testing: During this phase, design is implemented. If


the SDD is complete, the implementation or coding phase proceeds smoothly,
because all the information needed by software developers is contained in the
SDD. During testing, the code is thoroughly examined and modified. Small
modules are tested in isolation initially. After that these modules are tested by
writing some overhead code to check the interaction between these modules and
the flow of intermediate output.
4. Integration and System Testing: This phase is highly crucial as the quality of the
end product is determined by the effectiveness of the testing carried out. The
better output will lead to satisfied customers, lower maintenance costs, and
accurate results. Unit testing determines the efficiency of individual modules.
However, in this phase, the modules are tested for their interactions with each
other and with the system.

5. Operation and maintenance phase: Maintenance is the task performed by


every user once the software has been delivered to the customer, installed, and
operational.

When to use SDLC Waterfall Model?

Some Circumstances where the use of the Waterfall model is most suited are:

 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.

Advantages of Waterfall model

 This model is simple to implement also the number of resources that are
required for it is minimal.
 The requirements are simple and explicitly declared; they remain
unchanged during the entire project development.
 The start and end points for each phase is fixed, which makes it easy to
cover progress.
 The release date for the complete product, as well as its final cost, can be
determined before development.
 It gives easy to control and clarity for the customer due to a strict reporting
system.

Disadvantages of Waterfall model


 In this model, the risk factor is higher, so this model is not suitable for more
significant and complex projects.
 This model cannot accept the changes in requirements during
development.
 It becomes tough to go back to the phase. For example, if the application
has now shifted to the coding phase, and there is a change in requirement,
It becomes tough to go back and change it.
 Since the testing done at a later stage, it does not allow identifying the
challenges and risks in the earlier phase, so the risk reduction strategy is
difficult to prepare.

Prototype Model
The prototype model requires that before carrying out the development of actual
software, a working prototype of the system should be built. A prototype is a toy
implementation of the system. A prototype usually turns out to be a very crude
version of the actual system, possible exhibiting limited functional capabilities,
low reliability, and inefficient performance as compared to actual software. In
many instances, the client only has a general view of what is expected from the
software product. In such a scenario where there is an absence of detailed
information regarding the input to the system, the processing needs, and the
output requirement, the prototyping model may be employed.
Steps of Prototype Model

 Requirement Gathering and Analyst


 Quick Decision
 Build a Prototype
 Assessment or User Evaluation
 Prototype Refinement
 Engineer Product

Advantage of Prototype Model

 Reduce the risk of incorrect user requirement


 Good where requirement are changing/uncommitted
 Regular visible process aids management
 Support early product marketing
 Reduce Maintenance cost.
 Errors can be detected much earlier as the system is made side by side.

Disadvantage of Prototype Model

 An unstable/badly implemented prototype often becomes the final


product.
 Require extensive customer collaboration
 Costs customer money
 Needs committed customer
 Difficult to finish if customer withdraw
 May be too customer specific, no broad market
 Difficult to know how long the project will last.
 Easy to fall back into the code and fix without proper requirement analysis,
design, customer evaluation, and feedback.
 Prototyping tools are expensive.
 Special tools & techniques are required to build a prototype.
 It is a time-consuming process.

Spiral Model
The spiral model, initially proposed by Boehm, is an evolutionary software process
model that couples the iterative feature of prototyping with the controlled and
systematic aspects of the linear sequential model. It implements the potential for
rapid development of new versions of the software. Using the spiral model, the
software is developed in a series of incremental releases. During the early
iterations, the additional release may be a paper model or prototype. During later
iterations, more and more complete versions of the engineered system are
produced.
Each cycle in the spiral is divided into four parts:

Objective setting: Each cycle in the spiral starts with the identification of purpose
for that cycle, the various alternatives that are possible for achieving the targets,
and the constraints that exists.

Risk Assessment and reduction: The next phase in the cycle is to calculate these
various alternatives based on the goals and constraints. The focus of evaluation in
this stage is located on the risk perception for the project.

Development and validation: The next phase is to develop strategies that resolve
uncertainties and risks. This process may include activities such as benchmarking,
simulation, and prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a choice
made whether to continue with a further period of the spiral. If it is determined
to keep, plans are drawn up for the next step of the project.

The development phase depends on the remaining risks. For example, if


performance or user-interface risks are treated more essential than the program
development risks, the next phase may be an evolutionary development that
includes developing a more detailed prototype for solving the risks.

The risk-driven feature of the spiral model allows it to accommodate any mixture
of a specification-oriented, prototype-oriented, simulation-oriented, or another
type of approach. An essential element of the model is that each period of the
spiral is completed by a review that includes all the products developed during
that cycle, including plans for the next cycle. The spiral model works for
development as well as enhancement projects.

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.
Evolutionary Process Model
The evolutionary model is based on the concept of making an initial product and
then evolving the software product over time with iterative and incremental
approaches with proper feedback. In this type of model, the product will go
through several iterations and come up when the final product is built through
multiple iterations. The development is carried out simultaneously with the
feedback during the development. This model has a number of advantages such
as customer involvement, taking feedback from the customer during
development, and building the exact product that the user wants. Because of the
multiple iterations, the chances of errors get reduced and the reliability and
efficiency will increase.

Types of Evolutionary Process Models

 Iterative Model
 Incremental Model
 Spiral Model

Iterative Model

In the iterative model first, we take the initial requirements then we enhance the
product over multiple iterations until the final product gets ready. In every
iteration, some design modifications were made and some changes in functional
requirements is added. The main idea behind this approach is to build the final
product through multiple iterations that result in the final product being almost
the same as the user wants with fewer errors and the performance, and quality
would be high.
Incremental Model

In the incremental model, we first build the project with basic features and then
evolve the project in every iteration, it is mainly used for large projects. The first
step is to gather the requirements and then perform analysis, design, code, and
test and this process goes the same over and over again until our final project is
ready.

Spiral Model

The spiral model is a combination of waterfall and iterative models and in this, we
focused on risk handling along with developing the project with the incremental
and iterative approach, producing the output quickly as well as it is good for big
projects. The software is created through multiple iterations using a spiral
approach. Later on, after successive development the final product will develop,
and the customer interaction is there so the chances of error get reduced.
Advantages of the Evolutionary Process Model

 During the development phase, the customer gives feedback regularly


because the customer’s requirement gets clearly specified.
 After every iteration risk gets analyzed.
 Suitable for big complex projects.
 The first build gets delivered quickly as it used an iterative and incremental
approach.
 Enhanced Flexibility: The iterative nature of the model allows for
continuous changes and refinements to be made, accommodating changing
requirements effectively.
 Risk Reduction: The model’s emphasis on risk analysis during each iteration
helps in identifying and mitigating potential issues early in the development
process.
 Adaptable to Changes: Since changes can be incorporated at the beginning
of each iteration, it is well-suited for projects with evolving or uncertain
requirements.
 Customer Collaboration: Regular customer feedback throughout the
development process ensures that the end product aligns more closely with
the customer’s needs and expectations.

Disadvantages of the Evolutionary Process Model


 It is not suitable for small projects.
 The complexity of the spiral model can be more than the other sequential
models.
 The cost of developing a product through a spiral model is high.
 Project Management Complexity: The iterative nature of the model can
make project management and tracking more complex compared to linear
models.
 Resource Intensive: The need for continuous iteration and customer
feedback demands a higher level of resources, including time, personnel,
and tools.
 Documentation Challenges: Frequent changes and iterations can lead to
challenges in maintaining accurate and up-to-date documentation.
 Potential Scope Creep: The flexibility to accommodate changes can
sometimes lead to an uncontrolled expansion of project scope, resulting in
scope creep.
 Initial Planning Overhead: The model’s complexity requires a well-defined
initial plan, and any deviations or adjustments can be time-consuming and
costly.

Iterative Enhancement Model


In software development, the Iterative Enhancement Model stands out due to its
incremental and iterative nature, it is also known as an incremental model. This
approach focuses on incremental development and improvement rather than
trying to complete a software product in a single phase. This model is based on
segmenting the project into smaller units, or iterations, with a set of tasks
completed.

In this Model, you can start with some of the software specifications and develop
the first version of the software. After the first version if there is a need to change
the software, then a new version of the software is created with a new iteration.
Every release of the Iterative Model finishes in an exact and fixed period that is
called iteration.

The Iterative Model allows the accessing earlier phases, in which the variations
made respectively. The final output of the project renewed at the end of the
Software Development Life Cycle (SDLC) process.

The various phases of Iterative model are as follows:

1. Requirement gathering & analysis: In this phase, requirements are gathered


from customers and check by an analyst whether requirements will fulfil or not.
Analyst checks that need will achieve within budget or not. After all of this, the
software team skips to the next phase.

2. Design: In the design phase, team design the software by the different
diagrams like Data Flow diagram, activity diagram, class diagram, state transition
diagram, etc.
3. Implementation: In the implementation, requirements are written in the coding
language and transformed into computer programmes which are called Software.

4. Testing: After completing the coding phase, software testing starts using
different test methods. There are many test methods, but the most common are
white box, black box, and grey box test methods.

5. Deployment: After completing all the phases, software is deployed to its work
environment.

6. Review: In this phase, after the product deployment, review phase is


performed to check the behaviour and validity of the developed product. And if
there are any error found then the process starts again from the requirement
gathering.

7. Maintenance: In the maintenance phase, after deployment of the software in


the working environment there may be some bugs, some errors or new updates
are required. Maintenance involves debugging and new addition options.

When to use the Iterative Model?

 When requirements are defined clearly and easy to understand.


 When the software application is large.
 When there is a requirement of changes in future.

Advantage(Pros) of Iterative Model:

 Testing and debugging during smaller iteration is easy.


 A Parallel development can plan.
 It is easily acceptable to ever-changing needs of the project.
 Risks are identified and resolved during iteration.
 Limited time spent on documentation and extra time on designing.

Disadvantage(Cons) of Iterative Model:

 It is not suitable for smaller projects.


 More Resources may be required.
 Design can be changed again and again because of imperfect requirements.
 Requirement changes can cause over budget.
 Project completion date not confirmed because of changing requirements.

What is the Iterative Enhancement Model?


Software development uses a dynamic and adaptable method called the iterative
enhancement Model. The iterative enhancement model encourages a software
product's ongoing evolution and improvement. This methodology is noticeable
due to its concentration on adaptability, flexibility and change responsiveness. It
makes it easier for a product to evolve because it gives developers the freedom to
progressively enhance the software, making sure that it complies with evolving
specifications, user demands, and market demands. This helps products evolve
more easily.

The Iterative Enhancement Model creates an environment where development


teams can more effectively adjust to changing requirements by segmenting the
software development process into smaller, more manageable parts. Every
iteration improves on the one before it, adding new features and fixing problems
found in earlier stages. Members of the team, stakeholders and end users are
encouraged to collaborate and communicate continuously to make sure the
software meets changing needs and expectations. Until the software is finished
being built, the iteration process is carried out, which involves giving the user the
increments.

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
development 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.

Specific use cases where this model proves beneficial include:

 Mobile app development: Updates and improvements are often needed for
mobile apps to stay current with new devices, operating system versions
and user preferences. By using an iterative process developers can release
the beta versions of their apps, get user feedback and then improve
functionality of those iterations in future release.
 Web Application Development: The requirements for developing web
applications frequently change as a result of shifting user demand and
advancements in technology. The Iterative Enhancement Model makes it
possible to developed features incrementally and guaranteeing that the
application can be modified to satisfy changing user and market demands.
In later iterations it also makes it easier to incorporate new features based
on input from users.
 E-commerce Platforms: Development in e-commerce field often involves
constant updates. Implementing an iterative approach enables the
introduction of new functionality.

You might also like