We follow traditional waterfall model, prototyping model or iterative RUP methodologies, depending on the project type.

We have a set of well-defined software engineering processes for software development life cycle. Eachof these processes,ranging from requirements to release, is based on industry-standard software development practices. Our processes have evolved over a period of time, to incorporate best practices in requirements management, project management and oversight, design methods and testing methodologies and tools.

We are equipped with a comprehensive Quality Management System comprising of Organizational Standard Software Development Processes, Departmental processes like HR and Information Systems, Artifacts for each process (process assets) and its related reference documents like Organizational Programming Guidelines, Review Guidelines, etc.

We propose to follow the development approach as described below:

A. Requirement Analysis

Requirements are gathered using industry-standard practices and reviewed both internally by peers and externally by clients, and findings of reviews are tracked to closure. Once these requirements are frozen, the development work begins.

All the requirements are numbered at the onset so that they are tagged for identification and accurately documented in the design document. Each requirement is assigned a Requirements ID, which is further used to track the requirement from definition, design, implementation and testing phases. This also helps to easily track and verify that all the requirements are catered.

B. Project Management

A project kick-off meeting marks the beginning of the project. A comprehensive project plan is prepared, which outlines all the critical aspects related to the smooth project execution. These include:

Process tailoring also forms an important part of this phase. One process does not fit all, hence adjustments may be required. PM and SQA refer to organizational process tailoring guidelines and tailor the process. SQA ensures that processes are tailored appropriately to meet the needs of the project based on the type and size. Tailored process is documented in the Project Plan.

C. Design

Design defines and maps the entire system in details, as well as the functional process flow.

The content of the design document contains the following main items:

For overall functionality, we use Microsoft Visio/Rational Rose for architecture and ERWin for database design. Before the design is finally approved, it is exhaustively reviewed by Technical Leads and System Architects. Design specific errors are identified and resolved. The detail design can also be given to the client for review, if required.

D. Programming

Here, actual programming activities are done according to the organizational programming guidelines for different technologies. Internal and inline commenting is done along with the programming activity. Completion of each module results in preparation of test cases and unit level testing. Code reviews are also done to ensure that the developed code adheres to the organizational guidelines for programming.

Code Reviews are done upon completion of each software unit. This ensures that programming is done according to laid out guidelines and that code is readable, clean and maintainable.

E. Testing

There are various levels of testing that have been defined and followed:

Test Planning is done at the onset of the project in the project planning phase. The Test plan outlines the types of test to be performed, resources, tools and responsibilities for test related activities.

For unit testing, the developers are made responsible for the quality of the module they are developing. At different levels and for different kind of projects, we use unit-testing tools like NUnit for .NET framework and JUnit for Java based applications.

For functional testing, test cases are generated and filled with data and supplied to the QA team.

During the integrated testing the entire application is deployed on the testing infrastructure and then various aspects of the application such as the platform support, browser support etc. are considered. Here some automated tools and stress testing tools are also used.

The final User Acceptance Testing (UAT) is also a very important procedure, which is done in phases by the client, before accepting the complete delivery of the application. Processes for projects are continuously verified and monitored by the SQA and senior team members of the project to ensure that the defined processes are followed to streamline the development and enhance the effectiveness.