Unit-1 (Intro To SE)

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 21

Unit-1

Introduction to Software Engineering

What is Engineering?
⮚ It is all about developing an application or a product in a well defined format structures using scientific
principles of logics.
⮚ Engineering is the application of scientific and practical knowledge to invent, design, build, maintain,
and improve frameworks, processes, etc.
What is a Software?
� The software is a collection of integrated programs.
� Software is a set of instructions, data or programs used to operate computers and execute specific tasks.
� Software is a generic term used to refer to applications, scripts and programs that run on a device.
� An example of software is Excel or Windows or iTunes.

What is 'Software Engineering'?


Definition: Software engineering is a detailed study of engineering to the design, development and
maintenance of software. Software engineering was introduced to address the issues of low-quality
software projects. Problems arise when a software generally exceeds timelines, budgets, and reduced
levels of quality. It ensures that the application is built consistently, correctly, on time and on budget and
within requirements.
A software product is judged by how easily it can be used by the end-user and the features it
offers to the user. An application must score in the following areas:-

1) Operational: -This tells how good a software works on operations like budget , usability, efficiency,
correctness ,functionality , dependability , security and safety.

2) Transitional: - Transitional is important when an application is shifted from one platform to another.
So, portability, reusability and adaptability come in this area.

3) Maintenance: - This specifies how good a software works in the changing environment. Modularity,
maintainability, flexibility and scalability come in maintenance part.

Why is Software Engineering required?


Software Engineering is required due to the following reasons:
⮚ To manage Large software.
⮚ For more Scalability.
⮚ Cost Management.
⮚ To manage the dynamic nature of software.
⮚ For better quality Management.
Nature of Software Project :
⮚ User Friendly
⮚ Accuracy
⮚ Security
⮚ Efficiency
⮚ Quality
⮚ Cost effectiveness
⮚ Adaptability
Reasons for Project Success/Unsuccess:
Success:
⮚ Long time survival
⮚ Fulfilling the requirements
⮚ Cost effectiveness
⮚ Quantity
⮚ Risk Management
Unsuccess:
⮚ Lack of proper resources
⮚ Less Man Power
⮚ Unefficiency
Difference between Software & Hardware :
Hardware Software

Hardware is a Physical Software is a set of instructions that cause processing of data


part of a computer that
causes processing of
data.
It is manufactured. It is developed.

It is difficult to modify It is easy to modify the process even after the development.
once it is manufactured.

Cost is concentrated on Cost is concentrated on design.


production.

It is component built. It is custom built.

Hardware can be Software cannot be touched.


touched.
Hardware is repaired in Software is debugged in case of problem.
case of problem.

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, same tools even though rapidly increasing in software demand, the
complexity of software, and software challenges. With the increase in the complexity of
software, many software problems arise because existing methods were insufficient. If we will
use the same workforce, same methods, and same tools after the fast increase in software
demand, software complexity, and software challenges, then there arise some problems like
software budget problems, software efficiency problems, software quality problems, software
managing and delivering problem, etc. This condition is called a software crisis.
Causes of Software Crisis:
● The cost of owning and maintaining software was as expensive as developing
the software
● At that time Projects were running over-time
● At that time Software was very inefficient
● The quality of the software was low quality
● Software often did not meet user requirements
● The average software project overshoots its schedule by half
● At that time Software was never delivered
● Non-optimal resource utilization.
● Difficult to alter, debug, and enhance.
● The software complexity is harder to change.
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 software must be high.
● Less time is needed for a software project.
● Experienced and skilled people working over the software project. 
● Software must be delivered.
● Software must meet user requirements.

