Systematic Software Reuse
Software reuse aims to exploit previously acquired competence and to reduce the development cost and lifecycle maintenance cost of new applications.
Systematic software reuse investigates methods, tools and technologies to improve the creation, management and effective use of high-quality software work-products or artifacts(often called reusable "assets") across all phases of the software lifecycle. Experience and research show that most software artifacts such as requirements, specifications, designs, architectures, patterns, interfaces, templates, models, code modules, code fragments, components, tests, and tools can be effectively engineered and packaged for repeated use. Reuse-specific tasks include the identification, creation/provision and proactive adoption of high-quality work products or assets at a broad spectrum.
The Systematic Reuse Research Group at Carnegie Mellon University, Silicon Valley explores the latest software engineering and management technologies (e.g., services computing, cloud computing, open source, social networking, scientific workflows/business processes, agile computing, component-based software engineering) in order to facilitate appropriate software reuse and to develop methods to support sustainable software that facilitate data-centric scientific or business collaboration. We are extending our earlier research on systematic component reuse and domain analysis in order to develop improved approaches in the light of current work that involves open source, services and integration of agile and iterative methods for architected and generative reuse. We also explore crowd-sourcing approaches such as that of TopCoder.
Generally, the most cost-effective and reliable reuse occurs when reusable assets are purposefully designed, carefully tested and effectively managed by an organization that uses reuse-oriented processes and tools. Economic models and reuse metrics are a key part of ensuring appropriate quality and ROI. While recent reuse-oriented language and system technologies can substantially improve reuse, it is important to note that addressing non-technical issues, such as organization, process and culture are crucial to success. In previous research, we learned that the three most important elements leading to a successful reuse program are management leadership and support, organizational change, and the creation of a reuse mindset. We weave these issues into our research programs.
Important approaches of interest to our group include systematic reuse processes, domain engineering, architected product lines, aspects and generators, software frameworks, software components and software services. Of more recent interest is the use of open-source and crowd-source techniques to create, test and assemble software assets into complete applications and systems. We are extending our earlier research on model-based systematic component reuse and feature-oriented domain engineering. We are integrating agile and iterative methods into variability analysis, domain engineering, and product lines. Most important is the use of generative and annotative approaches to create, test and assemble software assets into complete applications and systems by customizing and weaving layers of models and code fragments. A key aspect of this is a systematic approach to represent, reason about and exploit variability, applying layers of changes at selected variation points in the core system model and code.
- Service-Oriented Software Reuse
- Reuse Measurement and Improvement
- Domain Engineering in Agile Environments
- Open Source, Crowd Source and Systematic Reuse
- I. Jacobsen, M. Griss & P. Jonsson, Software Reuse: Architecture, Process, and Organization for Business Success, Addison Wesley, 1997
- L.-J. Zhang, J. Zhang & H. Cai, Services Computing, Springer, 2007
- Three chapters for: Component-Based Software Engineering, Edited by George T. Heineman, Ph.D. & William Councill, M.S., J.D., Addison Wesley Longman, May 2001.
- Product-Line Architectures.
- Software Agents as Next Generation Software Components.
- CBSE Success Factors -Integrating Architecture, Process and Organization.
- M. Griss, J. Favaro and P. Walton, Managerial and Organizational Issues -- Starting and Running a Software Reuse Program. In Software Reusability, Ellis Horwood, GB, pp. 51-78. 2002.
Papers and Reports
See detailed publications list
Upcoming Events and Resources
San Francisco Bay Area Software Reuse Meetup
ICSR - 13th International Conference on Software Reuse
June 18-20, 2013, Pisa Italy
(Martin Griss is General Chair)