Agility in context of software engineering
- Agility means effective (rapid and adaptive) response to change, effective communication among all stockholder.
- Drawing the customer onto team and organizing a team so that it is in control of work performed.
-The Agile process, light-weight methods are People-based rather than plan-based methods.
- The agile process forces the development team to focus on software itself rather than design and documentation.
- The agile process believes in iterative method.
- The aim of agile process is to deliver the working model of software quickly to the customer
For example: Extreme programming is the best known of agile process.
Extreme Programming
- Extreme programming uses an object-oriented approach as its preferred development paradigm.
- Extreme programming encompasses a set of rules and practices that occur within the context of four framework activities: planning, design, coding, and testing.
1. Planning:
- The planning activity begins with the creation of a set of stories that describe required features and functionality for software to be built.
- Each story is written by the customer and is placed on an index card. The customer assigns a value to the story based on the overall business value of the feature of function.
- Members of the XP (Extreme Programming) team then assess each story and assign a cost – measured in development weeks – to it.
- If the story will require more than three development weeks, the customer is asked to split the story into smaller stories, and the assignment of value and cost occurs again.
- Customers and the XP team work together to decide how to group stories into the next release to be developed by the XP team.
- Once a basic commitment is made for a release, the XP team orders the stories that will be developed in one of three ways:
- All stories will be implemented immediately.
- The stories with highest value will be moved up in the schedule and implemented first.
- The riskiest stories will be moved up in the schedule and implemented first.
As development work proceeds, the customer can add stories, change the value of an existing story, split stories or eliminate them.
The XP team then reconsiders all remaining releases and modifies its plan accordingly.
2. Design :
- XP design follows the KIS (Keep It Simple) principle. A simple design is always preferred over a more complex representation.
- The design provides implementation guidance for a story as it is written – nothing less, nothing more.
- XP encourages the use of CRC (Class Responsibility Collaborator) cards as an effective mechanism for thinking about the software is an object oriented context.
- CRC cards identify and organize the object oriented classes that are relevant to current software increment.
- The CRC cards are the only design work product produced as a part of XP process.
- If a difficult design is encounter as a part of the design of a story, XP recommends the immediate creation of that portion of the design called as ‘spike solution’.
- XP encourages refactoring – a construction technique.
3. Coding
- XP recommends that after stories are developed and preliminary design work is done, the team should not move to cord, but rather develop a series of unit test that will be exercise each stories.
- Once the unit test has been created, the developer better able to focus on what must be implemented to pass the unit test.
- Once the code complete, it can be unit tested immediately, thereby providing instantaneous feedback to the developer.
- A key concept during the coding activity is pair programming. XP recommends that two people work together at one computer workstation to create code for a story. This provides a mechanism for real time problem solving and real time quality assurance.
- As pair programmers complete their work, the code they developed is integrated with the work of others.
- This continuous integration strategy helps to avoid compatibility and interfacing problems and provides a smoke testing environment that helps to uncover errors early.
4. Testing :
- The creation of unit test before coding is the key element of the XP approach.
- The unit tests that are created should be implemented using a framework that enables them to be automated. This encourages regression testing strategy whenever code is modified.
- Individual unit tests are organize into a “Universal Testing Suit”, integration and validation testing of the system can occur on daily basis. This provides the XP team with a continual indication of progress and also can raise warning flags early if things are going away.
- XP acceptance test, also called customer test, are specified by the customer and focus on the overall system feature and functionality that are visible and reviewable by the customer.