REUSE: RE-ENGINEERING THE SOFTWARE PROCESS

By

Venkat Praveen Medikonda

ABSTRACT:

Traditional methods of software development cannot withstand ever-growing demand for software systems delivered in shorter span with minimalcost. So software development needs to be re-engineered with software reuse approach where software is developed from predefined, standardized, interchangeable software components.

In this paper we look at similarities between software systems and the reasons for software reuse resistance, perform commonality analysis which is the process of identifying bothcommon and potentially common components across a set of systems .We also apply domain analysis which is the process of identifying reusable components that have best reuse potential.

We further discuss reusetechniques, stages of reuse engineering and reuse roles.

WHAT IS REUSE?

Software Reuse is the process of creating software systems from predefined software components. This practice enables usto assemble new programs from existing components.

Two basic process of software reuse are:

(1) The systematic development of reusable components and

(2) The systematic reuse of these components as building blocks to create new systems.

A reusable component may be code, Software specifications, designs, tests cases, data, prototypes, plans, documentation, frameworks, and templates etc.

The positive features of software reuse are:

  • Increase software productivity
  • Shorten development time
  • Develop software with fewer people
  • Reduce software development and maintenance costs
  • Produce more standardized and better quality software

RETHINKING SOFTWARE DEVELOPMENT

Traditional methods of software development, regardless of how much they are streamlined with automated tools, cannot meet the ever-growing demand for more software systems delivered in shorter span with low cost.Re engineering the software process as throw away the practice of developing software from first principle, and replace it with an approach where software is developed from predefined, standardized, interchangeable software components.

Software reuse is the best answer to the software crisis. Software reuse is the process of creating software systems from predefined software components designed for reuse and offers a means to shorten the learning curve for new technologies, such as client server and object-orientation, by enabling developers to learn from and build systems from proven solutions. The use of software templates is one good example.

SOFTWAREREUSEPARADIGMS:

The reasons why software reuse often fails to work in practice are

  • There is no management commitment or support
  • Reward and recognition programs are counter to reuse
  • Cost of reuse is too high
  • Code reuse is more trouble then it is worth
  • Current tools do not support reuse
  • Management is not convinced of the business value of reuse

SIMILARITY OF SOFTWARESYSTEMS:

Systems within the same work or application area have great deal of similarity. Comparative analysis of software systems show in general there is on the order of 60-to-70 percent similarity across software systems. This includes code, design, functional and architectural similarities. This means that the majority of each new application built could be assembled from predefined reusable components.

COMMONALITY:

Commonality means that similar software components recur across systems or within one system. Commonality can occur at all levels of system abstraction - code components, designs, requirements, and for various size components ranging from single functional components to entire software architectures.

A common component is a component which is repeatedly used within one or in multiple systems or in multiple versions/implementations of the same system.

Commonality analysis is the process of identifying common and potentially common components across a set of systems. This set is usually referred to as a domain; Commonality analysis is a combinationof top-downand bottom-up process.

The top-down part studies future systems for the domain its objective is to determine the percentages of future system components that are common. Potential commonalities in future systems can be identified by comparing:

  • System requirements and priorities of system requirements
  • System behavior/functions
  • Software architectures
  • Technology (supporting hardware and software).

The bottom-up process studies examples of existing systems in the domain to identify common components. The ways to identify common components in existing systems is to compare the systems in terms of the following:

  • If components have similar names, they are likely to be similar.
  • If components use similar input and produce the same output, they are likely to be similar.
  • If components have same data structures, they are likely to be similar.

Commonality analysis is the examination of differences as well as similarities.To accommodate differences there are several approaches, one approach is the use of parameterization. Another approach is to provide a set of choices such as a set of algorithms or business rules.

DOMAIN ANALYSIS:

Domain analysis is the process of identifying reusable components that have best reuse potential. It is a form of system analysis for a class of systems. This defines and organizes reusable components to enable their effective reuse in a domain. Domain analysis occurs before the systems analysis stage in the life cycle process.

Domain analysis provides a means to link corporate goals, critical success factors and strategic system requirements with opportunities to practice reuse in the most optimum manner .Domain analysis is performed to gather model information for the better understanding of the domain and to develop future systems from reusable components. Examples of domain analysis are airline reservation or customer inquiry.

THE REUSE TECHNIQUES

Commonality Analysis

Commonality analysis is the process of identifying common components across a set of existing and /or future systems. The purpose of commonality analysis is to develop reusable components and to determine which component is used for creation and maintenance of systems.

Domain Analysis

Domain analysis is the process of capturing and modeling information in the domain for the purpose of gaining a better understanding of the domain and for developing future systems for the domain from highly reusable components.

