Skip to main content

2006 | Buch

Reuse of Off-the-Shelf Components

9th International Conference on Software Reuse, ICSR 2006 Turin, Italy, June 12-15, 2006 Proceedings

insite
SUCHEN

Über dieses Buch

Software reuse as an umbrella concept has been around for several decades. Over time, new techniques and approaches have been proposed to implement the concept, from libraries of reusable assets to product lines, to generative methods. These latter techniques are mostly used in intra-organizational reuse, and require considerable formal knowledge over the evolution of technology and required functionality in a domain over several years. On the other end of the spectrum, extra-organizational reuse is based on reuse of off-the-shelf (OTS) software (both open and closed source, acquired for free or for a fee). Here, a limited investment and immediate availability of the assets have widely spread the approach. On the other hand, the reusing organization has no control on the evolution of the functionality and assumptions of the asset. Even when the assets are open source, they are seldom modified. The theme for this ninth meeting is the reuse of off-the-shelf (OTS) components and related problems: * Documentation of OTS components * Processes to identify and select OTS components * Integration and evolution problems * Reliability and security of OTS components and legal issues * Interaction with the developer community or with the vendor The proceedings you are holding cover these issues as well as development and use of product lines, variability modeling, aspect-based development, composition of components and services. June 2006 Maurizio Morisio Organization Organizing Committee General: Giancarlo Succi, Free University Bolzano/Bozen Program: Maurizio Morisio, Politecnico di Torino Workshops Peter Knauber, Mannheim University of Applied Sciences, Germany

Inhaltsverzeichnis

Frontmatter

COTS Selection, Integration

A Goal-Oriented Strategy for Supporting Commercial Off-the-Shelf Components Selection

The use of Commercial Off-The-Shelf (COTS) components is becoming a strategic need because they offer the possibility to build systems at reduced costs and within shorter development time. Having efficient and reliable COTS components selection methods is a key issue not only for exploiting the potential benefits of this technology, but also for facing the problems and risks involved. Searching COTS components requires to overcome several obstacles: the growing size and evolvability of the COTS marketplace, the dependencies from the components to be selected with others, and the type of descriptions currently available for those components. In this paper, we present a goal-oriented strategy for an effective localization, analysis and structuring of COTS components information. Our proposal is the GOThIC method, which provides methodological support to the construction of taxonomies. We present the seven activities that conform this method, which are illustrated with the case of real-time synchronous communication tools.

Claudia Ayala, Xavier Franch
A State-of-the-Practice Survey of Off-the-Shelf Component-Based Development Processes

To gain competitive advantages software organizations are forced to develop systems quickly and cost-efficiently. Reusing components from third-party providers is one key technology to reach these goals. These components, also known as OTS (Off-the-Shelf) components, come in two different types: COTS (Commercial-Off-The-Shelf) and OSS (Open–Source-Software) components. However, the reuse of pre-fabricated components bears one major question: How to adapt development processes/methods with refer to system development using OTS components. To examine the state-of-the-practice in OTS component-based development a survey on 133 software projects in Norway, Italy and Germany was performed. The results show that OTS-based development processes are typically variations of well-known process models, such as the waterfall- or prototyping model, mixed with OTS-specific activities. One reason might be that often the process is selected before the use of OTS components is considered. Furthermore, the survey shows that the selection of OTS components is based on two processes: “Familiarity-based” and “Internet search-based”. Moreover, it appears that the lifecycle phase to select OTS components is significantly correlated with a project members’ previous familiarity with possible OTS candidates. Within this paper, we characterize the state-of-the-practice concerning OTS processes, using seven scenarios, and discuss how to decide or modify such processes and how to select OTS components.

Jingyue Li, Marco Torchiano, Reidar Conradi, Odd Petter N. Slyngstad, Christian Bunse
Automating Integration of Heterogeneous COTS Components

Mismatches make COTS components difficult to be incorporated. In this paper, an approach is presented to eliminate mismatches among COTS components, which can truly consider COTS components as black boxes. In the approach, only the assembly description of components is required, based on which adaptors for resolving mismatches can be generated automatically. This paper also described an agent-based GUI implementation of the approach.

Wenpin Jiao, Hong Mei

Product Lines, Domain Analysis, Variability

