April 15, 1996
produced by the
DOD Software Reuse Initiative
Program Management Office
5600 Columbia Pike
Falls Church, VA 22041
Note: this document is slightly modified from the original, mainly by adding a hyperlink to an area for further study elsewhere on the ASE01_03 CDROM.
|
WHAT IS REUSE?
The Primer presents the issues involved in transitioning to reuse-based development, maintenance, and acquisition processes, and discusses strategies that can best address these issues. Specifically, the Primer focuses on developing the seed of understanding for the executive who desires to: Transition the technology. Minimize the risks. Make informed decisions. The Reuse Executive Primer discusses both technical and organizational issues, and successful management techniques. Strategic guidance is offered for the development of reuse programs, the acquisition of systems, as well as the development and reuse of software system life-cycle products. No specific knowledge of reuse is assumed. WHO WILL BENEFIT FROM THE PRIMER?
The Reuse Executive Primer's primary audience comprises Program Executive Officers (PEOs) and Program Managers (PMs) who are responsible for implementing reuse within software acquisition, development, maintenance and, eventually, migration efforts within the Department of Defense (DOD). These managers decide how to implement reuse within their programs, when and what to reuse, and when and what to design for reuse. The managers of real-time, embedded, command and control (C2), and automated information systems (AIS) will be addressed.
Improving the quality and reliability of systems under an organization's
responsibility in an era of decreasing budgets challenges both
management and technical skills. Combine this dilemma with ever
increasing responsibilities for systems of greater complexity,
and a nearly impossible situation seems to be forming. One response
to this situation that has proven successful is the integration
of software reuse principles into the software engineering process.
Software reuse provides a basis for dramatic improvement in the way software-intensive systems are developed and maintained over their life-cycle. Improvements manifest themselves in increased quality and reliability and in long-term decreased costs for software development and maintenance. Other benefits of adopting reuse include improved interoperability and support for rapid prototyping activities. Since reuse is merely a by-product of disciplined software engineering, there is less initial risk for development, maintenance and acquisition activities. Both the Department of Defense and Congress have stressed the importance of reducing the cost, time, and effort required to build and maintain software systems for the DOD. This applies to in-house and contractor-developed systems. Software reuse principles have been demonstrated in isolated examples in Industry and the DOD to provide one of the greatest returns on investment for reducing cost, time and effort throughout the software life-cycle:
Unfortunately, software reuse doesn't just happen. Both technical and organizational issues must be tackled in order to successfully transition to a reuse-based culture. Once these issues are managed, the benefits discussed above can be garnered. The Reuse Executive Primer discusses both technical and organizational issues, successful management techniques, and refers the reader to published works for greater detail (see Bibliography). The Department's Software Reuse Initiative (SRI) faces the challenge of coordinating and guiding the transition to a reuse-based culture. Providing the lessons learned from the reuse experiences of Industry and Government in this Primer is just one of the ways that the SRI Program Management Office (PMO) anticipates fulfilling its mission and being of service to the Department.
Foundation The characteristics of disciplined software engineering are common to every engineering field. It is a well-defined methodology that addresses a complete life-cycle; characterizes mechanisms to manage and achieve traceability throughout the life-cycle; and establishes milestones in the life-cycle for which buy-in can be obtained from stakeholders. A complete life-cycle is that of a "product line", not a single software system. This product-line approach provides for the manufacture of many products from one architecture and design. When the architecture and/or design are modified, new and better products can be manufactured. Some examples are:
Cars differ significantly in design, but rarely architecture: there still exist common elements (axles, tires, combustion engines) and ways that these components interact. Personal computers are assembled from manufactured parts, normally not produced by the assembler. Each manufactured part is itself an instance of reuse within a product line. The product-line approach, as applied to software engineering, involves domain analysis and architecting. Domain analysis organizes, catalogs, and creates representations of knowledge within and about a particular functional area, or domain, (e.g., command and control systems). Features and problems common to the family of software applications within a domain are also identified during domain analysis. Candidate solutions to these problems and common feature characterizations are represented by domain-specific software architectures (DSSAs). The DSSA is a collection of structural views of a system. The DSSA represents a solution to the hardware and software platform, speed, performance, reliability, integration, interfacing, cost, modifiability, testability, and logical requirements.
An architecture includes both dynamic and static structures.
Dynamic structures persist through execution, such as bulletinboards
or client/server. Static structures exist only at design time,
such as code modularity. Representing both dynamic and static
structures, and the requirements listed previously, requires an
architecture to be able to accommodate multiple structural views.
This representation allows an architecture to assist both developing
An example of a software architecture is the Open Software Foundation's (OSF) Distributed Computing Environment (DCE) Client/Server architecture. A high level illustration of the functional components of this architecture can be seen in Figure 4, from Alex Berson's Client/Server Architecture (McGraw-Hill, 1992). An architecture such as that illustrated above must be further defined to be of value for the development of whole families of client/server applications. For example, the dataflow between the DCE Client Executive and the Operating System and Network Interface could be characterized in terms of existing or proposed standards. This characterization then becomes a candidate solution for multiple applications using the client/server architecture. Specifically, an architecture:
Technologies The widespread use of architectures as part of a software engineering approach is relatively new and, as such, tools and technology have yet to provide adequate support. However, research groups, such as at the University of Southern California's Center for Software Engineering, are experimenting with TRW's Rational Universal Network Architecture Services (UNAS) middleware package. Hewlett-Packard has begun to develop domain-specific kits that include frameworks that capture the architecture of the domain's family of system solutions, sets of reusable components, design fragments, glue code, tests, templates, documentation, and tools to support both the construction and execution environments. Eventually, tools will be available that can adequately support multiple structural views for development and maintenance activities. These tools should be integrated or integratable with tools and technologies that facilitate reuse. Reuse can be accomplished by using a variety of technologies, for example, application generators, I-CASE and CASE tools, repositories, and object-oriented languages. An important issue to consider in the selection of a technology to facilitate reuse is the relationship between the generality of the technology selected and its power to facilitate reuse. This relationship is an inverse one: the more general a technology is, the less it is a facilitator of reuse. That is, the more specifically a technology addresses a problem domain, the greater is the technology's potential for providing an environment that can adopt reuse principles and practices easily. Described below are three commonly used facilitators of reuse.
Computer-Aided Software Engineering (CASE) tools and Designware offer reusable application programs in fully loaded CASE repositories and, when used with the tools, allow users to customize applications. Libraries store the reusable assets, facilitate search and retrieval of assets, and can have certification mechanisms for ensuring that only the highest quality assets are incorporated into the library. A list of technologies is provided below in descending order of ability to easily incorporate reuse principles:
Each of these technologies has its costs, by-products, considerations and implications. Since the beginning of the initiative, the Department has concentrated on one technology, repositories, and the building, population, maintenance, and promotion of these asset libraries. However, transitioning to reuse-based life-cycle processes has proven to be a far more complex issue, requiring a response of greater sophistication than "build it and they will come." In particular, a domain-specific, architecture-centric approach to reuse is advocated. This approach establishes reuse among related families of systems, exploits the commonality of the systems and families, and maximizes the reusability of assets developed for reuse and the benefits of reuse. The SRI recommends a process-driven approach (i.e., the integration of reuse into disciplined software engineering). In addition, technology and tools will support the activities within disciplined software engineering. The goal of a domain-specific, architecture-centric, process-driven, and technology-supported approach is to provide the opportunity and infrastructure for systematic reuse to occur. Systematic reuse is manageable, repeatable, and improvable. The SRI PMO has developed its first strategic plan, which leverages the extensive research and analysis available on reuse and software technology transfer from the Software Engineering Institute (SEI) (Carnegie-Mellon University, Pittsburgh, PA), the Software Productivity Consortium (SPC), and the experiences of Industry in change management. Elements of the plan exploit technology transfer models and mechanisms, such as addressing the supporting infrastructure for the current processes, that is, the people involved and the procedures (both documented and obvious standards, and those that are unwritten, hard wired, and default). Education, training, working groups, user interest groups, bulletin board systems for group communications, sharing lessons learned and successes are all mechanisms to reprogram the system and the people who have acquired, produced and maintained the most successful and reliable software to date. As the SRI PMO begins staffing, it will explore, produce, and distribute kits, guidelines, and other products and services designed to assist organizations and their transition to reuse.
How to gain a return on investment (ROI)
How to get to systematic reuse Organizational Technical The categories of issues that will be addressed in this section are the following:
Reuse Management: How do I pick the right projects? What are the things I should consider before developing a reuse program? How do I bring together multiple projects into some kind of synergy? How do I get from no reuse to planned reuse? Technology Transfer: How do I manage the change in my organization (jobs, job descriptions, new needed skills, evolving technology)? How do I tackle the attitude obstructions (e.g., "not invented here" syndrome) that will sink my project? Support Technologies: From the perspective of system development, maintenance, and acquisition activities. WHAT ARE THE UPFRONT INVESTMENTS?
Developing and maintaining asset management tools, such as repositories, for architectures, designs, documentation, and code. Tools to aid in the integration of architecture, design, and software products to speed prototyping, full-scale development, modifications, and maintenance. Redesigning and implementing the proposal evaluation criteria and process. The payoff can be defined as the sum of the benefits minus the investment. The investment will be from one set of projects' funding and the benefits will be seen on future projects. This investment is excess cost to a project. It will be a rare circumstance when a single project can fund the acquisition or development and implementation of the tools and infrastructure needed to ensure success for an entire organization's transition to reuse. Costs need to be amortized over multiple projects. Mechanisms to share the cost of developing the tools and infrastructure across multiple projects should be planned for and established. For an acquisition-oriented organization, the upfront investment will be in redesigning the current evaluation system for proposals and vendors, to incorporate criteria that will project percentage of reusability expected for a project, and to accurately capture the breadth and depth of the bidder's experience with reuse.
For development and maintenance organizations, the upfront investments
will be the costs of domain engineering (which include domain
analysis, architecture development and maintenance, and repository
creation, population, and maintenance), tool acquisition, development,
maintenance, and integration. Also, it has been reported that
higher levels of testing and quality assurance are needed when
reusing assets, as much as two to four times that required for
Tools and technologies play an especially important role, and a necessary upfront investment, for development and maintenance organizations. For example, one of the most significant investments in technology and tools will be to support the development and maintenance of the domain analysis products, especially the architecture. This is not a widely commercialized field as yet, and what tools do exist, e.g., UNAS, are just being experimented with at this time in order to accommodate software system architectures. Another upfront investment for the development and maintenance of the domain architecture will be the establishment of procedures to execute the development and maintenance. This area is also a hot target of research, but relatively little guidance is available at this time. Repositories are another upfront investment for development and maintenance organizations. An organization that has selected I-CASE tools to facilitate the transition to reuse may not need to create a repository, because many I-CASE tools have repositories incorporated into them. For organizations opting to develop and maintain their own repository for reusable assets, such as designs or code, automated browsing tools with sufficient sophistication must be acquired or developed to facilitate search and retrieval. After all, if the users cannot find the asset, they won't use it, and the investment in the repository has been wasted. Configuration management tools must be incorporated into asset repositories in order to trace an asset to the systems in which it was used. This type of information assists future users of an asset in deciding its appropriateness to their situation. HOW DO I MEASURE THE RETURN ON INVESTMENT? The implied requirement in the definition of payoff is the existence of measurements for the baseline (e.g., cost, productivity, reliability, quality), which must be defined, and values assigned for historical and current projects. These metrics should be chosen carefully, and the algorithms used to produce them should be examined to determine if they are able to represent the value of reuse. The metrics selected to measure the benefits of transitioning to reuse should address both process (e.g., the depth and breadth of the product-line life-cycle to which the reuse processes have been internalized within an organization) and product (e.g., the number of trouble reports (TRs) and engineering change proposals (ECPs)). The benefits that will best justify the investment in the reuse program may be organization-unique. For example, reliability measures such as mean time between failures (MTBF), mean time to repair a defect (MTTR), and defect backlog would be especially appropriate for a system maintenance organization responsible for a weapon system. On the other hand, a system development organization would probably be better served by using cost and productivity measures. A word of caution is given for the cost and productivity metrics. Currently, cost models are not available that can treat reuse satisfactorily at the organization- rather than the project-level. In lieu of an appropriate cost model, the Ada-COCOMO should be used. This model incorporates costs for developing reusable assets and savings from reusing assets.
The measurement of high payoff, the benefit metrics, must not
only provide justification for the investment but also help during
a project. They should be functional enough to be used as gauges
for project success. They must be economical to collect and report,
and collection should be automated. Mechanisms must be established
to accumulate an organizational database of historical financial
data relative to software production and maintenance, including
reuse activities. Compare the historical data with the newly
gathered metrics data as reuse principles are incorporated into
the organizations' methods and procedures. The ROI will conceptually
be: (new benefit metrics data) - (investment in adopting and
The internalization of reuse principles into an organizations' methods will evolve over time; it will proceed incrementally. Thus, the ROI seen at 12 months will be different and less than the ROI seen at 24 or 36 months. Often, the ROI is experienced on subsequent projects (further justification for the product-line approach). Several examples follow; note that as more software artifacts other than code are reused (e.g., architectures), greater benefits and returns on investment are available.
WHAT ARE THE MOST COMMON FAILURES WHEN TRANSITIONING TO REUSE?
No domain engineering group. No reward for reuse. No reward for architecture population. Project-by-project reuse planning. Any reuse is good reuse. Technically inadequate metrics used to determine award fees.
(2) Not creating support for domain engineering. Support in the form of resources, schedule, and infrastructure are needed to adequately perform domain analysis, architecture development, and to find, tailor, and develop reusable software components. And these activities are necessary while the organization is trying to get software delivered for a specific project: a separate group is recommended for domain engineering duties. (3) Not rewarding software engineers for reusability, in both designing/developing for and designing/developing with reuse. Productivity metrics mostly address new source lines of code (SLOCs) produced, rather than delivered functionality, which deters designing/developing with reuse. For designing/developing for reuse, a good rule of thumb is that reusable assets will take twice the development effort of one-shot products. Hence, reusable products are initially more expensive, but result in cost avoidances for related products. Software reusability should be aimed at enterprise productivity across a product line of systems or families of related systems, rather than at individual or project-level productivity. (4) No economic incentives for extra effort required for the population of architectures. Architectures represent candidate solutions for whole families of related systems within a domain. Populating these architectures entails design decisions to reflect the architecture, and developing the project's deliverables to populate the architecture. These activities incur time and costs that are not usually accounted for during the development of a project's definition and accompanying budget. In addition, legal issues, such as ownership rights, must be resolved so that contractors are incentivized to populate architectures. (5) Project-by-project reuse planning. This is what has been typically referred to as opportunistic reuse. In order to reap the maximum benefits from reuse, consideration of reuse must be across related systems (vertical domain) and generic qualities of possibly unrelated systems (horizontal domain, perhaps across multiple vertical domains), with a hybrid approach (some vertical and some horizontal) promising the greatest rewards. The product-line approach to software acquisition, development and maintenance will provide the entre into a hybrid approach to reuse. (6) Any reuse is good reuse. Directives to reuse any software available compete with, and eventually pummel, engineering and business objectives. Reuse must be quick, cheap, and reliable, and add value to the new project, not contaminate it. Establish reuse goals that not only complement, but actually aid the achievement of business and engineering goals. (7) Technically inadequate metrics used to determine award fees. Contract award fees are most commonly based on the amount of software reused rather than the percentage of final delivered software that is composed of reusable software and software artifacts. This latter metric incentivizes contractors to populate both architectures and repositories.
Provide leadership and resources. Reorganize to facilitate reuse. Management Must Do's
WHAT ARE THE OBSTACLES TO SUCCESS AND HOW DO I OVERCOME THEM? No defined, optimum approach to reuse. High payoff and early success are usually mutually exclusive. Attitudes. There are many inhibitors to reuse. Chief among these is the upfront investment required to begin the transition to a reuse-based paradigm. The upfront investment is often too high for a single project to foster. At a glance, an acquisition-oriented organization has relatively little economic interest in making reusable the software assets of the product they are procuring. In addition, there are no incentive strategies for encouraging reuse investments. But the bottom line is this: a dollar saved on a software procurement is a dollar that can be spent on support for the warfighter. As illustrated earlier, there are organizations that adequately plan for reuse, select projects within the same domain or sub domain, and can show the returns on their investment in subsequent projects. Another inhibitor to reuse is the fact that no strategy that defines the optimum approach to reusability is currently available. However, the product-line approach has been used in every single engineering field, and has proven successful. It promises to be the optimum approach for software reusability.
There are attitude inhibitors that can bedevil an organization.
The "not invented here" syndrome is an example and
can paralyze a reuse project. One of the most successful strategies
to employ in tackling these attitude inhibitors is to create ownership
of the change process within the ranks. Software engineers should
participate in the development of policies and procedures for
using assets that were not invented here. For example, they should
be responsible for designing the test and verification procedures
Technically, there are additional inhibitors to reuse of assets other than code. For example, the reuse of design has been impeded by the lack of adequate representation technology and tools. Also, technology has not quite delivered automated aids for integrating and rippling changes throughout all the software artifacts, such as architecture, design, specifications, data models, etc. The task of systems engineering still remains very much manual in nature. However, nature abhors a vacuum, and as the software production industry evolves toward disciplined software engineering itself, this need for integrated domain and product engineering aids will be filled in the marketplace. HOW DO I ENSURE A HIGH PAYOFF?
There is great pressure for early high-payoff success stories. Undoubtedly, there exists some arena for which early high-payoff and success are not mutually exclusive. However, they are mutually exclusive for software reuse. Economic advantages will not be forthcoming for two to three years after the transition project has begun. The most important guidance within this primer might well be: Be realistic. Do not promise too much, too soon. HOW DO I PICK THE RIGHT PROJECTS TO GET TO SYSTEMATIC REUSE?
Systematic reuse is planned reuse. Systematic reuse that is domain-specific, architecture-centric, process-driven, and technology-based is advocated by the SRI. Domain-specific reuse focuses reuse efforts within a distinct functional area that can be supported by a class of software systems (e.g., avionics, database management, or payroll). Domain specificity is at the heart of the DOD SRI. Projects within a domain will involve the same or similar development activities and will use similar development environments, technologies and tools. Architecture-centric reuse prescribes that reuse efforts begin and end with the architecture (i.e., systems are developed from the architecture, and reusable assets that are developed, maintained, or acquired will populate architectures for that domain). The architectures provide the framework for solutions within a domain; that is, they can be adapted to create designs for systems within the domain, and they represent the structure of assets, their interrelationships, and the principles and guidelines governing the systems' design and evolution over time. Process-driven reuse requires the incorporation of a disciplined software engineering approach, which will lead to systematic rather than opportunistic reuse. Technology-based reuse identifies technology as the support and facilitation mechanism to implement reuse. In addition, advances in software engineering practices and support tool evolution have more often than not complemented and catalyzed each other. Selecting multiple projects within a particular domain is the right decision. The narrowness of the domain reduces the investment in the repository because the domain is well understood, the problem is well understood, and engineers can "get their minds around it". If a domain is too large to be managed, then it should be sectioned into subdomains. The type of domain is also important. The best type of domain is one in which the technology and the products are relatively stable, or evolving at a manageable pace. The worst domain type for reuse is one in which the underlying technology is rapidly changing (e.g., system software for PCs and workstations). The domain serves as a minipilot project for the organizations reuse techniques. Experience is developed within a single domain. Metrics can be uniform throughout the projects and are easily compared. The domain architecture and model evolve into well-bounded, well-defined entities. As more assets are made available for reuse in the repository, the costs of development will begin to decrease for a development organization. For a maintenance organization, design rationales and implementation decisions for the systems within the domain can be evaluated and compared, and that analysis can provide the justifications for accepting or rejecting modification requests. For an acquisition organization, the proposal and vendor evaluation criteria have been tested and recalibrated, and their usefulness and veracity have been demonstrated repeatedly. They can be abstracted to provide candidate criteria for additional domains. For acquisition, development, and maintenance organizations, the domain-specific approach has a limiting effect on an organization's incorporation and internalization of reuse. It allows for an iterative, incremental adoption of reuse. This evolutionary approach has less risk associated with it than a revolutionary, "big bang" approach. WHAT ARE THE THINGS I SHOULD CONSIDER BEFORE DEVELOPING A REUSE PROGRAM?
Investment to support needed infrastructure, and mechanisms to recoup investment. Tools to facilitate the transition. Strategic trade-off decisions need to be adequately resolved. For example, the size of the organization necessary to make the reuse transition effective needs to be decided. The organizational components that will be involved need to be identified and analyzed in terms of their ability to reorganize to achieve the necessary infrastructure. The investment to acquire, build and support the required infrastructure (e.g., architecture development and management tools, or a repository, or a process to assess reusability projections) needs to be defined, and effective mechanisms to recoup the investment should be developed. The tools that can facilitate the transition (e.g., configuration management and automated metrics collection and reporting mechanisms) should be acquired. HOW DO I BRING TOGETHER MULTIPLE PROJECTS INTO SOME KIND OF SYNERGY?
Services and Agencies within the DOD are developing reuse plans which will establish the initial framework from which all reuse efforts within the organization will be coordinated. Priorities will be defined, which will dictate budgets. It is essential for PEOs and PMs to participate within this planning process. Service and Agency reuse plans should address goals and objectives for individual reuse efforts within their organizations, and show how they relate and implement the vision, goals, and objectives of the DOD SRI. Service and Agency reuse representatives should create reporting mechanisms by which progress toward meeting the goals and objectives is measured by the results of individual reuse efforts. The coordination of multiple reuse projects within the purview of a PEO or PM should be addressed within the Service or Agency reuse plan as part of an integrated approach for transitioning to reuse. HOW DO I GET FROM NO REUSE TO PLANNED REUSE?
The following seven steps outline the top-level strategies to create systematic reuse within an organization:
Provide consistent resources. Tailor education. Techniques for change management have been developed and evaluated in the business community for decades (see Bibliography). The achievements in software technology transfer are based on these techniques. The following figure illustrates change as a process that organizations experience over time. Change management and technology transfer strategies can be used to manage this process and ensure successful change, that is, the adoption of new technology and, perhaps, a new organizational structure. An example of one technology transfer technique is the DOD SRI PMO plan to develop kits that will guide and assist an organization as it adopts reuse. A critical element to consider is that reuse is a multi-organization problem, and successful adoption of reuse within an organization may be intrinsically dependent on the command structure surrounding the organization, or on completely separate and autonomous organizations. This is the case of acquisition organizations dependent on contractors who will provide systems developed via newly (perhaps) transitioned reuse principles.
FIGURE 9: How People Commit To ChangeSome strategies that have proven successful are: longevity, tailored education, and consistent resources. These strategies are geared to smoothing the management of the change and tackling the obstacles to change. Longevity of the program needs to be impressed on both software engineers and procurement specialists. They need to be convinced that this trend is geared toward institutionalization and not subject to sacrifice during the next budget crunch. The guarantee of longevity will provide engineers and procurement specialists with justification for generating their own ownership in the program. Different types of training should be provided for managers, developers, and domain reuse specialists. Personnel assignments should take reuse and reusability into account. Assign reuse facilitators to development groups. Be prepared to make full-time staff resources available for the start-up phase and for ongoing support of a reuse program. WHAT ARE THE TECHNICAL ISSUES?
Standards for representation.
Associated with acquisition:
Issues Associated with Architectures The wide-spread use of architectures to guide software development is relatively new, and automated tools to assist in their development, maintenance, and modification are not commonly available. TRW's UNAS has been used successfully and is currently being investigated by the USC Center for Software Engineering for extensions to accommodate formal and non-formal architecture specifications. Research in the field of enterprise model integration may yield advances in techniques to integrate models representing varying structural views. More than likely, tools will precede standards, and organizations responsible for maintaining domain knowledge and products will be faced with the challenge of integration and translation. In addition, tools to automatically ripple changes throughout the life-cycle product line (e.g., architecture, domain model, data models, design documentation, etc.) will probably not be available for quite some time. The bottom line is that organizations attempting to develop and maintain architectures are faced with some technological support, and a good deal of manual efforts. Issues Associated with the Reuse of Assets of All Types System development and maintenance organizations have similar technical challenges: finding, understanding, modifying, integrating and composing assets; developing, populating, maintaining, and managing architectures; and creating and managing software artifacts such as designs and documentation. Automated tools should be selected to provide the greatest capabilities in location, selection, use, and control of the assets. Promising technologies should be identified and tools procured that give the most functionality. These tools speed development and help bring about a complete asset inventory with standardized style and structure, which facilitates maintainability, and, most of all, use of the assets. Organizations need to develop and maintain configuration management information (e.g., an automated index of all architectures and other assets released into production), and brief, precise, functional descriptions should be included. This will assist in the reuse of these assets and identify opportunities for reuse. Issues Associated with Acquisition A significant amount of investigation into the legal issues that surround the production, acquisition, and reuse of software products has preceded this Primer. The SRI PMO is currently developing a legal handbook, and has sponsored the development of software reuse business models to guide the acquisition process. CODSIA IRAG has developed acquisition scenarios to explore various contractual models. The CARDS program has also published informative and valuable papers on legal issues involving repositories. These sources will provide a more complete introduction and more substantial coverage of the legal issues than can this Primer. (See Bibliography.) WHAT ARE COMMON TECHNICAL FAILURES AND HOW DO I AVOID THEM?
(2) Inadequate searching/browsing/lookup mechanisms. If you can't find it, you can't use it. Invest in support tools. (3) Too little control over what is put in a library. Issues involved here are quality of assets, breadth of functionality, limiting repetition, and proper asset documentation. (4) Including software assets that are too large and/or have too many side effects. Smaller assets are better. They have less side effects and are easier to categorize for searches. In addition, they require less overhead to maintain. However, smaller assets present their own problems. As noted by the AFATDS project, small assets create type incompatibilities requiring checks and conversions. The RNTDS project had to modify their compiler and executive systems. (5) Undocumented interfaces. This requires that reusable asset customers break into the "black box" of the asset and determine its impacts on the project's design or its execution environment. (6) no facility for exceptions and overrides. All or nothing reuse does not provide any cut and paste facilities. For software assets, the result is substantial amounts of "dead code" (i.e., unused source code that is compiled and bound into the executable form). This creates unnecessary overhead and deters reuse. (7) Software overhead required to compile, link and execute the reusable module may be too great. If an asset cannot be integrated into the project attempting to use it, it won't be used. (8) A domain cannot satisfy all of the requirements all of the time. If the scope of a domain is too broad, then all requirements cannot be captured and satisfied adequately for all systems within the domain. Hence, systems developed from too broad of a domain definition will find that requirements, such as performance, will most likely suffer. (9) Neither top-down nor bottom-up design is adequate to capture the benefits of reuse. Domain engineering must be executed. It is often referred to as middle-out design. (10) Support tools need to evolve. Support tools and the software acquisition, development and maintenance processes that they assist advance via complementary improvements. CONCLUSIONS AND RECOMMENDATIONS This Reuse Executive Primer has only scratched the surface of the subject of reuse. More study is recommended, of course, especially for legal issues that are not addressed in this paper. The SRI PMO is an excellent starting point. The SRI PMO can provide information on upcoming conferences and educational opportunities. In addition, points of contact for reuse working groups can be obtained from the SRI PMO. Products are developed by these groups that can provide invaluable help for organizations attempting to adopt reuse. Develop a reuse plan. Use the SRI PMO resources. The next logical step is to contact your Service or Agency reuse representative (see below), determine if your organization is ready for the transition, and develop a plan for the transition using the strategies discussed in this Primer.
|