NATO UNCLASSIFIED NATO STANDARD FOR SOFTWARE REUSE PROCEDURES (of 3 Documents) Development of Reusable Software Components Management of a Reusable Software Component Library Software Reuse Procedures Issued and Maintained by: NATO COMMUNICATIONS AND INFORMATION SYSTEMS AGENCY (Tel.Brussels(2).728.8490) This document may be copied and distributed without constraint,for use within NATO and NATO nations. NATO UNCLASSIFIED
N A T O U N C L A S S I F I E D NATO STANDARD FOR SOFTWARE REUSE PROCEDURES Volume 3 (of 3 Documents) - Development of Reusable Software Components - Management of a Reusable Software Component Library - Software Reuse Procedures Issued and Maintained by: NATO COMMUNICATIONS AND INFORMATION SYSTEMS AGENCY (Tel. Brussels (2).728.8490) This document may be copied and distributed without constraint, for use within NATO and NATO nations. N A T O U N C L A S S I F I E D
Table of Contents Table of Contents. …ii List of Figures. .V List of Tables.. ..V PARTI InTRODUCTION AND BACKGROUND Section 1 Introduction.. .1-1 1.1 Purpose and Scope. …11 1.2 Guide to Using this Manual 1-1 Section 2 Applicable Documents....... .2-1 Section3 Basic Reuse Concepts 31 3.1 Definitions 3-1 3.2 Expected Benefits of Reuse .3 3.3 Dimensions of Reuse. 34 3.4 Forms of Reuse 3-5 3.5 Issues in Achieving Reuse .3-6 Section 4 The Reuse Library........ …4-1 4.1 Reuse library Overview 又 41.1 Expected User Interactions 4.1.2 RSC Quality Standards.... .4-2 4.1.3 RSC Classification Scheme .4-2 PART II STANDARD Section 5 Reuse Library Procedures .5-1 5.1 Administration Procedures. 父 5.2 Searching for RSCs..... .5-2 5.3 Selecting RSCs 5-3 5.4 Extracting RSCs. 5-5 5.5 Using RSC Documentation. Section 6 Requirement Analysis........ .6-1 6.1 Role of Reuse and Reuse Library .6-1 6.2 Domain Analysis Products. 6-3 6.3 RSC Architectures and Subsystems. .6-5 i
ii Table of Contents Table of Contents...................................................................................... ii List of Figures........................................................................................... iv List of Tables..............................................................................................v PART I INTRODUCTION AND BACKGROUND Section 1 Introduction............................................................................................ 1-1 1.1 Purpose and Scope ................................................................................... 1-1 1.2 Guide to Using this Manual ..................................................................... 1-1 Section 2 Applicable Documents........................................................................... 2-1 Section 3 Basic Reuse Concepts ............................................................................ 3-1 3.1 Definitions................................................................................................ 3-1 3.2 Expected Benefits of Reuse ..................................................................... 3-2 3.3 Dimensions of Reuse ............................................................................... 3-4 3.4 Forms of Reuse ........................................................................................ 3-5 3.5 Issues in Achieving Reuse ....................................................................... 3-6 Section 4 The Reuse Library ................................................................................. 4-1 4.1 Reuse Library Overview.......................................................................... 4-1 4.1.1 Expected User Interactions ...................................................................... 4-1 4.1.2 RSC Quality Standards ............................................................................ 4-2 4.1.3 RSC Classification Scheme ..................................................................... 4-2 PART II STANDARD Section 5 Reuse Library Procedures .................................................................... 5-1 5.1 Administration Procedures....................................................................... 5-1 5.2 Searching for RSCs.................................................................................. 5-2 5.3 Selecting RSCs ........................................................................................ 5-3 5.4 Extracting RSCs....................................................................................... 5-5 5.5 Using RSC Documentation...................................................................... 5-6 Section 6 Requirement Analysis............................................................................ 6-1 6.1 Role of Reuse and Reuse Library ............................................................ 6-1 6.2 Domain Analysis Products....................................................................... 6-3 6.3 RSC Architectures and Subsystems......................................................... 6-5
Table of Contents(Continued) Section Title Page Section7 Design .7-l 7.1 Designs as RSCs ................................... .7-1 7.2 Designing for Reuse. .7-3 7.3 Reverse-Engineering Designs from Code RSCs. .7-4 7.4 Integrating Design Components 7-4 Section8 Implementation .8-1 81 Integrating Code Components .8-1 8.2 Modifying an RSC. 2 83 Testing RSCs 4 8.4 Effects on CM 8- Section9 Quality Assurance and Test. .9-1 9.1 Using RSC Test Material.. 91 92 OA Plans that Foster Reuse .9-3 9.3 Problem Resolution. 9-5 Section 10 Documentation .10-1 10.1 RSC Documentation 10-1
iii Table of Contents (Continued) Section Title Page Section 7 Design...................................................................................................... 7-1 7.1 Designs as RSCs ...................................................................................... 7-1 7.2 Designing for Reuse................................................................................. 7-3 7.3 Reverse-Engineering Designs from Code RSCs...................................... 7-4 7.4 Integrating Design Components .............................................................. 7-4 Section 8 Implementation ...................................................................................... 8-1 8.1 Integrating Code Components ................................................................. 8-1 8.2 Modifying an RSC ................................................................................... 8-2 8.3 Testing RSCs ........................................................................................... 8-4 8.4 Effects on CM.......................................................................................... 8-4 Section 9 Quality Assurance and Test .................................................................. 9-1 9.1 Using RSC Test Material......................................................................... 9-1 9.2 QA Plans that Foster Reuse ..................................................................... 9-3 9.3 Problem Resolution.................................................................................. 9-5 Section 10 Documentation ..................................................................................... 10-1 10.1 RSC Documentation .............................................................................. 10-1
List of Figures Figure Title Page Figure 5.1-Outline for a Reuser's Manual 5-7 iv
iv List of Figures Figure Title Page Figure 5.1 - Outline for a Reuser’s Manual................................................................. 5-7
List of Tables Table Title Page Table 7.1-RSC Reuse Status....... 7-2 Table 9.1- RSC Test Material. .91
v List of Tables Table Title Page Table 7.1 - RSC Reuse Status .................................................................................... 7-2 Table 9.1 - RSC Test Material.................................................................................... 9-1
PART I INTRODUCTION AND BACKGROUND
PART I INTRODUCTION AND BACKGROUND
Section 1 Introduction The Standard for Software Reuse Procedures is designed to provide guidance for software projects that wish to practice reuse by making significant use of reusable software components available in the NATO Reuse Library. The following subsections describe the purpose of the manual and explain how to use it effectively. 1.1 Purpose and Scope The reuse library provides a foundation for reuse,but it will not in itself assure that reuse is achieved;specific procedures are required to guide projects in its effective use. Software Reuse is an important aspect of controlling and reducing software costs and improving quality.The practice of software reuse can be significantly increased through the use of an appropriate standard for reusing existing software.The Standard for Sofiware Reuse Procedures is a prescriptive document designed to provide concrete guidance for practicing reuse through use of the reuse library. The manual is intended for use by NATO,host nation,and contractor personnel.NATO and the host-nation program office will use the guidance in establishing IFB requirements and in guiding contractors.Contractors will use it in establishing project-specific development practice. This is one of a set of three manuals developed by NACISA to provide guidance in software reuse.This manual specifically addresses the practice of software reuse on a development project.The other two documents are standards for the creation of reusable software components and the management of a library of reusable components. 1.2 Guide to Using this Manual This manual provides specific guidance,organized by software life-cycle activity,to provide a basis for establishing individual project practice. The Standard for Software Reuse Procedures manual is organized in two parts.Part I provides an introduction to the manual and a brief discussion of general concepts of software reuse to provide a frame of reference for the reader.Part II is the actual standard.Its major sections address the reuse library,requirements analysis.design principles.detailed design and implementation,quality assurance and test,and documentation. 11
1-1 Section 1 Introduction The Standard for Software Reuse Procedures is designed to provide guidance for software projects that wish to practice reuse by making significant use of reusable software components available in the NATO Reuse Library. The following subsections describe the purpose of the manual and explain how to use it effectively. 1.1 Purpose and Scope The reuse library provides a foundation for reuse, but it will not in itself assure that reuse is achieved; specific procedures are required to guide projects in its effective use. Software Reuse is an important aspect of controlling and reducing software costs and improving quality. The practice of software reuse can be significantly increased through the use of an appropriate standard for reusing existing software. The Standard for Software Reuse Procedures is a prescriptive document designed to provide concrete guidance for practicing reuse through use of the reuse library. The manual is intended for use by NATO, host nation, and contractor personnel. NATO and the host-nation program office will use the guidance in establishing IFB requirements and in guiding contractors. Contractors will use it in establishing project-specific development practice. This is one of a set of three manuals developed by NACISA to provide guidance in software reuse. This manual specifically addresses the practice of software reuse on a development project. The other two documents are standards for the creation of reusable software components and the management of a library of reusable components. 1.2 Guide to Using this Manual This manual provides specific guidance, organized by software life-cycle activity, to provide a basis for establishing individual project practice. The Standard for Software Reuse Procedures manual is organized in two parts. Part I provides an introduction to the manual and a brief discussion of general concepts of software reuse to provide a frame of reference for the reader. Part II is the actual standard. Its major sections address the reuse library, requirements analysis, design principles, detailed design and implementation, quality assurance and test, and documentation
Within PartII,each regularly numbered paragraph forms part of the standard,and is considered mandatory in meeting the reuse objectives address by this manual;any deviation must be justified and approved.The standard is augmented by a number of guidelines(indicated by paragraph numbers beginning with the letter "G").Guidelines support the standard, indentifying specific(potentially alternative)approaches to meeting the standard.Compliance with specific guidelines is not considered mandatory:however some effective approach to meeting the standard must be selected. Because this manual offers alternative approaches,project managers will want to use this manual as a basis for generating project-specific guidance,for incorporation in other software development practices adopted for the project. 1-2
1-2 Within Part II, each regularly numbered paragraph forms part of the standard, and is considered mandatory in meeting the reuse objectives address by this manual; any deviation must be justified and approved. The standard is augmented by a number of guidelines (indicated by paragraph numbers beginning with the letter “G”). Guidelines support the standard, indentifying specific (potentially alternative) approaches to meeting the standard. Compliance with specific guidelines is not considered mandatory; however some effective approach to meeting the standard must be selected. Because this manual offers alternative approaches, project managers will want to use this manual as a basis for generating project-specific guidance, for incorporation in other software development practices adopted for the project
Section 2 Applicable Documents This is one ofa set of three documents,specifically addressing the reuse of existing software in projects.The other two documents provide standards and guidelines for the creation of reusable software components and for the management of a software reuse support organization: Contel Corporation.Standard for the Development of Reusable Software Components. NATO contract number CO-5957-ADA,1991. Contel Corporation.Standard for Management of a Reusable Software Component Library.NATO contract number CO-5957-ADA,1991. Other references that may be of value to readers of this manual include: McCabe,Thomas J."A Complexity Measure."IEEE Transactions on Software Engineering (Dec.1976):308-320. 2-1
2-1 Section 2 Applicable Documents This is one of a set of three documents, specifically addressing the reuse of existing software in projects. The other two documents provide standards and guidelines for the creation of reusable software components and for the management of a software reuse support organization: Contel Corporation. Standard for the Development of Reusable Software Components. NATO contract number CO-5957-ADA, 1991. Contel Corporation. Standard for Management of a Reusable Software Component Library. NATO contract number CO-5957-ADA, 1991. Other references that may be of value to readers of this manual include: McCabe, Thomas J. “A Complexity Measure.” IEEE Transactions on Software Engineering (Dec. 1976): 308-320
Section 3 Basic Reuse Concepts Software reuse offers tremendous benefits in cost savings and quality; however,it requires technical understanding,changed approaches,and an understanding of potential obstacles. This section provides a frame of reference for understanding the benefits and challenges of software reuse.It introduces the terminology and concepts used in the remainder of the manual and explains the goals underlying the guidance provided herein. 3.1 Definitions A consistent terminology is used throughout this and companion manuals. The following are definitions of the key terms used in this manual Reuse-the use of an existing software component in a new context,either elsewhere in the same system or in another system Reusability-the extent to which a software component is able to be reused Conformance to an appropriate design and coding standard increases a component's reusability. Reusable software component (RSC)-a software entity intended for reuse;may be design,code,or other product of the software development process.RSCs are sometimes called“software assets'”. Reuser-an individual or organization that reuses an RSC Portabilit-the extent to which a software component originally developed on one computer and operating system can be used on another computer and/or operating system.A component's reusability potential is greater if it is easily portable. Domaina class of related software applications.Domains are sometimes described as vertical- -addressing all levels of a single application area (e.g,command and control)and "horizontal"-addressing a particular kind of software processing (e.g., data structure manipulation)across applications.The potential for reuse is generally greater within a single domain. Domain analysis-the analysis of a selected domain to identify common structures and functions,with the objective of increasing reuse potential Library-a collection of reusable software components,together with the procedures and support functions required to provide the components to users Retrieval system-an automated tool that supports classification and retrieval of reusable software components,also called a"repository" 3-1
3-1 Section 3 Basic Reuse Concepts Software reuse offers tremendous benefits in cost savings and quality; however, it requires technical understanding, changed approaches, and an understanding of potential obstacles. This section provides a frame of reference for understanding the benefits and challenges of software reuse. It introduces the terminology and concepts used in the remainder of the manual and explains the goals underlying the guidance provided herein. 3.1 Definitions A consistent terminology is used throughout this and companion manuals. The following are definitions of the key terms used in this manual: Reuse—the use of an existing software component in a new context, either elsewhere in the same system or in another system Reusability—the extent to which a software component is able to be reused. Conformance to an appropriate design and coding standard increases a component’s reusability. Reusable software component (RSC)—a software entity intended for reuse; may be design, code, or other product of the software development process. RSCs are sometimes called “software assets”. Reuser—an individual or organization that reuses an RSC Portability—the extent to which a software component originally developed on one computer and operating system can be used on another computer and/or operating system. A component’s reusability potential is greater if it is easily portable. Domain—a class of related software applications. Domains are sometimes described as “vertical”—addressing all levels of a single application area (e.g., command and control) and “horizontal”—addressing a particular kind of software processing (e.g., data structure manipulation) across applications. The potential for reuse is generally greater within a single domain. Domain analysis—the analysis of a selected domain to identify common structures and functions, with the objective of increasing reuse potential Library—a collection of reusable software components, together with the procedures and support functions required to provide the components to users Retrieval system—an automated tool that supports classification and retrieval of reusable software components, also called a “repository