Characteristic of software:
There is some characteristic of software which is given below:
1. Functionality
2. Reliability
3. Usability
4. Efficiency
5. Maintainability
6. Portability
Changing Nature of Software:
Nowadays, seven broad categories of computer software present continuing challenges for
software engineers .which is given below:
1. System Software:
System software is a collection of programs which are written to service other
programs. Some system software processes complex but determinate, information
structures. Other system application process largely indeterminate data. Sometimes
when, the system software area is characterized by the heavy interaction with
computer hardware that requires scheduling, resource sharing, and sophisticated
process management.
2. Application Software:
Application software is defined as programs that solve a specific business need.
Application in this area process business or technical data in a way that facilitates
business operation or management technical decision making. In addition to
convention data processing application, application software is used to control
business function in real time.
3. Engineering and Scientific Software:
This software is used to facilitate the engineering function and task. however modern
application within the engineering and scientific area are moving away from the
conventional numerical algorithms. Computer-aided design, system
simulation, and other interactive applications have begun to take a real-time and even
system software characteristic.
4. 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. Embedded
software can perform the limited and esoteric function or provided significant
function and control capability.
5. Product-line Software:
Designed to provide a specific capability for use by many different customers,
product line software can focus on the limited and esoteric marketplace or address the
mass consumer market.
6. WebApplication:
It is a client-server computer program which the client runs on the web browser. In
their simplest form, Web apps can be little more than a set of linked hypertext files
that present information using text and limited graphics. However, as e-commerce
and B2B application grow in importance. Web apps are evolving into a sophisticate
computing environment that not only provides a standalone feature, computing
function, and content to the end user.
7. 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.
Application within this area includes robotics, expert system, pattern recognition,
artificial neural network, theorem proving and game playing.

Software Myths :
What is meant by Myth?
⮚ The meaning of myth is fable (wrong) stories or wrong beliefs.
⮚ In a relation to a computer software myth is nothing but information,
misunderstanding or confusion in software development field.
⮚ Many Software problems arises due to myths that are formed during the
initial stage of software development.
Definition of Software Myths :
The development of software requires dedication and understanding on the developers’ part.
Many software problems arise due to myths that are formed during the initial stages of
software development. Unlike ancient folklore that often provides valuable lessons, software
myths propagate false beliefs and confusion in the minds of management, users and
developers.Managers, who own software development responsibility, are often under strain
and pressure to maintain a software budget, time constraints, improved quality, and many
other considerations.
There are three types of Software Myths :
1.Management Myths
2.Customer Myths
3.Practitioner’s Myths

Management Myths: Managers with software responsibility, like mangers in most disciplines,
are often under pressure to maintain budgets, keep schedules from slipping, and improve quality.
Myth1: Manager think “when need, we can add more programmer for faster development”.
Reality:
⮚ Training must be given to new comers.
⮚ Spend time for training people.
⮚ Cannot be developed fast.
Myth2: We already have a book that’s full of  standards and procedures for building software. It
will provide the developer everything that he needs in the development process.
Reality:
⮚ The book Exits but question arise.
⮚ Are software developer aware about this book?
⮚ Does it contain all modern practices?
⮚ Does it focus quality?
⮚ Is it actually used by developer?
Myth3: Manager think “there is no need to change approach to software development. We can
develop same kind of software that we develop 10 year ago.
Reality :
⮚ Quality of software need to improve according to customer demands.
⮚ Customer demands change time to time.
Customer Myth: The customer can be the direct users of the software, the technical team,
marketing/sales department, or other company. Customer has myths leading to false
expectations (customer) & that’s why you create dissatisfaction with the developer.
Myth1: Only the general statement is sufficient and no need to mention detail project
requirements.
Reality:
⮚ Other details are also essential.
⮚ Customer must provides design details, validation criteria.
⮚ During software development customer and developer communication is essential.
Myth2: Software requirements continually change, but change can be easily accommodated
because software is flexible.
Reality:
⮚ When requirements changes are requested early (before design or code has been started),
the cost impact is relatively small.
⮚ Otherwise cost is so high.
3.Practitioner’s Myths / Developers Myths : Software practitioners are the ones who are
involved in the development and maintenance of the software. Earlier developing software is
considered as an art. So, the software practitioners have developed some myths regarding the
software.
Myth 1: Practitioner think “Once we write the program and get it to work, our job is done”.
Reality: Almost 60% to 80% Percent work is required after delivering the project to customer

for first time.


Myth 2: Until I get the program “running” I have no way of assessing its quality.
Reality:
⮚ Effective SQA can be applied during project development.
⮚ FTR are conducted to assure quality of software.
⮚ FTR is meeting conducted by technical staff at any stage of software development.
Software Quality Assurance (SQA) is simply a way to assure quality in the software. It is
the set of activities which ensure processes, procedures as well as standards are suitable for the
project and implemented correctly. Software Quality Assurance is a process which works
parallel to development of software.
Formal Technical Review (FTR) is a software quality control activity performed by
software engineers. 
Objectives of formal technical review (FTR): Some of these are:
● Useful to uncover error in logic, function and implementation for any
representation of the software.
● The purpose of FTR is to verify that the software meets specified requirements.
● To ensure that software is represented according to predefined standards.
● It helps to review the uniformity in software that is development in a uniform
manner.
● To makes the project more manageable.

