Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

PRACTICAL FILE

AGILE SOFTWARE DEVELOPMENT

DEPARTEMENT OF INFORMATION TECHNOLOGY

UNIVERSITY INSTITUTE OF ENGINEERING & TECHNOLOGY


PANJAB UNIVERSITY SSG REGIONAL CENTRE HOSHIARPUR

Submitted By:
TARUN KUMAR KAUSHIK
SG19849
B.E I.T 6TH SEM 2019-23
INDEX
S.NO. Name
1. Case study
2. Identify the different types of performance testing with an
Examples. Select the relevant process model to define the
activities and related tasks for the set of assignment project.

3. Introduction to rational rose software.


4. Prepare an SRS document for setting up an online food
ordering system. Draw an entity diagram of the project.
5. Why Agile model is opted for larger projects, explain with
Example.
6.
PRACTICAL -1
Case study

Real Time Smart Traffic Management System


Objective:
1. Design traffic management system that work on real time basis.
2. System must be capable of handling busy work hours.
3. Provide freeway to emergency vehicles like ambulance.
4. Identification of busy routes and providing best alternative.
5. Diverging vehicles on the basis of use and size to avoid congestion.
6. Prioritizing by public transport vehicles for Environmental Conservation.

Procedure:
The implementation of the real time traffic management system relies upon the
following things.
1. Identification of busy routes.
2. Monitoring traffic for education of vehicle types.
3. Estimation of time and Best alternative routes.

I. Identification of busy routes can be implemented by the use of CCTV


cameras monitoring the traffic.
➢ Vehicles can be identified on the basis of size, colour, moving
speed.
➢ Use of GPS can be used for identifying public transport vehicles
and synchronising routing application that can provide personal
vehicles destination.
➢ Marking of areas having greater number of destinations to
provide dedicated route.
II. If the amount of traffic is greater than particular threshold than traffic
will be diverted to the best alternative route present.
➢ Another way is doing Mark routes for specific vehicle types.
➢ For example, public transport vehicles can be given more
priority than commercial vehicles.
III. Calculation of time can be done by measuring speed of traffic between
two Junctions/Cross Road points. The same is calculated for the other
routes reaching the same destination. If the time of the main route is
greater than the other routes having least time gets traffic.
Proposed Solution
The plan is to develop and implement a reliable information technology enabled
intelligence traffic management system (ITMS) at major road junctions of the
city.
ITMS employs technology to improve traffic management, reduce road
congestion and create a good road experience for the commuters.
It relies on information through data collection from various junctions for
efficient and informed decision making.
Implementation of ITMS
Survey, to be conducted in order to identify critical areas where traffic congestion
is a problem. The installation is to be done in a phased manner on the basis of
traffic density.
➢ Phase 1: High priority (commercial interactions, connectivity, to major
areas)
➢ Phase 2: Medium priority (semi commercial intersection)
➢ Phase 3: Low priority (residential and secondary road network)
Components and Solutions
1. Traffic Management
2. Traffic signal installation
3. Adaptive traffic control system
4. Traffic signal co-ordination
5. Variable message sign boards
6. Automatic number plate recognition
Testing.
The system will be tested for its performance during peak hours i.e. From 7:00
AM. 10:00 AM. and 5:00 PM to 8:00 PM.
During this time the density of vehicles in the road will be maximum. Roads
will be primarily occupied by personal vehicles as well as public transport so
therefore prioritizing of vehicles is necessary
The system will director the destination of personal vehicles and identify the
destination area then it will mark main route add a secondary route show that
traffic can be diverted successfully.
Commercial vehicles during this time will be given less priority and public
transport maximum priority.
Unit testing can be done through testing different modules of the system.
For example, testing this system for a particular area or on a specific type of
vehicles

Throughput
6

0
Public Transport Personal Vehicle Commercial Vehicle Heavy Vehicle

City 1 City 2 City 3

Maintenance:
The proposed system can we upgraded in affordance with its needs and time.
Following. measures can be taken for maintaining the system:
1. Upgrading cameras as per the latest technology available.
2. Increasing density of sensors and CCTV cameras.
3. Maintaining database for vehicles.
PRACTICAL -2
Objective:
Identify the different types of performance testing with an example. Select the
relevant process model to define the activities and related task for the set of
assignment project.

