Software Design Based on Using Ontologies and Algorithm Algebra

Software Design Based on Using Ontologies and Algorithm Algebra

DOI: 10.4018/978-1-5225-9384-3.ch007
OnDemand:
(Individual Chapters)
Available
$37.50
No Current Special Offers
TOTAL SAVINGS: $37.50

Abstract

This chapter proposes an approach to the automated development of programs based on the use of ontological facilities and algebra-algorithmic toolkit for design and synthesis of programs (IDS). The program design ontology, developed using Protégé system and represented in OWL format, includes concepts from various subject domains (sorting, meteorological forecasting, and other) intended for description of main program objects: data, functions, and relations between them. IDS toolkit generates the initial (skeleton) algorithm scheme based on its ontological description extracted from OWL file. The generated scheme is the basis of further design of the algorithm and synthesis of a program in a target programming language. The approach is illustrated by examples of developing parallel sorting, meteorological forecasting, and N-body simulation programs.
Chapter Preview
Top

Introduction

This chapter describes the approach to development of parallel programs using ontologies and algebra-algorithmic facilities. Ontology is a philosophical term that refers to the study of being, becoming, existence and reality and was introduced to computer science through the field of artificial intelligence (Strmečki, Magdalenić, & Kermek, 2016).

In (Happel & Seedorf, 2006), main approaches for using ontologies in software engineering are listed:

  • ontology-driven development: the use of ontologies at development time for describing the problem domain;

  • ontology-enabled development: applying ontologies at development time to support developers in their tasks;

  • ontology-based architectures: the use of ontologies as primary runtime artifacts;

  • ontology-enabled architectures: applying ontologies as support to runtime software.

In (Calero, Ruiz, & Piattini, 2006), a broader classification of ontologies based on their subject of conceptualization is proposed:

  • knowledge representation ontologies that are used to formalize knowledge under a specific paradigm;

  • generic ontologies which represent reusable common-sense knowledge;

  • high-level ontologies describing general concepts and notions;

  • domain ontologies that offer vocabulary for concepts in a particular domain;

  • task ontologies which describe the vocabulary related to a generic activity;

  • domain task ontologies that are reusable only in a particular domain;

  • method ontologies applicable to a reasoning process designed to perform a particular task;

  • application ontologies that are dependent on the application and often specialize the vocabulary of a domain or task ontology.

Based on the moment when they are utilized, ontologies can be used during the development or in runtime. The former approach is called ontology-driven development, in which, for example, ontology’s semantic content can be converted into a system component.

In (Gašević, Kaviani, & Milanović, 2009), the use of ontologies in software engineering throughout software lifecycle phases is researched. In the analysis phase, an ontology is commonly used for requirement engineering. In the design phase, ontologies are used as software models, business vocabularies and reasoning or transformation models. In the implementation phase, three possible approaches can be distinguished:

  • software system implementation can be generated from an ontology created in the analysis phase and refined in the design phase;

  • ontologies can be used in runtime, e.g., Jena API can be used for handling OWL ontologies in Java;

  • ontologies can be used as part of the implementation logic in systems implemented using rule-based languages. In the maintenance phase, ontologies may be used as support for managing knowledge.

Key Terms in this Chapter

Program Design Ontology: The ontology which includes concepts from various subject domains (for example, sorting, meteorological forecasting) intended for description of main program objects: data, functions and relations between them.

Modified System of Algorithmic Algebras (SAA-M): The extension of the Glushkov’s system of algorithmic algebras (SAA) intended for formalization of parallel algorithms.

SAA/1: The algorithmic language based on Glushkov’s system of algorithmic algebras and focused on natural linguistic representation of schemes. It is applied for multilevel structured designing and documenting of sequential and parallel algorithms and programs.

Glushkov’s System of Algorithmic Algebras (SAA, Glushkov’s Algebra): The two-sorted algebra focused on analytical form of representation of algorithms and formalized transformation of these representations.

Ontology: A formal explicit description of concepts (called classes) in a domain of discourse, properties of each concept describing various features and attributes of the concept, instances (specific objects in the domain of interest), and restrictions on properties. The properties are binary relationships on concepts.

SAA Scheme: A representation of an algorithm in algorithmic language SAA/1.

Web Ontology Language (OWL): A family of knowledge representation languages for authoring ontologies. The OWL languages are characterized by formal semantics. They are built upon the World Wide Web Consortium’s (W3C) XML standard for objects called the Resource Description Framework (RDF).

Integrated Toolkit for Design and Synthesis of Programs (IDS): The software system intended for automated constructing of sequential and parallel algorithm schemes represented in the modified system of algorithmic algebras (SAA-M) and synthesis of programs in C, C++, Java languages.

Open Multi-Processing (OpenMP): An application programming interface (API) that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran. It consists of a set of compiler directives, library routines, and environment variables that influence run-time behavior.

Complete Chapter List

Search this Book:
Reset