How we work
The processes we use developing the Software for our customers are flexible to customers’ needs. Developing the Software for our customers we use Iterative and Incremental Development or other processes adapting to processes our customers use.
Iterative and Incremental Development is an essential part of Extreme Programming and all other agile software development frameworks. All development of a project is divided into Iterations. We try to use short iterations so that we have customer’s feedback all the time.
An Iteration includes
Requirements (from the Customer)
Analysis of Requirements and Project Plan
Project Specification and Estimate of the Iteration
Customer’s Approval of the steps ## 2 – 4
Development of the Tasks planned for the current Iteration and Testing
Delivery to the Customer (Deployment)
We develop a software system incrementally, allowing developers to take advantage of what was being learned during the development of earlier, incremental, deliverable versions of the system. Learning comes from both the development and use of the system, where possible. Key steps in the process are to start with a simple implementation of a subset of the software requirements and iteratively enhance the evolving sequence of versions until the full system is implemented. During each iteration, some design modifications are made and new functional capabilities are added.
The Procedure itself consists of the following steps
- Initialization step
- Iteration step
- Project Control List
Initialization step creates a base version of the system. The goal for this initial implementation is to create a product to which users can react. It should offer a sampling of the key aspects of the problem and provide a solution that is simple enough to understand and implement easily. To guide the iteration process, a project control list is created that contains a record of all tasks that need to be performed. It includes such items as new features to be implemented and areas of redesign of the existing solution. The control list is constantly being revised as a result of the analysis phase.
Iteration involves the redesign and implementation of a task from the project control list, and the analysis of the current version of the system. The goal for the design and implementation of any iteration is to be simple, straightforward, and modular, supporting redesign at that stage or as a task added to the project control list. The code can, in some cases, represent the major source of documentation of the system. The analysis of an iteration is based on user feedback, and the program analysis facilities available. It involves analysis of the structure, modularity, usability, reliability, efficiency, and achievement of goals. The project control list is modified in light of the analysis results.