Style-based reuse for software architectures (original) (raw)

Can Styles Improve Architectural Pattern Reuse

2008

Software patterns are generic solutions to recurring problems. They are represented as a triplet (problem, context, solution). Several kinds of software patterns were identified, examples of which are analysis, architecture, design or implementation patterns. The current practice is to represent patterns as documents that communicate best practices. Their reuse is limited by several factors among which the lack of formalization. In the context of architecture centered software development, architectural styles are means to represent families of software systems. Several architecture description languages offer support for representing architectural styles. We believe that the use of architectural styles in the representation of architectural pattern solutions can improve the pattern reuse level. The paper details how this improvement can be achieved.

Reusing Software Design: A Generic Architecture-based Approach

We are attempting to build a framework and computational environment to assist software designers in designing software systems efficiently and reliably. Our approach is based on abstracting the design as well as the process involved in designing a software system and reusing them to design new systems. The emphasis is on building an environment in which the system acts as an assistant that delivers the relevant knowledge to a designer so that he or she may make informed decisions. Our work may be characterized as a semi-formal approach that aims to create a system that would be usable by software designers who are not well-versed with formal methods. Keywords: Reuse, software design, domain analysis, software process. Workshop Goals: Networking and exchanging ideas with other researchers in similar areas, identifying problems of practical as well as theoretical interest in software reuse. Working Groups: Domain analysis/engineering, Tools and environments, Reuse process mod...

The architectural bases of design reuse

1991

The architecture problem for interactive systems is a hard problem. Objective, rational and well informed analysis of interactive architectures is rare. This is not all due to sloppy thinking. Much of it is due to the obstacles to progress in the area of software for interactive systems. The topic is inherently slippery, because it is hard to get a grip with either our hands or our feet. The minute we think we have a grasp of the main issues, new technologies rain down on us and wash away the islands of firm ground on which we are standing. Part of the problem has undoubtedly been a lack of appropriate standards.

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.

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.

An introduction and history of software architectures, components, and reuse

Software Architectures: Advances and …, 1999

Software components and architectures are gaining considerable support as the way to develop object-oriented systems and business applications. Current developments in component-based software reuse is taking place in the context of some thirty years of history. It is as well to rehearse that history, as we do in this chapter, and draw lessons from it, lest we repeat the errors of the past.

A STRUCTURAL APPROACH TO IMPROVE SOFTWARE DESIGN REUSABILITY

Software reuse become a very promising area that has many benefits such as reducing costs, time, and most importantly, increasing quality of software. However, the concept of reuse is not only related to implementation level, in fact, it can be included in the earlier stages of the software development life cycle such as design stage. Adopting reuse at this stage provides many benefits such as increasing productivity, saving time and reducing cost of software development. Accordingly, this paper presents the concept of reuse at design level in more details. As well as, it proposes an approach to improve the reusability of software design using the directed graph concept. This leads to produce a design to be considered as reusable components which can be adapted in many software systems.

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.

Characteristics of Software Reuse Strategies: A Taxonomy of Implementations Patterns

misrc.csom.umn.edu

Planned reuse of software artifacts can improve productivity and quality in software development, however, a planned reuse effort requires substantial investments in the process and the software repository. In case of failure of a reuse effort, the initial expenses may not be recovered. The likelihood of success may vary with the reuse strategy employed; hence, potential reuse adopters must be able to understand reuse strategy alternatives and their implications. This research identifies the characteristics of systematic software reuse strategies and evaluates how they contribute to a successful reuse program using survey data collected from seventy-one software development groups. Our results show that these characteristics cluster into five distinct reuse strategies and that each strategy has a different potential for success.

Research directions in software reuse

Proceedings of the 1995 Symposium on Software reusability - SSR '95, 1995

Software reuse is no longer in its infancy. We are able to look back at more than 15 years of research and should use the opportunity of such a symposium to critically evaluate the past research in order to identify promising future research areas in software reuse. In this paper, we give a broader view of reuse and some of the so far less-considered areas, which we believe may support software reuse to get off the ground. We mention our ongoing research in software reuse, discussing reuse experiments in the areas of long-term software evolution and component programming. Furthermore, we indicate the critical importance of interactions among the reuse and related communities within software engineering, such as the object-oriented and the software maintenance communities.