Taking the development world by storm since its introduction and popularization in 2001, the Agile Software Development model aims to keep development goals and timelines short and sweet, with frequent testing to deliver functionality as soon as it is available and ready. The Agile method promotes adaptive planning and encourages flexibility and rapid adoption to change.
The key is in the Agile technique compressing the five sequences of the conventional software development method – called the Waterfall method – to a one-week cycle. It manages to do this by developing a system through repeated cycles (iterative) and in smaller portions (incremental), allowing developers to test and review during development. Speed, lower cost and flexibility are key benefits.
Manifesto for Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
Twelve Principles behind the Agile Manifesto
We follow these principles:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals.Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development.The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
What is Agile Development
Agile development is not a methodology in itself. It is an umbrella term that describes several agile methodologies. At the signing of the Agile Manifesto in 2001, these methodologies included Scrum, XP, Crystal, FDD, and DSDM. Since then, Lean practices have also emerged as a valuable agile methodology and so are included under the agile development umbrella in the illustration.
The DSDM (Dynamic Software Development Method) was developed to fill in some of the gaps in the RAD method by providing a framework which takes into account the entire development cycle. The main features of the DSDM method are as follows:
- User involvement
- Iterative and incremental development
- Increased delivery frequency
- Integrated tests at each phase
- The acceptance of delivered products depends directly on fulfilling requirements.
FDD is a wrapper methodology, in that it allows you to apply a method to manage projects at a very high level, but it still allows you to use other methodologies at a lower level. FDD’s focus is on being able to set estimates and schedules and to report on the status of a project as a whole, or at a very granular level, but it doesn’t prescribe a specific method to apply in order to create the schedule, leaving that up to you to decide. The idea is that you can look at your project and state with some certainty what the project status is, whether you are on time, slipping, early and so on.
Lean Thinking is a way of approaching system optimization focusing on reducing waste and improving overall flow of value through a system. Lean has a rich history in manufacturing and has gained popularity in software development circles in recent years.
Lean comes from Lean Manufacturing and is a set of principles for achieving quality, speed & customer alignment. There are 7 Principles of Lean Software Development:
- Eliminate Waste
- Build Quality In
- Create Knowledge
- Defer Commitment
- Deliver Fast
- Respect People
- Optimize the Whole
Applying these principles to the work of delivering a software product is not an end goal. One is not said to “Do Lean”; rather one uses Lean principles to guide decision making and to choose techniques that will improve a system overall. For example, the practice of TDD (Test-Driven Development) builds integrity in to software by inspecting it at the point of creation, thus supporting the Lean principle of building integrity in during the creation process.
Extreme Programming (XP)
As developers we need to remember that XP is not the only game in town.- Pete McBreen
Extreme Programming emphasizes teamwork. Managers, customers, and developers.It improves a software project in five essential ways; communication, simplicity, feedback, respect, and courage.
So according to Wiki definition “Extreme Programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent “releases” in short development cycles, which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.”
Extreme Programming is a set of simple and concrete practices that combine into an agile development process. XP is a good general-purpose method for developing software. Many project teams will be able to adopt it as is. Many others will be able to adapt it by adding or modifying
- The ancestor of most Agile methodologies
- Kent Beck created quite a buzz in the late 1990s and early 2000s
- Blends processes and practices
Scrum is an iterative and incremental agile software development framework for managing software projects and product or application development. Its focus is on “a flexible, holistic product development strategy where a development team works as a unit to reach a common goal” as opposed to a “traditional, sequential approach“.
- Scrum was first defined as “a flexible, holistic product development strategy in 1986 by Hirotaka Takeuchi and Ikujiro Nonaka.
- In 1995, Sutherland and Schwaber jointly presented a paper describing the Scrum methodology. First public presentation.
Well-known agile software development methods include:
- Agile Modeling
- Agile Unified Process (AUP)
- Crystal Clear
- Crystal Methods
- Dynamic Systems Development Method (DSDM)
- Extreme Programming (XP) (Extreme programming is actually not regarded as Agile Software Development by many Academics)
- Feature Driven Development (FDD)
- Graphical System Design (GSD)
- Lean software development
- Velocity tracking
- Software Development Rhythms
Philosophical Difference – Adaptive Vs. Predictive
Agile methods lie on the adaptive side of the continuum. Adaptive methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well. An adaptive team will have difficulty describing exactly what will happen in the future. The further away a date is, the more vague an adaptive method will be about what will happen on that date. An adaptive team cannot report exactly what tasks they will do next week, but only which features they plan for next month. When asked about a release six months from now, an adaptive team might be able to report only the mission statement for the release, or a statement of expected value vs. cost.
Predictive methods, in contrast, focus on analysing and planning the future in detail and cater for known risks. In the extremes, a predictive team can report exactly what features and tasks are planned for the entire length of the development process. Predictive methods rely on effective early phase analysis and if this goes very wrong, the project may have difficulty changing direction. Predictive teams will often institute a change control board to ensure that only the most valuable changes are considered.
In 2008 the Software Engineering Institute (SEI) published the technical report “CMMI or Agile: Why Not Embrace Both” to make clear that Capability Maturity Model Integration and agile can co-exist. CMMI Version 1.3 includes tips for implementing Agile and CMMI.
- Customer satisfaction by rapid, continuous delivery of useful software.
- People and interactions are emphasized rather than process and tools. Customers, developers and testers constantly interact with each other.
- Working software is delivered frequently (weeks rather than months).
- Face-to-face conversation is the best form of communication.
- Close, daily cooperation between business people and developers.
- Continuous attention to technical excellence and good design.
- Regular adaptation to changing circumstances.
- Even late changes in requirements are welcomed
- Management teams that work well with Plan-driven approaches also tend to work well with Agile approaches
- However, management teams that lack the ability to work well with Plan-driven approaches may lack the focus required of Agile
Project Management Tools that Support Agile Development
- Agilo for Trac
- IBM Rational Team Concert
- JIRA using GreenHopper[Note 1] plugin
- OnTime, by Axosoft
- Pivotal Tracker
- Redmine and ChiliProject, with a plug-in (several are available)
- Kanban Tool
- Microsoft Visual Studio 2010/2012, Team Foundation Server 2010/2012, Team Foundation Service
- YouTrack, by Jetbrains
A good agile team picks and chooses the management & technical practices that best work for them.When trying to adopt Agile practices, there will be a ton of excuses as why it won’t work. Those who understand the real benefits of the approach – and genuinely want to make the transition – will likely have success. Those who are searching for reasons why it will fail – well, they will likely find them and either abandon the effort entirely or end up practicing what Elisabeth Hendrickson calls “fake agile.”
It is better not to fixate on any given methodology, because the needs/conditions of the company and project are likely to change regularly, and you need to be flexible in how you approach managing projects if you want them to be successful. No single methodology is a silver bullet, so the trick is to determine which methods work for you and tune your methodology to suit your individual needs. This is what being “Agile” is fundamentally about.
Looking For A Reliable & Mature Team For The Quick Project Delivery? Let VizTeams Help you