Knowledge-Based Support for Object-Oriented Software Design and Synthesis: A Category Theoretic Approach

Article excerpt

ABSTRACT: To reuse previous knowledge of objectoriented design and adapt them to solve new problems, the collaboration relationships and the responsibility distribution among software objects need to be thoroughly understood and precisely formulated. The paper proposes a knowledge-based approach that employs category theoretic models to formalize and mechanize objectoriented software design and synthesis by focusing concern on reasoning about the interdependency relationships at different levels of abstraction and granularity. The major benefit of our approach is twofold: First, it provides an explicit semantics for formal object-oriented specifications, and therefore enables a high-level of reusability and dynamic adaptability. Second, it utilizes the ability of categorical computations to support automated software composition and refinement. A prototype tool that demonstrates the feasibility and effectiveness of our approach is also presented.

Categories and Subject Descriptors D. 2.4 [Software/Program Verification]; D 2.8 [Software Metrics] D.2.9 [Software Management]

General Terms

Software reliability, Software systems, Software quality and reliability

Keywords: Object oriented design, Automated software, Software quality, Software metrics

1. Introduction

One way to software reuse is to construct and use source code libraries, which heavily rely upon directory information and keyword/string search that is often cumbersome and problematic [18]. Subsequently, many knowledge-based systems (e.g., [4, 9, 24]) have been investigated for more sophisticated support mechanisms, which typically have a knowledge representation of reusable software components, and provide knowledge-based functions to query, browse and edit the components to meet user requirements. The advantages of using a knowledge-base approach include: semantic retrieval and proliferation, information aggregation and intelligent index for components, and use of classification and inheritance to support updates.

However, users of those software reuse systems generally face with both a terminological and a cognitive gap [14]. Focusing concern on providing a formal definition of basic object-oriented concepts by extending current ADT-based specification language such as Z [23], B [1], and Slang [7], some formal models (e.g., [8, 11, 17]) have been proposed to facilitate the representation, understanding and validation of object-oriented knowledge, but they still lack a mathematically precise semantics for reasoning about the collaboration relationships and responsibility distribution among software objects, which are recognized as key to effective design and reuse of object-oriented design (OOD) frameworks in current component-based software development.

As a "theory of functions", category theory offers a highly formalized language for object-oriented specifications, and is especially suited for focusing concern on reasoning about relations between objects. Also, it is sufficiently abstract that it can be applied to a wide range of different specification languages [26]. In this paper we present a knowledge-based approach that employs a category theoretic framework to model object-oriented software design and synthesis. This approach

* formally defines and represents the application domain knowledge with theory-based specifications at different levels of granularity;

* explicit models the similarities and variations among software components at different levels of abstraction;

* utilizes category theoretic computations to generate new software components out of existing ones automatically.

In consequence, our approach enables a high level of reusability and dynamic adaptability and features mechanizable specification composition, refinement and code generation. We also implement a prototype of a knowledge-based tool which has been successfully built into MISCE [27] to support object-oriented software development. …