Myth 3: The only deliverable work product for a successful project is the working program.
Reality :
⮚ A working program is only one part of a software configuration that includes many
elements.
⮚ A variety of work products (e.g, models, documents, plans) provide a foundation for
successful engineering and
⮚ More important, guidance for software support.
Software Development Life Cycle (SDLC) :
Software Development Life Cycle (SDLC) is a process used by the software industry to
design, develop and test high quality softwares. The SDLC aims to produce a high-quality
software that meets or exceeds customer expectations, reaches completion within times and cost
estimates.
● SDLC is the acronym of Software Development Life Cycle.
● It is also called as Software Development Process.
● SDLC is a framework defining tasks performed at each step in the software
development process.
What is SDLC?
SDLC is a process followed for a software project, within a software organization. It consists of
a detailed plan describing how to develop, maintain, replace and alter or enhance specific
software. The life cycle defines a methodology for improving the quality of software and the
overall development process.
The following figure is a graphical representation of the various stages of a typical SDLC.

A typical Software Development Life Cycle consists of the following stages –


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.
Stage 2: Defining Requirements
Once the requirement analysis is done the next step is to clearly define and document the product
requirements and get them approved from the customer or the market analysts. This is done
through an SRS (Software Requirement Specification) document which consists of all the
product requirements to be designed and developed during the project life cycle.
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 (if any).
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.
What is a software process model?
A software process model is an abstraction of the software development process. The
models specify the stages and order of a process. So, think of this as a representation
of the order of activities of the process and the sequence in which they are
performed.
A model will define the following:
● The tasks to be performed
● The input and output of each task
● The pre and post conditions for each task
● The flow and sequence of each task
Components of Software : 
There are three components of the software: These are : Program, Documentation, and
Operating Procedures.
⮚ Program –
A computer program is a list of instructions that tell a computer what to do. 
 
⮚ Documentation – 
Source information about the product contained in design documents, detailed
code comments, etc. 
 
⮚ Operating Procedures –
Set of step-by-step instructions compiled by an organization to help workers
carry out complex routine operations. 
There are four basic key process activities: 
⮚ Software Specifications – 
In this process, detailed description of a software system to be developed with
its functional and non-functional requirements. 
 
⮚ Software Development –
In this process, designing, programming, documenting, testing, and bug fixing
is done. 
 
⮚ 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. 
 
⮚ Software Evolution – 
It is a process of developing software initially, then timely updating it for
various reasons. 
There are many kinds of process models for meeting different requirements. We refer
to these as SDLC models (Software Development Life Cycle models). The most
popular and important SDLC models are as follows:
1. Waterfall model
2. Prototype model
3. Incremental model
4. Spiral model
5. Agile 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.
The Waterfall model is the earliest SDLC approach that was used for software development.
The waterfall Model illustrates the software development process in a linear sequential flow.
This means that any phase in the development process begins only if the previous phase is
complete. In this waterfall model, the phases do not overlap.
Waterfall Model - 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.
The following illustration is a representation of the different phases of the Waterfall Model.

The sequential phases in Waterfall model are −


● 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 non-functional 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.
Waterfall Model – Application :
Every software developed is different and requires a suitable SDLC approach to be followed
based on the internal and external factors. Some situations where the use of Waterfall model is
most appropriate are −
● Requirements are very well documented, clear and fixed.
● Product definition is stable.
● Technology is understood and is not dynamic.
● There are no ambiguous requirements.
● Ample resources with required expertise are available to support the product.
● The project is short.
Waterfall Model - Advantages
The advantages of waterfall model is schedule can be set with deadlines for each stage of
development and a product can proceed through the development process model phases one by
one.
Development moves from concept, through design, implementation, testing, installation,
troubleshooting, and ends up at operation and maintenance. Each phase of development proceeds
in strict order.
Some of the major advantages of the Waterfall Model are as follows −
● 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
The disadvantage of waterfall development is that it does not allow much reflection or revision.
Once an application is in the testing stage, it is very difficult to go back and change something
that was not well-documented or thought upon in the concept stage.
The major disadvantages of the Waterfall Model are as follows −
● No working software is produced until late during the life cycle.
● 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.

Incremental Model :
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.

