It is widely believed and empirically proven that component reuse improves both the quality and productivity of software development. Before software components are reused, however, they must be located. Component repository systems provide a means to locate software components. Current component repository systems are designed to support the paradigm of development-with-reuse , which views reuse as a process independent of the whole software development process and relies on programmers to take the reuse initiative. Such systems fall short in supporting programmers who make no attempt to reuse because they do not know the existence of reusable components or they perceive reuse costs more than programming from scratch.
This dissertation advocates a paradigm shift from development-with-reuse to reuse-within-development , which views reuse as an integral part of software development, and component repository systems as information systems that augment programmers' insufficient knowledge about reusable components and assist them in accomplishing their tasks. Active component repository systems —component repository systems equipped with active information delivery mechanisms—support reuse-within-development. They can be seamlessly integrated with programming environments. Through this integration, their active information delivery mechanism delivers task-relevant and user-specific components, without being given explicit reuse queries, to help programmers reuse unknown components and to reduce the cost of reuse.
An active component repository system, CodeBroker , has been developed and evaluated. CodeBroker runs continuously in the background of a programming environment and infers programmers' needs for reusable components by monitoring their interactions with the environment. Potentially reusable components that match reuse queries extracted from comments and signatures in the programming environment are autonomously located and actively delivered to programmers. Formal evaluations of the CodeBroker system have indicated that it motivated programmers to reuse once relevant components were delivered, and that it was able to deliver components relevant to both the task and the background knowledge of programmers.
Cited By
- Kim D, Nam S and Hong J (2019). A dynamic control technique to enhance the flexibility of software artifact reuse in large-scale repository, The Journal of Supercomputing, 75:4, (2027-2057), Online publication date: 1-Apr-2019.
- Gill N and Tomar P (2010). Modified development process of component-based software engineering, ACM SIGSOFT Software Engineering Notes, 35:2, (1-6), Online publication date: 27-Mar-2010.
- Hummel O Facilitating the comparison of software retrieval systems through a reference reuse collection Proceedings of 2010 ICSE Workshop on Search-driven Development: Users, Infrastructure, Tools and Evaluation, (17-20)
- Arnold K and Lieberman H Managing ambiguity in programming by finding unambiguous examples Proceedings of the ACM international conference on Object oriented programming systems languages and applications, (877-884)
- Arnold K and Lieberman H (2010). Managing ambiguity in programming by finding unambiguous examples, ACM SIGPLAN Notices, 45:10, (877-884), Online publication date: 17-Oct-2010.
- Janjic W, Stoll D, Bostan P and Atkinson C Lowering the barrier to reuse through test-driven search Proceedings of the 2009 ICSE Workshop on Search-Driven Development-Users, Infrastructure, Tools and Evaluation, (21-24)
- Farooq U (2006). Eureka! past, present, and future of creativity research in HCI, XRDS: Crossroads, The ACM Magazine for Students, 12:3, (8-8), Online publication date: 1-May-2006.
- Mascena J, Meira S, de Almeida E and Garcia V Towards an effective integrated reuse environment Proceedings of the 5th international conference on Generative programming and component engineering, (95-100)
- Elias G, Dias J, Filho S, Cavalcanti G, Schuenck M and Negócio Y Improving reuse of off-the-shelf components with shared, distributed component repository systems Proceedings of the 9th international conference on Reuse of Off-the-Shelf Components, (415-418)
- Fischer G Distances and diversity Proceedings of the 5th conference on Creativity & cognition, (128-136)
- Farooq U (2005). Eureka! past, present, and future of creativity research in HCI, XRDS: Crossroads, The ACM Magazine for Students, 12:2, (6-6), Online publication date: 1-Dec-2005.
- Ye Y and Fischer G (2005). Reuse-Conducive Development Environments, Automated Software Engineering, 12:2, (199-235), Online publication date: 1-Apr-2005.
- Farooq U, Carroll J and Ganoe C Supporting creativity in distributed scientific communities Proceedings of the 2005 ACM International Conference on Supporting Group Work, (217-226)
- Ye Y and Fischer G Information delivery in support of learning reusable software components on demand Proceedings of the 7th international conference on Intelligent user interfaces, (159-166)
- Ye Y and Fischer G Supporting reuse by delivering task-relevant and personalized information Proceedings of the 24th International Conference on Software Engineering, (513-523)
- Ye Y and Fischer G Context-Aware Browsing of Large Component Repositories Proceedings of the 16th IEEE international conference on Automated software engineering
Recommendations
Modified development process of component-based software engineering
Component-based software engineering (CBSE) is a branch of software engineering, the priority of which is the separation of concerns in respect of the wide-ranging functionality available throughout a given software system. CBSE emphasizes on building ...
Role and relevance of reuse repository facilitating software development
This paper discusses the role and relevance of reuse repositories and how software reuse influences software development. Reuse repositories are designed to increase the possibility of locating reusable components at a centralized location to ease ...
Easing software component repository evolution
ICSE 2014: Proceedings of the 36th International Conference on Software EngineeringModern software systems are built by composing components drawn from large repositories, whose size and complexity increase at a fast pace. Maintaining and evolving these software collections is a complex task, and a strict qualification process needs ...