Here are my pontifications…
In current software systems, an Architecture Description Language (ADL) is used for architectures of component-based software systems. Let’s take an example of a Windows Phone Application, you dear reader, may start with a game engine for an existing application from AppHub. Then you figure out how to modify the application using the poorly documented classes and pump something out that sells well on AppHub, with solid revenue from the ad banner.
After a few months, a entrepreneur with some cash burning a hole in their pocket and wants to purchase your app for a high five figures (figures on the left side of the decimal point). There is a caveat, the entrepreneur is a software smartie and wants solid documentation or no deal. You write some pages in MS Word, run a class diagram and hand to the entrepreneur. They look at the documentation and then tell you the documentation is unacceptable they need an architecture description. Oh-oh.
Always in your life you simply powered through code. Now someone is calling for documentation. And because the deal is delayed the buyer thinks of a couple more things they want: a test plan, and playability survey. Crap.
The entrepreneur backs off and decides to pay your price for the app, but you have agreed to maintain it for the next year. Which shouldn’t be too hard to do.
The entrepreneur has some more cash as your app is doing well and they want to create a version that uses gyro. It turns out that your agreement with them shows that for the price of purchase you have to do the work for the money you already got from them. And you spend most of the money you got on the graphic artist payout. When you dig into the code you realize that it appears that monkeys wrote the code, sadly the monkey was you and you forgot a bunch of stuff.
Now this is just a story, but if you used the automatic architectural tools in Visual Studio Ultimate you would have been able to get the app sold without the maintenance clause, and save the wear and tear on your brain and soul.
Here are some arcane articles on the concept of architecture description:
- Software Architecture Description supporting Component Deployment and System Runtime Reconfiguration
- Abstractions for Software Architecture and Tools to Support Them
Using the apparently secret Architectural Explorer in Visual Studio Ultimate:
How to generate Dependency graphs for .NET code:
Some of these tools require that you install the Visual Studio 2010 Feature Pack 2, which you are suppose to be an MSDN subscriber. If you are a student or professor you can gain access to this Feature Pack through MSDNAA.