This entry follows up on a previous post with regard to NASA's efforts in software architecture and design (Software for the Stars). I am now reading through the articles referenced and found a gem by Dvorak, Rasmussen, Reeves and Sacks, Software architecture themes in JPL's mission data system. You can get the paper here.
This paper is a great discussion of an architectural approach using a state-based architecture. The authors detail their efforts to decrease coupling between modules through using coordiantion services and the examples they provide are easy to understand and serve to illustrate nicely the architectural point emphasized. They also introduce in the paper 13 themes of the architecture describing each and illustrating by example. Some examples of these themes are: construct subsystems from architectural elements, not the other way around; system state and models form the foundation for monitoring and control; express domain knowledge explicitly in models rather than implicitly in program logic; for consistency, simplicity and clarity separate state determination logic from control flow; design interfaces to accommodate foreseeable advances in technology etc. All of this is then modeled in the UML.
This paper is highly recommended. I am definitely using it in my architecture and design class and, since the writing is so accessible, I may even use it in the intro to software engineering class. If any of you get a chance to read (its other nice attribute is that it is short, 6 pages), I would be interested in your comments. Later!