In the field of the Software Development, there exists a competition between the time, quality and the cost. To develop a software with in limited time, with high quality within controlled and achievable cost is always the dream and the goal. There exists many software development process with heavy size of documentation which makes difficult in the real world implementation. In the recent times, a new process, Agile Process is making a way into the software industry. All these processes main concentration will be on the code rather than on the documentation. This new process of Agile Technology also focus on the interaction between the people which is the key for deploying the software within the stipulated time with maximum quality and at minimum cost.
The Existing Market
It is not an exaggeration to say it that the software industry changes from every single day to day. The changes may come in the form of change in the requirement, change in the business processes, change in the development process or change in the entire approach. This rapidly changing market introduces greater choices. Finally it will be choice of the developers and customers to decide on which technology to be used.
The Agile Technology started as an alternative to the existing models in the market to meet the changing requirements from time to time and the unpredictable market. The Agile Technology has four basic philosophies. They are as follows:
Ø Individuals and interactions over processes and tools
Ø Working software over comprehensive documentation
Ø Customer collaboration over contract negotiation
Ø Responding to change over following a plan.
Exploring all of these values will aid in gaining knowledge of the agile process philosophy while exposing how applying the philosophy to define methods will enhance software development aligning it with today's volatile market.
All the individual persons and the interactions among them serve as a prominent role in the agile process. It is widely believed and accepted that in the agile process people can respond faster and can be able to transfer ideas more quicker in face to face conversation rather than in the written documentation process. The development of agile process occurs in a team environment, where they work in pairs of team to develop the code. The concept of working together, sharing a common space can result in faster development of the code than a single individual working alone. There is one more advantage of empowerment of the technical decisions which is considered as the most important aspect of the development process. The agile process advices to have an equal role for the developers and the management which means that there will be continuous communication between the management and the technical team members. Decision making, shared responsibilitywith management and continuous access to business expertise allows individuals to organize around a set of rules operating in an adaptive environment creating innovative and emergent results.
In the unpredictable global world, it is quite a difficult task to gather all the complete requirements from the customer even before the start of development. Even the customers might not be aware of the complete requirements at the initial phase and also about the full functionality of the system.
Agile process introduces the idea of simplicity, and will make sure that the only required will be implemented and never the documents attempting to predict the future. It is a fact in agile process that the documentation will be kept as simple as possible. If the documentation is large enough, then it would be a difficult task to search when needed and also difficult to maintain and update.
Customers are given the utmost importance in the agile process. Communication and the contract negotiation will make up the business for both the customers and the developers. The customer in the process will be a part of the development team and closely monitors everything. Customers sits closely with the developers approving the decisions, and guiding the project from the customer perspective while the developer does it from the developer perspective.
The value derived from the agile process philosophy is serve to manage change and reduce cost. As the teams working on developing the code and lighter documentation, so the productivity can be achieved. Furthermore by extending the team's technical decision making capabilities and granting themcontinuous access to business expertise both internal and through the use of on sight customer participation the code being produced will better reflect the true requirements of the customer.
There are many and many variations of agile processes and below are few of them
Ø Adaptive Software Development (ASD)
Ø Extreme programming (XP)
Ø Rational Unified Process (RUP)
Adaptive Software Development
ASD was developed by Jim Highsmith. ASD do not discuss much about the Methods, milestones and deliverables. Instead, ASD places its emphasis on applying ideas originating in the world of complex adaptive systems. ASD provides the fundamental base to develop adaptive systems fromwhich arise agile and adaptive processes.
The outcomes of the ASD are naturally unpredictable as it is not easy to plan successfully in an environment which changes very rapidly. Adaptive development is essential when you have developers, customer, vendors, competitors and, stockholders all attempting to interact with one another at sucha pace that linear cause and effect rules cannot assure success.
Collaboration replaces build because of ASD's recognition that people are the essential ingredient to producing a successful product. Collaboration is the activity of balancing: managing a project, such as configuration control and change management, with creativity the act of trusting people to find creative answers inan unpredictable environment. Completing the cycle is Learning.
This is most widely used method among Agile Processes. The XP has four basic values of programming. They are as follows:
Ø Communication: The communication between the customers and developers helps in learning all the requirements and the communication among the developers helps in achieving the tasks easier and in a simple way. Without communication, there might be a chance of delay of the project deadlines.
Ø Feedback: The XP process request the feedback from the customers at regular intervals and based on the feedback improvements will be done. Without a feedback a project is most likely to be failed. This also give an idea on where the project is, where it is lagging, what still needs to be achieved.
Ø Simplicity: The XP do not add the things that are not needed. It keeps the project as simple as it can. It always tries to eliminate the things which are not necessary. It even tries to keeps the documentation so simple so that it would be easier to update and maintain.
Ø Courage: The XP believes its resources, keeps faith on their abilities. If the developers are given the freedom and courage then the targeted result can be achieved easily.
The XP method starts by gathering the stories, which will be fit into small index cards. Each and every story is a business oriented one, testable and achievable. Customer selects the most valuable and important set of the stories. This set of stories involves in the iteration and the code will be developed for the first iteration. Once the coding is done then it will be tested thoroughly and will be deployed. After this the second iteration starts considering all the feedback on the first iteration. The goal of each iteration is to add some new features and functionalities to the existing one.
Testing has a very prominent role in XP. After each iteration, it will be tested by the developers itself which is commonly called as Unit Testing in developers point of view where all the test scripts were written prior to the code. Testing regularly and often at the unit level and systemlevel provides feedback and confidence that the project is moving ahead and the systemis functioning according to the customer's requirements.
The process of selecting the short stories which are most valued, writing code for the selected stories, testing the written code, integrating the written code with the previous release is repeated till the end of the project. As the requirement will keep on changing, working in short iterations with proper feedback gives the chance to meet all the requirements.
Crystal is a family of processes each applied to different kinds of projects. Small and non-critical projects can be developed using less rigorous Crystal methods. Larger and more critical projects, however, demand more attention and therefore, a more rigorous Crystal process is used.
Selecting a Crystal process requires that a project be matched to one off our criticality levels.
- Discretionary money
- Essential Money
If the system is failed at the first level, it may cause the loss of comfort and if the system is failed in the final level, then it may cause the loss of life. Each process shares some common policies. They are:
- Incremental Delivery
- Progress tracking my milestones
- Involving the Direct user.
- Automatic regression testing
- Reviewing the release by two users.
- Workshops at the beginning and middle of each increment.
The functions or practices are explicitly defined. Staging, this is the scheduled time frame for one increment ranging fromone to fourmonths duration.The multiple processes offered by the Crystal methodologies are adaptive and agile. They are adaptive because they offer multiple solutions for projects having different criteria. They are agile because they deliver work products at the completion of each project increment and are able to apply lessons learned to the next iteration. Additionally, they demand customer involvement, and decisions are made based on outcomes rather than trying to force conformance to a plan developed early in a project's phase.
Rational Unified Process
This is a generic process which uses a specific methodology to accomplish the tasks. This uses the Unified Modeling Language UML for developing the use cases of the software model. It all depends on the project environment how far it can be used and how well it can be used.
Each phase iterates through each workflow while the project lifecycle moves through the phases. Inception is concerned with gathering requirements and putting together the project plan. During elaboration the software architecture is defined and the detailed plan for future iterations is established. During Construction the software systemis built and tested and the user documentation is completed. Finally, the Transition phase closes the project and delivers the product to the customer.
Agile processes are not a panacea and they are not easy to implement. An important step to adopting an agile process methodology is toread and embrace the philosophy. Selecting the process will depends completely on the organization. Agile processes can helpan organization to better compete in a volatile and rapidly changing market by helping to deliver high quality software at a competitive price and in a timely manner to a market moving at blinding speed.