Theory:
Software Performance testing is type of testing perform to determine the
performance of system to major the measure, validate or verify quality attributes
of the system like responsiveness, Speed, Scalability, Stability under variety of
load conditions. The system is tested under a mixture of load conditions and
check the time required responding by the system under varying workloads.
Software performance testing involves the testing of application under test to
ensure that application is working as expected under variety of load conditions.
The goal of performance testing is not only finding the bugs in the system but
also eliminate the performance bottlenecks from the system.
Performance Testing:
Before going live in the market, the software system should be tested against the
Speed, Stability and scalability under variety of load conditions. If system goes
live without doing performance testing may cause the issues like running
system slow while simultaneously accessing system by several users, poor
usability which likely to gain the bad reputation and it affects the expected sales
goal directly. Performance testing encompasses a range of different tests which
enable analysis of various aspects of the system. The Performance testing is
telling about what needs to fix before going live (mainly the issues faced under
the variety of load conditions).
Types of Performance Testing:

Load
Testing

Stress Volume
Testing Teesting

Performance
Testing

Spike Scalabilty
Testing Testng

Endurance
Testing

1. Load Testing:
Load Testing is type of performance testing to check system with constantly
increasing the load on the system until the time load is reaches to its threshold
value. Here Increasing load means increasing number of concurrent users,
transactions and check the behaviour of application under test. It is normally
carried out underneath controlled environment in order to distinguish between
two different systems. It is also called as “Endurance testing” and “Volume
testing”. The main purpose of load testing is to monitor the response time and
staying power of application when system is performing well under heavy load.
Load testing comes under the Non-Functional Testing and it is designed to test
the non-functional requirements of a software application.
Load testing is performed to make sure that what amount of load can be
withstand the application under test. The successfully executed load testing is
only if the specified test cases are executed without any error in allocated time.
Examples of load testing:
• Testing printer by sending large job.
• Editing a very large document for testing of word processor
• Continuously reading and writing data into hard disk.
• Running multiple applications simultaneously on server.
• Testing of mail server by accessing thousands of mailboxes •In
case of zero-volume testing and system fed with zero load.

2. Stress Testing:
Stress Testing is performance testing type to check the stability of software
when hardware resources are not sufficient like CPU, memory, disk space etc.
Stress testing is Negative testing where we load the software with large number
of concurrent users/processes which cannot be handled by the systems hardware
resources. This testing is also known as Fatigue testing, this testing should
capture the stability of the application by testing it beyond its bandwidth
capacity.
The main idea behind stress testing is to determine the failure of system and to
keep an eye on how the system gracefully get recover back, this quality is
known as recoverability. Stress testing comes under the Non-Functional Testing
and it is designed to test the non-functional requirements of a software
application. This testing is to be carried out under controlled environment
before launch, so that we can accurately capture the system behaviour under
most erratic scenarios.
3. Spike testing:
Spike testing is subset of Stress Testing. A spike test is carried out to validate
the performance characteristics when the system under test subjected to
workload models and load volumes that repeatedly increase beyond anticipated
production operations for short periods of time.
4. Endurance testing:
Endurance testing is a non-functional type of testing. Endurance testing
involves testing a system with an expected amount of load over a long period of
time to find the behaviour of system. Most commonly test cases are executed to
check the behaviour of system like memory leaks or system fails or random
behaviour. Sometimes endurance testing is also referred as Soak testing.
5. Scalability Testing:
Scalability Testing is type of non-functional tests and it is the testing of a
software application for determine its capability to scale up in terms of any of
its non-functional capability like the user load supported, the number of
transactions, the data volume etc. The main aim if this testing is to understand at
what peak the system prevent more scaling.
6. Volume testing:
Volume testing is non-functional testing which refers to testing a software
application with a large amount of data to be processed to check the efficiency
of the application. The main goal of this testing is to monitor the performance of
application under varying database volumes.
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
The goal of a software process model is to provide guidance for controlling and
coordinating the tasks to achieve the end product and objectives as effectively
as possible.

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:
• Waterfall model
• V model
• Incremental model
• RAD model
• Agile model
• Iterative model
• Prototype model
• Spiral model

