Research directions in software composition
ACM Computing Surveys (CSUR)
Framing software reuse: lessons from the real world
Framing software reuse: lessons from the real world
Pattern-oriented software architecture: a system of patterns
Pattern-oriented software architecture: a system of patterns
Software reuse: architecture, process and organization for business success
Software reuse: architecture, process and organization for business success
Analysis patterns: reusable objects models
Analysis patterns: reusable objects models
Using objects for systems analysis
Communications of the ACM
Software architecture in practice
Software architecture in practice
Client/server programming with Java and CORBA (2nd ed.)
Client/server programming with Java and CORBA (2nd ed.)
Frame-based method for customizing generic software architectures
SSR '99 Proceedings of the 1999 symposium on Software reusability
PuLSE: a methodology to develop software product lines
SSR '99 Proceedings of the 1999 symposium on Software reusability
Managing Domain-Specific, Product-Line Development
IEEE Software
IEEE Software
Business Object Component Architecture
IEEE Software
The Benefits of Generators for Reuse
ICSR '96 Proceedings of the 4th International Conference on Software Reuse
JTS: Tools for Implementing Domain-Specific Languages
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Techniques and language constructs for developing generic informations systems: a case study
SSR '01 Proceedings of the 2001 symposium on Software reusability: putting software reuse in context
XML implementation of frame processor
SSR '01 Proceedings of the 2001 symposium on Software reusability: putting software reuse in context
Increasing Reusability in Information Systems Development by Applying Generic Methods
CAiSE '01 Proceedings of the 13th International Conference on Advanced Information Systems Engineering
Academic vs. Industrial Software Engineering: Closing the Gap
PSI '02 Revised Papers from the 4th International Andrei Ershov Memorial Conference on Perspectives of System Informatics: Akademgorodok, Novosibirsk, Russia
Categorizing and modeling variation in families of systems: a position paper
Proceedings of the Fourth European Conference on Software Architecture: Companion Volume
The testing method for interface customized component
ATC'10 Proceedings of the 7th international conference on Autonomic and trusted computing
Characterizing process variation (NIER track)
Proceedings of the 33rd International Conference on Software Engineering
Self-Aware software – will it become a reality?
Self-star Properties in Complex Information Systems
Hi-index | 0.00 |
Building software systems out of pre-fabricated components is a very attractive vision. Distributed Component Platforms (DCP) and their visual development environments bring this vision closer to reality than ever. At the same time, some experiences with component libraries warn us about potential problems that arise in case of software system families or systems that evolve over many years of changes. Indeed, implementation level components, when affected by many independent changes, tend to grow in both size and number, impeding reuse. In this paper, we analyze in detail this effect and propose a program construction environment, based on generative techniques, to help in customization and evolution of component-based systems. This solution allows us to reap benefits of DCPs during runtime and, at the same time, keep components under control during system construction and evolution. In the paper, we describe such a construction environment for component-based systems that we built with a commercial generator and illustrate its features with examples from our domain engineering project. The main lesson learnt from our project is that generative techniques can extend the strengths of the component-based approach in two important ways: Firstly, generative techniques automate routine component customization and composition tasks and allow developers work more productively, at a higher abstraction level. Secondly, as custom components with required properties are generated on demand, we do not need to store and manage multiple versions of components, components do not overly grow in size, helping developers keep the complexity of an evolving system under control.