An object-oriented program’s structure often bears little resemblance to its code structure. The code structure is frozen at compile-time; it consists of classes in fixed inheritance relationships. A program’s runtime structure consists of rapidly changing networks of communicating objects. The structures are largely independent and nearly impossible to understand one from the other.
The system is responsible for reading sensors and updating cockpit displays that help the pilot drop weapons on a target. It does not fly the aircraft.
The architecture is centered around three structures: Decomposition, a structure of modules Uses, a structure of modules Process, a structure of components and connectors The module decomposition is based on information hiding
GoalHow Achieved Ease of change to: weapons, platform, symbology, input Information hiding Understand anticipated changesFormal evaluation procedures to take advantage of experience of domain experts Assign work teams so that their interactions were minimized Modules structured as a hierarchy; each work team assigned to a second- level module and all of its descedants
Hardware-Hiding Module Extended Computer Module Device Interface Module Behavior-Hiding Module Function Driving Module Shared Services Module Software Decision Module Application Data Type Module Data Banker Module Filter Behavior Module Physical Models Module Software Utility Module System Generation Module
GoalHow Achieved Incrementally build and test system functions Create “is-allowed-to-use” structure for programmers that limits procedures each can use Design for platform changeRestrict number of procedures that use platform directly Produce usage guidance of manageable size Where appropriate, define uses to be a relationship among modules
GoalHow Achieved Map input to outputEach process implemented as cycle that samples inputs, computes, and presents output Maintain real-time constraintsIdentify process through process structure and then perform offline scheduling Provide results of time-consuming calculations immediately Perform calculations in background and return most recent value when queried