Costs down – quality up: productivity in software development is a triad of development standards, automation and reuse.
In my article “Individual Standard: Mass Customization in Software Development” I pointed out how optimization potentials can be exploited by reusing fine-granular business and technical components. Here, the development of a travel management system served as an example with a total of 2,286 man days saved. Considering this impressive figure, the question arises: To what extent can the productivity in the development of individual systems be increased?
Blog series: Productivity of Software Development
- Individual Standard: Mass Customization in Software Development
- Increasing Productivity of Software Development – a Book Launch
- New Book: Increasing Productivity of Software Development – Part 2
- Three Levers for Higher Productivity in Software Development
- Productive Software Development Requires a Management Model
- Software Development: Every Error Is an Opportunity
- Productive Insight: Monitoring in Software Development
The manufacture – software development as a handcraft
If the product to be created is regarded as unique and the development process is very individual, we speak of a software manufacture. While existing programming languages, compilers, development environments, tools etc. are used, the development activity is widely characterized by manual work. Usually the product quality of a manufacture is considered good, but it highly depends on the experience and the skills of the developers.
We have numerous measured productivity values from our own as well as from customer projects. Usually manufactures reach a value of one DIP/MD, good performing projects can reach up to two DIP/MD, while bad projects can be below one DIP/MD.
What is a DIP?
The Data Interaction Point method (DIP method) is a method for measuring the functional size. Like the function point method and the COSMIC method, it is based on the standard ISO/IEC 14143 and it is a crucial requirement for cost estimations and quantitative metrics.
Improvements through/by means of development standards
Performance improvements can be realized by applying technical and process standards, for example:
- Programming guidelines and design patterns, supported by development environments which can be integrated with version control systems, code analysis tools and so on
- Development frameworks with reusable technical components
- Standard architectures, which provide proven system components and facilitate the integration of the developed software with these system components as well as a later exchange
- Modern development paradigms, which reduce implementation efforts for the new code by delegating tasks to the underlying platform and combine the strengths of, for example, object-oriented and functional programming concepts
- Process models determining processes and methods for all competence areas of software development, including templates for all documents to be created
One advantage of standards is that some requirements can be fulfilled without or with less individual code to be implemented and tested. A key advantage: Quality and productivity are independent of experience and manual skills of individual actors.
Productivity measurements of projects performed by the PASS Consulting Group, which apply technical and process standards, but still do not automate sub-processes of software development, show values between two and four DIP/MD. Thus, compared to a project with a more handcrafted way of production and a productivity of one DIP/MD, the development standards can lead to quadruple productivity. Development standards are a first step from a manufacture to a factory and an important basis for the next milestone: the increasing automation along the production process.
Automation offers further potential
Model-based development with code generation allows the implementation of software on the abstract level of a model instead of using a programming language. The PASS Software Factory is an example, where this paradigm has been applied in commercial software development for about 20 years.
It is based on models for dialogs, processes, workflows, data structures, interfaces and tools for the creation and modification of objects in these areas, for example graphical user interfaces, data models, models of business objects, simple process flows, workflows with multiple user interactions and so on. The developer can link the different models, for example workflows with dialogs, buttons in dialogs with processes, input fields with data elements and so on. Based on models and templates specifying language, style and commentation, a code generator creates an executable code which is automatically enriched, for example, by technical validation checks. Here, automation potential is not limited to the area of implementation, but can also be applied throughout the entire development process. After implementation, build and deploy processes can be automated, with a little more effort also testing.
In the case of development projects using the PASS Software Factory, we measured productivity values between four and eight DIP/MD. If GUI elements or workflows were standardized, we even measured between 20 and 25 DIP/MD.
Standardization and reuse of functional components
In software development, much more effort can be saved if new systems are created by simply putting together existing components with clearly defined functionality so that this functionality doesn’t have to be individually coded anymore.. The smaller these components are, the more individual a system can be created. This paradigm requires that every business or technical component is also available for others including a description of its functionality and the interface. In the ideal case, new requirements can simply be fulfilled by already existing components with costs arising only for the requirements analysis, the orchestration and the configuration of a system.
Meanwhile, the above-mentioned productivity of the development of a travel management system could be topped significantly: Another customer-specific travel management system has been developed by 90% of reused functional components, which had already successfully been used within other systems. The personnel costs amounted to377 man days and the system was delivered with a functional size of 30,442 Data Interaction Points. This results in a productivity value of 80.7 DIP/MD.
A performance comparison in figures
Taking the development of the travel management system described above as a reference and calculating the personnel expenditure required for the typical productivity of manufacture-like software development as well as for model-based development, we get the following results:
|90% Re-usability (measured)||80.7 DIP/MD||377 MD|
|Model-based development (assumed)||8 DIP/MD||3,805 MD|
|Manufacture (assumed)||1 DIP/MD||30,442 MD|
A management model to optimize productivity
The analysis of development projects performed according to different paradigms not only shows the potential regarding productivity increases. It also makes clear that single improvement measures are not sufficient to increase productivity sustainably. For several years, PASS has been using a management model which allows objective control by targeted exertion of influence and simultaneous control of the own productivity. Its basis are measuring methods and a manageable number of key performance indicators (KPIs), without which a company can determine neither its own productivity nor if changes resulted in an improvement or a deterioration. This management model will be presented in my next article.
My book series “Increasing Productivity of Software Development” provides further information on this topic. It describes in detail the management model mentioned above and shows practical experience with measurements in software development.
Picture credit: shutterstock