of the code during iteration cycles helps to ensure that the framework and the necessary components are abstracted and refined periodically. Test first development and nightly builds together ensure that the existing code does not break during the refactoring process. At a major online services client, this allowed for rapid design review of code and test result validation.
Cognizant requires a tool-based approach for the design and implementation processes. This ensures that documentation is kept to a minimum and changes to the design due to refinements in implementation can be effected with minimal effort. Cognizant uses industry leading and in-house tools. Teams must capture each requirement should be captured in a requirements management tool, test cases in a central test repository and documents in a knowledge repository. At a hi-tech client, requirements were captured in IBM Rational RequistePro, test plans/cases in Mercury Test Director and Cognizant brought in its internal tools for defect tracking and issue escalation. Cognizant has also used wikis and message boards for effective communication in projects. Each thread and message is posted with standard topic headings that can easily be scanned or reviewed for follow-up. This helps team members to keep pace with the level of change and degree of adaptability. This also helps to enhance the level of communication on projects and provide a substitute for the informal communication that would typically take place in cases where there is a single-site implementation.
Components And Framework-based Architecture
Pure-play Agile methodologies are recommended for smaller projects which can sustain "adaptive" methods. One of the ways to accommodate larger projects (more than 20 members) is to use components and technology frameworks, which enable multiple teams on a large project to work iteratively, hence facilitating agility. At Cognizant, the .NET group has built a framework on top of Microsoft Visual Team Studio and provides it at no charge to clients. The Cognizant .NET framework allows for feature-based development, granular tracking and enforcement of coding guidelines before allowing code check-in. Clients may also be able to leverage existing frameworks. Such frameworks are based on practices, principles and patterns that promote seamless co-development. It is essential to have extensible frameworks built in .NET and J2EE platforms providing infrastructure services and vertical and/or horizontal architectural and design patterns. Cognizant then adds new abstractions or modifies existing abstractions in the context of the project.
Where Agile Practices Don't Fit
Using a pure-play Agile approach in offshore projects leads to large gaps between requirements and implementation. The lack of proximity between different team members or the client team and Cognizant team leads to overhead (e.g., infrastructure, time, communication) in sustaining a pure-play Agile process, which cannot be justified.
Here are additional examples of where Agile practices would not be a first choice:
- Projects with a very tight budget and schedule . Typically these projects need to have a very strong planned approach to meet deadlines and stay within budget. There is no scope for requirements to evolve or foriterations.
- Projects demanding a high level of process adherence . There are situations (for example, as demanded by federal regulations) which require very strict process adherence. This can be of various types, from requirements approval processes to development processes. Such projects do not allow requirements to evolve and have to be predictive in nature.
- Products in the maturity phase of their lifecycle . Mature products which require maintenance or few enhancements do not require an Agile approach. Again, the requirements stability and market factors can ensure a planned approach for any software development work for these products.
Client Example: World's