Agile is one form of software development methodology. Its main focus is on client satisfaction through continuous delivery. The focus of Agile is more on limiting the project scope. An agile project sets a minimum number of requirements and turns them into a deliverable product.
Agile development methodology provides opportunities to assess the direction of a project throughout the development lifecycle. By focusing on the repetition of abbreviated work cycles as well as the functional product they yield, agile methodology is described as “iterative” and “incremental”. In waterfall, development teams only have one chance to get each aspect of a project right.
(Haag & Cummings, 2009) says an agile project sets a minimum number of requirements and turns them into a deliverable product. Agile means what it sounds like: fast and efficient; small; lower cost; fewer features; shorter projects.
In February 2001, the Manifesto for Agile Software Development (The Agile Manifesto, 2001) was created by seventeen people with desires to find alternative approaches to software development. Each of them played a prominent part in the opposition of the prevailing software development processes, which they considered rigid, heavyweight and too focused on documentation. Their response, summarized in the manifesto, clarifies their focus by valuing:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
In agile literature, agile methods generally denote a family of methods under the umbrella of the Agile Alliance, including: extreme Programming, Scrum, Dynamic Systems Development Method, Crystal Methods, Feature-Driven Development, Lean Development and Adaptive Software Development. Although differing in specific techniques, these methods have much in common, including short iterative life cycles, quick and frequent feedback from customers, and constant learning. Among them, Scrum and XP/Scrum hybrid are by far the most widely adopted in the past decade. Agile processes bring about a dramatic increase in productivity and quality. This is achieved through a high degree of communication and interaction, short iterative development and a strong sense of team responsibility.
However, there have been some criticism of agile as well. (Kruchten, 2011) compared agile methodology to a teenager: very self-conscious, checking constantly its appearance in a mirror, accepting few criticisms, only interested in being with its peers, rejecting en bloc all wisdom from the past, just because it is from the past, adopting fads and new jargon, at times cocky and arrogant.
(Boehm & Turner, 2004) convincingly argue that there is a pragmatic need to balance stability and agility. They analyze the home grounds of agile and traditional approaches based on application characteristics, management characteristics, technical characteristics, and personnel characteristics. Further, they assert that the choice of traditional or agile methods for a given project is largely contingent on five factors:
The size of the systems development project and team
The consequences of failure (i.e., criticality)
The degree of dynamism or volatility of the environment
The competence of personnel
Compatibility with the prevailing culture
(Krill, 2013) also pointed out that barriers to agile adoption include an inability to change an organization’s culture, followed by general resistance to change and trying to fit agile into a non-agile framework. The framework for organizational change articulated by Adler and Shenhar (1990) is useful for assessing the effort required to meet these challenges. The biggest concerns about agile include lack of upfront planning, loss of management control, and management opposition. Other reasons include communication problems between development teams and other areas of the business and problems with the Scrum master.
Framework for Organizational Change (Adler & Shenhar, 1990)
The founder of Scrum (Schwaber & Sutherland, 1995) described Scrum as a process framework that has been used to manage complex product development since the early 1990s. Scrum is not a process or a technique for building products; rather, it is a framework within which you can employ various processes and techniques.
Scrum is about organizing people and work into short “sprints” of activity, to develop code in short, small chunks, rather than building one big monolithic blob of code that takes forever to build, test and “drop” into the system.
Illustration of Scrum framework
Three distinct roles are identified within the Scrum methodology:
The Scrum master, who ensures the process is followed, removes impediments, and protects the Development Team from disruption
The Product Owner, who represents the stakeholders and the business
The Development Team, a cross-functional, self-organizing team who do the actual analysis, design, implementation, testing, etc.
Scrum is a suitable method to support development process. It is very efficient in creating solutions with the highest business value in the shortest possible time. Due to the daily scrums any impediments are known to everyone as they occur making it possible to resolves them as quickly as possible. Furthermore it adds support to prioritize work and closely monitor the progress of a project with little to no overhead.
Cohn, M., 2010. Succeeding with Agile. 1st ed. Boston: Addison-Wesley.
Wanga, X., Conboyb, K. & Cawley, O., 2012. “Leagile” software development: An experience report analysis of the application. The Journal of Systems and Software, Issue 85.
The post An introduction to Agile Methodology appeared first on Manas Bhardwaj's Stream.