The Domain Analysis Concept Revisited: A Practical Approach

Domain analysis has been identified as a key factor in the development of reusable software. However, for domain analysis to become a practical approach we need to understand the conceptual foundations of the process and to produce a unambiguous definition in the form of specific techniques. This paper presents a practical approach for domain analysis based on a well defined set of guidelines and metrics. A preliminary industrial case study was performed in order to identify the viability of the approach.

Eduardo Santana de Almeida, Jorge Cláudio Cordeiro Pires Mascena, Ana Paula Carvalho Cavalcanti, Alexandre Alvaro, Vinicius Cardoso Garcia, Silvio Romero de Lemos Meira, Daniel Lucrédio
Feature Driven Dynamic Customization of Software Product Lines

This paper describes a model driven development approach for software product lines based on Web services, in which feature selection drives the dynamic customization of the product line architecture and implementation to derive the application. During product line modeling, feature and their dependencies are described in a feature model. The product line architecture is based around a client/server pattern consisting of user interface objects interacting with Web services. During application engineering, features are selected by the application engineer and used to dynamically customize the product line architecture and implementation.

Hassan Gomaa, Mazen Saleh
Inter-organisational Approach in Rapid Software Product Family Development — A Case Study

Software product families provide an efficient means of reuse between a set of related products. However, software product families are often solely associated with intra-organisational reuse. This paper presents a case study of Fathammer, a small company developing games for different mobile devices. Reuse at Fathammer takes place at multiple levels. The game framework and engine of Fathammer is reused by partner companies that in turn produce game assets to be reused by Fathammer while developing games for various devices. Very rapid development of games is a necessity for Fathammer, whereas maintainability of games is not important. The above characteristics in particular distinguish Fathammer from other case studies and practices usually presented in the product family literature. The results show the applicability and challenges of software product family practices in the context of multiple collaborating companies and a fast-changing domain.

Varvana Myllärniemi, Mikko Raatikainen, Tomi Männistö
Ontology-Based Feature Modeling and Application-Oriented Tailoring

Feature models have been widely adopted in domain requirements capturing and specifying. However, there are still difficulties remaining in domain model validating and application-oriented tailoring. These difficulties are partly due to the missing of a strictly defined feature meta-model, which makes it difficult to formally represent the feature models. Aiming at the problem, we propose an ontology-based feature modeling method supporting application-oriented tailoring. In this method features are classified into several categories and are all precisely defined in the OWL-based meta-model. Expression capacity of the feature model can be greatly improved due to the rich types of features. On the other hand the feature model can be easily converted into ontology model and be validated through ontology inference. Application-oriented tailoring can also gain support from the reasoning-based guidance. Finally, advantages of ontology-based feature modeling, especially for component and architecture design, are discussed with our conclusions.

Xin Peng, Wenyun Zhao, Yunjiao Xue, Yijian Wu
The COVAMOF Derivation Process

The design, usage and maintenance of variability, i.e. variability management, is a very complex and time-consuming task in industrial product families. The COVAMOF Variability Modeling Framework is our approach to enable efficient variability management. As a practical realization of COVAMOF, swe developed the COVAMOF-VS tool suite, which provides several variability views on C#, C++, Java, and many other types of projects in Microsoft Visual Studio .NET. In this paper, we show how COVAMOF facilitates an engineer during product derivation, and what benefits are gained by it.

Marco Sinnema, Sybren Deelstra, Piter Hoekstra
A Metamodel Approach to Architecture Variability in a Product Line

Architecture describes the organizational structure of a system including components, interactions, and constraints. Reusable components, units of software systems, have been considered to support a considerable improvement in reducing development costs and time to market because their interfaces and functionality are explicitly defined. Instead of reusing an individual component, however, it is much more advantageous to reuse a whole design or architecture. A domain architecture, sharing a common software architecture across a product line, includes common components shared by all products and optional components exploited by a subset of the products. Variability, one of the key concepts in the development of domain architectures indicates the ability to derive various products from the product line. Clearly, we need to support variability during domain architecture development. In this paper, we suggest a metamodeling concept that enables a common under-standing of architecture variability. The domain architecture metamodel reflects the Object Management Group’s (OMG

TM

) Reusable Asset Specification (RAS) which addresses the engineering elements of reuse. We describe a domain architecture in which commonality and variability are explicitly considered.

