Methodologies
IN OUR WORK WE USE...
In our work we stand by the core values of Agile Development. Our customers receive tangible results and forehanded solutions during the whole development process. Working software is the main goal of our work. Individuals and interactions are our major tools.
We use the following approaches to Software development
Test Driven Development (TDD)
Test-driven development requires that an automated unit test, defining requirements of the code, is written before each aspect of the code itself. These tests contain assertions that are either true or false. Running the tests gives rapid confirmation of correct behaviour as the code evolves and is refactored. Testing frameworks based on the xUnit concept (see the list of unit testing frameworks for an exhaustive list) provide a mechanism for creating and running sets of automated test cases.
- Add a test
- Run all tests and see the new one fail
- Write some code
- Run the automated tests and see them succeed
- Refactor code
We also use mixed models depending on customer’s needs.
Extreme Programming
- Distinguishing between the decisions to be made by business interests and those to be made by project stakeholders
- Writing unit tests before programming and keeping all of the tests running at all times
- Integrating and testing the whole system--several times a day
- Producing all software in pairs, two programmers at one screen
- Starting projects with a simple design that constantly evolves to add needed flexibility and remove unneeded complexity
- Putting a minimal system into production quickly and growing it in whatever directions prove most valuable
Scrum
Scrum is an iterative and incremental agile software development framework for managing product development. Projects progress via a series of iterations called sprints; at the end of each sprint the team produces a potentially deliverable product increment.
Benefits:
- Customer gets most beneficial work first.
- Work done will better meet the customers needs.
- Project can respond easily to change.
- Problems are identified early.
- Improved productivity.
- Ability to maintain a predictable schedule for delivery.
(RAD) Rapid Application Development
RAD approaches to software development put less emphasis on planning and more emphasis on process. RAD is especially well suited for (although not limited to) developing software that is driven by user interface requirements. Graphical user interface builders are often called rapid application development tools.
The advantages of RAD include:
- Better quality
- Risk control
- More projects completed on time and within budget
Kanban
Test-driven development requires that an automated unit test, defining requirements of the code, is written before each aspect of the code itself. These tests contain assertions that are either true or false. Running the tests gives rapid confirmation of correct behaviour as the code evolves and is refactored. Testing frameworks based on the xUnit concept (see the list of unit testing frameworks for an exhaustive list) provide a mechanism for creating and running sets of automated test cases.
Iterative and Incremental development
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 time.
Spiral
The spiral model is a risk-driven process model generator for software projects. Based on the unique risk patterns of a given project, the spiral model guides a team to adopt elements of one or more process models, such as incremental, waterfall, or evolutionary prototyping.
Prototyping
Prototyping has several benefits: the software designer and implementer can get valuable feedback from the users early in the project. The client and the contractor can compare if the software made matches the software specification, according to which the software program is built. It also allows the software engineer some insight into the accuracy of initial project estimates and whether the deadlines and milestones proposed can be successfully met.