Redundancy Checking

Set of techniques that identify software components that have been implemented multiple times in one software system or across multiple systems.To determine how to replace redundant components with one generic, high quality component that is easier and cheaper to maintain. Redundancy checking can be used to evaluate and improve the quality of a system design.

Reuse Planning

Reuse planning is the process of creating a reuse implementation plan for a reuse program. It includes the reuse roles and responsibilities of management, technical personnel and users, training needs, support tools, pilot projects, reuse-readiness assessment models, promotional programs and incentives.

Reuse Library

The development of software reuse library is an essential part of practicing reuse. A library organizational structure, naming conventions and classification scheme are defined as part of the Domain Analysis process.

Reuse Engineering

Is the activity consisting of cohesive collection of all tasks that are primarily performed to increase the reuse on endeavors of certified reusable work products.

Goals:

The typical goals of reuse engineering are to:

Ensure that an optimal supply of high-quality reusable work products are available within the development organization

Ensure that these reusable work products are available to all project teams for reuse.

Objectives:

The typical objectives of reuse engineering are to:

Ensure that the supply of reusable work products is optimal in size, scope, and applicability.

Ensure the quality of the reusable work products is high enough to justify reuse.

Ensure that the reusable work products are available to all endeavor teams for reuse.

Examples:

Typical examples of reuse engineering include:

Project-internal reuse engineering (i.e., reuse restricted to the scope of a single project).

Organizational-internal reuse engineering (i.e., reuse restricted to a single development organization).

STAGES OF REUSE ENGINEERING

Reuse-Based Planning

  • Create enterprise models reusing available models when possible
  • Develop strategic Plan
  • Identify domains and opportunities for practicing reuse
  • Create the corporate reuse plan

Domain Analysis Stage

  • Select domain to analyze
  • Define what kind of components to reuse
  • Identify what currently exists and can be reused and package it for reuse
  • Identify what is common and should be created for future reuse
  • Define reuse catalogs, classification schemes and library architecture
  • Create and populate reuse library

Reuse-Based Business Area Analysis

  • Create business area models from existing models when available
  • Determine where to practice reuse in the business area
  • Create a design plan and reuse plan for each system to be developed in the business area

Reuse-Based Design

  • Create system prototypes from reusable prototype skeletons and system designs from templates
  • Create system Implementation and test plan from reusable plan skeletons and reusable test cases
  • Look for design components that can be reused in the future

Reuse-Based Construction

  • Support generative reuse with the use of GUI generators, code generators, DBMS generators, application generators, etc.

Final Reuse Review

  • Evaluate the system produced and the project in terms of how well they meet reuse goals
  • Identify any new reusable components and products that could be developed based on this system development effort
  • Produce a System reuse review report capturing reuse experiences, lessons learned, advise and suggestions for improving the practice of software reuse

REUSE ROLES:

Reuse Sponsor

Member of management appointed to sponsor the reuse program. The reuse sponsor authorizes, approves, promotes, and provides funding and other resources for the reuse program.

Reuse Champion

An individual or group, who is respected by both management and software professionals, is a good communicator and is excited about reuse. The reuse champion is responsible for initiating the reuse implementation program for an organization and promoting the concept and practice of reuse on a day-to-day basis.

Domain Expert

A domain expert is knowledgeable in the domain. A knowledgeable end user, software developer or software maintainer who has experience with systems previously created for the domain and also understands the future directions and requirements for the domain may serve as a domain expert.

Reuse Expert

The reuse expert is an expert in the practice of software reuse and the application of reuse techniques such as commonality analysis, domain analysis and the creation and management of software reuse libraries.

References:

[1]. Ted J.Biggerstaff,Alan j.Perlis “Software Reusability”, volume 1

concepts and models

[2]. Tracz, Will, Software Reuse: Engineering Technology Tutorial. IEEE Computer Society Press, WashingtonDC, 1988

[3]. Dr. Carma McClure
“MODEL-DRIVEN SOFTWARE REUSE
PRACTING REUSE INFORMATION ENGINEERING STYLE”

“REUSE: Re-Engineering the software process” papers on reusability.

[4] M.Morisio, M.Egran, C.Tully “Success and Failure factors in software Reuse”

IEEE Transaction on software Engineering.

[5]. Banker, R. D., Kauffman, R. J., Wright, C. and Zweig, D., "Automating Output Size and Reuse Metrics in a Repository-Based Computer-Aided Software Engineering (CASE) Environment," IEEE Transactions on Software Engineering, Vol. 20, No. 3, (March l994), pp. 169-187