Mikyeong Moon, Heung Seok Chae, Keunhyuk Yeom
An Approach to Managing Feature Dependencies for Product Releasing in Software Product Lines

Product line software engineering is a systematic approach to realize large scale software reuse. Software product lines deal with reusable assets across a domain by exploring requirements commonality and variability. Requirements dependencies have very strong influence on all development phases of member products in a product line. There are many feature oriented approaches on requirement dependencies. However, most of them are limited to the problem domain. Among those few focusing on the solution domain, they are limited to modeling requirement dependencies. This paper presents a feature oriented approach to managing domain requirements dependencies. Not only is a requirement dependencies model presented, but a directed graph-based approach is also developed to analyze domain requirement dependencies for effective release of member products in a product line. This approach returns a simple directed graph, and uses an effective algorithm to get a set of requirements to be released in a member product. A case study for spot and futures transaction domain is described to illustrate the approach.

Yuqin Lee, Chuanyao Yang, Chongxiang Zhu, Wenyun Zhao
Adaptation and Composition Within Component Architecture Specification

Component-Based Development (CBD) and Domain Engineering (DE) are important approaches for software reuse. In a DE process, components are specified in a high abstraction level, within a component architecture specification. When components are reused during an Application Engineering (AE), they are composed with each other and third-party components. However, conflicts usually occur and they must be considered as early as possible, otherwise they may jeopardize the defined architecture. This work proposes a set of functionalities for development with components, with focus on the support for the adaptation and composition functionalities. These were included in

Odyssey

, an environment that supports DE and AE processes. A preliminary study on the use of these functionalities is also reported.

Luciana Spagnoli, Isabella Almeida, Karin Becker, Ana Paula Blois, Cláudia Werner

Reengineering Maintanance

Re-engineering a Credit Card Authorization System for Maintainability and Reusability of Components – A Case Study

A credit card authorization system (CAS) is a large information system performing diverse activities such as purchase authentication, balance transfer, cash advances, etc. One characteristic of CAS is its frequent update to satisfy the needs of customers and newly enforced governmental laws. Thus, CAS should be designed to minimize the effects of updates, for which high reusability of the CAS components is desired. In this paper, we present our experience of re-engineering CAS based on a feature model for improved reusability of components, which alleviates the difficulty of system maintenance. The result of this project has been successfully transferred to the company.

Kyo Chul Kang, Jae Joon Lee, Byungkil Kim, Moonzoo Kim, Chang-woo Seo, Seung-lyeol Yu
Odyssey-CCS: A Change Control System Tailored to Software Reuse

Software is constantly changing and these changes may occur at anytime in the software lifecycle. In order to avoid rework and information loss, among other problems, these changes must be controlled in a proper way. When changes affect reused components, possibly composed by other components, it is important to know who is responsible for implementing them. Some consequences of this problem, named Reuse Chain of Responsibility, is the misconception on rights and duties of teams that produce and reuse compo-nents. Aiming to solve this problem, we introduce Odyssey-CCS, a flexible change control system that allows the customization of a change control process to the specific needs of software reuse. Moreover, it keeps a reuse map that holds information about contracts between components producers and reusers. The reuse map is integrated to an existing component library and is queried by Odyssey-CCS within the impact analysis activity.

Luiz Gustavo Lopes, Leonardo Murta, Cláudia Werner
Case Study of a Method for Reengineering Procedural Systems into OO Systems

This study evaluates a method for reengineering a procedural system to an object-oriented system. Relationships between functions in the procedural system were identified using various coupling metrics. While the coupling metrics used for analysis were helpful in identifying candidate objects, domain expert analysis of the candidate objects was required. The time taken at each step in the process was captured to help determine the effectiveness of the method. Overall the process was found to be effective for identifying objects.

William B. Frakes, Gregory Kulczycki, Charu Saxena

Programming Languages and Retrieval

Reconciling Subtyping and Code Reuse in Object-Oriented Languages: Using inherit and insert in SmartEiffel, the GNU Eiffel Compiler

SmartEiffel has been enjoying two different mechanisms to express subtyping and implementation inheritance for one year. After large scale practical tests and thanks to user feedback, this paper finalises the new typing policy of SmartEiffel, which combines two forms of multiple inheritance with genericity in one statically-checked, object-oriented language.

