A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.
I'm doing a PhD in Computer Science at the University of Auckland, New Zealand. Part of my research involves looking at the design of real software systems. I have conglomerated a large corpus of Java software and found that for most systems dependencies between source files are not well-managed. The result is a system where almost everything depends on everythign else.
I give a brief overview of my research here:
Basically it involves modelling a software system as a directed graph where nodes are source files and edges are compilation dependencies. Then I collect graph-centric metrics like the size of strongly connected components and the reachability set for each class. I think that the metrics I have collected are useful at measuring some important aspects of "design quality".
If you are interested in seeing what the dependency structure of your software system looks like I have also made a tool available to collect these metrics. It too is available from my website.
Monday, May 29, 2006
Have you looked at the existing metrics. There are similarities with your reasearch. I did some study myself a couple of years back on this topic. But I felt it as difficult to convince ROI.
Chidamber, S.R., and Kemerer, C.F., "A Metrics Suite for Object-Oriented Design," IEEE Transactions on Software Engineering, Vol. 20, No. 6, June 1994, pp. 476-493.
and a tool
Monday, May 29, 2006
> Basically it involves modelling a software system as a directed graph where nodes are source files and edges are compilation dependencies.
That's an important part of the book _Large-Scale C++ Software Design_ by Lakos. Appendix C of that book is tools to extract this information from C++ source code.
You may be interested in this paper: http://objectwatch.com/whitepapers/ABetterPath-Final.pdf
It hilights with differences between application and enterprise architectures. Within an application architecture the goal of re-use and class-extension may lead to coupling and dependency, and that may be ok. However, an enterprise architechure has the goal of maintainability, and thereby seeks to minimize coupling and dependency.
This topic is archived. No further replies will be accepted.Other recent topics
Powered by FogBugz