Have you ever questioned why not all software teams are able to work at the same speed?
This article by Dirk-Jan Swagerman, outlines the hidden costs of “owning” software, and what business leaders can do to take control of their legacy software.
The hidden costs of software inventory
How to know, control, and improve the quality of your applications written with legacy C++ applications. Where to invest time to increase maintainability? How to reduce complexity to allow new developers to quickly get up to speed when joining the team?
Let’s think about C++ application written in C++ with use of MFC, COM interfaces and libraries that are only compatible with Visual Studio 2010 😉 I want to have an integration of various significant tools running in Jenkins.
What tools can I used to achieve this?
Unit testing
When I develop or refactor code, I do not want to unintensionaly effect other parts of the system. I want to verify this quickly. Then I use unit tests.
- Catch2 (not compatible with Visual Studio 2010 compiler)
- Boost.Test
Static Code Analysis
I want a tool to warn me for possible errors in the code.
- CppCheck
Memory leak testing
I want a tool to identity memory (de)alocation errors.
- Visual Studio CRT (under investigation)
- Dr.Memory (under investigation)
Application testing
I want to test my application by simulation a user. I want to replay use cases and test the reponse of the application. I do not want repetative manual tests. I want a tool that can recognize the id’s, names and classes of Win32 controls (like shown by Spy++).
- PyWinAuto (Python)
Code metrics
I want to quantify, control and observe the size and quality of my code. I want to measure and to improve maintainability and to decrease complexity.
- Not available in Visual Studio 2010.
- CCCC (produces HTML output)
- SourceMonitor (no Jenkins plugin for latest version)
Continuous integration
I want everything to be done and checked automatically, preferably when I am sleeping at night…
- Jenkins