observer
 ONLINE


OTHER PUBLICATIONS


OTHER LINKS

Marriage Proposals
Classified
Government Gazette

Agile software development and the fall of bureaucrats

If you ask from a software professional about software development techniques they will tell you about the waterfall method, the object-oriented software process or the Rational Unified Process. They even will go on to explain about the pros and cons of each method. But little many of them know that there is a new and promising software development technique picking up momentum and ONLY A FEW popularity in the IT industry that will radically change the way software development is done. The technique is known as agile.

The IT industry is currently passing a significant phase, a move from prescriptive development techniques to agile techniques. Until recently management often complains that development did not want to follow a process, not understanding what was wrong with thousands of pages of procedures they expected everyone to follow. Then came agile software processes such as extreme programming (XP), feature-driven development, and agile modeling; and developers embraced them. Unfortunately management is not willing to use agile techniques and fight against their being adopted.

The only reason for this is that with agile all heavy management processes will be thrown away and everyone will have to get involved in development. Many managers have not got involved in software development for several years and are out of touch with he latest technology. Further these managers know that they will loose their bureaucratic management style which they enforce over their subordinates and will have to get back to hardcore software development. This is a truly ironic situation where developers are now demanding to follow proven software processes but yet are not being allowed to do so. This problem is evident even in Sri Lanka’s IT industry. But the hope is not totally lost. There are several new software companies that have successfully adopted agile techniques and it is gaining speed among other Sri Lankan software professionals.

Over the years software industry has used many prescriptive processes in software development. They include but not limited to waterfall lifecycle characterizes by the ISO 12207 standard, the Object-Oriented Software Process (OOSP) and the Rational Unified Process (RUP). Firstly, over the time all these process recorded a significant failure rate within the industry, indicating that prescriptive processes simply are not fulfilling their promises. Secondly, many developers do not want to adopt prescriptive processes and will find ways to undermine any efforts to adopt them, either consciously or unconsciously. Thirdly, the “big design up front” (BDUF) approaches to software development are highly risky since they do not support change. Fourthly, most prescriptive processes promote activities only slightly related to the actual development of software . In short the bureaucrats have taken over.

To address these challenges the Agile Software Development Alliance was formed by a group of 17 methodologists. This alliance is often known as Agile Alliance. The conclusion of this alliance is that so succeed in a software development you need to focus o people-oriented issues and follow development techniques that readily support change. They went on to write a manifesto defining four values for encouraging better ways of developing software:

1. Individuals and interactions over process and tools

The most important factors that you need to consider are the people and how they work together because if you do not get that right the best tools and processes will not be of any use. Agile will nurture a group of people who will take collective responsibility for their work. Collectively they will help each other to deliver software on time.

2. Working software over comprehensive documentation.

The primary goal of software development is to create software, not documents. Therefore we should concentrate on developing good working software rather than developing lengthy documents. Documentation too has its place; written properly and concisely it is a valuable guide for people’s understanding. Often it is a common practice to develop software specifications and design documents before the start of development which sometimes drag onto several months. These documents become outdated when the actual development gets underway and the customer changes are not reflected. Instead of such documents it is more practical to design and deliver small parts of the software in short time spans. Prototyping, especially paper prototyping, is a good technique over specifications to capture customer requirements quickly and accurately.

3. Customer collaboration over contract negotiation.

Only your customer can tell you what they want. They probably do not know how to explain it to you precisely. Ii is unlikely that they get it right at first and they will likely change their minds. Having a contract with your customer is important but it’s not a substitute for communication. Fix prices are broken promises. Agile advocate not to negotiate fix prices on software contracts. It is better to estimate on hourly basic and cost per hour. If the customer insists on a fix price, then select the most critical and well defined set of functions for the first release. You can carryout extensive prototype session to reduce the risk of change. Again paper prototyping is a very economical option for it.

4. Responding to change over following a plan.

Change is a reality of software development, a reality that your software process must reflect. People change their priorities for a variety of reasons, their understanding of the problem domain changes as they see your work, and the business environment changes, as does technology. Although you need a project plan, it must be changeable and it can be very simple.