Having two forms of inheritance allows the designer to capture more design decisions in the source code. It is now straightforward to share reusable code between otherwise unrelated types. The new mechanism allows to reuse code from an existing class without polluting the reuser’s interface. It also enables an elegant implementation of some design patterns.

Furthermore, this mechanism helps compilers to statically remove more dynamic dispatch code. It can also be used to add a no-penalty and no-risk multiple-inheritance-like construct to a single-inheritance language such as Java.

Dominique Colnet, Guillem Marpons, Frederic Merizen
Recommending Library Methods: An Evaluation of the Vector Space Model (VSM) and Latent Semantic Indexing (LSI)

The development and maintenance of a reuse repository requires significant investment, planning and managerial support. To minimise risk and ensure a healthy return on investment, reusable components should be accessible, reliable and of a high quality. In this paper we concentrate on accessability; we describe a technique which enables a developer to effectively and conveniently make use of large scale libraries. Unlike most previous solutions to component retrieval, our tool, RASCAL, is a proactive component recommender.

RASCAL recommends a set of task-relevant reusable components to a developer. Recommendations are produced using Collaborative Filtering (CF). We compare and contrast CF effectiveness when using two information retrieval techniques, namely Vector Space Model (VSM) and Latent Semantic Indexing (LSI). We validate our technique on real world examples and find overall results are encouraging; notably, RASCAL can produce reasonably good recommendations when they are most valuable i.e., at an early stage in code development.

Frank McCarey, Mel Ó Cinnéide, Nicholas Kushmerick

Aspect-Oriented Software Development

Improving Extensibility of Object-Oriented Frameworks with Aspect-Oriented Programming

Object-oriented frameworks are nowadays a common and useful technology used in the implementation of software system families. Despite their benefits, over the last years many researchers have described the inadequacy of object-oriented mechanisms to address the modularization and composition of many framework features, thus reducing the extent to which a framework can be extended. The crosscutting nature of many framework features is identified as one of the main causes of these problems. In this paper, we analyze how aspect-oriented programming can help to improve the design, implementation, and extension of object-oriented frameworks. We propose the concept of Extension Join Points (EJPs) as a way of designing and documenting existing crosscutting extension points. EJPs improve framework extensibility, including superior composability of the framework core functionality with other modules or frameworks. Four case studies of frameworks from diverse domains are presented to illustrate our proposal. This paper also discusses lessons learned on the application of our approach to the development and extension of these frameworks.

Uirá Kulesza, Vander Alves, Alessandro Garcia, Carlos J. P. de Lucena, Paulo Borba
Comparing White-Box, Black-Box, and Glass-Box Composition of Aspect Mechanisms

The manifestation of miscellaneous aspect-oriented extensions raises the question of how these extensions can be used together to combine their aspectual capabilities or reuse aspect code across extensions. While white-box composition of aspect mechanisms can produce an optimal compound mechanism, as exemplified by the merger of A

spect

J and A

spect

W

erkz

into A

spect

J 5, it comes with a high integration cost. Meanwhile, generic black-box composition can compose arbitrary aspect mechanisms, but may result in a compound mechanism that is suboptimal in comparison to white-box composition. For a particular family of aspect extensions, e.g.,A

spect

J-like mechanisms, glass-box composition offers the best of two worlds. Glass-box may rely on the internal structure of, e.g., a pointcut-and-advice mechanism, without requiring a change to the code of the individual mechanisms. In this paper we compare white-, black-, and glass-box composition of aspect mechanisms. We explain subtle composition issues using an example drawn from the domain of secure and dependable computing, deploying a fault-tolerance aspect written in A

spect

W

erkz

together with an access-control aspect written in A

spect

J. To compare the three composition methods, we integrate a

TinyAJ

extension with a

TinyAW

extension, and compare the results of running the aspects in a black-box framework and in a glass-box framework to the result of running these aspects in A

spect

J 5.

Sergei Kojarski, David H. Lorenz
Achieving Smooth Component Integration with Generative Aspects and Component Adaptation

