General Navigation Buttons - Home | Search | Contact Us | Site Map | Whats New
products graphic
white space
products
Software Technology Roadmap
What's New
Background & Overview
Technology Descriptions
Defining Software Technology
Technology Categories
Template for Technology Descriptions
Taxonomies
Glossary & Indexes
Feedback & Participation
Software Engineering Information Repository (SEIR)
white space
About SEI|Mgt|Eng|Acq|Collaboration|Prod.& Services|Pubs
pixel
Rollover Popup Hints for Topic Navigation Buttons above
pixel
Module Interconnection Languages


Status

Complete

Purpose and Origin

As software system size and complexity increase, the task of integrating independently-developed subsystems becomes increasingly difficult. In the 1970s, manual integration was augmented with various levels of automated support, including support from module interconnection languages (MILs). The first MIL, MIL75, was described by DeRemer and Kron [DeRemer 76], who argued with integrators and developers about the differences between programming in the small, for which typical languages are suitable, and programming in the large, for which a MIL is required for knitting modules together [Prieto-Diaz 86]. MILs provide formal grammar constructs for identifying software system modules and for defining the interconnection specifications required to assemble a complete program [Prieto-Diaz 86]. MILs increase the understandability of large systems in that they formally describe the structure of a software system; they consolidate design and module assembly in a single language. MILs can also improve the maintainability of a large system in that they can be used to prohibit maintainers from accidentally changing the architectural design of a system, and they can be integrated into a larger development environment in which changes in the MIL specification of a system are automatically reflected at the code level and vice versa.

Technical Detail

A MIL identifies the system modules and states how they fit together to implement the system's function; MILs are not concerned with what the system does, how the major parts of the system are embedded in the organization, or how the individual modules implement their functions [Prieto-Diaz 86]. A MIL specification of a system constitutes a written description of the system design. A MIL specification can be used to

  • Enforce system integrity and inter-modular compatibility.
  • Support incremental modification. Modules can be independently compiled and linked; full recompilation of a modified system is not needed.
  • Enforce version control. Different versions (implementations) of a module can be identified and used in the construction of a software system. This idea has been generalized to allow different versions of subsystems to be defined in terms of different versions of modules. Thus MILs can be used to describe families of modules and systems [Tichy 79, Cooprider 79].
For example, consider the simplified MIL specification shown in Figure 24 and its associated graphical representation shown in Figure 25. The hypothetical MIL used in Figure 24 contains structures for identifying the modules of interest (in this case the modules are ABC, Z, and YBC); structures for identifying required and provided data; provided functions; and structures for identifying module and function versions. The module ABC defined in the figure consists of two parts, a function XA and a module YBC; the structure of each of these entities is also defined. Note that function XA has three versions, a Pascal, an Ada, and a FORTRAN version. These three versions would be written and compiled using their respective language development environments. A compilation system for this hypothetical MIL would process the specification given in Figure 24 to check that all required resources (such as x and z) are provided, and to check data type compatibility between required and provided resources. Provided these checks passed, the MIL compilation system, in conjunction with outside (user or environmental) inputs such as version availability and language choices, would select, compile (if necessary), and link the system. Incremental compilation is supported; for example, if the implementations for function XA change, the MIL compilation system will analyze the system structure and recompile and relink only those portions of the overall system affected by that change.

Figure 24: MIL Specification of a Simple Module

Figure 25: Graphical Representation

MILs do not attempt to do the following [Prieto-Diaz 86]:

  • Load compiled images. This function is left to a separate facility within the development environment.
  • Define system function. A MIL defines only the structure, not the function, of a system.
  • Provide type specifications. A MIL is concerned with showing or identifying the separate paths of communication between modules. Syntactic checks along these communications paths may be performed by a MIL, but because MILs are independent of the language chosen to implement the modules they reference, such type checking will be limited to simple syntactic- not semantic- compatibility.
  • Define embedded link-edit instructions.
Recently, MILs have been extended with notions of communication protocols [Garlan 94] and with constructs for defining semantic properties of system function. These extended MILs are referred to as Architecture Description Languages (ADLs).

Usage Considerations

MILs were developed to address the need for automated integration support when programming in the large; they are well-suited for representing the structure of a system or family of systems, and are typically used for project management and support. When adopting the use of MILs, an organization will need to consider the effect on its current system development and maintenance philosophy.

Because the structure of a software system can be explicitly represented in a MIL specification, separate documentation describing software structure may be unnecessary. This implies that if MILs are used to define the structure, then the architectural documentation of a given system will not become outdated.

Although some support is provided for ensuring data type compatibility, MILs typically lack the structures required to define or enforce protocol compatibility between modules, and the structures necessary to enforce semantic compatibility.

Maturity

