Course Documents
     Main Page
     Contact Information
     Course Announcement
     Schedule and Syllabus
     Course Participants
     Discussion Forum
     Swiki Chat Area
     Lecture Material
     Independent Research
     Previous Course
Swiki Features:
  View this Page
  Edit this Page
  Printer Friendly View
  Lock this Page
  References to this Page
  Uploads to this Page
  History of this Page
  Top of the Swiki
  Recent Changes
  Search the Swiki
  Help Guide
Related Links:
     Atlas Program
     Center for LifeLong Learning and Design
     Computer Science Department
     Institute of Cognitive Science
     College of Architecture and Planning
     University of Colorado at Boulder
Huda Khan

Questions in Relationship to Software Reuse and CodeBroker

source: Ye, Y., & Fischer, G. (2002) "Supporting Reuse by Delivering Task-Relevant and Personalized Information." In Proceedings of 2002 International Conference on Software Engineering (ICSE'02), Orlando, FL, pp. 513-523.

Briefly discuss the following issues:

1. what do you consider the main message of the paper?

Software reuse, although preached often, has not been put into practice as much as desirable by software developers. The obstacles to systematic software component reuse by developers include cognitive obstacles and not merely motivational obstacles. This paper discusses the "CodeBroker" system which attempts to discern which components will be relevant to the developer's current programming task and notify the developer of these components. By excluding components that are not relevant to the development environment, learned through analysis of previous development environments and through specification by the developer, and excluding components already known to the user, learned through specification by the developer or through analysis of components frequently used by the developers, CodeBroker tries to provide only task-relevant components to the developer.

2. how is this work applicable to your own

2.1. work?

The article discussed the development of an application useful and usable by software developers as they create programs and applications. Such a system would definitely be helpful for developers like myself.

2.2. interests?

This article was interesting because it discussed a concrete example of the integration of information delivery with information access. Also, I was interested in seeing how LSA was used to extract relevant components, as one of my interests is in understanding how vocabulary and language are related to knowledge creation and understanding.

3. do you have ideas how the work in the paper could or should be further developed?

The article discusses how the discourse environment relies on the current development session to understand what components are relevant to the current task. I'd be interested in learning how information gathered from development sessions from various users might further help in defining the scope of relevant components.

4. have you used any reuse libraries

4.1. if not: why not?

4.2. if yes: which ones? did the libraries have any particular strengths and weaknesses?

For some C++ projects I did in school, parsing methods in ASP, and reused some perl components defined in a software package I was using.

One of the strengths was flexibility in adapting code to a specific situation. For the perl components, there was a great lack of documentation, so the amount of reuse or adaptation depended on understanding the code itself.

For quite a few of my development projects, I generally rely on the internet or documentation to find methods or applications that I can adapt. More often than not, it seems that I need to extend the functionality of components, rather than simply reuse them.

5. How does Codebroker infer the "task-at-hand"?

Codebroker looks at the comments and method signature as the writer attempts to write their code, retrieving components from the repository based on conceptual similarity between the comments and the documentation in the repository and on signature compatibility. Also, components that are not relevant are weeded out through the use of discourse models and user models. In the first, the system ignores the components not considered relevant to this development environment based on information from this development session. For the second, components well known by the users are not displayed. Additionally, CodeBroker allows developers to specify components irrelevant to the development session by modifying the discourse model and to specify components well-known by adding to the user model. Also, query reformulation provided by CodeBroker allows developers to refine queries by focusing the results on components from the results that they find most relevant and useful.

6. what are the trade-offs between

6.1. to let the systems infer the task-at-hand

Many components may be unanticipated or unknown or not well known by the developers, and the system will be able to retrieve these components and help the developers discover components or locate them with much more ease and efficiency.

6.2. versus that the users specifies the task at hand?

The process through which comments and documentation are interpreted for relevance does not guarantee that relevant components will be retrieved. Furthermore, every user will know different information and it is not possible for the system to know beforehand what the user's knowledge will be. Allowing the user to personalize the information delivery system allows them to specify what components they already know, which components they consider irrelevant to the development environment, and which query results to refine or reformulate.

View this PageEdit this PagePrinter Friendly ViewLock this PageReferences to this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide