0% found this document useful (0 votes)
32 views46 pages

Unit 5 - 1

Uploaded by

Kukum Chouhan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
32 views46 pages

Unit 5 - 1

Uploaded by

Kukum Chouhan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 46

Industry Trends

Unit:5
Knowledge of Agile Methods
Very Extensive
Extensive 2%
11% Very Limited
25%

Average
33%

Limited
29%
Copyright 2006 Scott W. Ambler
Have You Adopted An Agile Methodology?

Yes
41%

No
59%

Copyright 2006 Scott W. Ambler


The Agile Adoption Curve
The Agile Adoption Curve and ‘Chasms’

Consideration

Investigation

Routinization
Awareness

Acceptance
Adaptation
Adoption

Infusion
Pilot

“We’re “Fail to
different” Scale”

Initiation Adoption Assimilation

Copyright © 2010 AgileInnovation


How Have Agile Approaches Affected Your
0%
Productivity?
4%

32% 23%

Much Lower
Somewhat Lower
No Change
Somewhat Higher
Much Higher
Don't Know

8%

33%
Copyright 2006 Scott W. Ambler
My 10 things for making your Agile adoption successful

Use a physical board


Start collecting and using statistics
Engage a coach/consultant
Action over talking
Give everyone training and start group wide discussions
Enthuse, Pull, don’t Push
Be clear on Why you are going Agile
Process and technical, Adopt technical side as well as process side
Get requirements flow clear and clean
Structural changes - Functional groups
ALM: Dealing with Complexity
Can Application Lifecycle Management (ALM) work in an environment that
grows ever more complex?
And how does this relate to the first Agile principle, which promotes “people
over processes and tools?”
Typical software development
Application Lifecycle Management (ALM)
Application lifecycle management (ALM) is the supervision of a software
application from its initial planning through retirement. It also refers to how
changes to an application are documented and tracked.

“Application Lifecycle Management (ALM) is a continuous process of managing


the life of an application through governance, development and
maintenance.”

“ALM is a set of disciplines that together govern the process of turning


business ideas into software.”

“Any tools, technologies, or techniques that attempt to connect and maintain


connections between activities over the life of a piece of software – from the
first glint in the glimmer of an executive's eye, through system retirement.”
…to absolutely terrible
The Case for ALM
• IT is fundamental to business value and competitiveness in the 21st
century
• Custom application development is growing in importance and value
• Agile, delivery oriented methods are on the rise
• Cross platform is a reality
• Developers need a collection of tools

The need for a consistent, flexible


approach to building software that
focuses on delivering business value
Agenda
• Why does ALM matter?
• How effective are organizations using ALM?
• Future state ALM practices
ALM 1.0
Hidden costs of ALM 1.0
ALM 2.0
Benefits of ALM 2.0
Time is right for ALM 2.0+
• Artifact centric approach proving difficult to
implement and manage
• Cross platform requires complex integrations
• Simplicity more important than features
• Hand off culture replaced with colloboration
Change is afoot in the ALM space
“Do you agree or disagree with the following statement: We do not contemplate any
significant changes in our ALM toolset in the next 2-3 years”

Base: 211 European application development professionals, Q4 2008


Base: 219 US application development professionals, Q1 2009 (WIP)
Agile ALM

• “The typical project is a collection of ideas


held in the minds of the people on the project.
[…] A project is not the sum of all of its
documents or even its code. A great deal of
the context of a project lies in its participants.”
• -Matt Heusser
AGILE ALM
• Agile ALM is about people, culture, processes and tools. In a nutshell,
Agile ALM
o Is the marriage of business management to software engineering
o Targets processes and tools working together seamlessly, without silos
(silos are for farmers!)
o Spans development phases and project roles to foster communication
and team collaboration
o Enriches ALM with Agile strategies
o Is based on Software Configuration Management and version control
o Is based on a set of lightweight tools, enabling a team to collaborate
efficiently
o Includes artifact types to continuous integration, inspection and
deployment including Java, Groovy, Scala, Cobol, .NET, and others
o Sets up and uses an unified infrastructure
7 tips
for Agile ALM

• 1.High-Bandwidth Communication
• 2.Agile Best Practices
• 3.Bottom-up Infrastructure
• 4.Multi-Vendor Approach
• 5.Distributed Information
• 6.Agile Improvement
• 7.Adaptable Tools
1. High-Bandwidth Communication

• ALM tools should support high-bandwidth


communication, and should not needlessly
replace person-person communication with
person-tool communication.
• Example: facilitation and storage of photos,
audio, video.
2. Agile Best Practices

• ALM tools must natively support all common


Agile practices.
• Example: user stories, acceptance testing,
iterative planning, continuous flow, unit
testing, refactoring, automated builds,
continuous integration, etc…
3. Bottom-Up Infrastructure

