Design for large scale software reuse: an industrial case study (original) (raw)
Related papers
Approaches and Challenges of Software Reusability: A Review of Research Literature
IRJET, 2023
The article is discussing the practice of software reuse, which involves building new software applications and systems from pre-existing software components. This approach has become increasingly important in recent times as it can improve the quality and productivity of software development by providing support to software engineers throughout various phases of software engineering. The article outlines three main approaches to software reuse: component-based software reuse, domain engineering and software product lines, and architecture-based software reuse. Component-based software reuse involves developing software components that can be reused across different software applications or systems, Domain engineering and software product lines involve identifying and documenting the commonalities and variabilities of a set of related software systems, and using this information to develop reusable components. Architecture-based software reuse involves creating a software architecture that can be reused across multiple software applications or systems. Despite the potential benefits of software reuse, there are also challenges that can affect the development process. These challenges include issues related to finding, selecting, and adapting existing software components, as well as organizational and cultural challenges that can make it difficult to implement software reuse practices effectively.
Refactoring a legacy component for reuse in a software product line: a case study
Journal of Software Maintenance and Evolution: Research and Practice, 2006
Product lines are a promising approach to improve conceptually the productivity of the software development process and thus to reduce both the cost and time of developing and maintaining increasingly complex systems. An important issue in the adoption of the product-line approach is the migration of legacy software components, which have not been designed for reuse, systematically into reusable product-line components. This article describes activities performed to improve systematically the design and implementation of an existing software component in order to reuse it in a software product line. The activities are embedded in the application of Fraunhofer PuLSE TM -DSSA-an approach for defining domain-specific software architectures (DSSA) and product-line architectures. The component under investigation is the so-called Image Memory Handler (IMH), which is used in Ricoh's current products of office appliances such as copier machines, printers, and multi-functional peripherals. It is responsible for controlling memory usage and compressing and decompressing image data. Improvement of both the component's design and implementation are based on a systematic analysis and focused on increasing maintainability and reusability and hence suitability for use in a product line. As a result of the analysis and refactoring activities, the documentation and implementation of the component has been considerably improved as shown by quantitative data collected at the end of the activities. Despite a number of changes to the code, the external behavior of the component has been preserved without significantly affecting the performance.
Architecture for Characterizing Reuse-Driven Software Engineering
2016
This paper presents an efficient methodology for representing the layered architecture modules in terms of slicing object components. The goal is to reduce the software dependencies in the overall architecture style characterizing the objective of Reuse-driven Software Engineering. The dependency graphs for the high level component systems structures the application systems for making reuse cost-effective and ensures deployment of high quality software systems to the end users. Moreover, the Lay_Slice Dependency Graph helps in aligning the reuse levels in the component systems to a comprehensive pattern that improves the productivity and quality of the reuse business process. The slicing layered architecture ensures a well-defined architecture system with new slicing based ObjectOriented modeling techniques that helps in more systematic dealing with the complexity of large software systems.
Introducing systematic reuse in mainstream software process
Proceedings of the 20th IEEE Instrumentation Technology Conference (Cat No 03CH37412) EURMIC-03, 2003
Software reuse is accepted as a source of important benefits, expressed in productivity and quality terms, when an industrial approach is introduced in the software process. However, mainstream software processes such as Unified Process do not include reuse techniques among the tools that software engineers must deal with. In this paper, we present a proposal to introduce software reuse with minimal disturbance of established disciplines by means of the introduction of a new process for product line engineering and the adaptation of Unified Process for specific product construction. This proposal reduces the money and time costs related to the progressive introduction of software reuse in an organization. Some tools that provide support to the process, including a requirement tool and a repository of reusable elements, have been developed.
Toward an engineering discipline of software reuse
IEEE Software, 1999
is software reuse an issue and not, for example, hardware reuse? A question as broad as this can elicit a wide range of responses. Perhaps the common denominator of all possible answers is that software assets are typically very information-rich; hence, it is difficult to characterize them, match them, and capture their relevant properties. ♦ How is software reuse different from software design? Good software design advocates designing software from reusable assets and producing software systems with the perspective that they might be reused. Software reuse deals with producing reusable assets (domain engineering) and exploiting reusable assets (application engineering), so as to make good software design a routine practice. Also, because there are quantifiable costs associated with the integration of reuse concerns, these costs have to be weighed against reuse benefits. Software reuse deals with the trade-offs involved in such cost-benefit decisions. These decisions influence both the design process and the quality of the produced software design. This article presents some of the research issues that we feel are relevant today. The list is neither exhaustive nor perfectly orthogonal, and necessarily reflects our biases. We discuss, in turn, technical aspects and then managerial aspects that we feel are worthy of research attention.
A Framework for Describing Software Architectures for Reuse
1999
We present a formal description of softwate atchitectures for softwate reuse to support a view of systematic softwate reuse as the plugging of components into an architecture. The components ate object descriptions in the object calculus. Interconnection between the components is defined via synchronisation morphisms within a framework based on category theory. Component composition is defined via the pushout construction, giving the atchitecture as a "calculated" component, from which the atchitecture's properties may be derived. We show that the architectures described ate reusable in our Reuse Triplet that forms the motivation for our on-going work on systematic softwate reuse. This work provides further support for the suggestion that category theory provides the appropriate level of mathematical abstraction to describe softwate atchitectures.
Reuse and variability in large software applications
ACM SIGSOFT Software Engineering Notes, 2005
Reuse has always been a major goal in software engineering, since it promises large gains in productivity, quality and time to market reduction. Practical experience has shown that substantial reuse has only successfully happened in two cases: libraries, where many generic and small components can be found; and product lines, where domains-specific components can be assembled in different ways to produce variations of a given product.
C.R.U.I.S.E - Component Reuse in Software Engineering
"This book is much more than just a very through compendium of reuse research. C.R.U.I.S.E actually traces the history of our field from the nascent thoughts credited to McIlroy in 1968 right up to the present. In taking the reader through this history, C.R.U.I.S.E touches on all the key phases in the evolution of reuse, from library systems, organizational issues, domain analysis, product lines, component-based engineering, to modern architectures for reuse. In each phase, the leaders in our field have poised numerous concerns and problems that remain to be solved. C.R.U.I.S.E has retained the questions as posed by the original researchers, but also adds new analysis and a current perspective. While it is impossible to cite every single source, the authors have very effectively summarized and analyzed the important works, placing them in context along with the other related works at the time." Comment from: Dr. Jeffrey S. Poulin Software Reuse Specialist Lockheed Martin Systems Integration - Owego, NY, U.S
Wrapper-Based Framework for Domain-Specific Software Reuse
J. Inf. Sci. Eng., 2006
Component-based development is a defacto requirement for many competitive IT industries. The implementation of component reuse ranges from the more isolated solution such as creating a new tool or language to the use of current industry standards such as CORBA COM, EJB, and .NET. However, the complexity of managing and maintaining reusable artifacts increases with large systems In the case of standard reuse libraries, more overheard is associated with the management, storage, and retrieval of artifacts. To overcome this problem, this work presents a Wrapper-Based Framework that promotes and facilities the design and development of domain-specific reusable software components. The framework is based on the concept of Atomic Domain methodology that signifies a reusable subsystem, which intelligently manages a collection of highly reusable components in the application domain of interest. This methodology largely reduces cost of component maintenance and the overhead associated with st...
A Classification Framework for Software Reuse
The Journal of Object Technology, 2006
Software reuse is commonly used to leverage existing assets and to reduce development cost and time. Reuse can be accomplished by several different mechanisms. This paper describes these mechanisms and proposes a classification framework for them. The framework has two dimensions: retest scope⎯how the reuse impacts the need for testing⎯and binding time⎯when the reuse is realized. By examining these two dimensions, we define a matrix of reuse scenarios. The reuse scenarios in this matrix show different characteristics of flexibility and ease of maintenance. Based on this classification the paper recommends using different mechanisms to accomplish reuse for short-lifecycle single solutions, typical business applications and productized (COTS) solutions. A CLASSIFICATION FRAMEWORK FOR SOFTWARE REUSE