Had an interesting presentation in today's thesis seminar. The speaker was Professor Olivier de Weck, who has a background in aerospace (fighter jets to be more specific). He talked a little about his background, but recently, his work has been on what he's termed 'strategic engineering' which is basically about designing your system so that you can adapt to future changes with a minimum of pain. In this, you can break it down even more into two pieces. The first is “Design for Changeability” — this is something that is often done in the software world when you do things like design an API by taking into account how you might want to expand it in the future and also ensuring that you have a way of tracking those changes. The other piece is “Design for Commonality” — and this is a large part of what the whole Fedora spins process is about as well as the variation within the RHEL product family. Basically, each provides the basic building blocks upon which you build more things on top of.
Then, in contrast to many of the other speakers for thesis seminar, he did a pretty in-depth look at one of the SDM theses which he worked with. The subject of the thesis was change propagation in complex systems — basically, they were looking at change requests over the life of a product and doing some analysis of grouping and where some of the loci of change were. This was really interesting to see as the application was far different from that of software and yet a lot of the patterns which I have anecdotally noticed from years of dealing with bugzilla emerged through their analysis of the data. From the initial work here, there's definitely a lot more which could be done and in a lot of ways, there's mounds of data that could easily be mined from various open source projects.
Very very interesting stuff and even if I don't end up going in one of these directions for my thesis, I think I need to spend some time reading the research that's been done previously.