Due to the availability of components and the diversity of target applications, mismatches between pre-qualified existing components and the particular reuse context in applications are often inevitable and have been a major hurdle of component reusability and successful composition. Although component adaptation has acted as a key solution of eliminating these mismatches, existing practices are either only capable for adaptation at a rather simple level, or require too much intervention from software engineers. This paper presents a highly automatic approach to component adaptation at adequately deep level. The adaptability and automation is achieved in an aspect-oriented component reuse framework by generating and then applying the adaptation aspects under designed weaving process according to specific adaptation requirements. An expandable library of reusable adaptation aspects at multiple abstraction levels has been developed. A prototype tool is developed to scale up the approach.

Yankui Feng, Xiaodong Liu, Jon Kerridge

Approaches and Models

A Tactic-Driven Process for Developing Reusable Components

True reusability of components assumes that they not only offer the functionality prescribed by their APIs, but also that they conform to a well-defined set of quality attributes so that we know if a component can be successfully reused in a new software product. One of the problems with quality attributes however is that it is hard to identify the characteristics of components that contribute to their emergence. End-user quality attributes are versatile and difficult to predict but their occurrence is not of an accidental nature. In this paper we propose a methodology for the exploration of candidate architectural tactics during component analysis and design for the achievement of desirable quality effects. Our approach is based on executable specifications of components that are augmented with the required tactic-related parameters to form a testbed for quality-driven experimentation. We believe that the proposed approach delivers both reusable components as well as reusable models.

George Kakarontzas, Ioannis Stamelos
Does Refactoring Improve Reusability?

The improvement of the software development process through the development and utilization of high quality and reusable software components has been advocated for a long time. Agile Methods promote some interesting practices, in particular the practice of refactoring, which are supposed to improve understandability and maintainability of source code. In this research we analyze if refactoring promotes ad-hoc reuse of object-oriented classes by improving internal quality metrics. We conduct a case study in a close-to industrial, agile environment in order to analyze the impact of refactoring on internal quality metrics of source code. Our findings sustain the hypothesis that refactoring enhances quality and reusability of – otherwise hard to reuse – classes in an agile development environment. Given such promising results, additional experimentation is required to validate and generalize the results of this work.

Raimund Moser, Alberto Sillitti, Pekka Abrahamsson, Giancarlo Succi
Using the Web as a Reuse Repository

Software reuse is widely recognized as an effective way of increasing the quality of software systems whilst lowering the effort and time involved in their development. Although most of the basic techniques for software retrieval have been around for a while, third party reuse is still largely a “hit and miss” affair and the promise of large case component marketplaces has so far failed to materialize. One of the key obstacles to systematic reuse has traditionally been the set up and maintenance of up-to-date software repositories. However, the rise of the World Wide Web as a general information repository holds the potential to solve this problem and give rise to a truly ubiquitous library of (open source) software components. This paper surveys reuse repositories on the Web and estimates the amount of software currently available in them. We also briefly discuss how this software can be harvested by means of general purpose web search engines and demonstrate the effectiveness of our implementation of this approach by applying it to reuse examples presented in earlier literature.

Oliver Hummel, Colin Atkinson

Components

A UML2 Profile for Reusable and Verifiable Software Components for Real-Time Applications

Software frameworks offer sets of reusable and adaptable compo-nents embedded within an architecture optimized for a given target domain. This paper introduces an approach to the design of software frameworks for real-time applications. Real-Time applications are characterized by functional and non-functional (e.g. timing) requirements. The proposed approach separates the treatment of these two aspects. For functional issues, it defines an extensible state machine concept to define components that encapsulate functional behaviour and offer adaptation mechanisms to extend this behaviour which warrant preservation of the functional properties that characterize the framework. For timing issues, it defines software structures that are provably endowed with specific timing properties and which encapsulate functional activity in a way that warrants their enforcement. A UML2 profile is defined that formally captures both aspects and allows the proposed strategy to be deployed at design level.

V. Cechticky, M. Egli, A. Pasetti, O. Rohlik, T. Vardanega
Formalizing MDA Components

