Ontology Augmented Software Engineering

Ontology Augmented Software Engineering

Qazi Mudassar Ilyas (King Faisal University, Saudi Arabia)
DOI: 10.4018/978-1-4666-3679-8.ch023
OnDemand PDF Download:
$30.00
List Price: $37.50

Abstract

Semantic Web was proposed to make the content machine-understandable by developing ontologies to capture domain knowledge and annotating content with this domain knowledge. Although, the original idea of semantic web was to make content on the World Wide Web machine-understandable, with recent advancements and awareness about these technologies, researchers have applied ontologies in many interesting domains. Many phases in software engineering are dependent on availability of knowledge, and the use of ontologies to capture and process this knowledge is a natural choice. This chapter discusses how ontologies can be used in various stages of the system development life cycle. Ontologies can be used to support requirements engineering phase in identifying and fixing inconsistent, incomplete, and ambiguous requirement. They can also be used to model the requirements and assist in requirements management and validation. During software design and development stages, ontologies can help software engineers in finding suitable components, managing documentation of APIs, and coding support. Ontologies can help in system integration and evolution process by aligning various databases with the help of ontologies capturing knowledge about database schema and aligning them with concepts in ontology. Ontologies can also be used in software maintenance by developing a bug tracking system based upon ontological knowledge of software artifacts and roles of developers involved in software maintenance task.
Chapter Preview
Top

Introduction

Abran et al. (Abran 2004) define software engineering as:

Application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.

The development is a comprehensive term in this definition comprising of analysis, requirement specification, design, development, testing and integration of software. There are several other activities complementing the process of software development, operation and maintenance such as configuration management, process management, project management, software engineering tools and methods, and software quality assurance.

W3C (World Wide Web Consortium) defines Semantic Web as:

The Semantic Web provides a common framework that allows data to be shared and reused across application, enterprise, and community boundaries.

Ontologies are backbone of semantic web application. They capture machine-understandable specifications of a domain of interest that can be used by software agents to understand concepts and relationships among concepts in that domain. Although originally introduced for semantic web applications, ontologies have now become a means to describe non-web based content too. These machine-understandable specifications can be used to support many non-web based tasks as well.

Most of the activities and processes mentioned in the definition of software engineering above can benefit from the power of description provided by ontologies and they can be used to describe problem domain in software development. They can also be used to describe software components to support component based software engineering and help developers find suitable components for their specific requirements. A number of other uses of ontologies have been considered by researchers such as use of ontologies in requirement engineering to find and fix incomplete, inconsistent and unfeasible requirements, in application integration by adding an ontology layer on top of various heterogeneous databases. In fact, semantic web technologies can help in many, if not all, phases of software development.

This chapter discusses the use of ontologies to support various phases of software analysis, design and development. After establishing a connection between software engineering and knowledge engineering domains, the chapter discusses the application of ontologies, the back bone of knowledge engineering, in various phases of software analysis, design and development. The use of ontologies to assist in software analysis, design, development, system evolution, system integration, and system maintenance is discussed. The chapter is closed with conclusions and further readings sections.

Top

Background

The domains of software engineering and knowledge engineering are very closely related to each other. Software engineering is highly dependent upon the availability, extraction, synthesis and production of knowledge. The early stages in software development such as analysis and requirement modeling require collection of the existing knowledge from the business in the form of business rules and user requirements. Design and development stages may require knowledge about existing libraries, components and code repositories. Test case scenarios can also make use of knowledge of user feedback and usage behavior. Lastly, after the software is put into operation, software maintenance and support requires knowledge from various stakeholders. Thus knowledge serves as backbone in all stages of software development life cycle.

Knowledge engineering discipline focuses on generation of knowledge to describe content for searching, extracting and interpreting this content when required. With the advent of semantic web technologies, ontologies have gained attraction of various communities that are dependent upon availability and processing of knowledge. As mentioned above, software engineering can also benefit from these technologies for various development tasks. Ontologies – the machine understandable descriptions of domains – are backbone of semantic web applications and they can help in supporting various phases and activities in the software development process as mentioned above.

Marrying software engineering and knowledge engineering technologies can help in reducing the time of development, improved quality and lesser number of errors shipped with the developed software.

Complete Chapter List

Search this Book:
Reset