background preloader


Facebook Twitter

AACRE Thesis Award 2009. .NET naked - See these hitherto unpublished pictures of the .NET Framework architecture - Ralf's Sudelbücher. Have you ever thought about the quality of your code?

.NET naked - See these hitherto unpublished pictures of the .NET Framework architecture - Ralf's Sudelbücher

Well, I bet. Have you ever strived for a sound architecture of your software solutions? Well, I hope. Do you have a process in place to constantly monitor the quality of your software´s architecture and code? Well, you should. Sounds self-evident? So the quality situation still is pretty dire in the software industry despite all the discussions around pair programming, unit testing, patterns, refactoring, modelling approaches etc. The xUnit family of tools is an example for such a quality improvement tool.

What, for example, about the structural qualities of a software? NDepend is another tool assessing software structure quality. Then there is Sotograph which might be the most comprehensive single tool to analyse even large software systems. Dependency Structure Matrix The other day, though, I stumbled over yet another software quality assessment tool: Lattix LDM. Fig. 1: Some Python classes Lattix LDM shows them using a matrix, e.g. Expressing Software Architecture with Inter-module Dependencies. Excessive inter-module dependencies have long been recognized as an indicator of poor software design.

Expressing Software Architecture with Inter-module Dependencies

Highly coupled systems, in which modules have unnecessary dependencies, are hard to work with because modules cannot be understood easily in isolation, and changes or extensions to functionality cannot be easily localized. Imagine how complex Eclipse plugin development would be if every plugin had a cross-dependency on every other plugin. Maintaining Eclipse would be a nightmare because of the risk that changing one portion could impact everything else.

However, it isn't always clear which dependencies are necessary or even desirable and which ones are good candidates for elimination. An understanding of the architecture in terms of the dependencies between modules can go a long way towards dealing with this conundrum. Figure 1 shows a typical UML diagram. Here we present a powerful new approach for representing the architecture of large software systems. Class A depends on Class B if: The Agile Manufacturing Project at MIT. System Dynamics (SD) and Design Structure Matrix (DSM) There is a very clever theory that was developed at MIT and put to use by Lockheed Martin and similar firms.

System Dynamics (SD) and Design Structure Matrix (DSM)

This is the Design Structure Matrix concept. The other concept is System Dynamics. System dynamics is an approach to understanding the behavior of complex systems over time. It deals with internal feedback loops and time delays that affect the behavior of the entire system. There are some claiming this is the next big thing in project management. The concepts of feedback and rework in SD are not represented on the current scheduling paradigms. What needs to happen on the DSM side, is to turn the tool Latix into a project planning tool. In theory there is no difference between theory and practice. So when the academics and the theorist DSM and SD to the practice program planning and controls in the same way Latix did for software development we'll be on to something unique and powerful. What are the interdependencies between tasks or deliverables? The Design Structure Matrix (DSM)

The Design Structure Matrix Web Site. Lattix Software.