➢ Waterfall Model
The waterfall model is a sequential, plan driven-process where team must plan
and schedule all team’s activities before starting the project. Each activity in the
waterfall model is represented as a separate phase arranged in linear order.
It has the following phases:
• Requirements
• Design
• Implementation
• Testing
• Deployment
• Maintenance
The waterfall model has a rigid structure, so it should be used in cases where the
requirements are understood completely and unlikely to radically change.
➢ V Model
The V model (Verification and Validation model) is an extension of the
waterfall model. All the requirements are gathered at the start and cannot be
changed. We have a corresponding testing activity for each stage. For every
phase in the development cycle, there is an associated testing phase.
The V model is highly disciplined, easy to understand, and makes project
management easier. But it isn’t good for complex projects or projects that have
unclear or changing requirements. This makes the V model a good choice for
software where downtimes and failures are unacceptable.
➢ Incremental Model
The incremental model divides the system’s functionality into small increments
that are delivered one after the other in quick succession. The most important
functionality is implemented in the initial increments.
The subsequent increments expand on the previous ones until everything has
been updated and implemented.
Incremental development is based on developing an initial implementation,
exposing it to user feedback, and evolving it through new versions. The process’
activities are interwoven by feedback.
The incremental model lets stakeholders and developers see results with the first
increment. If the stakeholders don’t like anything, everyone finds out a lot
sooner. It is efficient as the developers only focus on what is important and bugs
are fixed as they arise, but the developing team need a clear and complete
definition of the whole system before we start. The incremental model is great
for projects that have loosely coupled parts and projects with complete and clear
requirements.
➢ Iterative Model
The iterative development model develops a system through building small
portions of all the features. This helps to meet initial scope quickly and release
it for feedback.
In the iterative model, the team start off by implementing a small set of the
software requirements. These are then enhanced iteratively in the evolving
versions until the system is completed. This process model starts with part of
the software, which is then implemented and reviewed to identify further
requirements.
Like the incremental model, the iterative model allows developers to see the
results at the early stages of development. This makes it easy to identify and fix
any functional or design flaws. It also makes it easier to manage risk and change
requirements.
The deadline and budget may change throughout the development process,
especially for large complex projects. The iterative model is a good choice for
large software that can be easily broken down into modules.
➢ RAD Model
The Rapid Application Development (RAD model) is based on iterative
development and prototyping with little planning involved. Developing team
develop functional modules in parallel for faster product delivery. It involves
the following phases:
1. Business modelling
2. Data modelling
3. Process modelling
4. Application generation
5. Testing and turnover
The RAD model accommodates changing requirements, reduces development
time, and increases the reusability of components. But it can be complex to
manage. Therefore, the RAD model is great for systems that need to be
produced in a short time and have known requirements.
➢ Spiral Model
The spiral model is a risk driven iterative software process model. The spiral
model delivers projects in loops. Unlike other process models, its steps aren’t
activities but phases for addressing whatever problem has the greatest risk of
causing a failure.
Spiral have the following phases for each cycle:
1. Address the highest-risk problem and determine the objective and
alternate solutions
2. Evaluate the alternatives and identify the risks involved and possible
solutions
3. Develop a solution and verify if it’s acceptable
4. Plan for the next cycle
We develop the concept in the first few cycles, and then it evolves into an
implementation. Though this model is great for managing uncertainty, it can be
difficult to have stable documentation. The spiral model can be used for projects
with unclear needs or project still in research and development.
➢ Agile model
The agile process model encourages continuous iterations of development and
testing. Each incremental part is developed over an iteration, and each iteration
is designed to be small and manageable so it can be completed within a few
weeks.
Each iteration focuses on implementing a small set of features completely. It
involves customers in the development process and minimizes documentation
by using informal communication.
PRACTICAL -3
Objective: Introduction to Rational Rose software
Introduction:
Rational Rose is an object-oriented Unified Modelling Language (UML)
software design tool intended for visual modelling and component construction
of enterprise-level software applications. In much the same way a theatrical
director blocks out a play, a software designer uses Rational Rose to visually
create (model) the framework for an application by blocking out classes with
actors (stick figures), use case elements (ovals), objects (rectangles) and
messages/relationships (arrows) in a sequence diagram using drag-and-drop
symbols. Rational Rose documents the diagram as it is being constructed and
then generates code in the designer's choice of C++, Visual Basic, Java,
Oracle8, Corba or Data Definition Language.
Rational Rose is a software development environment for using model
descriptions and pattern languages to drive code development. Rational Rose is
an IBM product. The emphasis of the "rational" development environment is to
design major software engineering components at an abstract modelling level,
initially unhindered by the challenges of implementing components and
relationships as code. Common technologies driving rational development are
APIs (Application Programming Interfaces) to encapsulate interfaces from
implementation, UML (Unified Modelling Language) to express abstract
entities and their relations, and IDEs (Integrated Development Environments) to
coordinate the various modelling and coding artefacts.
Features of rational rose software:
Two popular features of Rational Rose are its ability to provide iterative
development and round-trip engineering. Rational Rose allows designers to take
advantage of iterative development (sometimes called evolutionary
development) because the new application can be created in stages with the
output of one iteration becoming the input to the next. (This is in contrast to
waterfall development where the whole project is completed from start to finish
before a user gets to try it out.) Then, as the developer begins to understand how
the components interact and makes modifications in the design, Rational Rose
can perform what is called "round-trip engineering" by going back and updating
the rest of the model to ensure the code remains consistent.
Rational Rose is extensible, with downloadable add-ins and third-party partner
applications. It supports COM/DCOM (ActiveX), JavaBeans, and Corba
component standards.
PRACTICAL -4
Objective:
Prepare a broad SRS for the selected project or the scenario you want to work
and also define which model you will opt for your project and the best testing
strategies which is suitable for your project.
Statement of the Problem
How to develop an online food ordering system to enable customers place
orders online from the comfort of their location with just a click. The challenges
encountered by the existing system serve as a major drawback to the realization
of efficiency and customer satisfaction. The experience of ordering in food
restaurants is not pleasant for the customers. Customers will have to make long
queues before placing their orders especially during peak hours and then the
ordering staff will record customer orders. Having placed their order, the
customer must then wait near the counter until their order is ready for
collection. The other problem in the food service industry is that restaurants are
not realizing the efficiencies that would result from better application of
technology in their daily operations. Fast food business in a very competitive
business and one way to stand out from competitors is through improving the
business process where business process automation can assist business
improvement. The other problem with the current system is that the customers
are not able to see the ingredients of the meals before they place their order and
also, they only have to pay for their order online.
• Main Objective
The general objective of the study is to help customers in ordering food.
So, the customer will pick exactly the things which he/she wants in their
food. This will surely enhance the image of the restaurant/pizzeria and
customer satisfaction will be more.

