Government Documents

12 pages

A Knowledge Workbench for Software Development

of 12
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Abstract: Modern software development is highly knowledge intensive; it requires that software developers create and share new knowledge during their daily work. However, current software development environments are “syntactic”, ie they do not
  A Knowledge Workbench for Software Development Dimitris Panagiotou (National Technical University of Athens, Athens, Gregoris Mentzas (National Technical University of Athens, Athens, Abstract: Modern software development is highly knowledge intensive; it requires thatsoftware developers create and share new knowledge during their daily work. However, currentsoftware development environments are “syntactic”, i.e. they do not facilitate understanding thesemantics of software artefacts and hence cannot fully support the knowledge-driven activitiesof developers. In this paper we present KnowBench, a knowledge workbench environmentwhich focuses on the software development domain and strives to address these problems.KnowBench aims at providing software developers such a tool to ease their daily work andfacilitate the articulation and visualization of software artefacts, concept-based source codedocumentation and related problem solving. Building a knowledge base with software artefacts by using the KnowBench system can then be exploited by semantic search engines or P2Pmetadata infrastructures in order to foster the dissemination of software developmentknowledge and facilitate cooperation among software developers. Keywords: Software Development, Knowledge Workbench, Semantic Annotation, SemanticWiki Categories: M.0, M.3, M.4 1Introduction Modern software development consists of typical knowledge intensive tasks, in thesense that it requires that software developers create and share new knowledge duringtheir daily work. Although most software developers use modern state of the art tools,they still struggle with the use of technologies that are “syntactic”, i.e. they use toolsthat do not facilitate the understanding of the concepts of the software artefacts theyare managing (e.g. source code).Flexible ways of solving problems are necessary when a developer is frustratedinvestigating source code that he has never seen before (i.e. when extending a third party’s software system) and is not capable of understanding its rationale.Additionally, there are many situations that find a developer seeking source code thatis already developed by others. He might not be aware of its existence, or even if heis, he is not able to find it effectively [Bauer, 06], [Thaddeus, 06].Recent trends in data integration and combination have led to the Semantic Webvision 1 . The Semantic Web strives to provide integration among information scattered 1  Proceedings of I-KNOW ’09 and I-SEMANTICS ’092-4 September 2009, Graz, Austria 455  across different locations in a uniform fashion. It defines a “common language” between these information resources.Additionally, there is a growing interest in the last few years on exploitingSemantic Web technologies in software engineering. Since 2005 the Semantic WebEnabled Software Engineering (SWESE) conference takes place every year with promising results. The Semantic Web Best Practice and Deployment Working Group(SWBPD) in W3C included a Software Engineering Task Force (SETF) to investigate potential benefits of applying semantics in software engineering processes. As noted by SETF [Primer, 06], advantages of applying Semantic Web technologies tosoftware engineering include reusability and extensibility of data models,improvements in data quality, enhanced discovery, and automated execution of workflows.In this paper we propose a new system – code-named KnowBench for knowledgeworkbench – which is the result of exploiting Semantic Web technologies in thecontext of a well known software development IDE such as Eclipse 2 , in order to provide the basis for better collaboration in the software development domain andstrive against the aforementioned problems. KnowBench aims at providing softwaredevelopers such a tool to ease their daily work and facilitate source codedocumentation and problem solving.The rest of the paper is organized as follows. In the next section, we describewhat motivated us in developing the KnowBench system. Afterwards, we describe itsfunctionality. Thereafter, we give the results of its preliminary evaluation and wediscuss the benefits of using the system. Finally, we conclude the paper indicating our thoughts for future work. 2Motivation Modern IDEs such as Eclipse provide means for documenting and annotating sourcecode, e.g. JavaDoc and Java annotations. However, this kind of documentation isunstructured and the means to retrieve it are limited.In most cases, software developers when in need of specific functionalities findthemselves seeking in forums, web sites or web search engines using keyword searchfor an API capable of delivering these functionalities. Additionally, softwaredevelopers often use dedicated forums and mailing lists to report on bugs and issuesthey have with specific source code fragments and have to wait for answers fromexperts. This switching of environments while developing code is obtrusive andrequires a great amount of effort in order to maintain scattered resources of softwaredevelopment related knowledge [Gall, 08].We argue that a more formal description of the aforementioned knowledge could be beneficiary for the software developers and the means to articulate and visualizethis knowledge should be unobtrusive i.e. in the IDE itself in order to provide unifiedaccess to it. On top of that, knowledge about source code or software componentsshould be described in a common way in order to avoid ambiguities when thisknowledge is retrieved and used by others. 2  D. Panagiotou, G. Mentzas: A Knowledge Workbench ... 456  Documentation of software, bug fixing and software related knowledge transfer  between employees of a large software house can be facilitated by the use of ontologies to sufficiently capture and describe software artefacts in a coherent way.Furthermore, ontologies are ideal for interlinking software artefacts and the resultingsemantic relationships can be exploited in order to maximize productivity whenseeking related knowledge of a specific software artefact.Towards this end we have been motivated to design and implement anenvironment – namely KnowBench – that offers the opportunity to articulate andvisualize software artefacts driven by an ontology backbone. The created artefactsformulating an organization’s software development knowledge base can be exploited by semantic search engines and P2P metadata infrastructures to enable knowledgesharing and reuse in order to boost the collaboration among the employees andspeedup time-consuming procedures when facing problems with code or searching for APIs or components to be reused. 3KnowBench The KnowBench is designed and implemented in order to assist softwaredevelopment work inside the Eclipse IDE exploiting the power of semantic-basedtechnologies (e.g. manual/semi-automatic semantic annotation, software developmentsemantic wiki).KnowBench exposes functionality that can be used for articulating andvisualizing formal descriptions of software development related knowledge in aflexible and lightweight manner. This knowledge can be then retrieved and used in a productive manner by integrating the KnowBench with a semantic search engine anda P2P metadata infrastructure such as GridVine [Mauroux, 07]. This integration willassist the collaboration and the formation of teams of software developers who can benefit from each others’ knowledge about specific problems or the way to usespecific source code while developing software systems. We have already integratedand tested KnowBench with a semantic search engine and GridVine in the context of the TEAM project [Team, 08]. However, the description of these systems is out of thescope of this paper. A demo of the TEAM system is available online 3 . 3.1Ontologies We have deployed a set of software development ontologies to the KnowBenchsystem in order to describe and capture knowledge related to software artefacts. Thesystem architecture allows for the extension or even the use of different softwaredevelopment ontologies. The set of the deployed ontologies constitutes of threeseparate ontologies. The artefact ontology describes different types of knowledge artefacts such as thestructure of the project source code, reusable components, software documentation,knowledge already existing in some tools, etc. These knowledge artefacts typicallycontain knowledge that is rich in both structural and semantic information. Providinga uniform ontological representation for various knowledge artefacts enables us to 3  D. Panagiotou, G. Mentzas: A Knowledge Workbench ... 457  utilize semantic information conveyed by these artefacts and to establish their traceability links at the semantic level.An artefact is an object that conveys or holds usable representations of differenttypes of software knowledge. It is modelled through the top level class Artefact.There are some common properties for all types of artefacts such as: x hasID – which identifies an artefact in a unique manner. Recommended best practice is to identify the artefacts by means of a string conforming to aformal identification system; x hasTitle – which defines a title of an artefact (e.g. class name or documenttitle); x hasDescription – which describes what an artefact is about; x createdDate – which models date of creation of an artefact; x usefulness – which models how frequently an artefact is used as a usefulsolution. The problem/solution ontology models the problems occurring during thesoftware development process as well as how these problems can be resolved. Thisontology is essential to the KnowBench system, as source code can be documentedwhen a certain problem is met and the respective solution to it is described.A problem is an obstacle which makes it difficult to achieve a desired goal,objective or purpose. It is modeled through the class Problem and its properties: x hasID – a problem is identified by its identifier; x hasTitle – a summary of a problem; x hasDescription – a textual description of a problem; x hasSeverity – it models how severe the problem is; x hasSolution – every problem asks for a solution. This is the inverse propertyfor the property isRelatedToProblem defined for the class Solution; x hasSimilarProblem – it models similar problems.A solution is a statement that solves a problem or explains how to solve the problem. It is represented through the Solution class and its properties: x hasID – an unambiguous reference to a solution; x isRelatedToProblem – a solution is defined as the means to solve a problem; x hasCreationDate – date of creation of a solution; x hasDescription – a textual description of a solution; x hasPrerequirement – a solution requires a level of expertise in order to beused; x hasComment – a solution can be commented by the people that used it; x suggestsArtefact – a solution recommends using an artefact in order toresolve a problem the solution is defined for; x isAbout – a solution can be annotated with the domain entities (see below); x isRelatedToSEEntity – a solution can be annotated with the generalknowledge about software engineering domain (see below). The annotation ontology describes general software development terminology aswell as domain specific knowledge. This ontology provides a unified vocabulary thatensures unambiguous communication within a heterogeneous community. Thisvocabulary can be used for the annotation of the knowledge artefacts. We distinguishtwo different types of annotations: (a) domain annotation – software providers in  D. Panagiotou, G. Mentzas: A Knowledge Workbench ... 458  different domains should classify their software using a common vocabulary for eachdomain. Common vocabulary is important because it makes both the users and providers to talk to each other in the same language and (b) software engineeringannotation – general knowledge about the software domain including softwaredevelopment methodologies, design patterns, programming languages, etc.By supporting different types of annotation it is possible to consider informationabout several different aspects of the artefacts. We note here that the vocabulary will be used for the annotation of the artefacts, e.g. code, knowledge documents, etc. aswell as expertise of the users and solutions of problems. These annotations will beused to establish the links between these different artefacts. 3.2Software Development Semantic Wiki KnowBench utilizes the SoWiSE2 system which is the successor of SoWiSE[Panagiotou, 08] in order to assist software developers in the articulation andnavigation of software development related knowledge. SoWiSE is a Semantic Wikifor Software Development and provides common functionalities with a conventionalwiki with semantic capabilities. It provides software knowledge articulation supportwith the usage of ready to use templates. On the other hand, SoWiSE2 uses alightweight and flexible editor with auto-completion and popup support to eliminatethe need of templates which sometimes are cumbersome to use. Browsing throughknowledge is done like surfing through a conventional wiki using the semantic links between different knowledge artefacts. This browser is available inside the EclipseIDE so that the software developer does not have to switch to another external browser.SoWiSE2 provides assistance to software developers in accomplishing their tasksin a more flexible fashion and shortens their total effort in terms of time. In order toachieve this goal, we approach software development documentation and related problem solving by combining lightweight yet powerful wiki technologies withSemantic Web standards.An overview of the provided functionality is given below: x Validation of the user input when incorrect values for selected concepts, properties, related instances or property values are introduced. The semanticwiki informs the user about the wrong input value and assists him/her in theway to track down the problem and resolve the issue. x Auto-complete facilities provide assistance to the user for selecting the rightconcept, properties and related instances of an object property as a value. x Intuitiveness – the software developer is able to understand what is requiredas input using the auto-complete facilities of the Semantic Wiki. x Syntax colouring – the software developer is assisted with syntax colouringto easily determine what kind of information is recognized by the wikiengine in order to avoid mistyping. x Multipage editor consisting of the semantic wiki editor and the semantic wiki browser which facilitates navigation of the knowledge base in an HTML-fashion inside the Eclipse environment. x  Navigation through the semantic wiki is enabled via following an instance’ssemantic links to other related instances.  D. Panagiotou, G. Mentzas: A Knowledge Workbench ... 459
Related Documents
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks

We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

More details...

Sign Now!

We are very appreciated for your Prompt Action!