• The ALM infrastructure must be selected, built


and maintained by the team(s) themselves.
Nothing should be mandated by those who
don’t have to work with it.
• Example: a team can select its own favorite
automatic build system or Agile planning
tools.
4. Multi-Vendor Approach

• A healthy ALM strategy will allow for multiple


vendors of tools. The benefits of specialization
(of tools) often outweighs the cost of
integration. There is no “single truth”.
• Example: use Visual Studio Team System
except source control.
5. Distributed Information

• ALM tools should aim for accessibility. The


goal is collaboration, not centralization.
Information should be radiated, not
concentrated.
• Example: status updates on whiteboard and in
task tracking tool.
6. Agile Improvement

• Modeling of processes is a form of prediction,


and thus unreliable. Allow for emergent
design of the ALM infrastructure. Grow it in an
Agile way.
• Example: use a continuous improvement
backlog for the ALM infrastructure.
7. Adaptable Tools

• ALM tools must be extensible, customizable


and adaptable, so that they can grow together
with the project.
• Example: open API’s, web services, plug-ins,
widgets, macros, etc.
Agile method applicability
 Product development where a software company is
developing a small or medium-sized product for sale.
 Custom system development within an organization,
where there is a clear commitment from the customer to
become involved in the development process and where
there are not a lot of external rules and regulations that
affect the software.
 Because of their focus on small, tightly-integrated teams,
there are problems in scaling agile methods to large
systems.

Chapter 3 Agile software development 32


Distribute Teams
Distributed Teams
• Where geographically distributed teams are necessary remember that co-
location is ‘good’ so optimize around this as much as possible
– Have development teams focus on ‘Feature’ sets
– Keep Feature Teams as ‘agile’ as possible
– Ensure teams receive sufficient detail to build
what is required:
• Architecture
• Requirements
• User Interfaces
– Ensure that teams are enabled by an effective ‘ScrumMaster’ to escalate issues and resolve
roadblocks
– Ensure retrospectives occur at the team level at the end of iterations
• Support teams with a Program Team to provide overall guidance/direction
• Establish an Architecture Team which is responsible for ‘feeding’ Feature
teams with frameworks, components and guidelines.
Distributed Teams
• Collocation is ideal
– Anything else is less than ideal!
• If the teams have to be distributed – minimise the communications gap
– Instant Messenger
– VOIP enables low cost voice communication - Skype
– Web Conferencing for team presentations – Wired Red, PlaceWare
– Good quality phone conference facilities
– Programme level wiki
– Face to Face meetings/working – swap team members
• Maintain daily “Stand-up” meetings
• Ensure the teams have an integrated development infrastructure
– Team Foundation Server and Visual Studio Team System
• Ensure regular integration of all teams output
– TFS Build & Deployment
Benefits of Agile Software Development

