Agile - Unit 1
Agile - Unit 1
A linear process flow executes each of the five framework activities in sequence, beginning
with communication and culminating with deployment.
the team moves up the right side of the V, essentially performing a series of tests (quality
assurance actions) that validate each of the models created as the team moved down the left
CGB1203- Agile Development Methodologies
Prepared by : B.Rama , AP-IT
K. RAMAKRISHNAN COLLEGE OF ENGINEERING
(Autonomous)
Samayapuram , Tiruchirappalli,Tamil Nadu
side. In reality, there is no fundamental difference between the classic life cycle and the V-
model. The V-model provides a way of visualizing how verification and validation actions are
applied to earlier engineering work.
The incremental process model focuses on the delivery of an operational product with each
increment. Early increments are stripped-down versions of the final product, but they do
provide capability that serves the user and also provide a platform for evaluation by the user.
1.2.3 Evolutionary Process Model
Evolutionary models are iterative. They are characterized in a manner that enables you to
develop increasingly more complete versions of the software.
1.2.3.1 Prototyping
Prototyping - The developer may be unsure of the efficiency of an algorithm, the adaptability
of an operating system, or the form that human-machine interaction should take. In these, and
many other situations, a prototyping paradigm may offer the best approach.
is tuned to satisfy the needs of various stakeholders, while at the same time enabling you to
better understand what needs to be done.
1.2.3.2 The Spiral Model
The spiral model is an evolutionary software process model that couples the iterative nature of
prototyping with the controlled and systematic aspects of the waterfall model. It provides the
potential for rapid development of increasingly more complete versions of the software.
Using the spiral model, software is developed in a series of evolutionary releases. During early
iterations, the release might be a model or prototype. During later iterations, increasingly more
complete versions of the engineered system are produced.
spiral model demands a direct consideration of technical risks at all stages of the project and,
if properly applied, should reduce risks before they become problematic.
1.2.4 Concurrent Models
The concurrent development model, sometimes called concurrent engineering, allows a
software team to represent iterative and concurrent elements of any of the process models. This
model provides a schematic representation of one software engineering activity within the
modeling activity using a concurrent modeling approach. The activity modelling may be in any
one of the states noted at any given time. Similarly, other activities, actions, or tasks (e.g.,
communication or construction) can be represented in an analogous manner. All software
engineering activities exist concurrently but reside in different states.
inconsistency in the requirements model is uncovered. This generates the event analysis model
correction, which will trigger the requirements analysis action from the done state into the
awaiting changes state.
1.3 SPECIALIZED PROCESS MODEL
Specialized process models take on many of the characteristics of one or more of the traditional
models presented. However, these models tend to be applied when a specialized or narrowly
defined software engineering approach is chosen.
1.3.1 Component-Based Development
The component-based development model incorporates many of the characteristics of the spiral
model. It is evolutionary in nature, demanding an iterative approach to the creation of software.
However, the component-based development model constructs applications from prepackaged
software components. Modeling and construction activities begin with the identification of
candidate components. These components can be designed as either conventional software
modules or object-oriented classes or packages of classes.
The component-based development model incorporates the following steps:
1. Available component-based products are researched and evaluated for the application
domain in question.
2. Component integration issues are considered.
3. A software architecture is designed to accommodate the components.
4. Components are integrated into the architecture.
5. Comprehensive testing is conducted to ensure proper functionality.
The component-based development model leads to software reuse, and reusability provides
software engineers with a number of measurable benefits.
1.3.2 The Formal Methods Model
The formal methods model encompasses a set of activities that leads to formal mathematical
specification of computer software. Formal methods enable you to specify, develop, and verify
a computer-based system by applying a rigorous, mathematical notation. A variation on this
approach, called cleanroom software engineering , is currently applied by some software
development organizations. When formal methods are used during design, they serve as a basis
for program verification and therefore enable you to discover and correct errors that might
otherwise go undetected. The formal methods model offers the promise of defect-free software.
The development of formal models is currently quite time consuming and expensive.
Because few software developers have the necessary background to apply formal
methods, extensive training is required.
It is difficult to use the models as a communication mechanism for technically
unsophisticated customers.
1.3.3 Aspect-Oriented Software Development
As modern computer-based systems become more sophisticated (and complex), certain
concerns—customer required properties or areas of technical interest—span the entire
architecture. When concerns cut across multiple system functions, features, and information,
they are often referred to as crosscutting concerns. Aspectual requirements define those
crosscutting concerns that have an impact across the software architecture. Aspect-oriented
software development (AOSD), often referred to as aspect-oriented programming (AOP).
AOP is a relatively new software engineering paradigm that provides a process and
methodological approach for defining, specifying, designing, and constructing aspects
“mechanisms beyond subroutines and inheritance for localizing the expression of a crosscutting
concern”.
It is likely that such a process will adopt characteristics of both evolutionary and concurrent
process models. The evolutionary model is appropriate as aspects are identified and then
constructed. The parallel nature of concurrent development is essential because aspects are
engineered independently of localized software components and yet, aspects have a direct
impact on these components. Hence, it is essential to instantiate asynchronous communication
between the software process activities applied to the engineering and construction of aspects
and components.
1.4 UNIFIED PROCESS MODEL
The Unified Process is an attempt to draw on the best features and characteristics of traditional
software process models, but characterize them in a way that implements many of the best
principles of agile software development. The Unified Process recognizes the importance of
customer communication and streamlined methods for describing the customer’s view of a
system.
Components of unified process model
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment
integration testing) are conducted. Use cases are used to derive a suite of acceptance tests that
are executed prior to the initiation of the next UP phase.
The transition phase of the UP encompasses the latter stages of the generic construction
activity and the first part of the generic deployment (delivery and feedback) activity. Software
is given to end users for beta testing and user feedback reports both defects and necessary
changes. In addition, the software team creates the necessary support information (e.g., user
manuals, troubleshooting guides, installation procedures) that is required for the release. At the
conclusion of the transition phase, the software increment becomes a usable software release.
The production phase of the UP coincides with the deployment activity of the generic process.
During this phase, the ongoing use of the software is monitored, support for the operating
environment (infrastructure) is provided, and defect reports and requests for changes are
submitted and evaluated.
Planning: This activity isolates requirements and develops both size and resource estimates.
In addition, a defect estimate (the number of defects projected for the work) is made. All
metrics are recorded on worksheets or templates. Finally, development tasks are identified and
a project schedule is created.
High-level design: External specifications for each component to be constructed are developed
and a component design is created. Prototypes are built when uncertainty exists. All issues are
recorded and tracked.
High-level design review: Formal verification methods are applied to uncover errors in the
design. Metrics are maintained for all important tasks and work results.
Development: The component-level design is refined and reviewed. Code is generated,
reviewed, compiled, and tested. Metrics are maintained for all important tasks and work results.
Postmortem: Using the measures and metrics collected (this is a substantial amount of data
that should be analyzed statistically), the effectiveness of the process is determined. Measures
and metrics should provide guidance for modifying the process to improve its effectiveness.
1.5.3 Objectives of Team Software Process (TSP)
The goal of TSP is to build a “self directed” project team that organizes itself to produce high-
quality software. Humphrey defines the following objectives for TSP:
• Build self-directed teams that plan and track their work, establish goals, and own their
processes and plans. These can be pure software teams or integrated product teams (IPTs) of 3
to about 20 engineers.
• Show managers how to coach and motivate their teams and how to help them sustain peak
performance.
• Accelerate software process improvement by making CMM Level 5 behavior normal and
expected.
• Provide improvement guidance to high-maturity organizations.
• Facilitate university teaching of industrial-grade team skills.
1.5.4 Team Software Process framework activities
TSP defines the following framework activities: project launch, high-level design,
implementation, integration and test, and postmortem.
Like their counterparts in PSP (note that terminology is somewhat different), these activities
enable the team to plan, design, and construct software in a disciplined manner while at the
same time quantitatively measuring the process and the product. The postmortem sets the stage
for process improvements.
TSP makes use of a wide variety of scripts, forms, and standards that serve to guide team
members in their work. “Scripts” define specific process activities (i.e., project launch, design,
implementation, integration and system testing, postmortem) and other more detailed work
functions (e.g., development planning, requirements development, software configuration
management, unit test) that are part of the team process.
Like PSP, TSP is a rigorous approach to software engineering that provides distinct and
quantifiable benefits in productivity and quality. The team must make a full commitment to the
process and must undergo thorough training to ensure that the approach is properly applied.
1.6 TRADITIONAL SDLC VS AGILE DEVELOPMENT METHODOLOGY
1.6.1 Traditional SDLC models
1. Waterfall model
2. Spiral model
3. Iterative model
4. V model
5. Big bang model
The Big bang model is an SDLC model that starts from nothing. It is the simplest model
in SDLC (Software Development Life Cycle) as it requires almost no planning. However, it
requires lots of funds and coding and takes more time. The name big bang model was set
after the “Great Big Bang” which led to the development of galaxies, stars, planets, etc.
Similarly, this SDLC model combines time, efforts, and resources to build a product. The
product is gradually built as the requirements from the customer come, however, the end
product might not meet the actual requirements.
Design :
The product requirements are understood and implemented as they arrive. The complete
modules or at least the part of the modules are integrated and tested. All the modules are run
separately and the defective ones are removed to find the cause. It is a suitable model where
requirements are not well understood and the final release date is not given. In simple, it can
be phased out in 3 points i.e.
1. Integrate each individual’s modules to give a unique integrated overview
2. Test each module separately to identify any error or defects
3. If any error found then separate that module and identify the cause of the error
When to use it and where not to :
This SDLC model is suitable for small projects when few people are working on the project,
the customer’s demands are not exact and keep changing, or if it is a dummy/side-project. As
there is no proper planning in this model it is considered the worst SDLC model and is highly
unsuitable for large projects.
It is recommended to go for the Big Bang model only due to the following cases i.e.
1. Developing a project for learning purposes or experiment purposes.
2. No clarity on the requirements from the user side.
3. When newer requirements need to be implemented immediately.
4. Changing requirements based on the current developing product outcome.
5. No strict guideline on product release or delivery date.
Features of Big Bang Model :
Not require a well-documented requirement specification
Provides a quick overview of the prototype
Needs little effort and the idea of implementation
Allows merging of newer technologies to see the changes and adaptability
Pros of Big Bang Model :
There is no planning required for this.
Suitable for small projects
Very few resources are required.
As there is no proper planning hence it does not require managerial staffs
Easy to implement
the same objectives. By regularly communicating with each other, they eliminate potential
confusion to successfully achieve their objectives.
Differences between Traditional SDLC and Agile methodology
Table 1.1 Traditional vs Agile model
Traditional Software Development Agile Software Development
It is used to develop simple software. It is used to develop complicated software.
In this methodology, testing and
In this methodology, testing is done once the
development processes are performed
development phase is completed.
concurrently.
It follows a linear It follows an iterative organizational
organizational expectation structure. structure.
It provides less security. It provides high security.
Client involvement is less as compared to Client involvement is high as compared to
Agile development. traditional software development.
It provides all the functionality needed by
It provides less functionality in the software.
the users.
It supports a changeable development
It supports a fixed development model.
model.
It is used by freshers. It is used by professionals.
Development cost is less using this Development cost is high using this
methodology. methodology.
It majorly consists of five phases. It consists of only three phases.
It is less used by software development It is normally used by software development
firms. firms.
Example – Real time problem solved using different software development models
Developing a Real-Time Traffic Management System
Objective: Create a traffic management system that can monitor and manage traffic flow in
real-time to reduce congestion and improve road safety.
Using Waterfall model
1. Planning
Objective: Define project scope, goals, and deliverables.
Tasks:
o Identify stakeholders (e.g., city planners, traffic authorities, drivers).
o Conduct a feasibility study to determine technical and economic viability.
o Develop a project plan outlining timeline, resources, and budget.
Outcome: Clear understanding of project requirements and constraints.
2. Analysis
Objective: Gather detailed requirements and analyze them.
Tasks:
o Conduct interviews and workshops with stakeholders to gather requirements.
o Analyze current traffic management processes and identify pain points.
o Define system requirements, including real-time data processing, integration
with existing infrastructure, and user interface needs.
Outcome: Comprehensive requirements document and system specifications.
3. Design
Objective: Create architectural and detailed design of the system.
Tasks:
o Design the system architecture, including data flow diagrams and system
components.
o Create wireframes and prototypes for the user interface.
o Define hardware and software requirements.
o Plan for real-time data handling and integration with sensors and traffic
cameras.
Outcome: Design specifications and blueprints for development.
4. Development
Objective: Build the system based on the design specifications.
Tasks:
o Implement the system's core functionalities, such as real-time traffic data
collection, analysis algorithms, and traffic signal control.
o Develop the user interface and integrate with backend systems.
o Perform unit testing to ensure each component functions correctly.
Outcome: Working version of the system.
5. Testing
Objective: Ensure the system meets all requirements and is free of defects.
Tasks:
o Conduct various types of testing, including functional, performance, and stress
testing.
o Define System Scope: Outline the primary goals of the traffic management
system, such as real-time traffic monitoring, traffic signal control, and data
reporting.
o Conduct Feasibility Study: Assess technical, operational, and economic
feasibility. Identify potential risks and constraints.
o Develop Initial Use Cases: Create high-level use cases that describe how the
system will be used to achieve its goals.
o Project Plan: Develop an initial project plan that includes scope, timeline,
budget, and resource allocation.
Outcome: Feasibility report, initial project scope, and high-level use cases.
2. Elaboration Phase
Objective: Refine requirements, design architecture, and address major risks.
Tasks:
o Requirements Gathering: Collect detailed functional and non-functional
requirements. Engage stakeholders to refine use cases and ensure all
requirements are captured.
o Architecture Design: Develop an architectural design for the system, including
system components, data flow, and integration points. Create architecture
diagrams and models.
o Risk Management: Identify and analyze major risks. Develop mitigation
strategies for high-risk areas, such as real-time data handling and integration
with existing infrastructure.
o Prototyping: Develop prototypes or proof-of-concept systems to validate key
aspects of the design and gather early feedback from stakeholders.
Outcome: Detailed requirements, architectural design, risk management plan, and
prototypes.
3. Construction Phase
Objective: Build and integrate the system components.
Tasks:
o Ongoing Support: Provide ongoing technical support and address any bugs or
issues reported by users.
o System Updates: Implement updates and enhancements based on user
feedback, new requirements, or changes in technology.
o Performance Monitoring: Continuously monitor system performance and
make improvements as necessary to ensure it meets performance expectations.
o Risk Management: Address any new risks that arise and update risk
management strategies accordingly.
Outcome: Continuous system improvement, updated features, and ongoing support.