The safety critical embedded software development process in the vehicle industry is hardly based on the classic V model to assure the proper testing of the software modules. In other areas of the software industry new methodologies have appeared to solve the problem of the classic models. These are called Agile methodologies which focus on producing real value to the customers and handling the changes of the requirements in any state of the process. In the first chapter I investigated the most widespread Agile methodologies from the aspect of embedded programming.
Projects usually consist of software modules which shall be integrated as often as possible because nothing can guarantee the compatibility of the modules after changes. This is an Agile practice called Continuous Integration. The manual integration of projects is very time consuming, but fortunately tools like Jenkins Continuous Integration server can automatically build any project but Jenkins offers even more. It can run unit tests, collect code metrics and display the results of them.
The MKS version control and process manager system can connect the code changes and the development process together. Every code modification can be connected to a requirement and a developer in MKS. The disadvantage of the system is that the coordinators have to do more administration work, but a part of these works can be automated. I created a Java software library to supply a platform to any program which uses the MKS and three software coordinator tools which are based on the library. In the third chapter I present these applications.
The quality of the software means how it can fulfill the requirements, how much effort it takes to maintain the code and how much time is needed to understand it. The software quality can be measured by metrics. The most ancient metrics are the Line of Code (LOC) and the Cyclomatic Complexity which are used to determine the optimal size of functions to remain understandable and maintainable. Code Duplications shall be eliminated to increase quality. I gathered information to clarify the definition and goal of these metrics and implemented a tool which can measure these metrics of C program codes.