The Model Driven Architecture (MDA) promotes the use of models and model transformations for developing software systems. The idea behind MDA is to manage the evolution from Platform Independent Models to Platform Specific Models that can be used to generate executable components and applications. The concepts of metamodels and metamodel-based model transformations are critical in MDA. In this paper, we propose a metamodeling technique to reach a high level of reusability and adaptability of MDA components. In particular, we analyze how to define reusable components for the standard design patterns in a way that fits MDA very closely. To define families of reusable components we describe a “megamodel” that refers to metamodels and model transformations organized into an architectural framework. We propose a “megamodel” formalization that focuses on interoperability of formal languages in Model Driven Development (MDD).

Liliana Favre, Liliana Martinez
A Component-Oriented Substitution Model

One of Software Engineering’s main goals is to build complex applications in a simple way. For that, software components must be described by its functional and non-functional properties. Then, the problem is to know which component satisfies a specific need in a specific composition context, during software conception or maintenance. We state that this is a substitution problem in any of the two cases. From this statement, we propose a need-aware substitution model that takes into account functional and non-functional properties.

Bart George, Régis Fleurquin, Salah Sadou
Building Reflective Mobile Middleware Framework on Top of the OSGi Platform

The literature on mobile middleware is extensive. Numerous aspects of the mobility’s effect on middleware have been analysed and the amount of previous work allowed to identify the most important patterns. Although the notion of “most important middleware” depends on the application supported by the middleware, there are traits that can be discovered in most of the connected mobile applications. Based on the experience of several authors, these traits are context-awareness, reflectivity, support for off-line operation and asynchronous (message-based) communication.

This paper presents a mobile middleware system built to support these patterns and demonstrates, how the OSGi service platform can be used to realize these patterns. It will be demonstrated that although OSGi was built to support manageability requirements, the resulting platform is suitable for implementing the 4 major middleware patterns too. The paper presents the components of this context-aware, reflective middleware framework and evaluates its footprint.

Gábor Paller
Goal-Oriented Performance Analysis of Reusable Software Components

To establish software reuse successfully in the long run, it is crucial for providers of reusable components to continuously react on problems or future trends arising around their component. In practice, however, many providers of reusable components are not able to do so due to insufficient feedback and details from reusers. Additionally, they often have too little knowledge on system context and constraints that may lead to major deficits of the reusable component especially with respect to non-functional aspects. This paper presents an approach for systematically engineering performance of reusable components that has been validated in an industrial context.

Ronny Kolb, Dharmalingam Ganesan, Dirk Muthig, Masanori Kagino, Hideharu Teranishi

Short Papers

Establishing Extra Organizational Reuse Capabilities

Component-based software engineering (CBSE) for companies active in custom solutions development is far from being reality. To make progress more industrial research as well as accordant technology management is needed. In this contribution we introduce a classification of components in terms of component’s scale and in terms of functional vs. technical concerns. From this basis we argue that only some areas of software reuse promise substantial growth in delivery efficiency and show how this is related to the extra organizational reuse approach.

Markus Voss
Incremental Software Reuse

Current reuse techniques disincentive their mass practice in software development organizations because of their large initial investments, the changes they required in ways of developing software, and their fragility in front of domain evolutions. We argue that the root of these problems is the poor resolution of retrieval techniques to identify candidate artifacts to utilize in new projects. We sketch an approach to reuse based on artifacts retrieval by content, which allows incremental adoption at low cost. The Incremental Reuse Method (IRM), founded on these principles, can solve the big problems of traditional reuse, allowing their application in all manner of organizations.

Juan Llorens, José M. Fuentes, Ruben Prieto-Diaz, Hernán Astudillo
Variability in Goal-Oriented Domain Requirements

The aim of the paper is to present a framework to contribute to the improvement of requirements elicitation by reusing domain models. In our approach, a domain model gathers goals organized in goal hierarchies associated with domain rules and materialized in conceptual fragments. A conceptual fragment represents an abstract view of the specification allowing the realization of a given goal. To construct a system, the designer will extract requirements from the domain model and adapt the obtained conceptual fragments to the context of the system. Two principles are used to represent domain models: abstraction, which allows the description of common properties of a given domain, and variability, which allows the description of discriminatory properties of the domain. In our approach, variability is applied on the three levels: goal, domain rule and conceptual fragment.

Farida Semmak, Joël Brunet
Variability Modeling in a Component-Based Domain Engineering Process

