Agile software development

”Software requirements specification is often a long and costly process, when in fact there are only a handful of key features in a successful application. Therefore, a more effective and cost-efficient approach is to identify the core functions of the system and focus on them. Iterative software development is very transparent and it provides guaranteed value for money. The end result is an application that the users really can and want to use instead of an application with hundreds of features nobody needs”, says Kalle Markkanen.

Do not over-develop. In traditional software development, requirements specification and coding takes a lot of time, but still the end result is not necessarily what was needed. The research shows that way too often only a fraction of available software features is used. Agile software development addresses these core needs. Unnecessary features cause unnecessary costs both during the development and maintenance phases.

The agile software development is based on tight sprints that each last only a couple of weeks. The goal of each print is to develop production-eligible software and reach certain objectives. After the sprint, the customer can easily evaluate the project’s direction, cut off idle ideas, brainstorm the important features in more detail and match the project to the available budget.

Be active. Agile software development requires that the customer is active and evaluates whether or not each sprint reaches its objectives. Testing is an essential part of each phase: test data is very useful in order to model how the software would work just as desired. Iterative software development is all in all a truly transparent way of developing software; the customer gets his money’s worth and can see, in real time, whether the project moves in the right direction.

Take advantage of the modularity. The modularity adds to the agility of software development. If a particular feature needs to be changed, the changes can be applied to only a specific module. The unit tests are used to ensure that the module operates in the desired manner and the changes do not break other functionalities. Automated testing plays an important role in software development, as it often reduces the need for strenuous manual testing.

Manage processes. Agile software development evolves gradually. Software life cycle begins, however, as soon as the first lines of code are written and even the results of the first sprint have to be installable to a test environment with automated processes. If the installation process is tedious and requires a lot of manual work, the software is often tested too little. Feature-orientated approach allows to have a clear picture of what features are included in the end-result of the sprint. This way both the customer and the software development team have constantly a clear picture of the objectives.

Kalle Markkanen

Senior software developer