Unit 1
Unit 1
INTRODUCTION:
Problems in software development
Common Issues:-
● The final Software does not fulfill the needs of the customer.
● Hard to extend and improve: if you want to add functionality later is mission
impossible.
● Bad documentation.
● Bad quality: frequent errors, hard to use,
● More time and costs than expected
Conclusion
Programming is NOT enough!
Solution
Software Engineering
What is SOFTWARE ENGINEERING?
The study and application of methodologies to develop quality software that fulfill
customer needs.
The term software engineering is the product of two words, software, and engineering.
DEFINITION:
● Cost Management
● 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.
Objective
4. Handling big projects: Big projects are not done in a couple of days, and they
need lots of patience, planning, and management. And to invest six and seven
months in any company, it requires heaps of planning, direction, testing, and
maintenance. No one can say that he has given four months of a company to the
task, and the project is still in its first stage. Because the company has provided
many resources to the plan and it should be completed. So to handle a big
project without any problem, the company has to go for a software engineering
method.
5. Reliable software: Software should be secure, meaning if you have delivered the
software, then it should work for at least it's given time or subscription. And if any
bugs come in the software, the company is responsible for solving all these bugs.
Because in software engineering, testing and maintenance are given, so there is
no worry of its reliability.
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.
● The development team must identify a suitable life cycle model for the particular
project and then adhere(support) to it.
● Without using a particular life cycle model the development of a software
product would not be in a systematic and disciplined manner.
● When a software product is being developed by a team there must be a clear
understanding among team members about when and what to do. Otherwise it
would lead to chaos and project failure.
● This problem can be illustrated by using an example. Suppose a software
development problem is divided into several parts and the parts are assigned to
the team members. From then on, suppose the team members are allowed the
freedom to develop the parts assigned to them in whatever way they like. It is
possible that one member might start writing the code for his part, another might
decide to prepare the test documents first, and some other engineer might begin
with the design phase of the parts assigned to him. This would be one of the
perfect recipes for project failure.
● A software life cycle model defines entry and exit criteria for every phase.
● A phase can start only if its phase-entry criteria have been satisfied. So without a
software life cycle model the entry and exit criteria for a phase cannot be
recognized. Without software life cycle models it becomes difficult for software
project managers to monitor the progress of the project.
The stages of SDLC are as follows:
Stage1: Planning and requirement analysis
The senior members of the team perform it with inputs from all the stakeholders and
domain experts or SMEs(Small and medium size enterprise) 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.
For Example, A client wants to have an application which concerns money transactions.
In this method, the requirement has to be precise like what kind of operations will be
done, how it will be done, in which currency it will be done, etc.
Once the required function is done, an analysis is complete with auditing the feasibility
of the growth of a product.Once the requirement is understood, the SRS (Software
Requirement Specification) document is created. The developers should thoroughly
follow this document and also should be reviewed by the customer for future reference
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.
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.
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.
Software Requirements:
1. Functional requirements
In some cases, the functional requirements may also explicitly state what the
system should not do.
Functional system requirements vary from general specifications covering what
the system should do in order to very particular requirements reflecting local
ways of working or the organization's existing systems.
1) Authentication and authorization of the user whenever he/she logs into the
system.
3) A Verification email and OTP is sent to the user whenever he/she registers for
the first time on some software system or during an ecommerce transaction an
SMS is sent for the amount deduction.
2. The system shall generate each day, for each clinic, a list of patients who are
expected to attend appointments that day.
3. Each staff member using the system shall be uniquely identified by his or her
eight-digit employee number.
For example
● If an aircraft system does not meet its reliability requirements, it will not
be certified as safe for operation;
● If an embedded control system fails to meet its performance
requirements, the control functions will not operate correctly.
Above figure is a classification of non-functional requirements. You can see from
this diagram that the non-functional requirements may come from required
characteristics of the software (product requirements), the organization
developing the software (organizational requirements), or from external sources:
3. External requirements This broad heading covers all requirements that are
derived from factors external to the system and its development process. These
may include regulatory requirements that set out what must be done for the
system to be approved for use by a regulator, such as a central bank; legislative
requirements that must be followed to ensure that the system operates within
the law; and ethical requirements that ensure that the system will be acceptable
to its users and the general public.
List of problems that occur when requirements are written in natural language.
User requirements that include too much data limit the freedom of the system
developer to provide innovative solutions to user problems and are difficult to
understand. The user requirement should simply focus on the key and all the
essential amenities to be provided.
To minimize misunderstandings when writing user requirements, following steps
need to be taken:
● Invent a standard format and ensure that all requirement definitions follow that
format.
● Standardizing the format makes exceptions less likely and the necessary
conditions easier to check.
● You may also include information on who proposed the requirement (the
requirement source) so that you will know whom to consult if the requirement
must be changed.
● Use language steadily.
● You should always distinguish between compulsory and desirable requirements.
Mandatory requirements are requirements that the system must support and are
typically written using 'shall'. Appropriate requirements are not essential and are
written using 'should'.
● Use text highlighting (bold, italic or colour) to pick out crucial parts of the
requirement.
System requirements are expanded versions of the user needs that are used by
software engineers as the starting point for the system design. They add details
and explain how the user requirements should be offered by the system.
They may be used as part of the contract for the application of the system and
should therefore be a complete and consistent specification of the whole system
Ideally, the system requirements should simply explain the external behavior of
the system and its operational constraints. They should not be worried about
how the system should be constructed or implemented. However, at the level of
detail necessary to completely specify a complex software system, it is
impossible, in practice, to exclude all information about the project.
A natural linguistic requirements specification is over flexible. You could tell you
the same thing in completely different ways. It is up to the reader to find out
when requirements are the same and when they are distinct. There is no easy
way to modularise natural-language requirements. It may be difficult to find all
the related terms and conditions set forth. To discover the consequence of a
transformation, you may need to look at every requirement rather than at simply a
group of connected requirements.
Structured language Specification:
● Structured natural language is a way of writing system specifications for
where the freedom of the requirements writer is limited, and all the
demands are written in a standard way.
● The advantage of this approach is that it maintains most of the fluency
and understandability of natural language but ensures that some degree
of uniformity remains imposed on the specification.
● Structured language notations restrict the terminology that can be used
and use templates to specify system requirements. They can incorporate
control constructs derived from programming languages and graphical
emphasizing to partition the specification.
When a standard form can be used to specify the functional requirements, the
following data should be included:
Graphical models are most useful when you need to show how state changes
using sequence diagram there are three basic subsequence used:
1. Validate card the user s card is authenticated by checking the card number
and user’s PIN.
2. Handle request the user's request is handled through the system. For a
withdrawal, the database must be queried to check the user's balance and to
debit the sum withdrawn. Notice the exception here if the requestor does not
have enough cash in their account.
3. Complete transaction the users card will be returned and, when it is removed,
the cash and receipt are delivered.
Interface Specification:
1. Procedural interfaces where existing systems or subsystems provide a range
of services that are accessed by calling interface procedures. These interfaces
are sometimes called Application Programming Interfaces.
Without a map (or well, Google Maps!), it can get tough traveling to a new city or
country. You wouldn’t know what transport to take or which direction to travel in, making
it almost impossible to reach your destination.
Similarly, in software development, you are highly unlikely to create the right product
without proper documentation of software requirements.
Documentation ensures that the software development team or other stakeholders are
on the same page regarding what needs to be built and are fully aware of the goal,
scope, functional requirements, challenges, and budget regarding the software.
However, as much as creating software is exciting, documenting its requirements can
be boring and tiresome.
These documents are often long, text-heavy, and full of technical jargon, making them
very difficult to understand. This makes them highly vulnerable to misinterpretations
and can thus, lead to disastrous results.
To avoid costly design mistakes, product managers and software developers often use
pre-made templates that keep the documentation process to the point and easy to
understand.
What is a Software Requirements Document? – Definition
These documents are created before the project has started development in order to
get every stakeholder on the same page regarding the software’s functionality.
Software requirements are written up by the tech team depending on the project they
are working on. As non-technical colleagues, clients, and partners get involved it’s
important to ensure that everyone is on the same page and agree with the scope,
budget, and goal of the project.
Software requirement documents provide an important map of the product being built,
the features that will be included, and much more.
This roadmap helps to keep the technical and non-technical team on the same
wavelength as to what the expectations are. It helps to ensure that the product is built
meeting the needs whether it’s for internal purposes, for users or clients.
1. Introduction
1.1 Purpose: Set the expectations for the outcome of the product.
1.2 Intended Audience: Who is the software for? Who is the end-user? Will the software
be used internally at a company or externally?
1.3 Intended Use: What is the software for? What problem is it solving?
1.4 Scope: Explain the scope of the software. What are the main goals and objectives?
How do they relate to the company’s goals?
1.5 Definitions and Acronyms: Provide an overview of any definitions the reader should
understand before reading on.
2. Overall Description: Describe what you are building and for who.
2.1 User Needs: Explain the user needs for this software.
2.2 Assumptions and Dependencies: What assumptions are you making that could
cause an error in your approach? Is the project reliant on any other factors that could
affect the development of the software?
3.1 Functional Requirements: Take time to define the functional requirements that are
essential for the software to build.
3.2 External Interface Requirements: Are there any UX and UI requirements that you
must keep in mind as you build?
3.3 System Features: What features are required for the software to even work.
3.4 Nonfunctional Requirements: Are there any non-functional requirements that you
need to address (i.e. budget, team, etc.)
OR
-> (THIS IS REFERENCE BOOK CONTENT, YOU CAN WRITE ANY WHICH YOU WISH)
How can a client and provider reach a shared understanding of the concept of the
product? It is not easy when they speak several languages. A customer defines a
product at a high-level concept level, focusing on the external system behaviour: what it
will be doing and how end-users will work with it. Meanwhile, developers think of the
product in terms of its own internal characteristics. That is why a Business Analyst
steps in to convert a customer’s needs into requirements, and further turn them into
tasks for developers. This is initially done by writing software requirements
specifications.
● Poorly specified requirements lead to some functionality not being included in
the application. Every assumption should be clearly communicated rather than
just implied.
● For eg: NASA’s Mars Climate Orbiter mission failed due to conflicting units of
measure. Nobody specified beforehand that the mindset control system and
navigation software must both use the same metric or imperial units.
● For some, it went without saying, everyone else did not find it as obvious. This is
a widespread problem that keeps happening even to the best specialists if not
prevented.
Inaccurate requirements gathering is one of the top causes for project failure
Solid arrows show how requirement types (ovals) are sorted into the documents
(rectangles). While dotted arrows show which requirement type is the origin of or
influences another on
SRS Software and Template
Software is the set of instructions in the form of programs to govern the computer
system and to process the hardware components. To produce a software product the
set of activities is used. This set is called a software process.
Software Development : In this process, designing, programming, documenting,
testing, and bug fixing is done.
Components of Software :
There are three components of the software: These are : Program, Documentation, and
Operating Procedures.
1. Program –
A computer program is a list of instructions that tell a computer what to do.
2. Documentation –
Source information about the product contained in design documents,
detailed code comments, etc.
3. Operating Procedures –
Set of step-by-step instructions compiled by an organization to help workers
carry out complex routine operations.
1. Software Specifications –
In this process, detailed description of a software system to be developed
with its functional and non-functional requirements.
2. Software Development –
In this process, designing, programming, documenting, testing, and bug fixing
is done.
3. Software Validation –
In this process, evaluation software product is done to ensure that the
software meets the business requirements as well as the end users needs.
4. Software Evolution –
It is a process of developing software initially, then timely updating it for
various reasons.
Software Crisis :
1. Size and Cost –
Day to day growing complexity and expectation out of software. Software are
more expensive and more complex.
2. Quality –
Software products must have good quality.
3. Delayed Delivery –
Software takes longer than the estimated time to develop, which in turn leads
to cost shooting up.
Waterfall model
The Waterfall model is the oldest model used by the IT industry to develop software.
There are various models and processes which are used by different companies, but the
waterfall model is the oldest, safest, and easy model in the IT industry.
It is the easiest model for building software that represents real life.
1. Requirements
Consider if there is a client and he wants to develop software, then the client reaches
out to the company. Suppose he reaches out to the service-based company and asks
the company to build the software for me.
Company will collect all the requirements, the knowledge that the customer has or the
client want to have on his software, the company will collect all the information from the
client and prepare the documentation. Once this activity is performed, then the design
phase gets started.
2. Design
In this phase, we prepare the high-level and low-level designs. Before developing the
software, the design of the software is required. Suppose the customer wants
e-commerce website similar to the Amazon, then UI(User Interface) of the website will
be made by the designer and dataflows are also designed in this phase that how data
will flow. Once this phase is completed, the development phase will get started.
3. Development
In the Development phase, the software development team starts coding and
developing the software. This is the longest phase of the waterfall model as developers
need more time to build the software. Once the development of the software is
completed, then the project is handed over to the testers.
4. Testing
The testing team will test the software, and if any bug is found, then they inform the
developers about the issue they found and make sure that the bug is fixed. They ensure
that the end-to-end software is completed.
5. Deployment
Once the project is tested, the project is deployed so that it becomes live to the real-time
users.
6. Maintenance
Finally, the project is deployed and available to the clients. Clients want the maintenance
period for one or two years because if any bug is found or want a slightly enhanced
feature in the project, so they need some team to handle such stuff. Due to this reason,
they go for the maintenance period
Example of Waterfall model
Suppose the client wants an app like a WhatsApp, so he reaches to the company where
both the company and the client had a discussion for 2 months. The company made the
documentation of all the requirements in 2 months.
Now, the development team starts developing the software and suppose it took around
10 months to develop the software. It means that 12 months have been used, i.e., 2
months in the requirement phase and 10 months in a development phase, but still the
client does not have the idea about the internal phases.
Once the development is completed, testing is done, and it will take around 2 months
for software quality testing. Once the testing is done, it goes to the integration and
launch so that WhatsApp will become live. However, when it reaches the client, the
client says that it has taken more than a year and the software that I received was not
what I expected.
This happened because the client had only verbal communication with the software
team. If the client wants some changes in the software, then the whole process will be
executed again.
Advantages of Waterfall model
● This model is simple to implement and 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 are 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 control and clarity for the customer due to a strict reporting system.
● In this model, the risk factor is higher, so this model is not suitable for more
significant and complex projects.
● 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 is 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
Evolutionary Prototyping
Incremental Prototyping
Extreme Prototyping:
Extreme prototyping method is mostly used for web development. It consists of three
sequential phases.
1. Basic prototype with all the existing pages is present in the HTML format.
2. You can simulate a data process using a prototype services layer.
3. The services are implemented and integrated into the final prototype.
4. Easy to fall back into the code and fix without proper requirement analysis,
design, customer evaluation, and feedback.
7. It is a time-consuming process.
ITERATIVE DEVELOPMENT
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 accessing earlier phases, in which the variations are made
respectively.
The final output of the project was renewed at the end of the Software Development
Life Cycle (SDLC) process.
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 designing phase.
2. Elaboration –
○ Planning and modeling are the main ones.
○ A detailed evaluation and development plan is carried out and
diminishes the risks.
○ Revise or redefine the use-case model (approx. 80%), business case, and
risks.
○ Again, checked against milestone criteria and if it couldn’t pass these
criteria then again the project can be canceled or redesigned.
○ Executable architecture baseline.
3. Construction –
○ The project is developed and completed.
○ System or source code is created and then testing is done.
○ Coding takes place.
4. Transition –
○ The final project is released to the public.
○ Transit the project from development into production.
○ Update project documentation.
○ Beta testing is conducted.
○ Defects are removed from the project based on feedback from the public.
5. Production –
○ The final phase of the model.
○ The project is maintained and updated accordingly.
Advantages:
1. It provides good documentation, it completes the process in itself.
2. It provides risk-management support.
3. It reuses the components, and hence total time duration is less.
4. Good online support is available in the form of tutorials and training.
Disadvantages:
1. Team of expert professionals is required, as the process is complex.
2. Complex and not properly organized process.
3. More dependency on risk management.
4. Hard to integrate again and again.
RAD (Rapid Application Development) Model
● The RAD (Rapid Application Development) model is based on prototyping and
iterative development with no specific planning involved. The process of
writing the software itself involves the planning required for developing the
product.
● Rapid Application Development focuses on gathering customer requirements
through workshops or focus groups, early testing of the prototypes by the
customer using iterative concepts, reuse of the existing prototypes (components),
continuous integration and rapid delivery.
What is RAD?
2. Data Modeling: The data collected from business modeling is refined into a set of
data objects (entities) that are needed to support the business. The attributes
(character of each entity) are identified, and the relation between these data objects
(entities) is defined.
3. Process Modeling: The information objects defined in the data modeling phase are
transformed to achieve the data flow necessary to implement a business function.
Processing descriptions are created for adding, modifying, deleting, or retrieving a data
object.
● When the system should need to create the project that modularizes in a short
span time (2-3 months).
● It should be used only if the budget allows the use of automatic code generating
tools.
A Software company named ABC wants to make a new web browser for the
latest release of its operating system. The deadline for the task is 10 months.
The company’s head assigned two teams named Team A and Team B for this
task. In order to motivate the teams, the company head says that the first team to
develop the browser would be given a salary hike and a one-week full-sponsored
travel plan. With the dreams of their wild travel fantasies, the two teams set out
on the journey of the web browser. Team A decided to play by the book and
decided to choose the Waterfall model for the development. Team B after a
heavy discussion decided to take a leap of faith and choose Agile as their
development model.
● Since this was an Agile, the project was broken up into several
iterations.
● The iterations are all of the same time duration.
● At the end of each iteration, a working product with a new feature has to
be delivered.
● Instead of Spending 1.5 months on requirements gathering, They will
decide the core features that are required in the product and decide
which of these features can be developed in the first iteration.
● Any remaining features that cannot be delivered in the first iteration will
be delivered in the next subsequent iteration, based on the priority
● At the end of the first iterations, the team will deliver working software
with the core basic features.
Both the team have put their best efforts to get the product to a complete stage.
But then out of blue due to the rapidly changing environment, the company’s
head came up with an entirely new set of features and wanted it to be
implemented as quickly as possible and wanted to push out a working model in 2
days.
Team A was now in a fix, they were still in their design phase and did not yet start
coding and they had no working model to display. And moreover, it was
practically impossible for them to implement new features since the waterfall
model there is not reverting back to the old phase once you proceed to the next
stage, which means they would have to start from square one again. That would
incur their heavy cost and a lot of overtime.
AGILE DEVELOPMENT
"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.
1. Requirements gathering
3. Construction/ iteration
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.
Extreme Programming technique is very helpful when there are constantly changing
demands or requirements from the customers or when they are not sure about the
functionality of the system.
It advocates frequent “releases” of the product in short development cycles, which
inherently improves the productivity of the system and also introduces a checkpoint
where any customer requirements can be easily implemented.
The XP develops software keeping customer in the target.
Business requirements are gathered in terms of stories. All those stories are stored in a
place called the parking lot.
In this type of methodology, releases are based on the shorter cycles called Iterations
with span of 14 days time period.
Each iteration includes phases like coding, unit testing and system testing where at
each phase some minor or major functionality will be built in the application.
● Code reviews are effective as the code is reviewed all the time.
● Short iterations are effective as the planning game for release planning
Agile Project Management is one of the revolutionary methods introduced for the
practice of project management.
This is one of the latest project management strategies that is mainly applied to project
management practice in software development. Therefore, it is best to relate agile
project management to the software development process when understanding it.
From the inception of software development as a business, there have been a number
of processes following, such as the waterfall model.
'Agile' is an umbrella term used for identifying various models used for agile
development, such as Scrum.
Since agile development model is different from conventional models, agile project
management is a specialized area in project management.
The Agile Process
It is required for one to have a good understanding of the agile development process in
order to understand agile project management.
There are many differences in agile development model when compared to traditional
models:
● The agile model emphasizes on the fact that the entire team should be a tightly
integrated unit. This includes the developers, quality assurance, project management,
and the customer.
● Frequent communication is one of the key factors that makes this integration possible.
Therefore, daily meetings are held in order to determine the day's work and
dependencies.
● Deliveries are short-term. Usually a delivery cycle ranges from one week to four weeks.
These are commonly known as sprints.
● Agile project teams follow open communication techniques and tools which enable the
team members (including the customer) to express their views and feedback openly
and quickly. These comments are then taken into consideration when shaping the
requirements and implementation of the software.