|
Technology
Agile Methodology
Agile methodology is lightweight methodology. With the fast development of technology and economy globalization, new character of software development appears, that is to develop software fast in a condition that requirement and technology are changing frequently. ISO-9000, CMM, SPICE had been legalized as standard of software quality assurance. Because of their stress of management and control, pursuit of project predictability and process visibility, they pay less attention to the improvement of efficiency. In the implementation, on one hand, a great deal of documentation are made, which brings a lot of task for the developers. One the other hand, the pursuit of project predictability cannot accord with inexplicitness and rapid change of requirement. As a result, some new development methods appear.
The new methods are Extreme Programming (XP), SCRUM, Crystal Methodologies, Feature Driven Development (FDD), Dynamic Systems Development Methodology (DSDM), Adaptive Software Development (ASD), Pragmatic Programming, etc. In February 2001, the Agile Alliance was founded by some initiators of the new methods in Utah, USA.
There is no clear definition to the agile methodology now. It pays much attention to the software productivity, applied to small project development with inexplicitness and rapid change of requirement. Agile methodology reduces activity and product during development process, but assures quality requirement.
Any software development method has its value system to guide process. Methods cannot be effective unless its application context accords with the value system. The value system is based on the cognition of software development.
Agile methodology pays more attention to people’s reciprocity than process and tools, software usability than various kinds of documentation, collaboration with customer than contract, response to the change of requirement than work with schedule.
Agile methodology put users’ satisfaction in the first place during the continuous delivery of software. It takes positive attitude to the change of requirement, no matter at the beginning or in the end of a project. Agile process is deployed according to the changes and makes the client more competitive. A sprint takes from several weeks to several months, delivering the executable software continuously as quickly as possible. During the process of the project, it is better that business personnel and technique staff are working together. Giving the core members of the group the environment and support they need, trust them. The most helpful and efficient communication approach is talking face to face. The chief consideration is that the software can run. Agile process pays much attention to the continuance of development, the sponsor, developer and user should keep in the same pace. We should keep our technologies moving on and make the design logical, in order to improve the facility to change. The basic rule is to keep it simple. The group should review its operation periodically, making some suggestion and improvement.
In addition, the object oriented programming is commonly used in agile methodology. Other technologies with friendly interface should be OK too. It is worth to mention that it should have enough tool (such as configuration management tool, modeling tool, etc.) support in the development.
When the development has to change with the requirement, there might be some crisis as follows: it is hard to make changes to the system, every change results to many other changes in the other part of the system; some problems come out in the place that is not relevant to the changed place; it is hard to reuse the modules of the system in the other systems; it is more difficult to do right things than to do wrong things; the system contains some structure that has no direct benefit; the system contains duplicate structure which can be abstracted; it has not shown the intention well that it is hard to read and understand.
Agile development group’s agility relies on changes. They hardly do pre-design, a mature prototype is not necessary. They prefer keeping the design simple, and taking many unit tests. This keeps the design agile and easy to understand. The development team uses the agility to improve the design continuously so that by the end of each iteration the system meets the requirement of that sprint.
Agile design is a process, not an event. It continuously improves the software structure by principle, model, and practice. It tries to keep the system as simple as possible at any period of time.
|