agile-technologies-UNIT I
agile-technologies-UNIT I
AgileTechnologies
AgileSoftwareDevelopmentisa softwaredevelopmentmethodologythatvalues flexibility,
collaboration, and customer satisfaction. It is based on the Agile Manifesto, a set of principles
for software development that prioritize individuals and interactions, working software,
customer collaboration, and responding to change.
Agile Software Development is an iterative and incremental approach to
softwaredevelopmentthat emphasizes the importance of delivering a working product quickly
and frequently. It involves close collaboration between the development team and the
customerto ensure that the product meets their needs and expectations.
PrinciplesofAgile:
1. The highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
2. Itwelcomeschangingrequirements,evenlateindevelopment.
3. Deliver working software frequently, from a couple of weeks to a couple of
months, with a preference for the shortest timescale.
4. Build projects around motivated individuals. Give them the environment and the
support they need and trust them to get the job done.
Downloadedbyudccssanthiya([email protected])
5. Workingsoftwareistheprimarymeasureofprogress.
6. Simplicitytheartofmaximizingtheamountofworknotdoneisessential.
7. The most efficient and effective method of conveying information to and withina
development team is face-to-face conversation.
8. Bytheamountofworkthathasbeenfinished,gaugeyourprogress.
9. Nevergiveuponexcellence.
10. Takeadvantageofchangetogainacompetitiveedge.
TheAgileSoftwareDevelopmentProcess:
AgileSoftwareDevelopment
Downloadedbyudccssanthiya([email protected])
AgileSoftwareDevelopment is widely used by software development teams and is
considered to be a flexible and adaptable approach to software development that is well-
suited to changing requirements and the fast pace of software development.
Agile is a time-bound, iterative approach to software delivery that builds software
incrementally from the start of the project, instead of trying to deliver all at once.
AgileSoftwaredevelopmentcycle:
Let’sseeabriefoverviewofhowdevelopmentoccursinAgilephilosophy.
1. concept
2. inception
3. iteration/construction
4. release
5. production
6. retirement
Agilesoftwaredevelopmentcycle
• Step 1: In the first step, concept, and business opportunities in each possible
project are identified and the amount of time and work needed to complete the
project is estimated. Based on their technical and financial viability, projects can
then be prioritized and determined which ones are worthwhile pursuing.
• Step 2: In the second phase, known as inception, the customer is consulted
regarding the initial requirements, team members are selected, and funding is
secured. Additionally, a schedule outlining each team’s responsibilities and the
precise time at which each sprint’s work is expected to be finished should be
developed.
• Step 3: Teams begin building functional software in the third step,
iteration/construction, based on requirements and ongoing feedback. Iterations,
also known as single development cycles, are the foundation of the Agile
software development cycle.
Downloadedbyudccssanthiya([email protected])
DesignProcessofAgilesoftwareDevelopment:
• In Agile development, Design and Implementation are considered to be the
central activities in the software process.
• The design and Implementation phase also incorporates other activities such as
requirements elicitation and testing.
• In an agile approach, iteration occurs across activities. Therefore, the
requirements and the design are developed together, rather than separately.
• The allocation of requirements and the design planning and development as
executed in a series of increments. In contrast with the conventional model,
where requirements gathering needs to be completed to proceed to the design
and development phase, it gives Agile development an extra level of flexibility.
• Anagileprocessfocusesmoreoncodedevelopmentratherthandocumentation.
AdvantagesAgileSoftwareDevelopment:
• Deployment of software is quicker and thus helps in increasing the trust of the
customer.
• Canbetteradapttorapidlychangingrequirementsandrespondfaster.
• Helps in getting immediate feedback which can be used to improve the software
in the next increment.
• People – Not Process. People and interactions are given a higher priority than
processes and tools.
• Continuousattentiontotechnicalexcellenceandgooddesign.
• Increased collaboration and communication: Agile Software
DevelopmentMethodologyemphasize collaboration and communication
among teammembers, stakeholders, and customers. This leads to improved
understanding, better alignment, and increased buy-in from everyone involved.
• Flexibility and adaptability: Agile methodologies are designed to be flexible and
adaptable, making it easier to respond to changes in requirements, priorities, or
market conditions. This allows teams to quickly adjust their approach and stay
focused on delivering value.
• Improved quality and reliability: Agile methodologies place a strong emphasison
testing, quality assurance, and continuous improvement. This helps to ensure that
software is delivered with high quality and reliability, reducing the risk of
defects or issues that can impact the user experience.
Downloadedbyudccssanthiya([email protected])
• Enhanced customer satisfaction: Agile methodologies prioritize customer
satisfaction and focus on delivering value to the customer. By involving
customers throughout the development process, teams can ensure that the
software meets their needs and expectations.
• Increased team morale and motivation: Agile methodologies promote a
collaborative, supportive, and positive work environment. This can lead to
increased team morale, motivation, and engagement, which can in turn lead to
better productivity, higher quality work, and improved outcomes.
DisadvantagesAgileSoftwareDevelopment:
• In the case of large software projects, it is difficult to assess the effort required at
the initial stages of the software development life cycle.
• AgileDevelopmentismorecode-focusedandproduceslessdocumentation.
• Agile development is heavily dependent on the inputs of the customer. If the
customer has ambiguity in his vision of the outcome, it is highly likely that the
project to get off track.
• Face-to-facecommunicationisharderinlarge-scaleorganizations.
• Only senior programmers are capable of making the kind of decisions required
during the development process. Hence, it’s a difficult situation for new
programmers to adapt to the environment.
• Lackofpredictability: Agile Development relies heavily on customer feedback
and continuous iteration, which can make it difficult to predict project outcomes,
timelines, and budgets.
• Limited scope control: Agile Development is designed to be flexible and
adaptable, which means that scope changes can be easily accommodated.
However, this can also lead to scope creep and a lack of control over the project
scope.
PracticesofAgileSoftwareDevelopment:
• Scrum: Scrum is a framework for agile software development that involves
iterative cycles called sprints, daily stand-up meetings, and a product backlog
that is prioritized by the customer.
• Kanban: Kanban is a visual system that helps teams manage their work and
improve their processes. It involves using a board with columns to represent
different stages of the development process, and cards or sticky notes to
represent work items.
Downloadedbyudccssanthiya([email protected])
• ContinuousIntegration: Continuous Integration is the practice of frequently
merging code changes into a shared repository, which helps to identify and
resolve conflicts early in the development process.
• Test-DrivenDevelopment: Test-Driven Development (TDD) is a development
practice that involves writing automated tests before writing the code. This helps
to ensure that the code meets the requirements and reduces the likelihood of
defects.
• PairProgramming: Pair programming involves two developers workingtogether
on the same code. This helps to improve code quality, share knowledge, and
reduce the likelihood of defects.
AdvantagesofAgileSoftwareDevelopmentovertraditionalsoftwaredevelopmentapproach
es:
1. Increasedcustomersatisfaction: Agile development involves close
collaboration with the customer, which helps to ensure that the software meets
their needs and expectations.
2. Fastertime-to-market: Agile development emphasizes the delivery of working
software in short iterations, which helps to get the software to market faster.
3. Reducedrisk: Agile development involves frequent testing and feedback,
which helps to identify and resolve issues early in the development process.
4. Improvedteamcollaboration: Agile development emphasizes collaboration
and communication between team members, which helps to improve
productivity and morale.
5. Adaptabilitytochange: Agile Development is designed to be flexible and
adaptable, which means that changes to the project scope, requirements, and
timeline can be accommodated easily. This can help the team to respond quickly
to changing business needs and market demands.
6. Betterqualitysoftware: Agile Development emphasizes continuous testing and
feedback, which helps to identify and resolve issues early in the development
process. This can lead to higher-quality software that is more reliable and less
prone to errors.
7. Increasedtransparency: Agile Development involves frequent communication
and collaboration between the team and the customer, which helps to improve
transparency and visibility into the project status and progress. This can help to
Downloadedbyudccssanthiya([email protected])
build trust and confidence with the customer and other stakeholders.
8. Higherproductivity: Agile Development emphasizes teamwork and
collaboration, which helps to improve productivity and reduce waste. This can
lead to faster delivery of working software with fewer defects and rework.
9. Improvedprojectcontrol: Agile Development emphasizes continuous
monitoring and measurement of project metrics, which helps to improve project
control and decision-making. This can help the team to stay on track and make
data-driven decisions throughout the development process.
AgileSoftwareDevelopment
AgileSoftwareDevelopmentisthesoftwaredevelopmentprocessusedtodesigncomplicated
software. It is used when the software is quite sensitive and complicated. It is used when
security is much more important. It is used by professionals to develop the software. It
consists of three phases:
1. Planning
2. RequirementAnalysis
3. Designing
4. Implementation
5. Testing
6. Deployment
AdvantagesofAgileSoftwareDevelopment
• Flexibility:Agilesoftwaredevelopmentishighlyflexibleandcaneasilyadapttochanges in
requirements, design, and scope.
• CustomerInvolvement:Agilesoftwaredevelopmentencouragesfrequentcustomer
involvement, which can result in a final product that better meets their needs.
• ContinuousDelivery: Agile software development typically includes continuous
delivery,whichmeansthatworkingsoftwareisdeliveredtothecustomeronaregular basis.
• Collaboration:Agilesoftwaredevelopmentemphasizescollaborationbetweenteam
members, which can lead to better communication and problem-solving.
• EarlyandFrequentTesting:Agilesoftwaredevelopmentincludesearlyandfrequent
testing, which can help to catch issues and bugs early in the development process.
DisadvantagesofAgileSoftwareDevelopment
Downloadedbyudccssanthiya([email protected])
• LackofPredictability: Agile software development can be less predictable than
traditionalmethods,withlesscertaintyaboutthefinalproductanditsdeliveryschedule.
• LimitedDocumentation: Agile software development often relies less on
documentation,whichcanmakeitdifficulttotrackchangesandunderstandthesystem
architecture.
• TimeandResourceConstraints:Agilesoftwaredevelopmentrequiresasignificant
commitment of time and resources from all team members.
• LessEmphasisonPlanning:Agilesoftwaredevelopmentoftenplaceslessemphasison
detailed planning, which can result in scope creep and delays.
• ResistancetoChange:Agilesoftwaredevelopmentrequiresasignificantculturalshift and
may be difficult for some team members and organizations to adopt.
DifferenceBetweenTraditionalandAgileSoftwareDevelopment
TraditionalSoftwareDevelopment AgileSoftwareDevelopment
Itisusedtodevelopcomplicated
Itisusedtodevelopsimple software.
software.
TraditionalSoftwareDevelopment AgileSoftwareDevelopment
Clientinvolvementislessascomparedto Clientinvolvementishighascompared to
Agile development. traditional software development.
Itprovidesallthefunctionalityneeded by
Itprovideslessfunctionalityinthe software.
the users.
Downloadedbyudccssanthiya([email protected])
Itsupportsachangeabledevelopment
Itsupportsafixeddevelopmentmodel.
model.
Developmentcostislessusingthis Developmentcostishighusingthis
methodology. methodology.
Itisnormallyusedbysoftware
Itislessusedbysoftwaredevelopmentfirms.
development firms.
Theexpectationisfavoredinthetraditional Adaptabilityisfavoredintheagile
model. methodology.
TraditionalSoftwareDevelopment AgileSoftwareDevelopment
developmentapproachesaremorelikely
to interact with them than customers
who work with companies that use
traditional software
developmentmethodology.
Downloadedbyudccssanthiya([email protected])
For starters, typical software development
approaches employ a predictive approach.
Here,aflexibleapproachisusedasthe
There is full specification and prediction of
software development approaches are
the software development processes because
founded on the notion of continual
theproductisproducedthroughrigorousand
design improvement and testing relies
explicit planning. Changes are not permitted
on team and client feedback.
inthistechniquebecausethetimeandcostof
project development are fixed.
Examples
Examples
• Officeproductivitysuites
• Sky
• Datamanagementsoftware
• Phillips
• Mediaplayers
• JPMorganChase
• Securityprograms
ModelsbasedonTraditionalSoftwareD ModelsbasedonAgileSoftwareD
evelopment- evelopment-
• SpiralModel • Scrum
• WaterfallModel • ExtremeProgramming(XP)
• VModel • Crystal
• IncrementalModel • DynamicSystemsDevelopment
Method (DSDM)
• FeatureDrivenDevelopment (FDD)
• AdaptiveSoftwareDevelopment
TraditionalSoftwareDevelopment AgileSoftwareDevelopment
(ASD)
Downloadedbyudccssanthiya([email protected])
AgileMethodologies?
There are more than a dozen agile techniques that are in use. Scrum, Extreme
Programming (XP), lean product development, Kanban, Feature-Driven Development
(FDD), Dynamic Systems Development Method (DSDM), and the Crystal family of
methodologies are the most popular approaches. We'll go into detail about each of these
types of agile methodologies in the discussion. Scrum and XP are the two most popular
agile methodologies. The core concepts, people, activities, and deliverables of these two
strategies will be thoroughly covered. To learn more in detail, please go through the
various agile courses listed in theKnowledgeHutAgileManagementtraining.
TypesofAgileMethodology:8ImportantCategories
1. Scrum
Scrum is a well-known agile framework that is simple to learn and lightweight, but like all
agiletechniques,itischallengingtomastercompletely.The"Scrumframework"contains a
collection of processes, roles, events, artifacts, and rules that are intended to direct theteam
as they carry out the project.
Downloadedbyudccssanthiya([email protected])
ScrumPillarsandValues
ThetheorybehindScrumisbasedonthethreepillars
• Transparency,
• Inspection
• Adaptation.
Inadditiontothethreepillars,
Scrumalsorecognizesfivefundamentalvalues-
• Focus,
• Courage,
• Openness,
• Commitment,and
• Respect.
The major concepts and elements of the scrum are discussed in this section, as well as the
responsibilities of a scrum team, the activities that take place during a sprint, and the
sprintdeliverables or artifacts.
i. ScrumTeamRoles
Developers, product owners, and scrum masters make up scrum teams. Let's examine
eachof these jobs to determine what is expected of them on a Scrum project. Scrum teams
are multidisciplinary as well;
• Developers: The team of experts who construct the product increments during each
sprint.Theteammembersareself-organizing,whichmeanstheyhavetheauthorityto
oversee their work.
• ProductOwner:Theproductowneroverseesmanagingtheproductbacklog,orthelist of
tasks that need to be completed, to maximize the value of the product.
• ScrumMaster:TheeffectiveunderstandingandapplicationoftheScrumframework is the
responsibility of the Scrum Master. By removing any obstacles to the
Downloadedbyudccssanthiya([email protected])
developmentteam'swork,coordinatingtheirevents(meetings),andcoachingthe team
members, this person serves as a servant leader.
1. Sprints:
A sprint is an iteration that is time-boxed (time-limited) that lasts no more than one
month,during which the team creates a viable product for release. (The word "sprint" in
Scrum is equivalent to the word "iteration" in the agile vocabulary.)Most Scrum sprints last
one to twoweeks.Everysprintfunctionsasamini-project.Ifthesprintaimbecomesobsolete due to
a shift in the company direction or technological conditions, the sprint may be terminated
before the timebox expires. The sprint can, however, only becancelled by the product
owner.
2. ExtremeProgramming(XP)
• XPCoreValues
ThecorevaluesofXPare
• Simplicity
• Communication
• Feedback
• Courage
• Respect
To organize their releases and iterations, XP teams employ "user stories," which are brief
requirements. Developers write code in pairs throughout these iterations, which are
typically two weeks long. "Architectural spikes" are iterations used to demonstrate a
technology method. "Spikes" are periods of effort conducted to eliminate threats
andissues. The release planning procedures incorporate the spikes.
• XPTeamRoles
In contrast to Scrum, XP specifies the team roles as coach, customer, and tester. Let's
examine the contributions that each of these jobs makes to an XP project.
Downloadedbyudccssanthiya([email protected])
Coach
The coach serves as the team's mentor, directing the process and assisting the members in
staying on task. The coach serves as a conduit, facilitating communication both inside and
between teams and assisting the squad in becoming more productive. This position
hasmany duties in common with a ScrumMaster.
Customer:
The "customer" is the business core of an XP team.which might give the project's needs,
priorities, and business direction. This individual establishes the specifications for the
finished product, ranks the importance of its features, and verifies that it performs as
intended. This position is comparable to the Scrum product owner.
Programmers:
The developers who write and implement the programming for the requested user stories
are known as programmers.
Testers The customer can define and write acceptance tests for the user stories with the
assistance of the testers, who also provide quality assurance. If they have the necessary
expertise, developers (programmers) may also fill this position.
Test-DrivenDevelopment:
Refactoring
Refactoring is the practice of enhancing the design of already-written code
withoutchanging how it functions externally or introducing new features. Maintaining an
effective design makes it simple to apply modificationsand new functionality to the code.
Refactoring is focused on reducing coupling (dependent connections between code
modules), eliminating redundant code, and boosting cohesiveness.
Downloadedbyudccssanthiya([email protected])
PairProgramming:
In XP, two developers collaborate to write production code. The other developer
reviewsthe code as it is developed while one developer develops it; their responsibilities
regularly swap.Thismethodmayappearineffective,but XPproponentsclaimthatitsavestime
sincepairsidentifyproblemsearlierandthatthereisavalueinhavingtwoindividuals with more
knowledge. Working in pairs also aids in transferring system expertisethroughout the
team.
LeanProduct Development
Leanisnotanagilemethodologyinthestrictestsense,butaswe'llsee,theleanapproach
isquitelikeagile.LeanhasitsrootsintheToyotaProductionSystem,whichwascreated
toenhanceHenryFord'smassproductionmethodformakingautomobiles.Leanstartedas a
manufacturing strategy, was subsequently extended to software development, and finally
expanded to encompass many other types of knowledge work. When discussing lean in an
agile setting, we are referring to a branch of lean known as "lean product development":Lean
product development focuses on creating new and improved goods, as opposed to the
initialleanproduction techniques,whichfocusedonmanufacturingitems.Thefollowing are some
of the major tenets of lean product development:
• Usingvisualmanagementtools
• Identifyingcustomer-definedvalue
• Buildinginlearningandcontinuousimprovement
Lean Core Concepts
Leanfocusesonsevencoreconcepts,asgivenbelow:
1. Eliminatewaste:
We must reduce waste if we are to maximize value. Waste can appear in knowledge
workas incompletework, delays,handoffs, superfluous features,etc.Wemustthus develop
Downloadedbyudccssanthiya([email protected])
methods to recognize waste and then eliminate it if we want to maximize the value we
derive from projects.
2. Empowertheteam
Rather than micromanaging, we should recognize the team members' greater
understanding of the technical procedures necessary for the project and allow them to
make local judgments to be effective and successful.
3. Deliverassoonaspossible
By generating worthwhile deliverables as soon as possible and refining designs, we may
increase the project's return on investment (ROI). Through the quick evolution of
possibilities, we will find the best answer.
Feature-DrivenDevelopment(FDD)
FDD suggests a collection of best practices that were inspired by software engineering.
Among them are
Downloadedbyudccssanthiya([email protected])
Individualclass(code)ownership:
This technique assigns a single owner to a section of code for conceptual coherence,
performance,andconsistency.(Notethatthisdifferssignificantlyfromthecommunal
codeownershipconceptof XP, whichseeks toshare expertisewithother teammembers.)
Featureteams:
These are compact, spontaneously assembled teams that vet designs and enable the
evaluation of several design choices before the selection of a design. The hazards
connected with individual ownership are reduced with the aid of feature teams.
Inspections:These are checks to make sure the design and code are of high quality.
One of the first agile methodologies was called DSDM, and it had a very precise and
prescriptive beginning. The project life cycle is thoroughly covered byus, which includes
everythingfrom thebusinesscaseand feasibilitytoimplementationin an agileproject.
TheDSDMlifecycleisdepictedinthepicturebelow.
There are eight guiding concepts for DSDM. Even though the Agile Manifesto was not yet
established when these principleswere developed, they are very similar to it.
Theeightprinciplesare:
1. Focusonthebusinessneed
2. Deliverontime
3. Collaborate
4. Nevercompromise quality
5. Buildincrementallyfromfirm foundations
Downloadedbyudccssanthiya([email protected])
6. Developiteratively
7. Communicatecontinuouslyandclearly
8. Demonstratecontrol
By promoting early architectural considerations, agile appropriateness criteria, and agile
contracts, DSDM has influenced the growth of agile.
Kanban
Crystal
5. SAFe
ThetopbusinessagilityframeworkintheworldisSAFeforLean
Downloadedbyudccssanthiya([email protected])
Enterprises. SAFe combines the strength of Lean, Agile, and DevOps into an all-
encompassing operating system that aids businesses in thriving in the digital age by
producing cutting-edge goods and services more quickly, predictably, and of higher
quality. SAFe's flexibility and scalability allow any firm tocustomize the framework to
meet its business requirements. SAFe offers a complete range of solutions, from those
requiring a few teams to those sophisticated systems requiring hundreds—and even
thousands—of people to create and deliver, with four preconfiguredconfigurations.
WhatistheAgileManifesto?
TheAgileManifestoisadocumentthatidentifiesfourkeyvaluesand12principlesthatits authors
believe software developers should use to guide their work. Formally called
theManifestoforAgileSoftwareDevelopment,itwasproducedby17developersduringan outing
on Feb. 11-13, 2001, at The Lodge at Snowbird ski resort in Utah.
ThedeveloperscalledthemselvestheAgileAlliance.Theywereseekinganalternativetothe
existing software developmentprocessesthatthey sawascomplicated, unresponsive andtoo
focused on documentation requirements. Among the developers were Kent Beck, Arie van
Bennekum,AlistairCockburn,AndrewHuntandJeffSutherland.Membersoftheinitial alliance
were experienced in software development and business entrepreneurship.
Accordingtoagilemanisfesto.org,theonlinehomeofthedocument, thedevelopers'stated
goalwasnotantimethodology,butrather "torestorecredibilitytothewordmethodology."
Furthermore,thedeveloperssoughttofindabalancebetweentheexistingwaysof development
and the new alternatives. They admitted to accepting modeling and documentation, but only
when it had a clear, beneficial use.
The developers also explained that while planning is important, it's necessary to accept that
planschangeandflexibilityisneededforthesemodifications.Overall,themanifestofocuses on
valuing individuals and interactions over processes and tools.
Downloadedbyudccssanthiya([email protected])
inincrements withuserinputalongtheway,asopposedtoafinalproductwithminimal user
interaction.
DevelopmentoftheAgileManifesto
ThisAgileprocesscontrastswiththetraditionalwaterfallapproachtosoftwaredevelopment. With
that approach, developers compile the needs and requirements of the users and then build the
software all at once. The completed project is released at the end of the project cycle. This is
similar to the software development lifecycle, which includes evaluating the existing
software, planning thenewsoftwarerequirements, designingthe proposedsoftware, developing
the new software, testing it, putting it into use and monitoring it.
TheAgileAlliancesaiditwasseekinganalternativetothewaterfall
model's"documentation-driven,heavyweightsoftwaredevelopmentprocesses."
TheAgileManifesto'spurpose
ProponentsofAgilemethodologiessaythefourvaluesoftheAgileManifestopromotea software
development process that focuses on quality by creating products that meet consumers'
needs and expectations.
Downloadedbyudccssanthiya([email protected])
The
12 principles ofAgile software development are a key part of theAgile Manifesto.
4valuesofAgile
ThefourcorevaluesofAgilesoftwaredevelopmentasstatedintheAgileManifestoareas follows:
1. Individualsandinteractionsoverprocessesand tools.
2. Workingsoftwareovercomprehensivedocumentation.
3. Customercollaborationovercontractnegotiation.
4. Respondingtochangeoverfollowingaproject plan.
Downloadedbyudccssanthiya([email protected])
The12principles
The Agile Manifesto goes beyond scoping out a software project and then developing and
releasingit.Perhapsthemostimportantaspectofthemanifestoistheclosecoordinationand regular
interactions with those who will be using the new or updated software.
Thefollowingarethe12principlesoftheAgile Manifesto:
• Meetingendusers'needswithearlyandcontinuousdeliveryof work.
• Beingopentochangesinrequirementsevenlateintheproject.
• Deliveringcompletedworkatregularintervals,preferablyshortones.
• Workingwiththeprojectteamandbusinessownersdaily.
• Assemblingamotivatedteam,providingthemwiththerightenvironmentandsupport, and
trusting them.
• Communicatingface-to-faceregularly.
• Usingcompletedworktomeasure progress.
• Creatingprocessesthatpromotesustainableeffortsandaconstantpaceof work.
• Requiringcontinuousattentiontoexcellencethroughgood design.
• Encouragingsimplicity.
• Recognizingthatthebestworkemergesfromself-organizedteamsthatdeliverthebest
architectures and designs.
• Reflectingregularlyonhowtheteamcanbemoreeffectiveandfine-tuningandadjusting the
approach.
Downloadedbyudccssanthiya([email protected])
WhatisAgileProjectManagement?
Since its inception, the Agile methodologyhas come a long way to become a popular
approach among a wide variety of organizations. For those unfamiliar with the term, Agile is
a method of project management where projects are organized into epics then broken down
into small manageable sections via chapters and sprints. While this method is most often
associated with software development and DevOps, it has a wide range of applications
throughout the business. It’s a set of principles aligned with business goals that adequately
handlesthelackofpredictabilitywhenitcomestoprojectmanagement.Agilemethodologies
include Scrum, Kanban, Extreme Programming (XP), and Adaptive Project Framework
(APF).
EthicsinAgileTeams
EthicsplayacrucialroleinAgileteams,astheyguidehowteammembersinteractwitheach
other,stakeholders,andthebroadercommunity.HerearesomekeyaspectsofethicsinAgile teams:
Transparency:Agileprinciplesemphasizetheimportanceoftransparency,bothwithinthe team
and with stakeholders. This means being honest about progress, challenges, and
potentialrisks.Transparentcommunicationfosterstrustandensuresthateveryoneinvolved has a
clear understanding of the project's status.
Downloadedbyudccssanthiya([email protected])
theimportanceofdifferentperspectivesandexperiences.Embracingdiversitynotonlyleads to
better outcomes but also creates a more equitable and inclusive workplace.
DataPrivacyandSecurity:Agileteamsoftenworkwithsensitiveinformation,suchasuser data or
proprietary business information. It's essential to prioritize data privacy and security,
adhering to relevant regulations and best practices to protect stakeholders' information.
SustainablePace:Agilemethodologiesemphasizemaintainingasustainablepaceofworkto
prevent burnout and promote long-term productivity. EthicalAgile teams prioritize the well-
being of their members, ensuring that no one is overburdened or exploited.
ContinuousImprovement:EthicalAgileteamsarecommittedtocontinuousimprovement, both
in terms of the product they deliver and the processes they use. This includes actively
seekingfeedback,learningfrommistakes,andadaptingtheirpracticestobettermeetethical
standards.
AgilityinDesign
Agility in design refers to the ability to quickly adapt and respond to changing requirements,
feedback,andcircumstancesthroughoutthedesignprocess.Herearesomekeyprinciplesand
practices for fostering agility in design:
IterativeApproach: Instead of aiming for a perfect design from the outset, embrace an
iterativeapproachwheredesignsevolvegraduallythroughmultiplecyclesofprototyping, testing,
and refinement. This allows for quick feedback loops and the flexibility to make
adjustments as needed.
FlexibleDesignToolsandMethods:Usetoolsandmethodsthatsupportflexibilityand rapid
iteration, such as wireframing andprototyping software, design systems, and agile design
methodologies like Lean UX or Design Sprints. These tools enable designers to quickly
explore and test ideas without getting bogged down in unnecessary detail.
Downloadedbyudccssanthiya([email protected])
MinimalViableProduct(MVP):Focusondeliveringtheminimumsetoffeaturesneededto
validate design hypotheses and gather feedback from users. By prioritizing essential features
and avoiding unnecessary complexity, teams can iterate more quickly and efficiently.
EmbraceChange:Finally,embracechangeasanaturalpartofthedesignprocess.Insteadof
resisting change or viewing it as a setback, see it as an opportunity to learn, innovate, and
create better designs. By remaining flexible and adaptable, designers can respond more
effectively to evolving requirements and user needs.
AgileSoftwareTesting
AgileTesting is a type of software testing that follows the principles of agile software
development to test the software application. All members of the project team along with the
special experts and testers are involved in agile testing. Agile testing is not a separate phase
anditiscarriedoutwithallthedevelopmentphasesi.e.requirements,designandcoding,and test case
generation. Agile testing takes place simultaneously throughout the Development Life Cycle.
Agile testers participate in the entire development life cycle along with development team
members and the testers help in building the software according to the customer requirements
and with better design and thus code becomes possible. The agile testing team works as a
single team towards the single objective of achieving quality. Agile
Testinghasshortertimeframescallediterations orloops.Thismethodologyisalsocalled the
delivery-driven approach because it provides a better prediction on the workable products in
less duration time.
• Agiletestingisaninformalprocessthatisspecifiedasadynamictypeoftesting.
• ItisperformedregularlythroughouteveryiterationoftheSoftwareDevelopment
Lifecycle (SDLC).
• Customersatisfactionistheprimaryconcernforagiletestengineersatsomestageinthe agile
testing process.
FeaturesofAgileTesting
Downloadedbyudccssanthiya([email protected])
Someofthekeyfeaturesofagilesoftwaretesting are:
• Simplisticapproach: In agile testing, testers perform only the necessary tests but at the
sametimedonotleavebehindanyessentialtests.Thisapproachdeliversaproductthatis simple
and provides value.
• Continuousimprovement:Inagiletesting,agiletestersdependmainlyonfeedbackand self-
learning for improvement and they perform their activities efficiently continuously.
• Self-organized:Agiletestersarehighlyefficientandtendtosolveproblemsbybringing teams
together to resolve them.
• Testersenjoywork:Inagiletesting,testersenjoytheirworkandthuswillbeableto deliver
a product with the greatest value to the consumer.
• EncourageConstantcommunication:Inagiletesting,efficientcommunication
channels are set up with all the stakeholders of the project to reduce errors and
miscommunications.
• Constantfeedback:Agiletestersneedtoconstantlyprovidefeedbacktothedevelopers if
necessary.
AgileTestingPrinciples
• Shorteningfeedbackiteration:InAgileTesting,thetestingteamgetstoknowthe
product development and its quality for each and every iteration. Thus continuous
feedback minimizes thefeedbackresponsetimeand thefixing costisalsoreduced.
• Testingisperformedalongside Agiletestingisnotadifferentphase.Itisperformed
alongsidethedevelopmentphase.Itensuresthatthefeaturesimplementedduringthat
iteration are actually done. Testing is not kept pending for a later phase.
• Involvementofallmembers:Agiletestinginvolveseachandeverymemberofthe
development team and the testing team. It includes various developers and experts.
• Documentationisweightless:Inplaceofglobaltestdocumentation,agiletestersuse
reusable checklists tosuggesttestsandfocusonthe essenceofthe testratherthan the
incidental details. Lightweight documentation tools are used.
• Cleancode:Thedefectsthataredetectedarefixedwithinthesameiteration.This ensures
clean code at any stage of development.
• Constantresponse:Agiletestinghelpstodeliverresponsesorfeedbackonanongoing basis.
Thus, the product can meet the business needs.
• Customersatisfaction: In agile testing, customers are exposed to the product throughout
the development process. Throughout the development process, the customer can modify
therequirements,andupdatetherequirementsandthetestscanalsobechangedasperthe changed
Downloadedbyudccssanthiya([email protected])
requirements.
• Test-driven:Inagiletesting,thetestingneedstobeconductedalongsidethedevelopment
process to shorten the development time. But testing is implemented after the
implementation or when the software is developed in the traditional process.
AgileTestingMethodologies
Someoftheagiletestingmethodologies are:
1. Test-DrivenDevelopment(TDD): TDD is the software development process relying on
creating unit test cases before developing the actual code of the software. It is an iterative
approachthatcombines3operations,programming,creationofunittests,andrefactoring.
2. BehaviorDrivenDevelopment(BDD): BDD is agile software testing that aims to
document and develop the application around the user behavior a user expects to
experiencewheninteractingwiththeapplication.Itencouragescollaborationamongthe
developer, quality experts, and customer representatives.
3. ExploratoryTesting: In exploratory testing, the tester has the freedom to explore the
codeandcreateeffectiveandefficientsoftware.Ithelpstodiscovertheunknownrisks and
explore each aspect of the software functionality.
4. AcceptanceTest-DrivenDevelopment(ATDD):ATDDisacollaborativeprocesswhere
customer representatives, developers, and testers come together to discuss the
requirements, and potential pitfalls and thus reduce the chance of errors before coding
begins.
5. ExtremeProgramming(XP):Extremeprogrammingisacustomer-oriented
methodologythathelpstodeliveragoodqualityproductthatmeetscustomer
expectations and requirements.
6. Session-BasedTesting: It is a structured and time-based approach that involves the
progressofexploratorytestinginmultiplesessions.Thisinvolvesuninterruptedtesting
sessionsthataretime-boxedwithadurationvaryingfrom45to90minutes.Duringthe session,
the tester creates a document called a charter document that includes various
information about their testing.
7. DynamicSoftwareDevelopmentMethod(DSDM): DSDMisanagileprojectdelivery
framework that provides a framework for building and maintaining systems. It can be
used by users, developers, and testers.
8. CrystalMethodologies:Thismethodologyfocusesonpeopleandtheirinteractionswhen
working on the project instead of processes and tools. The suitability of the crystal
method depends on three dimensions, team size, criticality, and priority of the project.
Downloadedbyudccssanthiya([email protected])
AgileTestingStrategies
1. Iteration0
• Thisstageinvolvesexecutingthepreliminarysetuptaskssuchasfindingpeoplefor
testing, preparing the usability testing lab, preparing resources, etc.
• Thebusinesscasefortheproject,boundarysituations,andprojectscopeareverified.
• Importantrequirementsandusecasesaresummarized.
• Initialprojectandcostvaluationare planned.
• Risksareidentified.
• Outlineoneormorecandidatedesignsforthe project.
2. ConstructionIteration
Downloadedbyudccssanthiya([email protected])
3. ReleaseEndGame
This phase is also known as the transition phase. This phase includes the full system testing
andtheacceptancetesting.Tofinishthetestingstage,theproductistestedmorerelentlessly while it
is in construction iterations. In this phase, testers work on the defect stories. This phase
involves activities like:
• Trainingend-users.
• Supportpeopleandoperational people.
• Marketingoftheproduct release.
• Back-upandrestoration.
• Finalizationofthesystemanduser documentation.
4. Production
Itisthelastphaseofagile testing.Theproductisfinalizedinthisstageaftertheremovalof all defects
and issues raised.
AgileTestingQuadrants
Thewholeagiletestingprocessisdividedintofourquadrants:
1. Quadrant1(Automated)
Thefirstagilequadratfocusesontheinternalqualityofcodewhichcontainsthetestcases and test
components that are executed by the testengineers. Alltest cases are technology-
Downloadedbyudccssanthiya([email protected])
drivenandusedforautomationtesting.Allthroughtheagilefirstquadrantoftesting,the following
testing can be executed:
• Unittesting.
• Component testing.
2. Quadrant2(ManualandAutomated)
The second agile quadrant focuses on the customer requirements that are provided to the
testingteambeforeandthroughoutthetestingprocess.Thetestcasesinthisquadrantare
business-drivenandareusedformanualandautomatedfunctionaltesting.Thefollowing
testing will be executed in this quadrant:
• Pair testing.
• Testingscenariosandworkflow.
• Testinguserstoriesandexperienceslikeprototypes.
3. Quadrant3(Manual)
Thethirdagilequadrantprovidesfeedbacktothefirstandthesecondquadrant.Thisquadrant involves
executing many iterations of testing, these reviews and responses are then used to strengthen
the code. The test cases in this quadrant are developed to implement automation testing. The
testing that can be carried out in this quadrant are:
• Usabilitytesting.
• Collaborativetesting.
• Useracceptancetesting.
• Collaborativetesting.
• Pairtestingwith customers.
4. Quadrant4(Tools)
The fourth agile quadrant focuses on the non-functional requirements of the product like
performance,security,stability,etc.Varioustypesoftestingareperformedinthisquadrantto deliver
non-functional qualities and the expected value. The testing activities that can be performed
in this quadrant are:
• Non-functionaltestingsuchasstresstesting,loadtesting,performancetesting,etc.
• Securitytesting.
Downloadedbyudccssanthiya([email protected])
• Scalabilitytesting.
• Infrastructuretesting.
• Datamigration testing.
AgileTestingLifeCycle
Theagiletestinglifecyclehas5differentphases:
1. ImpactAssessment: This is the first phase of the agile testing life cycle also known as
the feedback phase where the inputs and responses are collected from the users and
stakeholders.Thisphasesupportsthetestengineerstosettheobjectiveforthenextphase in the
cycle.
2. AgileTestingPlanning:Inthisphase,thedevelopers,customers,testengineers,and
stakeholders team up to plan the testing process schedules, regular meetings, and
deliverables.
3. ReleaseReadiness: This is the third phase in the agile testing lifecycle where the test
engineersreviewthefeatureswhichhavebeencreatedentirelyandtestifthefeaturesare ready to
go live or not and the features that need to be sent again to the previous development
phase.
4. DailyScrums:Thisphaseinvolvesthedailymorningmeetingstocheckontestingand
determine the objectives for the day. The goals are set daily to enable test engineers to
understand the status of testing.
Downloadedbyudccssanthiya([email protected])
5. TestAgilityReview: This is the last phase of the agile testing lifecycle that includes
weeklymeetingswiththestakeholderstoevaluateandassesstheprogressagainstthe goals.
AgileTestPlan
An agile test plan includes types of testing done in that iteration like test data requirements,
testenvironments, andtestresults.Inagiletesting,atestplaniswrittenandupdatedforevery release.
The test plan includes the following:
• TestScope.
• Testinginstruments.
• Dataandsettingsaretobeusedforthe test.
• Approachesandstrategiesusedtotest.
• Skillsrequiredtotest.
• Newfunctionalitiesarebeingtested.
• LevelsorTypesoftestingbasedonthecomplexityofthefeatures.
• Resourcing.
• DeliverablesandMilestones.
• InfrastructureConsideration.
• LoadorPerformanceTesting.
• MitigationorRisks Plan.
LimitationsofAgileTesting
Belowaresomeofthelimitationsofagilesoftwaretesting:
• Projectfailure:Inagiletesting,ifoneormoremembersleavethejobthenthereare chances
for the project failure.
Downloadedbyudccssanthiya([email protected])
• Limiteddocumentation: In agile testing, there is no or less documentation which makes
itdifficulttopredicttheexpectedresultsasthereareexplicitconditionsandrequirements.
• Introducenewbugs: Inagilesoftwaretesting,bugfixes,modifications,andreleases
happenrepeatedlywhichmaysometimesresultintheintroductionofnewbugsinthe system.
• Poorplanning: In agile testing, the team is not exactly aware of the end result from day
one,soitbecomeschallengingtopredictfactorslikecost,time,andresourcesrequiredat the
beginning of the project.
• Nofiniteend: Agile testing requires minimal planning at the beginning so it becomes
easytogetsidetrackedwhiledeliveringthenewproduct.Thereisnofiniteendandthere is no
clear vision of what the final product will look like.
ChallengesDuringAgileTesting
Belowaresomeofthechallengesthatarefacedduringagiletesting:
Downloadedbyudccssanthiya([email protected])
• AutomatedUIslowtoexecute:AutomatedUIgivesconfidenceinthetestingbutthey are
slow to execute and expensive to build.
• Useamixoftestingtypes:Toachievetheexpectedqualityoftheproduct,amixtureof testing
types and levels must be used.
• PoorAutomationtestplan:Sometimesautomationtestsplanispoorlyorganizedand
unplanned to save time which results in a test failure.
• Lackofexpertise:Automatedtestingsometimesisnottheonlysolutionthatshouldbe used, it
can sometimes lack the expertise to deliver effective solutions.
• Unreliabletests:Fixingfailingtestsandresolvingissuesofbrittletestsshouldbethetop priority
to avoid false positives.
AgileDocumentation
Agile is a lightweight framework that helps people, teams, and organizations generate value
throughadaptivesolutionsforcomplexproblems.Agiledocumentationreferstothepractice
ofproducingdocumentationfollowingtheprinciplessetupintheAgilemanifesto.Technical
writers work closely with software developers to prepare product documentationat a pace
aligned with the developers with sprints.
The technical documentation adapts agile ceremonies including standups, sprint planning,
and retrospective. All the learnings are shared amongst the product owner, and product
managers.Adaptingtheprinciplesoftheagilemanifestoinsidetheproductdocumentation team
supplements product features and provides a complete product experience
Downloadedbyudccssanthiya([email protected])
Productfeature+productdocumentation=Seamlessproductexperience
The agile manifesto laysout fundamental principle of the agile software development
process such as
• Individualsandinteractionsoverprocessesandtools
• Workingsoftwareovercomprehensivedocumentation
• Customercollaborationovercontractnegotiation
• Respondingtochangeoverfollowingaplan
• Agiledocumentationprocessestosupplementsoftwaredevelopersprovidingbusinessagility
• Documentationteamandsoftwaredevelopersadoptingthesameagilemethodologyand
processes helps to get consistent practices across the team
• Agiledocumentationprocessessetthestagefortightercollaborationwithsoftware
developers
• Agiledocumentationalsohelpswithreducingtimetovalueforcustomerstoutilizethe
software solution holistically with accurate documentation
• Communicatetechnicalinformationtoyourcustomerssuchthattheproductvaluecanbe
maximized
• Compliance/regulatorybodiesmandatestohavetechnicaldocumentationaspartoftheir
software product
Downloadedbyudccssanthiya([email protected])
AgileDrivers
InthecontextofAgilemethodologies,"Agiledrivers"typicallyrefertothekeyprinciplesor values
that drive and guideAgile practices. These drivers are foundational toAgile frameworks like
Scrum, Kanban, and Extreme Programming. The most commonly recognized Agile drivers
are:
WorkingSoftware(orProduct)overComprehensiveDocumentation:Agile places a
strongemphasisondeliveringtangiblevaluetocustomersintheformofworkingsoftwareor
products.Whiledocumentationisimportant,Agileprioritizesactualdeliverablesover extensive
documentation.
CustomerCollaborationoverContractNegotiation:Agileencouragesclosecollaboration with
customers and stakeholders throughout the development process. By involving customers
early and often, teams can ensure that the product meets their needs and expectations.
AgileCapabilities
Agile capabilities refer to the skills, practices, and organizational traits that enable teams and
organizationstoeffectivelyimplementAgilemethodologiesandprinciples.Thesecapabilities are
essential for achieving the desired outcomes ofAgile, such as delivering value to customers
more rapidly, responding to change efficiently, and fostering a culture of continuous
improvement. Here are some key agile capabilities:
Cross-functionalTeams:Agileteamsaretypicallycross-functional,meaningtheyinclude
members with diverse skills and expertise necessary to deliver a product increment.These
may include developers, designers, testers, and product managers, among others.
IterativeandIncrementalDevelopment:Agileteamsworkinshortiterations,delivering small
Downloadedbyudccssanthiya([email protected])
increments of value at regular intervals. This iterative approach allows for quick feedback
and enables teams to respond to changing requirements or priorities.
User-CentricDesign:Agileemphasizesunderstandingandprioritizinguserneeds.Teams should
be capable of conducting user research, creating personas, and incorporating user feedback
into their design and development processes.
ContinuousIntegrationandDelivery:Agileteamsintegratecodechangesfrequentlyand aim to
deliver working software or product increments on a regular basis. This requires robust
practices for automated testing, deployment, and monitoring.
AdaptabilityandFlexibility:Agileteamsmustbeabletoadapttochangingrequirements,
priorities, and market conditions. This requires a culture of flexibility, where teams are
empowered to make decisions and adjust their plans as needed.
TransparencyandVisibility:Agilepromotestransparencyandvisibilityintotheworkbeing done
and the progress being made. Teams should have the capability to track and visualize
theirwork,shareinformationopenly,andprovidestakeholderswithinsightintoprojectstatus and
risks.
EmpiricalProcessControl:Agileisbasedontheprinciplesofempiricalprocesscontrol, which
involves making decisions based on observation, experimentation, and feedback.
Teamsshouldbecapableofcollectingdata,analyzingmetrics,andusingevidencetoinform their
decisions and improve their processes.
Agile values are the core principles that underpinAgile methodologies and guide the
behavioranddecision-makingofAgileteams.ThesevaluesarearticulatedintheAgile Manifesto,
which was created by a group of software developers in 2001. TheAgile Manifesto consists
of four key values:
Downloadedbyudccssanthiya([email protected])
and their interactions in the development process. While processes and tools are
necessary,Agileprioritizeseffectivecommunication,collaboration,andteamworkamong team
members.
WorkingSoftwareoverComprehensiveDocumentation:Agileemphasizestheprimary goal
of delivering working software or products that provide tangible value to customers.
Whiledocumentationisimportant,Agilevaluesdeliveringworkingsolutionsoverextensive documentation.
CustomerCollaborationoverContractNegotiation:Agileencouragesclosecollaboration with
customers and stakeholders throughout the development process. By involving customers
early and often, teams can ensure that the product meets their needs and expectations.
Downloadedbyudccssanthiya([email protected])