Development Approach
Our software development approach is tailored to the needs of the client. We use two main development methodologies: Agile and Iterative development. When a client is already using Agile methods, we plug our development process into the client’s framework. In other environments, we employ our Iterative development approach.
As is expected of an organization certified at Level 5 of the Capability Maturity Model, our processes are continuously reviewed and improved.
Agile Development Method
We become part of your agile process. In most cases, the product owner is part of the client project team. We either facilitate product planning or start with the defined backlog, depending on the role the client wants to take. A typical project begins with a "Sprint 0" - a 2-week task to define non-functional requirements, high level architecture, deployment considerations, and perform coarse-grained planning. From there, we begin Sprint 1: we plan the iteration, design, develop, and test the implemented tasks, and deliver the iteration release. A typical project life-cycle is shown in the diagram below.

We will tailor our Agile process to match the client’s development environment and process. Our experience with Agile projects with offshore resources allows us to employ practices that will lead to project success.
Iterative Development Method
Our Iterative Software Development Life-cycle is based on the Rational Unified Process (RUP) and has evolved over the years, with particular emphasis placed on predictability, flexibility and deliverable quality.
We have made special effort to incorporate the major tenets of “Agile” development into our Iterative process: communication and iteration through the use of short-duration “Sprints” along with the use of managed project backlog lists that are reviewed frequently with project stakeholders.
At the beginning of the project, we break down the work into discrete, non-overlapping elements. Each work element is iterated through a mini project life-cycle of its own to achieve the overall project objectives. After each iteration we re-plan the remainder of the project to make adjustments that are necessary to the remaining work elements. Mandatory quality gates between each major life-cycle phase ensure the team is ready to progress. The diagram below depicts both the non-overlapping phases and the iterative nature of the project life-cycle.

It is important to note that onshore team members actively participate in the technical work throughout the project. In addition, we encourage active participation from client resources in every engagement, since the more involved a client becomes in project deliverables, the more closely we will meet the needs of the client, plus facilitating knowledge transfer back to client personnel. For each project, the project leader will tailor our standard life-cycle to suit the project needs.