• Specific Objectives
The study has the following specific objectives-
1. Better Knowledge
This system will provide a customer with all the details of his order before
making an order. This confirmation will help customers to check the items
ordered with their prices.
2. Know Delivery Time
This system will show the time by which the order will be delivered to the
customer. For pick-ups customers can fix the time by which they will pick their
order.
3. Reduce Paper Work
As most of the things will be performed online, it will reduce the usage of paper
for the restaurant/pizzeria.
4. Improves Efficiency
This system will make things easier for staff as the whole ordering process will
be done by customers only.
• Justification
1. To increase efficiency by shortening the purchasing time and eliminating
paper work like receipts through online transaction
2. To be able to stand out from competitors by automating daily operations
which will give food service providers the opportunity to increase sales.
3. To reduce food restaurants wastage and increasing efficiency of the
restaurants staff by enabling the restaurants staff to know what food items
the customers want in advance.
4. To increase customer satisfaction by speeding up food delivery
5. To reduce time wasting by eliminating long queues

• Scope
Online Food ordering system will be a web-based application whose main
language of programming will be PHP. Its main aim is to simplify and improve
the efficiency of the ordering process for both customer and food shop owners,
minimize manual data entry and ensure data accuracy and security during order
placement process. Customers will also be able to view product menus and their
ingredients and be able to have a visual confirmation that the order was place
correctly.
➢ Requirement analysis
Comprises of the user, functional and non-functional requirements.
➢ User requirements
The users require a system that has the following features:
1. A user-friendly graphical user interface.
2. An informative and intuitive website.
• Functional requirements
This is how the system shall look like and do when successfully completed. The
system shall meet the following functional requirements:
When a customer will visit the online food ordering system of any restaurant, he
will be asked to login or sign up with them for better experience. The customer
will have to create a unique username and a password. Then he/she will need to
enter details like Name, phone number, address. After these steps account of
that customer will be created. The system will provide the customer a menu in
which all the foods and beverage items will be shown with their prices. The
food in the menu are created by the professional chefs of the restaurant. The
ingredients in this food will be changed according to the customer interests. The
customer will select any food from the menu. Each food item will be shown
with their image and price. For pizza’s the ingredients used in the making of
that food will also be seen. Each of these ingredients will be removed or other
new ingredients will be added in the order. After each selection or de-selection,
the grand total of the order will be updated.
➢ The customer will get an option to select pizza’s crust size which can be
small, medium or large.
➢ Then customer will to choose the sauce to be used on his pizza crust.
These can marinara, cheese, ranch and others.
➢ Then the system will ask the customer whether to add cheese or not. He
will also have an option to select for extra cheese.
➢ At last the system will show the customer different types of toppings.
Firstly, the customer will choose between veg. and non-veg. selections, and
based on that food options will be shown to him/her.

