|
Whenever we take a project, we ensure that it is executed in a very organized and planned manner. As the diagram below (Fig. 1) shows, there is a defined team structure for every project.
A project goes through several phases of development and the development life-cycle (Fig. 2) that we follow is described in brief below:
SPECIFICATION (Requirement Analysis): This is where we do an in-depth analysis of the client's requirements. We try to answer the following questions:
To improve our understanding of the concept we develop a prototype of the actual application. This also makes it easier for our developers to come up with clarifications required from the client. DESIGN: Once we have completed the Specification phase, we get down to designing a solution to the problem, that is, what should be the flow of the application. Breaking down the project into various modules makes the task of designing easier and more efficient. We specify each module's purpose, assumptions, input and output. RISK ANALYSIS: Developing software entails risks. Some risks are the same for all software projects and some are unique to the one at hand. It is possible to predict some of these risks and some are unpredictable. As risks can affect a project's timetable or cost, and the basic purpose of the software, we carry out a detailed analysis of the risks that are known or can be predicted. VERIFICATION: In this phase, we review the design and verify whether it is modular, reusable and extensible. Also, Algorithms, if used, are verified for correctness. CODING: The Coding phase involves translating the design into a particular programming language and removing the syntax errors. It is always our aim to abide by the coding standards that we have developed with time and experience. TESTING: During the Testing phase, we remove as many logical errors as we can. Test cases are generated in Matrix form. Testing is carried out using automatic tools such as JUnit - for this, test stubs are generated along with the code. Integration test plans are also created and bugs are tracked against pre-defined quality standards. We believe that testing is both a science and an art. REFINING: The result of all the above phases is a working program, which we have tested extensively and debugged as necessary. However, some amount of refining is required that takes care of minor discrepancies. ON-SITE TESTING: In-spite of all our testing at our development center, it is possible that some problems may arise when the application is installed at the client-site. So on-site testing is carried out and our engineers fix any problems on the spot. This saves the client the post-delivery burden of having to use a problematic application till someone comes and fixes it. PRODUCTION (Delivery and Acceptance): Once the application is complete and running smoothly, we make a final delivery and an acceptance document is signed by the client after he is satisfied with the delivery. SUPPORT: Maintaining a program is not like maintaining a car. Software does not wear out if you neglect it. However, users of the application may detect errors or limitations that we did not discover during the testing phase. Correcting these errors is part of maintaining the application. We offer a full year's (from the date of acceptance) support to our clients during which period, any bugs that are detected are fixed without any added cost. However, any enhancements or functional modifications to the existing application are treated as separate projects. DOCUMENTATION: As the Software Development Life-Cycle graphic shows, Documentation is at the core of the entire Software Development Life Cycle. It is not a separate phase, but it is integrated into every phase of development. Precise documentation is vital to the success of a project. |






