Software Engineering Notes1 - Module1
Software Engineering Notes1 - Module1
The international standard on software product quality suggests that software quality
comprises six main attributes:
Reliability: The capability to provide failure-free service.
Functionality: The capability to provide functions that meet stated and implied needs when
the software is used.
Usability: The capability to be understood, learned, and used.
Efficiency: The capability to provide appropriate performance relative to the amount of
resources used.
Maintainability: the capability to be modified for purposes of making corrections,
improvements, or adaptations.
Portability: The capability to be adapted for different specified environments without
applying actions or means other than those provided for this purpose in the product.
The main goal of software engineering is to deliver high-quality software solutions that meet the
needs of users, organizations, or businesses while adhering to the constraints of time, budget, and
other resources. It is a structured and methodical process that includes several key phases:
Software engineers employ various tools, programming languages, and frameworks to streamline
the development process and optimize the software's performance. They also prioritize aspects
like security, reliability, scalability, and user experience to create robust and user-friendly
applications.
These classifications are important for understanding the characteristics and limitations of
different types of software, and for selecting the best software for a particular need.
Types of Software
The software is used extensively in several domains including hospitals, banks, schools, defense,
finance, stock markets, and so on. It can be categorized into different types:
Based on Application
Based on Copyright
Based on Application
The software can be classified on the basis of the application. These are to be done on this
basis.
1. System Software
System Software is necessary to manage computer resources and support the execution of
application programs. Software like operating systems, compilers, editors and drivers, etc.,
comes under this category. A computer cannot function without the presence of these. Operating
systems are needed to link the machine-dependent needs of a program with the capabilities of the
machine on which it runs. Compilers translate programs from high-level language to machine
language.
2. Application Software
Application software is designed to fulfill the user’s requirement by interacting with the user
directly. It could be classified into two major categories:- generic or customized. Generic
Software is software that is open to all and behaves the same for all of its users. Its function is
limited and not customized as per the user’s changing requirements. However, on the other hand,
Customized software is the software products designed per the client’s requirement, and are not
available for all.
3. Networking and Web Applications Software
Networking Software provides the required support necessary for computers to interact with each
other and with data storage facilities. Networking software is also used when software is running
on a network of computers (such as the World Wide Web). It includes all network management
software, server software, security and encryption software, and software to develop web-based
applications like HTML, PHP, XML, etc.
4. Embedded Software
This type of software is embedded into the hardware normally in the Read-Only Memory (ROM)
as a part of a large system and is used to support certain functionality under the control
conditions. Examples are software used in instrumentation and control applications like washing
machines, satellites, microwaves, etc.
5. Reservation Software
A Reservation system is primarily used to store and retrieve information and perform
transactions related to air travel, car rental, hotels, or other activities. They also provide access to
bus and railway reservations, although these are not always integrated with the main system.
These are also used to relay computerized information for users in the hotel industry, making a
reservation and ensuring that the hotel is not overbooked.
6. Business Software
This category of software is used to support business applications and is the most widely used
category of software. Examples are software for inventory management, accounts, banking,
hospitals, schools, stock markets, etc.
7. Entertainment Software
Education and Entertainment software provides a powerful tool for educational agencies,
especially those that deal with educating young children. There is a wide range of entertainment
software such as computer games, educational games, translation software, mapping software,
etc.
8. Artificial Intelligence Software
Software like expert systems, decision support systems, pattern recognition software, artificial
neural networks, etc. comes under this category. They involve complex problems which are not
affected by complex computations using non-numerical algorithms.
9. Scientific Software
Scientific and engineering software satisfies the needs of a scientific or engineering user to
perform enterprise-specific tasks. Such software is written for specific applications using
principles, techniques, and formulae particular to that field. Examples are software like
MATLAB, AUTOCAD, PSPICE, ORCAD, etc.
10. Utility Software
The programs coming under this category perform specific tasks and are different from other
software in terms of size, cost, and complexity. Examples are anti-virus software, voice
recognition software, compression programs, etc.
11. Document Management Software
Document Management Software is used to track, manage, and store documents to reduce the
paperwork. Such systems are capable of keeping a record of the various versions created and
modified by different users (history tracking). They commonly provide storage, versioning,
metadata, security, as well as indexing and retrieval capabilities.
Based on Copyright
Classification of Software can be done based on copyright. These are stated as follows:
1. Commercial Software
It represents the majority of software that we purchase from software companies, commercial
computer stores, etc. In this case, when a user buys software, they acquire a license key to use it.
Users are not allowed to make copies of the software. The company owns the copyright of the
program.
2. Shareware Software
Shareware software is also covered under copyright but the purchasers are allowed to make and
distribute copies with the condition that after testing the software, if the purchaser adopts it for
use, then they must pay for it. In both of the above types of software, changes to the software are
not allowed.
3. Freeware Software
In general, according to freeware software licenses, copies of the software can be made both for
archival and distribution purposes but here, distribution cannot be for making a profit. Derivative
works and modifications to the software are allowed and encouraged. Decompiling of the
program code is also allowed without the explicit permission of the copyright holder.
4. Public Domain Software
In the case of public domain software, the original copyright holder explicitly relinquishes all
rights to the software. Hence software copies can be made both for archival and distribution
purposes with no restrictions on distribution. Modifications to the software and reverse
engineering are also allowed.
Q. What is the Difference between system software and application software
The process framework is required for representing common process activities. Five framework
activities are described in a process framework for software engineering. Communication,
planning, modeling, construction, and deployment are all examples of framework activities. Each
engineering action defined by a framework activity comprises a list of needed work outputs,
project milestones, and software quality assurance (SQA) points.
Umbrella activities:
Umbrella Activities are that take place during a software development process for improved
project management and tracking.
Software project tracking and control: This is an activity in which the team can assess
progress and take corrective action to maintain the schedule. Take action to keep the project on
time by comparing the project’s progress against the plan.
Risk management: The risks that may affect project outcomes or quality can be analyzed.
Analyze potential risks that may have an impact on the software product’s quality and outcome.
Software quality assurance: These are activities required to maintain software quality. Perform
actions to ensure the product’s quality.
Formal technical reviews: It is required to assess engineering work products to uncover and
remove errors before they propagate to the next activity. At each level of the process, errors are
evaluated and fixed.
Software configuration management: Managing of configuration process when any change in
the software occurs.
Work product preparation and production: The activities to create models, documents, logs,
forms, and lists are carried out.
Reusability management: It defines criteria for work product reuse. Reusable work items
should be backed up, and reusable software components should be achieved.
Measurement: In this activity, the process can be defined and collected. Also, project and
product measures are used to assist the software team in delivering the required software.
Each of these umbrella activities extends beyond the individual phases of the software
development lifecycle and contributes to the success of the overall project. They ensure that
software development remains organized, manageable, and focused on delivering a high-quality
product that meets the project's goals and requirements.
Q. Explain software Development Life Cycle (SDLC) and why it is required.
The Software Development Life Cycle (SDLC) is a process used by software development
organizations to plan, design, develop, test, deploy, and maintain software applications.
SDLC (Software Development Life Cycle) is used in Every Software Development Company
because it is the root of the Development Cycle, if that model would not exist in the world, firstly
no software can build secondly if any how it would be made, it’s not going to succeed it has no
use, because of no maintenance, but Luckily SDLC model exist in Tech world But why we need
it Actually!
There are several reasons why organizations use the Software Development Life Cycle (SDLC)
when developing software applications:
1. To ensure that the software is of high quality: The SDLC includes testing and quality
assurance phases, which help to ensure that the software is free of bugs and that it meets the
requirements.
2. To manage risks and costs: The SDLC helps organizations to identify and manage risks early
in the development process, which can help to reduce costs and minimize the impact of any
issues that do arise.
3. To improve communication and collaboration: The SDLC helps to ensure that all
stakeholders, including customers, end-users, and developers, are involved in the development
process and that their needs are taken into account.
4. To improve efficiency and productivity: The SDLC helps organizations to optimize the use
of resources and to streamline the development process, which can improve efficiency and
productivity.
Overall, the SDLC is a valuable tool for organizations to use when developing software
applications, as it helps to ensure that the final product is of high quality, meets the
requirements, and is delivered on time and within budget.
1. Requirements gathering and analysis: This phase involves gathering information about the
software requirements from stakeholders, such as customers, end-users, and business analysts.
2. Design: In this phase, the software design is created, which includes the overall architecture of
the software, data structures, and interfaces. It has two steps:
4. Testing: The software is thoroughly tested to ensure that it meets the requirements and works
correctly.
5. Deployment: After successful testing, The software is deployed to a production environment
and made available to end-users.
6. Maintenance: This phase includes ongoing support, bug fixes, and updates to the software.
There are different methodologies that organizations can use to implement the SDLC, such as
Waterfall, Agile, Scrum, V-Model and DevOps.
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.
The waterfall model is useful in situations where the project requirements are well-defined and
the project goals are clear. It is often used for large-scale projects with long timelines, where
there is little room for error and the project stakeholders need to have a high level of confidence
in the outcome.
The following illustration is a representation of the different phases of the Waterfall Model.
All these phases are cascaded to each other in which progress is seen as flowing steadily
downwards (like a waterfall) through the phases. The next phase is started only after the defined
set of goals are achieved for previous phase and it is signed off, so the name "Waterfall Model".
In this model, phases do not overlap.
Advantages:
Disadvantages:
In this incremental model, the whole requirement is divided into various builds. During each
iteration, the development module goes through the requirements, design, implementation and
testing phases. Each subsequent release of the module adds function to the previous release. The
process continues till the complete system is ready as per the requirement.
The advantages of the Iterative and Incremental SDLC Model are as follows:
Some working functionality can be developed quickly and early in the life cycle.
Results are obtained early and periodically.
Parallel development can be planned.
Progress can be measured.
Less costly to change the scope/requirements.
Testing and debugging during smaller iteration is easy.
Risks are identified and resolved during iteration; and each iteration is an easily managed
milestone.
Easier to manage risk - High risk part is done first.
With every increment, operational product is delivered.
Issues, challenges and risks identified from each increment can be utilized/applied to the
next increment.
Risk analysis is better.
It supports changing requirements.
Initial Operating time is less.
Better suited for large and mission-critical projects.
The disadvantages of the Iterative and Incremental SDLC Model are as follows −
1. It is used in large projects where you can easily find modules for incremental
implementation. Evolutionary model is commonly used when the customer wants to start
using the core features instead of waiting for the full software.
2. Evolutionary model is also used in object oriented software development because the
system can be easily portioned into units in terms of objects.
Customer needs are clear and been explained in deep to the developer team.
There might be small changes required in separate parts but not a major change.
As it requires time, so there must be some time left for the market constraints.
Risk is high and continuous targets to achieve and report to customer repeatedly.
It is used when working on a technology is new and requires time to learn.
Advantages:
Disadvantages:
Sometimes it is hard to divide the problem into several versions that would be acceptable
to the customer which can be incrementally implemented and delivered.
In the RAD model, the functional modules are developed in parallel as prototypes and are integrated to
make the complete product for faster product delivery. Since there is no detailed preplanning, it makes
it easier to incorporate the changes within the development process.
RAD projects follow iterative and incremental model and have small teams comprising of developers,
domain experts, customer representatives and other IT resources working progressively on their
component or prototype.
When the customer has well-known requirements, the user is involved throughout the life cycle,
the project can be time-boxed, the functionality delivered in increments, high performance is not
required, low technical risks are involved and the system can be modularized. In these cases, we
can use the RAD Model. When it is necessary to design a system that can be divided into smaller
units within two to three months. When there is enough money in the budget to pay for both the
expense of automated tools for code creation and designers for modeling.
Multiple teams work on developing the software system using RAD model.
RAD Model - Applications
The following pointers describe the typical scenarios where RAD can be used −
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 program is run
regularly to prevent failures.
The Prototyping Model should be used when the requirements of the product are not
clearly understood or are unstable.
The prototyping model can also be used if requirements are changing quickly.
This model can be successfully used for developing user interfaces, high-technology
software-intensive systems, and systems with complex algorithms and interfaces.
The prototyping Model is also a very good choice to demonstrate the technical feasibility
of the product.
The Spiral model is called a Meta-Model because it subsumes all the other SDLC models. For
example, a single loop spiral actually represents the Iterative Waterfall Model. The spiral model
incorporates the stepwise approach of the Classical Waterfall Model. The spiral model uses the
approach of the Prototyping Model by building a prototype at the start of each phase as a risk-
handling technique. Also, the spiral model can be considered as supporting the Evolutionary
model – the iterations along the spiral can be considered as evolutionary levels through which
the complete system is built.
The spiral model has four phases. A software project repeatedly passes through these phases in
iterations called Spirals.
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.
5. Iterative and Incremental Approach: The Spiral Model provides an iterative and
incremental approach to software development, allowing for flexibility and adaptability
in response to changing requirements or unexpected events.
6. Emphasis on Risk Management: The Spiral Model places a strong emphasis on risk
management, which helps to minimize the impact of uncertainty and risk on the software
development process.
7. Improved Communication: The Spiral Model provides for regular evaluations and
reviews, which can improve communication between the customer and the development
team.
8. Improved Quality: The Spiral Model allows for multiple iterations of the software
development process, which can result in improved software quality and reliability
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.
5. Complexity: The Spiral Model can be complex, as it involves multiple iterations of the
software development process.
6. Time-Consuming: The Spiral Model can be time-consuming, as it requires multiple
evaluations and reviews.
7. Resource Intensive: The Spiral Model can be resource-intensive, as it requires a
significant investment in planning, risk analysis, and evaluations.
Waterfall Model and Spiral Model are two different software development life cycle models,
each with its own characteristics and approaches. Let's differentiate between them:
1. Basic Approach:
Waterfall Model: The waterfall model follows a linear and sequential approach,
where each phase is completed before moving on to the next one. It is a structured
and well-defined model.
Spiral Model: The spiral model is iterative and combines elements of both linear
and iterative models. It emphasizes risk assessment and addresses risks through
iterative development.
2. Phases:
3. Risk Management:
Waterfall Model: In the waterfall model, risk analysis is generally minimal, and
risks are addressed late in the process, which can lead to challenges in handling
unexpected issues.
Spiral Model: The spiral model emphasizes risk analysis and mitigation at each
iteration. It allows early identification and resolution of risks, making it more
adaptable to changing requirements.
4. Iterations:
Waterfall Model: The waterfall model does not have iterations; once a phase is
completed, it rarely goes back to a previous phase.
Spiral Model: The spiral model involves multiple iterations, and the software
evolves through each iteration, revisiting and refining previous phases as needed.
5. Flexibility:
Waterfall Model: The waterfall model is suitable for well-defined projects with
stable requirements, where changes are unlikely.
Spiral Model: The spiral model is suitable for large and complex projects with
uncertain or evolving requirements, as it allows for risk-driven development.
7. Documentation:
Both models have their strengths and weaknesses, and the choice between them depends on the
specific characteristics and requirements of the software project. The waterfall model is suitable
for projects with well-understood and stable requirements, while the spiral model is more
suitable for projects with changing or uncertain requirements and higher risks.
Concurrent models are often utilized in software engineering as they provide a more systematic,
efficient, and flexible approach to developing software products. When deciding which model to
use, the project's specifics should be taken into account, as well as the preferences of the
software development team.
In the concurrent development model, each activity has a state and occurs concurrently.
Transitions take place when an activity is triggered to move to another state [2]. Usually, these
transitions are caused by inconsistencies and improvements. Therefore, concurrent development
model can be defined as a series of activities, tasks, and associated states.
Step-1: First identify all the required candidate components, i.e., classes with the help of
application data and algorithms.
Step-2: If these candidate components are used in previous software projects then they
must be present in the library.
Step-3: Such preexisting components can be excited from the library and used for further
development.
Step-4: But if the required component is not present in the library then build or create the
component as per requirement.
Step-5: Place this newly created component in the library. This makes one iteration of
the system.
Step-6: Repeat steps 1 to 5 for creating n iterations, where n denotes the number of
iterations required to develop the complete application.
Advantages of this model:
Easier Maintenance
Better Reusability
Improved Scalability.
Reduced development and testing time
Enhanced reliability (because components are pre-tested), and
Flexibility to change applications by adding or replacing components without major disruption.
Agile Model
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.
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 the product, the last step is feedback. In this, the team receives
feedback about the product and works through the feedback.
1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfills the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
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.
Scrum
Crystal
Dynamic Software Development Method(DSDM)
Feature Driven Development(FDD)
Lean Software Development
eXtreme Programming(XP)
Principles of Agile −
While Agile itself is more of an ideology or manifesto, there is different form of implementation
of the same as explained above. However, one look at those methodologies and one can figure
out that all of them have a common skeleton or some basic ideas over which all those
methodologies are based on. Based on the Agile manifesto, there are a total of 12 principles or
guideline which all the agile methodologies standby. Which are –
Agile promotes early and continuous delivery of valuable software. That means while
customer satisfaction is one of the major focus in Agile, clients always look for faster
delivery and early or on time delivery is a way to keep your customers happy as at the
end of the day, they mainly care about the end product rather than the overall process.
Being flexible about change at any point of development. One of agile’s primary focus
is customer satisfaction and agile is all about customer’s input and involvement
throughout the process including integrating requirement changes at any point of time
during the development.
Working on frequent and short deliveries throughout the development process.
Those deliveries can be weekly or monthly based depending upon the cycle/ sprint
duration in order to keep the client updated periodically regarding present status of
development.
Agile promotes transparency between business people and developers and requires
them to work together which helps in better coordination, risk management as well as
understanding of the product development flow both technically as well as from a
business point of view.
Agile advocates for motivating individuals in the team. By providing a better
productive environment and providing them with all the support, motivation and respect,
there will be a team that is motivated and trust each other which is highly effective in
getting better productivity.
While technical advancement has gifted us with many alternative ways to communicate,
agile believes in face to face communication as the most effective way to
communicate between and to development team.
Agile focuses on through planning and designing in order to get a clear understanding of
the user requirement. Agile motivates continuous attention towards effective designing
and technical excellence through following optimal code standard. It can be done
through regular code inspection on technical reviews and refactoring based on the
reviews at regular intervals.
Agile promotes sustainable development. The developers, users and sponsors should
work together in order to ship out delivery at a constant pace. As requirement changes as
well as blockages during the development process are bound to happen, the whole team
must work together so that the delivery process is followed indefinitely.
Working software is the primary measure of progress. In simple terms, none of the
planning, designing or overall development process matters if the end product is not in
working condition. The properly working end software product is what the success of an
agile process depends on.
Simplicity—the art of maximizing the amount of work not done—is essential. In
simple terms, to extract maximum result with less hard work. Agile promotes removing
unnecessary tasks and prioritizing activities can have maximum impact with less and
effective work done.
The best architectures, requirements, and designs emerge from self-organizing
teams. Agile advocates encouraging and appreciating motivated individuals in a team,
who are passionate about the whole development process, take ownership of their tasks
and share ideas among each other through effective communication. This results in
having a team of motivated and highly valuable team players with a sense of ownership
working together to provide better productivity.
At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly. There is always a scope for change and
improvement. Agile promotes team members should focus on self –improvement. They
should do regular analysis and work on improving the overall delivery or the
development process.
Q. Write short notes on Scrum and eXtreme Programming.
Scrum
SCRUM is an agile development process focused primarily on ways to manage tasks in team-
based development conditions.
Scrum Master: The scrum can set up the master team, arrange the meeting and remove
obstacles for the process
Product owner: The product owner makes the product backlog, prioritizes the delay and
is responsible for the distribution of functionality on each repetition.
Scrum Team: The team manages its work and organizes the work to complete the sprint
or cycle.
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. It is a framework that
enables teams to create high-quality software that helps improve their quality of life. It enables
software development alongside appropriate engineering practices. It is applicable while
handling changing software requirements risks caused due to new software, working with a
small, extended development team, and technology that allows automated unit and functional
tests.
It focuses on short deliveries with checkpoints all over the project in order to analyze if there are
any changes in requirement and act accordingly. The small deliveries and iterative development
cycles happen in a more confusing manner without any clear picture. However it makes sense
once the whole development is completed. XP is largely dependent on its developer team’s
ability to coordinate.
Planning −
The initial phase where clients and the developers meet and discuss about the requirement and
scope of the development. Based on the client input, developer team prepares short iterative user
stories or development cycles for the full development as a whole. Based on the stories created,
duration and cost of the project is defined.
Designing −
Here all the user stories are broken down into smaller tasks and further analysis is done regarding
the execution. Even development standards such as class and method names, architecture and
formats etc. are planned during designing. Test cases are concurrently prepared for those
iterative tasks. For probable problems even contingency plans as well as solutions are discussed.
Coding −
The most important phase where the development based on the planning takes place which
include coding based on requirement and simultaneous documentation for updating customer
regarding the present status. Coding standards and architectures defined during designing are
properly followed with a strictly 40 hours’ work a week follow up.
Testing −
Once the coding is done, user acceptance testing is started. XP integrates testing during the
coding phase itself for testing and development to run simultaneously. Based on the test results,
bugs are eliminated and then the product goes through customer acceptance testing which is
based on the customer requirements. Once the testing is passed, the product along with the test
result is then delivered to the customer.
Closure −
Here, once the product is delivered, the team awaits for customer as well as manager feedback.
Based on the feedback, they again follow the same planning-coding-testing iteration till customer
acceptance test is passed. The team also provides technical support during production in case of
further issue arises.