Computer Science

Agile Development Methodologies

Agile development methodologies (ADM) have been gaining popularity because it is increasingly becoming difficult to adopt static plan-driven methods due to constantly changing requirements of software projects as a result of both internal and external factors. ADM solves the dilemma by breaking software projects into components each of which can exists on its own and is fully compatible with the other components. As a result, any change or new requirement doesn’t disrupt the whole project or requires starting from the scratch. Each component or reiteration is not only shorter in length but also carries lower complexity and risk levels. There are four types of agile development methods which are extreme programming, crystal methods, scrum, and feature-driven development.

Extreme programming (XP) is suited to object-oriented projects with dozen or fewer programmers at a single location. The five values or principles behind XP are communication, simplicity, feedback, courage, and respect. The idea behind communication is to encourage open and honest interaction among team members to avoid misunderstandings and quickly locate and deal with issues or problems that may arise. The idea behind simplicity is to stay true to the customer requirements and create as simple a product as possible. Feedback is solicited from the customer in order to improve future iterations. Courage refers to being realistic and not producing expectations that cannot be fulfilled. Respect refers to promoting care for each other among team members to ensure productive working relationships.

Even though XP can survive on oral communication for small and simpler projects, the use of written communication becomes inevitable as the size and complexity of project grows. As a result, numerous written communication tools are utilized including user story cards, task list, CRC or Class-Responsibility-Collaboration cards, customer acceptance cards, and visible wall graphs. Like any other project, XP also requires various roles to be played by project stakeholders which require technical and/or soft skills. The roles usually found in XP projects are manager, coach, tracker, programmer, tester, and customer. Project managers manage human capital and problems that may arise during the project. Coach mentors the team members, ensures the XP process is being properly followed, and tries to mediate when problems may arise. Tracker collects user story and acceptance test case data while programmer is the technical brain of the group and writes, designs, and tests codes. The tester makes sure the program works as intended by helping customers develop and run tests. The customer is the one who makes demands and makes sure the project meets the acceptance criteria.

There are 13 primary technical practices and 11 corollary technical practices in XP. The primary technical practices including forming teams, making sure each team member understands what the project is about, making sure team members are not overworked, monitoring project’s progress on regular basis, building slacks in iterations to allow for unexpected delays, and making sure each iteration is compatible with the overall system. The corollary technical practices include involving customer in the project, incrementally deploying the project, identifying and solving problems, and taking steps to ensure the continuity of the project even if one or more team members may leave or be unavailable for some reasons.

The second ADM is Crystal which aims to meet the needs of a project with continuously changing characteristics and environment. Crystal is not one but a family of methods which vary in their degree of agility. Crystal Clear is the most agile version and is followed by Crystal Yellow, Crystal Orange, and Crystal Red, respectively. In Crystal methodologies, there is greater emphasis on people as compared to the processes. Crystal methodologies have incremental cycles that cannot exceed four months and reflection workshops take place after each delivery. To date, only Crystal Clear and Crystal Orange have been defined. Crystal Clear is suited to projects with small team sizes such as three to eight team members who are at the same location. As a result, communication is mostly face-to-face. In contrast, Crystal Orange is suited to more complex projects with 20 to 40 programmers and where errors could prove costly. Such projects also tend to be longer, ranging from one to two years.

The third ADM is scrum which involves team built around a software development methodology. The team members may be geographically dispersed and teams are usually self-directed and self-organized. The three artifacts produced by scrum teams are product backlog, sprint backlog, and sprint burndown chart. The product backlog contains a list of functionalities that need to be developed or fixed. Sprint backlog contains features, enhancements, and defects that have been scheduled for the current iteration. It also assigns tasks to individuals as well as states the time allocated to each task. Sprint burndown chart shows the time remaining to complete the tasks. Scrum projects usually have three roles which are product owner, scrum master, and developer. Product owner creates and manages the product backlog. Scrum master manages iteration, conducts meetings, provides resources, tracks progress, and removes barriers. Scrum master is also a developer who actually develops the project and retains decision making authority. There are various processes in scrum projects including meetings with different stakeholders, progress review, and planning for next increments.

Feature-driven development (FDD) was developed by Peter Coad and Jeff de Luca to ensure that a project has reasonable scalability and repeatability and encourages creativity and innovation. In other words, it puts a major emphasis on the quality of human capital involved with the project. The documents and roles usually involved in FDD are feature lists, design packages, track by feature, “burn up” chart, project manager, chief architect, development manager, chief programmer, class owner, domain experts, and feature teams.

Similarly, there are five incremental, iterative processes in FDD first three of whom are done at the beginning of the project while the remaining two are done incrementally on two-week cycles. The first process is developing an overall model and involves team members understanding scope and context of the model. The second process is building a features list and as the name implies, involves making a list of features to be included in the model. The third process is planning by feature and involves planning the order in which the features will be developed. The fourth process is designing by feature and involves creating a design as to how the features will be built and the final process building by features involves the actual development of the features identified, planned, and designed earlier.

There are several similarities and differences among the four ADMs. First of all, Crystal and FDD are preferable to other ADMs when projects are large and complex and there will be bigger team sizes involved. On the other hand XP and scrum are suited to small-scale projects and less complex projects involving small team sizes. It also seems likely that among all the four ADMs, scrum may gain the most popularity over time due to globalization as well as rapid advancements in information technology which is leading to more and more geographically dispersed virtual teams. Similarly, FDD may benefit from the fact that IT projects are increasingly being viewed as solutions to specific problems or organization needs rather than mere products that help improve operating efficiency. One particular feature shared by all ADMs is that they are increasingly involving customers during the development phase which is also natural because projects utilizing ADMs are built in increments in order to meet customers’ evolving desires and needs. More and more companies are using IT capabilities to build core competencies, thus, the demand for proprietary products has been rising.

While other ADMs usually involve individuals in managerial positions to ensure that human capital is managed efficiently and teams stay on track, scrum is unique in the sense that team members collectively take responsibility for self-management. Thus, scrum is usually suited to teams where individual members are already quite experienced and have a solid track record. In addition, the need for team cohesion in scrum may also be more than other ADMs. In addition, all four ADMs particularly place huge emphasis on communication (both written and oral) which may also explain why the demand for soft skills in traditionally technical professions such as IT has been growing. IT people have the job of creating solutions to the problems or needs expressed by the business people and these two groups often speak different languages. This is why open and efficient communication is so important to ensure that IT people understand what business people desire and any potential variations or errors are caught in a timely fashion. We also note that all methodologies emphasize continuous focus on quality and quality reviews are conducted on regular basis.

It is also apparent that ADMs can only succeed if teams are given resources and autonomy by the management. The rising popularity of ADM is a proof that companies’ management has been realizing it is not possible to compete without empowering the employees. In addition, ADMs have also been embraced because they cater to the needs of almost all kinds of organizations. In fact, Crystal explicitly avoids recommending a one-size-fits-all development method. Another reason why ADMs have been becoming popular is due to realization that it is extremely difficult to predict no matter how sophisticated the organization’s intelligence capabilities may be. Thus, a better approach is to monitor and react rather than predict and act in advance.

But this is not to imply that ADMs will work for all organizations, thus, organizations should create the environment and prepare the groundwork. Employees that prefer direction and certainty may prefer older project development methodologies. In addition, lack of support or resources from the management will also significantly decrease the success rate of ADMs.