Extending types to modeling problem-space entities

  • Authors:
  • William Van Lepthien;Kenneth M. Anderson

  • Affiliations:
  • University of Colorado, Boulder, CO;University of Colorado, Boulder, CO

  • Venue:
  • The New Review of Hypermedia and Multimedia
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

Structural computing has evolved from Work on open hypermedia to aid in the construction of domain-specific software infrastructure and tools. Part of the premise of structural computing has been that by focusing on the abstraction of structure rather than on a concrete data layer, it should make it easier for developers to use appropriate levels of abstraction to build applications. By using the appropriate level of abstraction, the resulting systems can represent components in ways that closely reflect the problem space, instead of forcing the problem into an implementation-centric paradigm. Our previous work has concentrated on how to accomplish these ends through the abstraction of data--this paper concentrates on the benefits of abstraction of type. As our concern is primarily with modelling the problem space in an application domain, we approach 'type' initially from a problem-space viewpoint, not from a theoretic model. 'Type' is not a monolithic concept: a type may be an interface definition, a set of properties, or a classification. The meaning of a type depends on the individual entity to which the type is being applied, as well as the context in which the typing occurs. The meaning of 'type' in a problem domain may differ greatly from 'type' in an application addressing that domain, and the distinction must be kept clear. Types, like the entities to which they are applied, are not necessarily static. This observation is especially important in applications addressing domains that involve complex activities. This paper proposes a framework for distinguishing among the varieties of 'type' and describes uses for each. In the context of structural programming, we discuss techniques for building context-dependent extensions to existing types (whether interface definitions or classifications) that support applications where both the definitions of types and the classification of items are subject to change. We contextualize this work with respect to related research, and with more general software development concerns.