• Stakeholder Engagement
• Transparency
• Early and Predictable Delivery
• Predictable Costs and Schedule
• Allows for Change
• Focusing on Business Value
• Focusing on Customers
• Improving Quality
Challenges
• Multiple small projects within a cycle
– Not traditional for Agile practices
• Lack of documented requirements
– What are user stories and when do you need
them?
– Teams of librarians work slowly
Challenges
• Prioritization difficult for library staff
– Work at release level
• Testing
– How and when to automate for small
projects?
– No ‘QA’ experts
• Simultaneously handle support and
development
Challenges
• Lack of visibility on project status
• Delay in feedback cycle
• Loss of business and technical contexts
• Lack of common infrastructure
• Decrease in communication bandwidth
• Higher documentation overhead
• Lack of trust
Risks and mitigation
• Risk :There is resistance to acceptance of Agile principles.
Mitigation plan
1. Train and coach project teams and the customer on Agile principles and frameworks.
2. Show case studies of successful (and failed) Agile transformations.
3. Conduct "boot camp" training to induce cohesiveness and spread Agile awareness
within teams.
• Risk :Less experienced team members are not exposed to the customer
Mitigation plan
1. Plan to execute Sprint Zero from one location (the customer travels to the offshore
location, or offshore members travel to the customer's location). Face-to-face
interactions early in the project help build rapport and trust.
2. Understand cultural differences and provide training if necessary.
3. Encourage team members to talk during sprint ceremonies and back them if they
falter initially.
4. Assign responsibilities to each team member based on user story/functional
area/task and make them the owners of their respective areas.
5. Use the latest technologies (video conferencing, Lync, etc.) for sprint ceremonies to
give better visibility and understanding during conversations.
Conti..

• Risk :The spirit of Agile is not maintained over


time
Mitigation plan
1. Periodic training/sessions on Agile principles should be conducted.
2. New trends should be explored and adopted.
3. A few checks that will keep Scrum ceremonies interactive and fruitful, sprint after sprint,
are keeping the Daily Scrum crisp and short, addressing sprint review action items on time,
implementing new ideas and methods whenever applicable, conducting Agile games and
quizzes, etc.

• Risk : Frequent changes in team composition nullify the team's velocity/capacity.


Mitigation plan
1. Prepare a release road map; keep the team unchanged for a considerable period of time
before dismantling it.
2. Cross-train people to address unplanned leave/attrition.
Agile project on cloud
Agile
Agile is a development methodology. The idea behind Agile is that you Agile + Cloud
interactively prototype your ideas until you and your users are happy. Agile Cloud is an information platform for designing complex information system
When you are ready, it goes into production. Over time, you continue to requirements very quickly while maintaining a high quality information model. It is
make small changes to your information system. Agile is well suited to industry agnostic and can be used in any known industry or business application.
information systems controlled by domain experts.
The better the information design, the less work is required to implement the
application. Agile Cloud takes this idea to it's ultimate logical conclusion. The Agile
Agile software development methodology has been around for many Cloud information design is as near to perfect as can be. This results in a dramatic
years. The Manifesto for Agile Software Development was released in reduction in the amount of code required to design an information application, almost
2001 and its practices have been widely adopted in developing a down to the point of zero coding. Many Agile Cloud implementation are complete code
software product. But what about using agile methodology to deliver a free meaning no human code was written.
service project? Agile Cloud is two things. First, it is a design tool for creating high quality information
Traditionally, a contract is created to define the scope of the work, systems, very fast. Our primary reason for being is to ensure that your information
deliverables, and milestones. Such a contract follows basic project system has data integrity, is accurate and reliable.
management principles and presents a few issues: Secondly, it is an information system for data entry and reporting. For the large
● It’s hard to accurately predict the effort needed to deliver a service. Enterprise, it is designed to compliment your ERP systems. ERP systems are great, they
Even looking at history and experience, each client implementation is are generally well controlled and have excellent structure, but they are not flexible.
different, with different requirements. To compensate for unseen Agile Cloud provides the control of an ERP system with flexibility, the ability to change.
problems, the knobs in the contract (number of resources, duration,
price) are inflated.
The following facets of the project were most important:
● It leaves little margin for change. As you start service implementation,
● Individuals and interactions: The team acted with great flexibility on the
requirements regularly change as part of business dynamics. Being
requirements and continued delivering functionality (user stories) every sprint.
bound to a contract leaves little flexibility to change the scope.
Sometimes a contract does define a process to change scope, at the ● Working software: We showed a working solution at the end of the first sprint, two
expense, however, of negotiating additional cost and duration. weeks after starting the project.
● It doesn’t promote collaboration with the customer. Although the ● Customer collaboration: The project was a true partnership with the customer, where
project should define milestones and status updates, it doesn’t bring team members worked together to achieve common goals. As the project progressed,
the benefit of partnering with stakeholders, obtaining feedback and we transferred the responsibility of many tasks to the customer, reducing the need of
changing course. software services to implement the project.
● Responding to change: The prioritization of the requirements changed constantly
throughout the project. The project owner did a great job of cataloging the
requirements (backlog) and defining the priorities.
Cloud Although this methodology can be applied in any service delivery project, it is
The idea behind Cloud computing is that your information is just there accentuated with cloud, when the sponsor of a cloud project expects results to come in
and you don't know or care where it is being looked after. Cloud weeks instead of months.
computing allows for experts in security, backups and infrastructure to
take care of the complexity so you can focus on you business.
6 Ways the Cloud Enhances Agile Software
Development
1. Cloud Computing Provides an Unlimited Number of Testing and Staging Servers.
When agile development is used without virtualization or clouds, development teams are limited to one physical server
per development, staging and production server need. However, when virtual machines or cloud instances are used,
development teams have practically an unlimited number of servers available to them. They do not need to wait for
physical servers to become free to begin or continue their work.
2. It Turns Agile Development Into a Truly Parallel Activity.
You may use agile development but still experience delays in provisioning server instances and in installing necessary
underlying platforms such as database software. Just as the Commonwealth Bank reduced the provisioning of an Oracle
database from three months to two minutes, agile development teams can provision the servers they need quickly
themselves, rather than wait for IT operations to do it for them.
Although an agile methodology aims to squeeze all the inefficiencies and delays out of software development, in practice
it becomes a serial activity. Cloud computing can push it toward becoming a more parallel activity than it once was. This
leads to more efficient, more effective and better utilized agile software development teams.
3. It Encourages Innovation and Experimentation.
Being able to spawn as many instances as needed enables agile development groups to innovate. If a feature or a story
looks interesting, a team can spawn a development instance quickly to code it and test it out. There’s no need to wait for
the next build or release, as is the case when a limited number of physical servers are available. When adding cloud
computing to agile development, builds are faster and less painful, which encourages experimentation.
4. It Enhances Continuous Integration and Delivery.
As stated, cloud instances and virtualization greatly enhance continuous integration and delivery. Builds and automated
tests take time. Agile development groups may need to subsequently fix the code for tests that fail during the automated
testing—and they need to do this again and again until the build passes all the tests.
Having a large number of virtual machines available to the agile development group in its own cloud or on the public
cloud greatly enhances the speed of continuous integration and delivery.
6 Ways the Cloud Enhances Agile Software
Development
5. It Makes More Development Platforms and External Services Available.
Agile development groups may need to use a variety of project management, issue management, and, if continuous integration is
used, automated testing environments. A number of these services are available as Software as a Service (SaaS) offerings in the
cloud.
• Agile development can use a combination of virtualization, private clouds and the public cloud at the Infrastructure as a
Service (IaaS) level. Such offerings include Amazon Web Services, GoGrid, OpSource and RackSpace Cloud.
• Then comes the use of Platform as a Service (PaaS) instances such as the Oracle Database Cloud Service, the
Google App Engine and the Salesforce.com platform force.com, all of which include databases and language environments
as services.
• Finally, there are a number of SaaS services that specifically assist agile development, including Saleforce.com, the
Basecamp project management portal and TestFlight, which provides hosted testing automation for Apple iOS devices.
6. It Eases Code Branching and Merging.
In theory, agile development assumes that all features can be broken down into stories of uniform size and slated for builds. In
practice, agile projects may encounter features whose development efforts last longer than a build or even a release. In code
refactoring efforts, current releases may need to be enhanced with minor enhancements and used in production, all while a
major redesign of code is going on. Code branching is necessary in these cases. Code branching and merging involves juggling
many versions of development and staging builds. With virtualization and cloud computing, you can avoid buying or renting
additional physical servers for these purposes.
Overall, virtualization and cloud computing remove the dependencies of test and
development servers on physical servers, whether they are virtual machines with just an
operating system installed or fully configured servers with platforms such as database
software, language or code libraries. Virtualization and cloud computing also become
indispensable if agile teams intend to practice continuous integration and delivery methods.
This moves agile development more toward a parallel activity, rather than a serial one, by
eliminating the delays in provisioning. In turn enterprises can better align innovative
development projects with business goals.
Agile + Cloud
Success Factors
Finally, let’s talk about some practical steps you can take in the process of transforming your organization. While agile cloud transformations aren’t
easy, the following guidelines can help you succeed.
• Think big. As noted above, first and foremost, you need to set a bold vision (your North Star) that aligns your technology and business
strategies. McKinsey research has found that organizations with successful transformations deploy more advanced technologies. Setting an
ambitious goal creates a sense of urgency and excitement that can help attract talent and build momentum.
• Communicate, communicate, communicate. Of course, a bold vision is useless without broad organizational buy-in. To get buy-in,
demonstrate your commitment by constantly and consistently articulating your vision and the path to success, preferably with storytelling
and via multiple channels.
• Close capability gaps. The AWS Cloud Adoption Framework (AWS CAF) provides a comprehensive framework for evaluating your cloud
transformation readiness. It describes key capabilities underpinning cloud transformations from six perspectives: business, people,
governance, platform, security, and operations. The AWS CAF can help you identify relevant technical and business stakeholders, address
gaps in skills and processes, and transition from a traditional model to a cloud operating model. Leverage the AWS CAF to assess your
capabilities and develop an action plan for capability uplift.
• Establish a transformation office. Implement new organizational structures, allocate dedicated transformation resources, and continuously
monitor progress. Do not simply add additional transformation responsibilities to peoples’ existing day jobs. A transformation office
facilitates decision-making and drives accountability and transparency.
• Transform your operating model. Your operating model describes the relationship and interactions between consumers and suppliers of
cloud services or products. It specifically describes how your organization will use the the cloud to provide digital products and services to
internal and external consumers. The new organizational structure should be formed around cross-functional product teams, with metrics
that align with business outcomes. This may include aspects of Bimodal IT, which advocates maintaining two operating models in parallel,
both of which play an essential role in digital transformation.
• Encourage experimentation. Experimentation is at the heart of agile cloud transformations. To iterate quickly and learn by doing, you need
to encourage experimentation and accept occasional setbacks.
• Focus on organizational change management (OCM). Our experience indicates that resistance to change is one of the most challenging and
underestimated roadblocks to cloud transformation success. Leverage the AWS OCM 6-Point Framework and Essentials Toolkit to facilitate
the adoption of organizational change associated with your cloud transformation.

You might also like