The various phases of incremental model are as follows:


1. Requirement analysis: In the first phase of the incremental model, the product analysis
expertise identifies the requirements. And the system functional requirements are understood by
the requirement analysis team. To develop the software under the incremental model, this phase
performs a crucial role.
2. Design & Development: In this phase of the Incremental model of SDLC, the design of the
system functionality and the development method are finished with success. When software
develops new practicality, the incremental model uses style and development phase.
3. Testing: In the incremental model, the testing phase checks the performance of each existing
function as well as additional functionality. In the testing phase, the various methods are used to
test the behavior of each task.
4. Implementation: Implementation phase enables the coding phase of the development system.
It involves the final coding that design in the designing and development phase and tests the
functionality in the testing phase. After completion of this phase, the number of the product
working is enhanced and upgraded up to the final system product
When we use the Incremental Model?
o When the requirements are superior.
o A project has a lengthy development schedule.
o When Software team are not very well skilled or trained.
o When the customer demands a quick release of the product.
o You can develop prioritized requirements first.
Advantage of Incremental Model
o Errors are easy to be recognized.
o Easier to test and debug
o More flexible.
o Simple to manage risk because it handled during its iteration.
o The Client gets important functionality early.
Disadvantage of Incremental Model
o Need for good planning
o Total Cost is high.
o Well defined module interfaces are needed.
Prototyping Model :
Software prototyping is becoming very popular as a software development model, as it
enables to understand customer requirements at an early stage of development. It helps get
valuable feedback from the customer and helps software designers and developers understand
about what exactly is expected from the product under development. Prototyping Model is a
software development model in which prototype is built, tested, and reworked until an acceptable
prototype is achieved. It also creates base to produce the final system or software. It works best
in scenarios where the project’s requirements are not known in detail. It is an iterative, trial and
error method which takes place between developer and client.

Step 1: Requirements gathering and analysis


A prototyping model starts with requirement analysis. In this phase, the requirements of the
system are defined in detail. During the process, the users of the system are interviewed to know
what is their expectation from the system.
Step 2: Design
The second phase is a preliminary design or a quick design. In this stage, a simple design of the
system is created. However, it is not a complete design. It gives a brief idea of the system to the
user. The quick design helps in developing the prototype.
Step 3: Prototype
In this phase, an actual prototype is designed based on the information gathered from quick
design. It is a small working model of the required system.
Step 4: Refining prototype
If the user is not happy with the current prototype, you need to refine the prototype according to
the user’s feedback and suggestions.
This phase will not over until all the requirements specified by the user are met. Once the user is
satisfied with the developed prototype, a final system is developed based on the approved final
prototype.
Step 5: Implement Product and Maintain
Once the final system is developed based on the final prototype, it is thoroughly tested and
deployed to production. The system undergoes routine maintenance for minimizing downtime
and prevent large-scale failures.
Best Practices of Prototyping
Here, are a few things which you should watch for during the prototyping process:
● You should use Prototyping when the requirements are unclear
● It is important to perform planned and controlled Prototyping.
● Regular meetings are vital to keep the project on time and avoid costly delays.
● The users and the designers should be aware of the prototyping issues and pitfalls.
● At a very early stage, you need to approve a prototype and only then allow the team to
move to the next step.
● In software prototyping method, you should never be afraid to change earlier decisions if
new ideas need to be deployed.
● You should select the appropriate step size for each version.
● Implement important features early on so that if you run out of the time, you still have a
worthwhile system.
Advantages of the Prototyping Model :
� Increased user involvement in the product even before its implementation.
� Since a working model of the system is displayed, the users get a better understanding of
the system being developed.
� Reduces time and cost as the defects can be detected much earlier.
� Quicker user feedback is available leading to better solutions.
� Missing functionality can be identified easily.
� Confusing or difficult functions can be identified.
Disadvantages of the Prototyping Model :
� Prototyping is a slow and time taking process.
� The cost of developing a prototype is a total waste as the prototype is ultimately thrown
away.
� Prototyping may encourage excessive change requests.
� Some times customers may not be willing to participate in the iteration cycle for the
longer time duration.
� There may be far too many variations in software requirements when each time the
prototype is evaluated by the customer.
� Poor documentation because the requirements of the customers are changing.
� It is very difficult for software developers to accommodate all the changes demanded by
the clients.
Spiral model :
Spiral model is one of the most important Software Development Life Cycle models, which
provides support for Risk Handling. In its diagrammatic representation, it looks like a spiral
with many loops. The exact number of loops of the spiral is unknown and can vary from project
to project. Each loop of the spiral is called a Phase of the software development process. The
exact number of phases needed to develop the product can be varied by the project manager
depending upon the project risks. As the project manager dynamically determines the number of
phases, so the project manager has an important role to develop a product using the spiral model.
 