• Non-functional Requirements
A non-functional requirement is a requirement that specifies criteria that can be
used to judge the operation of a system, rather than specific behaviours. Some
of the non-functional requirements include:
There should be sufficient network bandwidth
• Backup - provision for data backup
• Maintainability - easy to maintain
• Performance/ response time - fast response
• Usability by target user community - easy to use
• Expandability - needs to be future proof or upgradable
• Safety - should be safe to use

➢ System Design
The section describes how the new system will function and how it is going to
satisfy the user requirements of the new system. The system encompasses the
design of data flow and physical design.

➢ Rapid Application Deployment


Rapid application development methodology will be most suitable for this
system because of various reasons. Rapid application development integrates
project management techniques, development techniques, users and tools to
build quality application system in a fixed time frame to deliver business value.
It combines much focused teams working in a highly structured environment.

Justification of the Design


The design has various advantages and this prompted me to
choose it. They include:
➢ The fact that customers are involved throughout the cycle helps to
minimize the risk of not achieving customer’s satisfaction
➢ Focus move from documentation to code.
➢ It also uses modelling concepts to capture information about data and
processes
➢ Reduced cycle time and improved productivity with fewer people means
lower cost
➢ Time box approach mitigates cost and also schedule risk.

The methodology can also be used when: -


• The requirements are reasonably known.
• There is need for user’s involvement.
• High performance is not required.
• There is low technical risk.
• The system can be modularized.

Disadvantages of RAD
• Depends on strong team and individual performances for
identifying business requirements.
• High dependency on modelling skills.
• Required highly skilled designers.
E-R Diagram:
PRACTICAL -5
Objective:
Agile model is opted for larger project.
Many large organisations are compelled to embark on wide-ranging business-
transformation IT projects. They are difficult to manage because, in the
intervening months before the end of the project, the changing business
environment will have forced further changes on the business. Agile holds out
the promise of managing these changes more easily.
Despite the presence of different project management approaches, Agile is
considered as one of the most practical and flexible software development
mechanisms that exist today. It is capable of executing a variety of tasks.

Advantages of a well-adapted Agile

