I have recently attended a lecture on Agile Methods at the University of Bolzano, Italy. Jutta Eckstein, an expert on Agile Software Development, held an interesting introductory course on Agile Software Process Management at the CASE Summer School (2009). Based on her lecture, I decided to make a short presentation about what Agile Methods means.
Agile Software Development encompasses a set of software development methods which include (among others) the following important characteristics: welcome changes and quickly adapt to them, focus on providing running software, provide value to the customer, collaboration, interaction. Software is developed in a creative manner, with human beings, for human beings.
Simply said, Agile process management is a four step process.
My presentation is merely short introduction to the agile world but, it provides a basic understanding on what Agile Software Development is all about and how this process is put into practice.
Agile Methods are not something new. They rely on:
- lean development (the Toyota way)
- patterns
- eXtreme Programming and Scrum, which were published in the 90ies
We can say that Agile process management officially appeared in 2001, when the Agile Manifesto was created. The Agile Manifesto provides the Agile System of Values and the Agile Principles.
The Agile System of Values basically says that we should 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
However, this doesn’t mean that, for example, Agile Methods do not consider software documentation important. It is considered important but, we first want to have a working software. This observation applies to each part of the system of values.
The Agile Manifesto also includes a set of twelve principles:
- Early and continuous delivery of valuable software
- Welcome changing requirements
- Deliver working software frequently
- Business people and developers work together
- Trust motivated individuals
- Face-to-face conversation
- Working software is the primary measure of progress
- Promote sustainable development
- Technical excellence and good design
- Simplicity is essential
- Self-organizing teams
- Team reflection and adjustment
I will not go into details regarding the principles but, I must mention an important aspect of agility: Agile Methods use time-boxed development. The work to be done is divided into iterations which normally take 2 weeks. Releases are made each 3 months. By dividing the work into small pieces, teams are capable to concentrate on results, to quickly adapt to changes, to better estimate their speed, etc.
Agile process management consists of four steps.
Planing, developing, testing and adapting are the parts which create the Agile process. The key is to focus on delivering business value while prioritizing, planning and learning are ongoing activities.
While Agile Methods don’t really say anything particular about prioritization, we are though how we should perform planning. Each feature of the product should provide value to the customer (Product Owner) and it must be measurable. Estimation of features must not be done by time but rather by complexity, expressed relative to other features. Agile is also about collaboration and therefore, features are estimated collaboratively.
The software product is integrated continuously, either synchronously or asynchronously (automatically – nightly builds) . Each integration is accompanied by tests. We have two main categories of tests: unit tests (made by developers) and acceptance tests (made by customers). Actually, one of the agile practices is Test Driven Development.
Other well known agile practices are Pair Programming and Refactoring (read more details in my presentation).
In order to support communication, we can use daily Scums. This is a daily meeting, it is short and it allows team members to discuss their progress, their problems and what will they do next.
When a project is finished, the Agile Methods also say that we should do retrospective of the project. This helps the team members to learn from what they did, to improve themselves.
There are a lot of other things to mention about Agile Methods. As a good place to start, I would recommend Jutta Eckstein’s web page.
Finally, there’s another very important peculiarity of what does Cialis that brings it so high above its alternatives. It is the only med that is available in two versions – one intended for use on as-needed basis and one intended for daily use. As you might know, Viagra and Levitra only come in the latter of these two forms and should be consumed shortly before expected sexual activity to ensure best effect. Daily Cialis, in its turn, contains low doses of Tadalafil, which allows to build its concentration up in your system gradually over time and maintain it on acceptable levels, which, consequently, makes it possible for you to enjoy sex at any moment without having to time it.