Each phase of the Spiral Model is divided into four quadrants as shown in the above figure. The
functions of these four quadrants are discussed below- 
1. Objectives determination and identify alternative solutions: Requirements are gathered
from the customers and the objectives are identified, elaborated, and analyzed at the start of
every phase. Then alternative solutions possible for the phase are proposed in this quadrant.
2. Identify and resolve Risks: During the second quadrant, all the possible solutions are
evaluated to select the best possible solution. Then the risks associated with that solution are
identified and the risks are resolved using the best possible strategy. At the end of this
quadrant, the Prototype is built for the best possible solution.
3. Develop next version of the Product: During the third quadrant, the identified features are
developed and verified through testing. At the end of the third quadrant, the next version of
the software is available.
4. Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate the so
far developed version of the software. In the end, planning for the next phase is started.
Spiral Model Application :
The Spiral Model is widely used in the software industry as it is in sync with the natural
development process of any product, i.e. learning with maturity which involves minimum risk
for the customer as well as the development firms.
The following pointers explain the typical uses of a Spiral Model −
● When there is a budget constraint and risk evaluation is important.
● For medium to high-risk projects.
● Long-term project commitment because of potential changes to economic priorities as the
requirements change with time.
● Customer is not sure of their requirements which is usually the case.
● Requirements are complex and need evaluation to get clarity.
● New product line which should be released in phases to get enough customer feedback.
● Significant changes are expected in the product during the development cycle.

Advantages of Spiral Model: 


Below are some advantages of the Spiral Model. 
1. Risk Handling: The projects with many unknown risks that occur as the development
proceeds, in that case, Spiral Model is the best development model to follow due to the risk
analysis and risk handling at every phase.
2. Good for large projects: It is recommended to use the Spiral Model in large and complex
projects.
3. Flexibility in Requirements: Change requests in the Requirements at later phase can be
incorporated accurately by using this model.
4. Customer Satisfaction: Customer can see the development of the product at the early phase
of the software development and thus, they habituated with the system by using it before
completion of the total product.

Disadvantages of Spiral Model: 


Below are some main disadvantages of the spiral model. 
1. Complex: The Spiral Model is much more complex than other SDLC models.
2. Expensive: Spiral Model is not suitable for small projects as it is expensive.
3. Too much dependability on Risk Analysis: The successful completion of the project is very
much dependent on Risk Analysis. Without very highly experienced experts, it is going to be a
failure to develop a project using this model.
4. Difficulty in time management: As the number of phases is unknown at the start of the
project, so time estimation is very difficult.

Incremental Model : 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. In incremental model the whole
requirement is divided into various builds. Multiple development cycles take place here, making
the life cycle a “multi-waterfall” cycle.  Cycles are divided up into smaller, more easily
managed modules. Incremental model is a type of software development model like V-
model, Agile model etc.
The various phases of incremental model are as follows:
1. Requirement analysis: In the first phase of the incremental model, the product analysis
expertise identifies the requirements. And the system functional requirements are understood by
the requirement analysis team. To develop the software under the incremental model, this phase
performs a crucial role.
2. Design & Development: In this phase of the Incremental model of SDLC, the design of the
system functionality and the development method are finished with success. When software
develops new practicality, the incremental model uses style and development phase.
3. Testing: In the incremental model, the testing phase checks the performance of each existing
function as well as additional functionality. In the testing phase, the various methods are used to
test the behavior of each task.
4. Implementation: Implementation phase enables the coding phase of the development system.
It involves the final coding that design in the designing and development phase and tests the
functionality in the testing phase. After completion of this phase, the number of the product
working is enhanced and upgraded up to the final system product
When we use the Incremental Model?
o When the requirements are superior.
o A project has a lengthy development schedule.
o When Software team are not very well skilled or trained.
o When the customer demands a quick release of the product.
o You can develop prioritized requirements first.
Advantage of Incremental Model
o Errors are easy to be recognized.
o Easier to test and debug
o More flexible.
o Simple to manage risk because it handled during its iteration.
o The Client gets important functionality early.
Disadvantage of Incremental Model
o Need for good planning
o Total Cost is high.
o Well defined module interfaces are needed.

