Our approach to software development is based on ISO / IEC standards, as well as on the company standards and procedures resulting from our experience. Depending on the customer's preferences and project scope, we usually apply one of the two development methodologies: Prototyping and Iterative Development.
» Prototyping:
• Projects implemented by the Prototyping model normally pass through the following phases:
• Requirements Analysis and Definition;
• Prototype Creation / Modification;
• Efforts and Costs Estimation;
• Project Specification and Project Plan Development;
• System Implementation and Testing;
• Release: Delivery and Installation;
• Maintenance and Support.
A prototype demonstrates the crucial aspects of the target product. Prototype pages / screens contain comments describing the way the functional elements will work, so the customer can visualize the future product and make suggestions, comments, and adjustments before it is implemented.
The key point of Prototyping is that the system requirements, functional specification, and even software architecture design may be updated and modified at the Prototype Creation / Modification phase, which allows us to prepare an accurate estimate and ensures that the product we develop is exactly what the customer wants. With Prototyping, milestones and deadlines are set for each phase, and development proceeds without any overlapping or iterative steps..
» Iterative Development
The Iterative Development model is usually applied to designing software for customers who prefer continuous communication, short iterations, repeated reviews, and frequent deliveries. When we use Iterative Development, we create a product incrementally, taking advantage of the experience derived from the development and use of earlier, deliverable versions of the system. Each time, the existing implementation is thoroughly analyzed against the project goals. The analysis and measurement help us tailor the development process and improve the quality of the product. During each iteration, we both modify and enhance the product's functionality.
The idea behind the Iterative Development methodology is that project requirements, unclear at the initial phase, may be made more precise during the project. Iterative Development is commonly used for innovative projects where the technology or approach to be employed has to be identified as a result of experiments conducted as part of the development process.
Our approach to development involves the following practices.
Test Driven Development guarantees that tests are written as a part of the software building standard rather than as an afterthought to make sure the code works.
Coaching allows us to introduce new technologies on the fly. In each of our project teams, there is usually a coach who is sitting side-by-side with the team members to facilitate the process by making recommendations and helping the programmers keep on track.
Code review performed on a regular basis makes it possible to identify a number of problems prior to compiling and ensures that the code meets all applicable standards. Each programmer can be assigned another programmer to look through the colleague's code and offer feedback.
Pair programming is another way of working in pairs: one of the programmers handles the tactics, while the other one takes care of the strategy. Due to its synergy, this practice increases the performance of programmers and improves the quality of development.
|