Reusable Software Components Bruce W. Weide, William F. Ogden, and Stuart H. Zweben Department of Computer and Information Science The Ohio State University Columbus, Ohio 43210-1277 1. Introduction............................................................................................................................. 1 1.1 Electronics Engineering vs. Software Engineering .............................................................. 1 1.2 Objective and Overview ................................................................................................. 2 2. Framework.............................................................................................................................. 3 2.1 A Model of Software Structure........................................................................................ 3 2.2 Reusable Software Components ...................................................................................... 4 2.3 A Software Components Industry .................................................................................... 5 3. Defining a Reusable Concept...................................................................................................... 7 3.1 Specification of Behavior ............................................................................................... 7 3.2 Algebraic Specification.................................................................................................. 9 3.3 Model-Based Specification.............................................................................................. 12 3.4 Language Issues ........................................................................................................... 13 4. Designing a Reusable Concept.................................................................................................... 15 4.1 Efficiency and the Relationship Between Concept and Content .............................................. 15 4.2 General Design Guidelines for Reusable Abstract Components.............................................. 16 4.3 Corollaries .................................................................................................................. 19 4.4 An Example: Critique and Redesign of the Stack_Template .................................................. 24 4.5 Chasing Efficiency at the Expense of Correctness ............................................................... 31 5. Other Issues ............................................................................................................................ 33 5.1 Defining Context ......................................................................................................... 33 5.2 Certifying That Content Correctly Implements Concept ...................................................... 39 6. Conclusions ............................................................................................................................ 44 To appear in Advances in Computers, M.C. Yovits, ed., Academic Press, 1991. 1. Introduction For over twenty years programmers have dreamed of developing software systems that are engineered like traditional physical systems. The vision of a software industry resembling the