+ Skilled people; precedent domain experience
- Stringent performance requirements; unstable external interface
Large scale, high performance, high reliability
The Software Architecture Skeleton
The CCPDS-R software process was tailored to exploit Ada and reusable middleware components in order to construct a distributed architecture rapidly. The NAS CSCI provided these primitive components and was initially developed on independent research and development funding before the CCPDS-R contract was awarded. These components were a first-generation middleware solution that enabled a true component-based development approach to distributed architectures. The instantiation of the NAS generic tasks, processes, sockets, and circuits into a run-time infrastructure was called a software architecture skeleton (SAS). The software engineering associated with the Common Subsystem SAS was the focus of the early builds and demonstrations. This is an excellent example of an architecture-first process.
The SAS encompasses the declarative view of the solution, including all the top-level control structures, interfaces, and data types passed across these interfaces. In the CCPDS-R definition of an architecture, this view included the following:
• All Ada main programs
• All Ada tasks and task attributes
• All sockets (asynchronous task-to-task communications), socket attributes, and connections to other sockets
• Data types for objects passed across sockets
• NAS components for initialization, state management of processes and tasks, interprocess communications, fault handling, health and performance monitoring, instrumentation, network management, logging, and network control
Even though a SAS will compile, it will not really execute many scenarios (except to come up and idle) unless software is added that reads messages, processes them, and writes them within application tasks. The purpose of a SAS is to provide the structure and interface network for integrating components into threads of capability. There are two important aspects of SAS verification and assessment: compilation and execution. Merely constructing and compiling all the SAS objects together is an important and nontrivial assessment that will provide substantial feedback about the consistency and quality of the SAS. Constructing components and executing stimuli and response threads within the SAS provide further feedback about structural integrity and run-time semantics.
The SAS, then, provides the forum for integration and architecture evolution. It is important to construct the SAS early and to evolve it into a stable baseline in which change is managed and measured for feedback about architecture stability. CCPDS-R installed its first SAS baseline (after three informal iterations) around month 13, just before the preliminary design review (PDR) milestone; all subsequent change was performed via rigorous configuration control. The SAS underwent numerous changes after its first baseline. These changes were scrutinized closely as the project progressed, but the SAS dynamics converged on an acceptable architecture with solid substantiation early in the life cycle. The SAS was useful in assessing the volatility in the overall software interfaces and captured the conceptual architecture of the Common Subsystem.
Figure D-3 provides a perspective of the software architecture stability. The graphs show that there was significant architectural change over the first 20 months of the project, after which the architecture remained pretty stable. The large spike in processes and tasks around month 5 corresponded to an attempt at a much more
Was this article helpful?
What you need to know about… Project Management Made Easy! Project management consists of more than just a large building project and can encompass small projects as well. No matter what the size of your project, you need to have some sort of project management. How you manage your project has everything to do with its outcome.