Agile Model :
The meaning of Agile is swift or versatile."Agile process model" refers to a software
development approach based on iterative development. Agile methods break tasks into smaller
iterations, or parts do not directly involve long term planning. The project scope and
requirements are laid down at the beginning of the development process. Plans regarding the
number of iterations, the duration and the scope of each iteration are clearly defined in advance.
Each iteration is considered as a short time "frame" in the Agile process model, which typically
lasts from one to four weeks. The division of the entire project into smaller parts helps to
minimize the project risk and to reduce the overall project delivery time requirements. Each
iteration involves a team working through a full software development life cycle including
planning, requirements analysis, design, coding, and testing before a working product is
demonstrated to the client.
Phase
s 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
1.Requirements gathering: In this phase, you must define the requirements. You should explain
business opportunities and plan the time and effort needed to build the project. Based on this
information, you can evaluate technical and economic feasibility.
2. Design the requirements: When you have identified the project, work with stakeholders to
define requirements. You can use the user flow diagram or the high-level UML diagram to show
the work of new features and show how it will apply to your existing system.
3. Construction/ iteration: When the team defines the requirements, the work begins. Designers
and developers start working on their project, which aims to deploy a working product. The
product will undergo various stages of improvement, so it includes simple, minimal
functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's performance and
looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work environment.
6. Feedback: After releasing t

000he product, the last step is feedback. In this, the team receives feedback about the product and works through the feedback.
When to use the Agile Model?
o When frequent changes are required.
o When a highly qualified and experienced team is available.
o When a customer is ready to have a meeting with a software team all the time.
o When project size is small.

Advantage of Agile Method :

� Frequent Delivery
� Face-to-Face Communication with clients.
� Efficient design and fulfils the business requirement.
� Anytime changes are acceptable.
� It reduces total development time.

Disadvantages of Agile Model : Due to the shortage of formal documents, it creates confusion
and crucial decisions taken throughout variousphases 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.

Agile Testing Methods:


1. Scrum
2. Crystal
3. Dynamic Software Development Method(DSDM)
4. Feature Driven Development(FDD)
5. Lean Software Development
6. eXtreme Programming(XP)

Scrum
SCRUM is an agile development process focused primarily on ways to manage tasks in team-
based development conditions.
There are three roles in it, and their responsibilities are:
o Scrum Master: The scrum can set up the master team, arrange the meeting and remove
obstacles for the process
o Product owner: The product owner makes the product backlog, prioritizes the delay and
is responsible for the distribution of functionality on each repetition.
o Scrum Team: The team manages its work and organizes the work to complete the sprint
or cycle.

eXtreme Programming(XP)
This type of methodology is used when customers are constantly changing demands or
requirements, or when they are not sure about the system's performance.
Crystal:
There are three concepts of this method-
1. Chartering: Multi activities are involved in this phase such as making a development
team, performing feasibility analysis, developing plans, etc.
2. Cyclic delivery: under this, two more cycles consist, these are:

0. Team updates the release plan.


A. Integrated product delivers to the users.
2. Wrap up: According to the user environment, this phase performs deployment, post-
deployment.

Dynamic Software Development Method(DSDM):


DSDM is a rapid application development strategy for software development and gives an agile
project distribution structure. The essential features of DSDM are that users must be actively
connected, and teams have been given the right to make decisions. The techniques used in
DSDM are:
1. Time Boxing
2. MoSCoW Rules
3. Prototyping

The DSDM project contains seven stages:


1. Pre-project
2. Feasibility Study
3. Business Study
4. Functional Model Iteration
5. Design and build Iteration
6. Implementation
7. Post-project

Feature Driven Development(FDD):


This method focuses on "Designing and Building" features. In contrast to other smart methods,
FDD describes the small steps of the work that should be obtained separately per function.
Lean Software Development:
Lean software development methodology follows the principle "just in time production." The
lean method indicates the increasing speed of software development and reducing costs. Lean
development can be summarized in seven phases.
1. Eliminating Waste
2. Amplifying learning
3. Defer commitment (deciding as late as possible)
4. Early delivery
5. Empowering the team
6. Building Integrity
7. Optimize the whole

You might also like