Specific Agile Software Methods
People’s perspectives on Agile Methodology
System Development Methodology refers to a standard process followed in an organization to conduct all the steps necessary to analyze, design, implement, and maintain information systems. [1] There are a number of methodologies used to develop and improve the system such as the Traditional Waterfall, Rapid Application Development, Prototyping, Agile and etc. However, this paper focuses only on the agile methodologies and their specific techniques, people’s perspectives and the best practice.
Agile Methodologies are models used in the system development arena. The agile methodology has evolved in the mid-1990s as a part of reaction against traditional waterfall methods. That the Agile Methodologies were originating resulted from the use of the waterfall model were seen as bureaucratic, inflexible, slow, and inconsistent with the ways that software developers actually perform effective work. Agile development methods mark a return to development practice from early in the history of software development. [2]
There are various ways in defining Agile Methodologies or Agile Methods as followed.
Agile method is a software development method that is people-focused commications-oriented, flexible (ready to adapt to expected change at any time), speedy (encourage rapid and iterative development of the product in small releases), lean (focuses on shortening timeframe and cost and on improved quality), responsive (reacts appropriately to expected and unexpected changes), and learning (focuses on improvement during and after product development) [3]
Agile methods are a response to the drastic degree of change in the modern business and IT environments. There highly dynamic environments demand software development teams that can respond to change and continuously deliver business value. [4]
Agile methods generally promote a disciplined project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages teamwork, self-organization and accountability, a set of engineering best practices that allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals. [2]
What the originators of the agile practices held in common was a set of values they jointly published as the Manifesto for Agile Software Development. The twelve key points of defined in the Agile Manifesto are: [5]
1. Satisfy customer through early and continuous increments.
2. Deploy first increment within couple of weeks and the whole software within couple of months.
3. Customer and agile teams must work jointly daily throughout the project.
4. Agile team and customer must have face-to-face meetings.
5. Welcome requirements even in late phases of the system development.
6. Trust and respect must be maintained among agile team members.
7. Velocity of the project must be measured after delivery of each increment.
8. Emphasis should be on good design to increase agility.
9. Best architecture and design always come out from self-organization.
10. Adjust and tune according to the situation.
11. Whole development process must follow keep it simple (KIS) principle.
12. Agile project needs consistent work until completion.
The most important of these principles is: “The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. [4]
The below figure shows the steps in Agile Methodologies which focus on iteration and adaptable to change.
Agile Methodologies appeal many people because they attempted a useful compromise between no process and too much process to gain a reasonable payoff. They are less document-oriented, usually emphasizing a smaller amount of document for a given task. Agile Methodologies are people-oriented more than process-oriented. Agile Methods assert that no process will ever make up the skill of the development team, so the role of a process is to support the development team in their work. [6] Moreover, thanks to its flexibility and team-oriented, agile methodologies is well suited to the current business environment which continues to change dramatically.
Specific Agile Software Methods
There is a number of specific agile development methods widely used today. Sometime, people referred to agile software methods as agile techniques. Some popular agile techniques are such as Scrum, Extreme Programming, Crystal, Adaptive Software Development, Lean Software Development and etc.
The Agile Methodologies differ in the approaches to software development and management they propose. [7] Some agile methods focus more extensively on project management and collaboration practices such as Scrum, Adaptive Software Development (ASD), and Lean Development. However, some agile methods concentrate heavily on software implementation practices such as Extreme Programming (XP), Agile Modeling (AM), and Feature-driven Development (FDD). This paper focuses only some several specific techniques which are Scrum, Extreme Programming, and Adaptive Software Development
Scrum was applied in 1990s by Ken Schwaber and Mike Beedle. It is an agile, iterative, incremental developing method which assumes that changes and chaos exist through entire life-circle of the project and attempt to solve these problems[6] Scrum is designed to add energy, focus, clarity and transparency to project teams development software systems. It allows team to operate in close proximity to foster rapid system evolution. [4]
In Scrum, work is structured in cycles of work called sprints , iterations of work that are typically two to four weeks in duration. During each sprint, teams pull from a prioritized list of customer requirements, called user stories , so that the features that are developed first are of the highest value to the customer. At the end of each sprint, a potentially shippable product is delivered. [9]
Scrum naturally focuses an entire organization on building successful products. Without major changes -often within thirty days - teams are building useful, demonstrable product functionality. Scrum can be implemented at the beginning of a project or in the middle of a project or product development effort that is in trouble. [10]
Extreme Programming is one of the most widely adopted agile methodologies. The XP methodology was created by Kent Beck. The XP improves a software project in four essential ways which are communication, simplicity, feedback and courage. It is introduced twelve best practices with which XP programmers are able to courageously respond to changing requirements and technology. [8]
The below figure illustrate how12 core practices of XP fir into the exploration, planning, iterations to release, , implementation and death phases if the system development life cycle. [11]
In XP, there is an emphasis on priority of customer/client stories which represent the business requirements for each system release. The XP approach involved many small releases of system functionality/features with developers writing the tests for system functionality/features before actually writing the specific code. The involvement of the customer from the inception of the project through the Customer/Client acceptance testing before production release of code ensures strong buy in the Customer/client. [11]
In XP, there is also a strong emphasis on the team and collaborative development. In this approach, there is knowledge transfer between the customer and developers very much in line with the RAD approach. [11]
Adaptive Software Development (ASD)
Adaptive Software Development is a software development process that grew out of rapid application development work by Jim Highsmith and Sam Bayer. ASD embodies the principle that continuous adaptation of the process to the work at hand is the normal state of affairs [12]
Adaptive Software Development process model has divided into 4 phases shown in the below figure) [6]
4 phases of the Adaptive Software Development process Model:
• Communication and planning
In this phase, the project specification and proposal documents, which are composed of feasibility and risk assessment, are prepared
• Analysis
The analysis phase will be started only when a customer approves the proposal in the first prepared during the first phase. In this phase, the quality of software will be approved through paper documentation. An analyst gathers details information and requirement from this phase. Software requirement specification (SRS) document is a product the analysis phase.
• Design and development
Adaptive Software Development process Model uses the prototype approach to verify the design and requirements.
• Testing and deployment
Test cases for each increment are prepared at the beginning of this phase. The module is tested on unit basis, and is followed by integration test among the modules. Then the system test is conducted, followed by the accepting testing which is the last test in order to verify increment from the customer. The main deployment activities are installation, training and security.
People’s perspectives on Agile Methodologies
According to Scott Ambler, the Practice Leader, Agile Development at IBM Corporation, the technical issues is not often the major contribution to the failure of the system development project. It is people issues that mainly cause the project failure. [13] The top three issues would be:
Thus, his advices to the top management when transitioning to Agile are as follows:
According to the survey conducted by Donald J Reifer from the Reifer Consultants about agile methods, survey respondents mentioned that they think the agile methods is suitable for a small, in-house teams developing software for quick-to-market applications. Most issue that users experience are related to problems in managing technology change. Below is the respondents’ recommendation:
Since today’s enterprise solution are complicated according to the rapid change in business needs. The so-called agile methodologies which are adaptable to change, people-oriented, speedy and responsive are well suit to the software development projects. However, company needs to consider which agile methods are beneficial for the company or some specific projects. The company can select different agile methods for different projects or just customize any features that match the condition of the company and the projects.
References