Domain Engineering (DE) and Component-based Development (CBD) are approaches that focus on reuse. On the one hand, DE methods emphasize variability modeling in analysis phase. On the other hand, most CBD methods gude on the development of components, with a minor focus on reusability properties. This paper presents an approach to support variability modeling, in a Component-based Domain Engineering Process.

Ana Paula Terra Bacelo Blois, Regiane Felipe de Oliveira, Natanael Maia, Cláudia Werner, Karin Becker
GENMADEM: A Methodology for Generative Multi-agent Domain Engineering

The generative approach is one of the most productive ways to promote the automatic reuse in software product lines. Multi-Agent Domain Engineering is a process to build multi-agent system families. This paper describes GENMADEM, an ontology-based methodology for generative multi-agent domain engineering whose main products are ontology-based domain models, domain specific languages and application generators.

Mauro Jansen, Rosario Girardi
Product Line Architecture for a Family of Meshing Tools

Meshing tools are traditionally built in a one by one basis without reusing already developed parts. However, there are several concepts within this application domain that are present in most tools. Developing software components implementing these concepts is extremely time consuming and requires highly specialized programmers. Software product lines is a way of systematically reusing assets. We propose a layered product line architecture for meshing tools. We specify it formally using xADL, and we show that it fits some already built tools.

María Cecilia Bastarrica, Nancy Hitschfeld-Kahler, Pedro O. Rossel
Binding Time Based Concept Instantiation in Feature Modeling

In this paper, we address the issue of concept instantiation in feature modeling with respect to binding time. We explain the impact of such instantiation on applying constraints among features expressed in feature diagrams and as additional constraints and propose a way to validate a concept instance under these new conditions.

Valentino Vranić, Miloslav Šípka
Aspects as Components

An adaptation of the UML Component method to design crosscutting components is briefly presented. Such components are allowed to crosscut only the public interface of base (convencional) components. The design and implementation of crosscutting components using the language JAsCO is discussed.

Marcelo Medeiros Eler, Paulo Cesar Masiero
Improving Reuse of Off-the-Shelf Components with Shared, Distributed Component Repository Systems

The task of identifying software components that meet business requirements is a challenging issue in component-based development processes. In such a context, component repository systems can provide the means to effectively find suitable components, improving reuse of off-the-shelf software components. This paper presents a shared, distributed component repository architecture for large scale deployment of commercial and open source software components. The proposed architecture adopts a service-oriented approach in order to achieve a high degree of availability and reliability. Besides, the proposed architecture also deals with issues such as security, component certification and business models.

Glêdson Elias, Jorge Dias Jr, Sindolfo Miranda Filho, Gustavo Cavalcanti, Michael Schuenck, Yuri Negócio
Support to Development-with-Reuse in Very Small Software Developing Companies

There are a variety of specifications to represent information about reusable assets. Most of this models and specifications are complex, difficult to understand and implement in reduced environments. Small and

very small

organizations (less than 10 employees) can benefit from reuse but, they need easy to understand methodologies, processes and tools; low cost technologies and, flexible development models. We provide a flexible approach to the modelling process proposing an easy model to represent and classify reusable assets, mainly those developed inside the organization but, compliant with standards to allow the use of COTS. Our model deals with functional and non-functional properties and, it’s able to represent assets from the whole software development life cycle.

José L. Barros, José M. Marqués
A Simple Generic Library for C

This paper presents Sglib, a C library freely inspired by the Standard Template Library (STL). In opposition to C++, the C language lacks any support for generic programming. Our library results from the idea to create a generic library of reusable algorithms through the C preprocessor.

Marian Vittek, Peter Borovansky, Pierre-Etienne Moreau
Eliciting Potential Requirements with Feature-Oriented Gap Analysis

Software reuse has long been paid attentions as an effective way to improve software quality and productivity. In the context of Requirements Engineering (RE), a reuse approach is effective in particular because it can help to define requirements and to anticipate requirements change. We propose a feature-oriented gap analysis method to elicit potential requirements from various stakeholders. We use feature modeling, which are an important concept in software product line, to identify reusable requirements elements. To achieve our goal, we present (1) a meta-model of reusable requirements elements, (2) gap analysis between new collected requirements and reused requirements in the repository, and (3) a potential requirements elicitation process with feature-oriented gap analysis. This process is a set of sequential procedures to elicit potential requirements in addition to users’ Plus minus interest (PMI).

