AADL Musings

Just got back from a course on the Architecture Analysis and Design Language (AADL) in Huntsville, AL. Stayed right next to the U.S. Space & Rocket Centre but didn’t get a chance to go visit. The Saturn V stands proudly and is visible from my hotel room window.

The AADL lets you model systems as a hierarchy of components, themselves systems. Systems are interconnected via data and event flows. You can also specify properties such as latencies, power consumption, execution time, heat, and weight - both expected and nominal values for each component. Analysis tools, such as those implemented in OSATE, can take these properties and check if the end-to-end latencies, power consumption etc. meet the expected values. Realisations of systems take the form of system implementations and it is possible to try out several different system implementations (e.g. multiprocessor, multicore, uniprocessor) and make several analyses to see which one works best. On top of that the AADL has a very well defined set of semantics for how threads are scheduled, how processes interact, the life cycle of a process, and so on. The AADL is also a standard maintained by the SAE.

I think there’s a place for the AADL in the software development realm - we haven’t done much in the way of rigorous analysis of throughput, many times only as an afterthought. I strongly encourage software system designers and developers to take a hard look at the AADL and see where we all can use the notation and properties to help us better analyse the throughput, latency, and other key performance factors in our systems.