The MESA system at Xerox PARC was developed during 1975 and has been used extensively within Xerox [Geschke 77, Mitchell 79, Prieto-Diaz 86]. Other MILs have been proposed, defined, and implemented, but most of these appear to have been within a research context. For example, MIL concepts have been used to help design and build software reuse systems such as Goguen's library interconnection language (LIL) that was extended by Tracz for use with parameterized Ada components [Tracz 93]. Zand, et al., describe a system called ROPCO that can be used to "facilitate the selection and integration of reusable modules" [Zand 93].

At the time of publication, however, there are no tools supporting MILs and little research in this area.1 Recent MIL-based research has shifted focus and now centers around the themes of software reuse and architecture description languages (ADLs). Architecture Description Languages can be viewed as extended MILs in that ADLs augment the structural information of a MIL with information about communication protocols [Garlan 94] and system behavior.

Costs and Limitations

MILs are formal compilable languages. Developers will need training to understand and use a MIL effectively. Training in architectural concepts may also be required.

The lack of a formal semantic for defining module function has at least the following implications:

  • Limited inter-module consistency checking. MIL-based consistency checking is limited to simple type checking and- if supported- simple protocol checking.
  • Limited consistency checking among module versions. MILs lack the facilities to ensure that different versions of a module satisfy a common specification, and may potentially lead to inconsistent versions within a family.
  • Limited type checking. If mixing languages with a system, a developer may need to augment standard MIL tools with more sophisticated type checking utilities. For example, data types may be represented differently in C than in Ada, but the simple type checking found in a typical MIL will not flag unconverted value passing between languages.

Dependencies

Incremental compilers and linkers are required by most MILs.

Alternatives

Alternatives to MILs include documenting the structure of a system externally, such as in an interface control document or a structure chart. Architecture Description Languages (ADLs) can also be used to define the structure of a system, and are believed to be the current direction for this technology area.

Index Categories

This technology is classified under the following categories. Select a category for a list of related topics.

Name of technology

Module Interconnection Languages

Application category

Architectural Design (AP.1.3.1)
Compiler (AP.1.4.2.3)
Plan and Perform Integration (AP.1.4.4)

Quality measures category

Correctness (QM.1.3)
Structuredness (QM.3.2.3)
Reusability (QM.4.4)

Computing reviews category

Software Engineering Tools and Techniques (D.2.2)
Organization and Design (D.4.7)
Performance (D.4.8)
Systems Programs and Utilities (D.4.9)

References and Information Sources

[Cooprider 79] Cooprider, Lee W. The Representation of Families of Software Systems (CMU-CS-79-116). Pittsburgh, PA: Computer Science Department, Carnegie Mellon University, 1979.
[DeRemer 76] DeRemer, F. & Kron, H. "Programming-in-the-Large Versus Programming-in-the-Small." IEEE Transactions on Software Engineering SE-2, 2 (June 1976): 321-327.
[Garlan 94] Garlan, David & Allen, Robert. "Formalizing Architectural Connection," 71-80. Proceedings of the 16th International Conference on Software Engineering. Sorrento, Italy, May 16-21, 1994. Los Alamitos, CA: IEEE Computer Society Press, 1994.
[Geschke 77] Geschke, C.; Morris, J.; & Satterthwaite, E. "Early Experience with MESA." Communications of the ACM 20, 8 (August 1977): 540-553.
[Mitchell 79] Mitchell, J.; Maybury, W.; & Sweet, R. MESA Language Manual (CSL-79-3). Palo Alto, CA: Xerox Palo Alto Research Center, April 1979.
[Prieto-Diaz 86] Prieto-Diaz, Ruben & Neighbors, James. "Module Interconnection Languages." Journal of Systems and Software 6, 4 (1986): 307-334.
[Tichy 79] Tichy, W. F. "Software Development Control Based on Module Interconnection," 29-41. Proceedings of the 4th International Conference on Software Engineering. Munich, Germany, September 17-19, 1979. New York, NY: IEEE Computer Society Press, 1979.
[Tracz 93] Tracz, W. "LILEANNA: a Parameterized Programming Language," 66-78. Proceedings of the Second International Workshop on Software Reuse. Lucca, Italy, March 24-26, 1993. Los Alamitos, CA: IEEE Computer Society Press, 1993.
[Zand 93] Zand, M., et al. "An Interconnection Language for Reuse at the Template/Module Level." Journal of Systems and Software 23, 1 (October 1993): 9-26.

Current Author/Maintainer

Mark Gerken, Air Force Rome Laboratory

External Reviewers

Will Tracz, Lockheed Martin Federal Systems, Owego, NY

Modifications

10 Jan 97 (original)

Footnotes

1 Source: Will Tracz in Re: External Review - MILS, email to Bob Rosenstein (1996).



The Software Engineering Institute (SEI) is a federally funded research and development center sponsored by the U.S. Department of Defense and operated by Carnegie Mellon University.

Copyright 2007 by Carnegie Mellon University
Terms of Use
URL: http://www.sei.cmu.edu/str/descriptions/mil_body.html
Last Modified: 11 January 2007