A good way to think about the manifesto is that it defines preferences, not alternatives, encouraging a focus on certain areas but not eliminating others. There are a number of agile software development methods, such as those promoted by the Agile Alliance. Most agile methods attempt to minimize risk by developing software in short time boxes, called iterations, which typically last on to four weeks. Each iteration is similar to a miniature software project of its own. An agile software project intends to be capable of releasing new software at the end of each iteration. The team reevaluates project priorities after an iteration is complete.

Adopting an agile technique does not happen overnight. It has to be planned and implemented gradually. Agile methodology advocates to discarding all bureaucratic processes that do not add value or quality to the software. Therefore it is important that you adopt industry proven methodologies and best practices for sustainability.

Extreme Programming (XP) is a good software engineering methodology that can be used in an agile environment. With XP you reduce the feedback loop through pair programming as well as by working closely with your customers. One benefit of working closely with stakeholders is that they are available to explain their requirements to you, increasing the chance that you do not mis-reducing the risk of misunderstanding them, and you can show them your work to get feedback from them, which enables you to quickly determine whether you have built the right thing or not. The cost of change is also reduced by an explicit focus on writing high-quality code and good code refactoring.

Test Driven Development (TDD) is a programming technique that will benefit agile development. TDD involves writing extensive test cases for very code piece in the software. TDD is also known as Test First Development (TFD). With TDD you will first write a test case for your software code and then implement only the code necessary to pass the test. TDD requires that an automated unit test is written before each aspect of

the code. Running the tests gives rapid confirmation of correct behaviours as the code evolves. This will allow to absorb more changes accurately and to deliver working software to the clients. Testing frameworks such as JUnit, NUnit, PHPUnit and CPPUnit are some software that allow automated test cases.

Use of a source management tools is also a necessity for agile. With agile you will be releasing working code very often. Therefore it is important that the source code has proper version control and release labels. Because changes happen more frequently, such tools will facilitate reverting back to a working version if a new change breaks the code.

Continuous build process is a process to perform an automated continuous build of any software development process. Every time a developer checks in a change, a tool checks out all the sources, builds everything, runs all the unit tests and reports back with immediate feedback. A continuous build framework can be configured into your source management tool to integrate new code changes. Such a process will notify any code breaks early to the team. Ideally the build should be done at least every day.

Use of an Integrated Development Environment (IDE) will reduce development and testing time immensely. Many plug-ins are available for the IDEs to integrate unit testing software, to link source management tools, to deploy to different web/application servers, to run the software from the IDE and even to document. This has enabled the project teams to use a single tool to carry out everything they want to code, unit test, deploy and smoke test, check into the source management and to generate documentation.

Conversion from prescriptive development techniques to agile techniques is not easy. There exist many challenges with changing peoples’ thinking.

In short agile techniques enable speedy delivery of software with effective and efficient methods and thereby reducing the cost of development. But in order to achieve its full potential team members have to be honest in what they do, taking individual responsibility for their work, work as a team with the notion of “us” rather than “I” and help each other during problematic situations.

Nurturing an agile mind among all team members is not easy. In the Sri Lankan context there could be cultural reasons and long standing organisational and individual practices that may block the adoption. But if we can surmount these barriers and use agile in our software development, the benefits that will accrue our IT industry is immense.

EMAIL |   PRINTABLE VIEW | FEEDBACK

Gamin Gamata - Presidential Community & Welfare Service
Sri Lanka
www.srilankans.com
www.srilankaapartments.com
www.army.lk
www.news.lk
www.defence.lk
www.helpheroes.lk/
www.peaceinsrilanka.org
 

| News | Editorial | Financial | Features | Political | Security | Spectrum | Impact | Sports | World | Oomph | Junior | Letters | Obituaries |

 
 

Produced by Lake House Copyright 2006 The Associated Newspapers of Ceylon Ltd.

Comments and suggestions to : Web Editor