Reusable Software Component Retrieval via Normalized Algebraic Specifications

Abstract

Efforts in the software engineering community to reuse code are hampered by a lack of tools. Reusability is particularly beneficial in a rapid prototyping environment. Rapid prototyping with automated reusable software component retrieval is a software development method to rapidly construct and adapt software, validate and refine requirements, and check the consistency of proposed designs. This dissertation describes a tool used within the Computer Aided Prototyping System (CAPS), developed at the Naval Postgraduate School, which retrieves reusable components from a software base using a formal specification as the search key. The query specification that represents a design requirement is compared to formal specifications of Ada reusable software components stored in an object-oriented database management system. A syntactic search compares specification interfaces, identifying reusable candidates based on types of parameters. The semantic search rank orders a set of candidate components based on semantic similarity to the query. The method, called query by consistency, compares terms that are reduced in the axioms of each specification. Specifications are normalized to facilitate the matching between query specifications and reusable component specifications in the retrieval. A formal proof verifies that query by consistency can retrieve components guaranteed to meet specified requirements.

Open PDF

Document Details

Document Type
Technical Report
Publication Date
Dec 01, 1991
Accession Number
ADA246002

Entities

People

  • Robert A. Steigerwald

Organizations

  • Naval Postgraduate School

Tags

Communities of Interest

  • C4I
  • Human Systems
  • Weapons Technologies

DTIC Thesaurus Topics

  • Air Force
  • Artificial Intelligence
  • Computer Programming
  • Computer Programs
  • Computer Science
  • Computers
  • Database Management Systems
  • Databases
  • High Level Languages
  • Information Systems
  • Lisp Programming Language
  • Lists (Data Structures)
  • Operating Systems
  • Programming Languages
  • Prototypes
  • Software Development
  • Software Prototyping

Fields of Study

  • Computer science
  • Engineering

Readers

  • Database Systems and Applications
  • Software Engineering.