Sangim Ahn, Kiwon Chong
X-ARM: A Step Towards Reuse of Commercial and Open Source Components

In component-based software development processes, one of the most challenging tasks is to find reusable assets that fulfill the requirements of a particular software system under development. Over time, in the context of component repository systems, reusable asset specification approaches have been proposed to help find suitable reusable assets. As an important step forward, RAS (Reusable Asset Specification) provides a standard way to describe all kinds of software assets. However, despite its contributions, RAS suffers from problems related to fine-grain reuse. Besides, RAS does not provide representation for asset certification and business models. As another step forward, this paper presents X-ARM, an XML-based Asset Representation Model, specified as a RAS extension and organized in four hierarchical profiles. The proposed model overcomes RAS limitations, providing effective means for developing universal repository systems that can improve reuse of commercial and open source software components.

Michael Schuenck, Yuri Negócio, Glêdson Elias, Sindolfo Miranda, Jorge Dias Jr, Gustavo Cavalcanti

Tutorials

Implementing Domain-Specific Modeling Languages and Generators

Domain-Specific Modeling (DSM) languages provide a viable solution for improving development productivity by raising the level of abstraction beyond coding. With DSM, the models are made up of elements representing concepts that are part of the domain world, not the code world. These languages follow domain abstractions, and semantics, allowing developers – and depending on the domain even end-users – to perceive themselves as working directly with domain concepts. In many cases, full final product code can be automatically generated from these high-level specifications with domain-specific code generators.

Juha-Pekka Tolvanen
Metrics and Strategy for Reuse Planning and Management

Key to planning and managing a systematic reuse program is the formulation and evaluation of a competitive strategy, and subsequent monitoring and measurement of progress against the goals elucidated by that strategy.

Bill Frakes, John Favaro
Building Reusable Testing Assets for a Software Product Line

Testing consumes a significant percentage of the resources required to produce software intensive products. The exact impact on the project is often hard to evaluate because testing activities are distributed over the entire scope of the development effort. In this tutorial we take a comprehensive end-to-end view of the testing activities and roles that should be present in a software product line organization.

John D. McGregor
The Business Case for Software Reuse: Reuse Metrics, Economic Models, Organizational Issues, and Case Studies

Successfully introducing a reuse program into an organization requires many things, such as proven processes, an organization for reuse, and management support. However, management needs to understand the value of reuse before they will allocate resources. Key to showing this value is a business case based on consistent, realistic, and easy to understand metrics. I have found that combining realistic assumptions with simple, easy-to-understand metrics often provides the incentive needed to “sell” reuse to management.

Jeffrey S. Poulin
Designing Software Product Lines with UML 2.0: From Use Cases to Pattern-Based Software Architectures

A software product line consists of a family of software systems that have some common functionality and some variable functionality. An important part of developing a software product line is commonality/variability analysis, during which the common and variable parts of the requirements, analysis, and design models are determined. This tutorial describes a model-driven evolutionary development approach for software product lines called PLUS (Product Line UML-based Software Engineering).

Hassan Gomaa
Aspect-Oriented Software Development Beyond Programming

Software systems and the concerns addressed by them are becoming increasingly complex hence posing new challenges to the mainstream software engineering paradigms. The objectoriented paradigm is not sufficient to modularise crosscutting concerns, such as persistence, distribution and error handling, because they naturally crosscut the boundaries of other concerns. As a result, these broadly-scoped concerns cannot be systematically reused and evolved. Aspect-oriented software development (AOSD) [1] tackles the specific problem of managing crosscutting concerns throughout the software development lifecycle. It supports a new abstraction – the

aspect

– and new composition mechanisms to facilitate developers to modularise, analyse and reason about crosscutting concerns in a system. Its potential benefits include improved comprehensibility, reusability, evolvability and maintainability of the system.

Awais Rashid, Alessandro Garcia, Ana Moreira
Backmatter
Metadaten
Titel
Reuse of Off-the-Shelf Components
herausgegeben von
Maurizio Morisio
Copyright-Jahr
2006
Verlag
Springer Berlin Heidelberg
Electronic ISBN
978-3-540-34607-4
Print ISBN
978-3-540-34606-7
DOI
https://doi.org/10.1007/11763864

Premium Partner