1. Reduced risk
o There are fewer surprises. Because the model is incremental and
iterative, it can give indications of success and failure early in the
project, allowing the Project Management Office (PMO) to take
corrective actions to correct problems before they get out of hand.
o At least a part of the working product is always available, so that
the project can never end in complete failure
o The product owners and sponsors know exactly what usable
features are available at any point of time, regardless of the
outcome of future sprints.
o Project governance has the opportunity of providing constant
feedback, mitigating communication gaps and helping in team
morale constantly.
2. Predictable outcome
o By knowing the work rate of each developer, the development
team can help the PMO to predict timelines and budget for releases
more accurately.
o In-depth information from daily scrum meetings, burndown charts,
task boards and retrospective meetings allows a more accurate
forecast for future sprints.
3. Relevant project metrics
o It is easier to predict overall project performance, timelines and
budget from each team’s performance and outputs.
o It is easier to estimate the timelines and budget for successive
development projects where requirements are of a similar
complexity.
o Daily burndown charts provide relevant insight into day-to-day
progress.
4. Better product quality
o Requirements can be tweaked as business needs change, making
for a more adaptable model
o Continuous integration (CI) processes and daily sanity testing helps
in resolving issues before they cause a snowball affect
o Incorporation of automated testing improves quality further as it
allows the delivery team to increase the scope and thoroughness of
with currently-available resources
o Sprint retrospectives help in improving the progress and quality of
day-to-day activities
5. Higher customer satisfaction
o Customers are engaged throughout the project lifecycle.
o Effective communication is an important factor in Agile success. In
non-Agile approaches, project manager is the source of information
for project sponsors and stakeholders. In Agile, this silo is broken.
All the project metrics and project data are available on click of a
button for everyone to view, resulting in higher transparency and
satisfaction.
o Product owner is able to ‘keep tabs’ on requirements and can fine-
tune the resources required to meet them.
o Every Sprint review gives chance to customers to see working
functionality
6. Higher control
o The project stakeholders, the developers, the product owner and
scrum master all can monitor progress throughout the project to
learn and improve, thereby, creating better products.

Agile Project Management:


When a traditional system focuses on upfront planning where factors like cost,
scope, and time are given importance, Agile management gives prominence to
teamwork, customer collaboration, and flexibility. It is an iterative approach
that focuses more on incorporating customer feedback and continuous releases
with every iteration of a software development project.
The basic concept behind Agile software development is that it delves into
evolving changes and collaborative effort to bring out results rather than a
predefined process. Adaptive planning is perhaps the top feature of Agile and
one that makes it a favourite among project managers, worldwide.

Scrum and Kanban are two of the most widely used Agile frameworks. They are
very well known for encouraging decision-making and preventing time
consumption on variables that are bound to change. It stresses customer
satisfaction and uses available teams to fast-track software development at
every stage.
Agile is preferred by most developers and managers because of a variety of
reasons.

1. Project complexity
Traditional Agile
This method is the best fit for small or less This is the best methodology to follow
complex projects as it follows a linear in case of complex projects. A
approach. Sudden changes in the project complex project may have various
or any other complexities can block the interconnected phases and each stage
entire process and force the team to go may be dependent on many others
back to step one and start all over again. rather than a single one as in simple
projects. So, Agile methods are
preferred for large and complex
projects.

2. Adaptability
Traditional Agile
This approach works with a belief that The adaptability factor is very high in
once a phase is done, it will not be this methodology since it is not linear.
reviewed again. So, it is not adaptable to Complex projects consist of several
rapid changes in the work plan. If any interconnected stages, where a change
unexpected requirement arises or any in one stage can cause an effect on
variation is needed, the traditional another. Project managers can take
approach fails to adapt to new changes. calculated risks in such scenarios, as
The only choice is to start from the very there is a chance of high adaptability.
beginning once again. This wastes a lot of
effort and time in the process.
3. Scope for feedback and changes
Traditional Agile
Each and every process is clearly There is a high acceptance for
detailed and defined at the start of the feedback and change in this method.
project in the traditional approach. It The process is very flexible and
cannot deal with any big change or allows constant feedback that can help
feedback that might require a change in provide a better output within the
the process. Mostly, the project delivery fixed project delivery time.
time and budget are fixed and allows
change very rarely.

The main reason why managers or developers choose Agile is for the flexibility
it offers. Developers working with Agile management are able to respond to
customer requests quickly as they are only addressing small parts of the project
at a time and the customer validates each iteration or sprint before finalizing.

Reasons for the transition to Agile


Most of the organizations that transitioned from traditional to Agile project
management have listed the following reasons:
➢ Improves collaboration between teams- 54%
➢ Enhances the quality level of software in organizations- 52%
➢ Results in enhanced customer satisfaction- 49%
➢ Speeds time to market- 43%
➢ Reduces development cost- 42%

You might also like