OO Techniques Applied to a Real-time, Embedded, Spaceborne Application
Though object-oriented analysis, design, and languages have become the dominant practices in many, or most, domains of software engineering, concerns about complexity, size, and performance in the embedded, real-time software domain have led to a prevalent view that OO technology is not suitable for the domain. We challenge this view through a successful application of OOA, OOD, and C++ (including STL) in the embedded, realtime flight software in an Earth-orbiting science instrument named Aquarius (see ). We've found that OOA and OOD with UML actually enhance communication with systems and hardware engineers. We also found that C++, thoughtfully used, need not lead to code bloat, and that its performance is every bit as good as that of C. We begin with an overview of the requirements and describe our overall use of UML modeling, followed by a discussion of the use of UML for object-oriented analysis with use cases. Then the application of UML for high-level and detailed design, the use of frameworks supporting a component architecture and multi-platform execution, and code generation from UML detailed design are described. We also present the use of UML for organizing and designing and documenting our verification and test environment and scenarios, and using HTML, generated by our UML tool, for all documentation and for requirement traceability. Finally, we discuss the use of C++ as the implementation language.
Alexander Murray, Jet Propulsion Laboratory, California Institute of Technology
Mohammad Shahabuddin, Jet Propulsion Laboratory, California Institute of Technology