Quantitative Safety Analysis of UML Models

My master’s thesis is now available online here.

Abstract

When developing a safety-critical system it is essential to obtain an assessment of different design alternatives. In particular, an early safety assessment of the architectural design of a system is desirable. In spite of the plethora of available formal quantitative analysis methods it is still difficult for software and system architects to integrate these techniques into their every day work. This is mainly due to the lack of methods that can be directly applied to architecture level models, for instance given as UML diagrams. Another obstacle is, that the methods often require a profound knowledge of formal methods, which can rarely be found in industrial practice. Our approach bridges this gap and improves the integration of quantitative safety analysis methods into the development process. We propose a UML profile that allows for the specification of all inputs needed for the analysis at the level of a UML model. The QuantUM tool which we have developed, automatically translates an UML model into an analysis model. Furthermore, the results gained from the analysis are lifted to the level of the UML specification or other high-level formalism to further facilitate the process. Thus the analysis model and the formal methods used during the analysis are hidden from the user.

Programmer Competency Matrix

I just found this Matrix which helps in assessing the competency of a programmer in different fields such as computer science, software engineering, programming,  experience and knowledge. While the programming part is pretty detailed, in my opinion the computer science and software engineering part fall short.

Software Engineering is not just source control and automated build and testing, important things like process knowledge, knowledge about requirements engineering and the knowledge about architecting a complex software system are missing. I agree that a programmer is not the software architect, but s/he should at least have a rough idea of what the software architect does. (This holds also the other way round).

But if you want to asses your programming skills, or those of a prospective knew hire, the matrix is a good start.