Software tools and techniques for embedded distributed processing
Herb C. Conn · Noyes Publications eBooks · 1986
Conn and his fellow authors attempt to identify the hardware and software technology pertinent to the implementation of tightly coupled distributed systems; establish an integrated approach to the total life-cycle software development period (correlating existing and near-term software engineering methodology, techniques, and tools to each life-cycle phase); and define the functional design requirements for far-term development of needed software engineering methodology, techniques, and tools. The book consists of three reports prepared in June 1983 by General Dynamics Corporation for the US Air Force Systems Command Rome Air Development Centers. The three reports are Processing Tools Definition-Hardware and Software Technologies for Tightly-Coupled Distributed Systems, Processing Tools Definition-Application of Software Engineering Technology, and Processing Tools Definition-An Integrated Software Engineering Environment for Distributed Processing Software Development. In the first report on hardware and software technologies, the Ada language is identified as being of primary importance to embedded distributed processing systems. The book concentrates on Ada and its impact on the software development life cycle, in particular the evolution of Ada Programming Support Environments (APSEs). Conn et al. strongly suggest that tools should be integrated with the environment, that is, an integrated software support environment (ISSE), and that the software life-cycle support tools for embedded distributed processing systems should view hardware and software from a total-systems perspective. There are, however, significant problems with recognizing these ambitious goals. A specific example is the issue of types in the environment database. Existing mechanisms for tool integration in programming support environments such as Unix rely on simple byte streams. This is similar to languages that do not have strong typing. The people working on the Common APSE Interface Set (CAIS) have debated this and other issues related to tool integration extensively and have not arrived at a satisfactory conclusion. Many feel that we do not understand the implications of these issues well enough to make definitive decisions at this time. In 1983 we were only beginning to face these issues; APSE discussions centered on the Stoneman requirements (Requirements for Ada Programming Support Environments: Stoneman, DoD, Feb. 1980). At that time there were no validated Ada compilers, and there were two divergent APSE development efforts: the Ada Integrated Environment and the Ada Language System. This book predates much of the useful work in the APSE area. The concept of object-oriented modularization is introduced as a system-level viewpoint of both hardware and software that provides a central theme for the analysis, design, and implementation of embedded distributed processing systems. Objectoriented design was popularized in the Ada world by Grady Booch (Software Engineering with Ada, Benjamin/ Cummmings, Menlo Park, Calif., 1983). The key feature of the objectoriented methodology is that each object executes without needing to know the internal details of other objects. An object is simply defined as an entity that contains information in an organized manner. Access to objects is strictly controlled on a need-to-know basis; information developed on one level of design is shielded from use on another level of design. Ada supports object-oriented design primarily through packages. The package specification contains the interface to an object, but the package body implementing the manipulations on the object is not directly accessible. The authors suggest that object-oriented design requires language support. While such language support as Ada packages is desirable, a number of projects have successfully applied object-oriented design using an Ada/PDL and implemented the design in a traditional language, for example, Fortran. As a general rule, design methodologies are language independent. The authors also suggest that the use of Ada in the distributed environment needs analysis, and discuss some global time issues related to distributing the Ada rendezvous. Since the topic of the book is building distributed systems, and Ada is the chosen implementation language, it seems this issue should have been studied in much more detail. Volz (Some Problems in Distributing Realtime Ada Programs Across Machines, Ada in Use, Proc. Ada Int'l Conf., ACMAda Letts., Vol. 5, No. 2, Sept. 1985, pp. 72-84) and Paulk (Problems with Distributed Ada Programs, Proc. Fifth Phoenix Conf. Computers and Commun., IEEE, New York, March 1986) among others have identified a number of problems with distributing Ada programs. The solution chosen to solve a particular problem may have serious implications for the real-time performance of a distributed system. The second report on the application of software engineering technology discusses the increased distribution of hardware, control, and databases; integrated support environments; and nearterm generic tools and how they fit into the life cycle phases of software. I found this report comparatively superficial and uninteresting.