MODELING
  • Model <-> Abstraction (levels of detail)
  • Modeling (levels of meta)
  • e.g. modeling reality: physics
  • e.g. modeling reality: what the system is about
  • Abstractions
  • System Modeling: the paradigms
  • e.g. programs - descriptions of computation
  • e.g. models of computation
  • system properties: state
  • system properties: architecture
  • system models (dynamics graphs)
  • information models: spatial
  • associative networks
  •  

      Abstractions

      Location http://www.cs.mun.ca/~ulf/mod/abs.html.
    Written 290404 by Ulf Schünemann.
    Copyright (C) 2004 Ulf Schünemann.

    back to: abstractions in prog. langs.


    ADD conc. mod: many abs in model - abs-rels to organize them

    Abstraction/Concretization - What for?
    Abstraction has three well-known functions [WOMB] in creating abstractions that help mananging complexity; correspondingly there are three abstraction processes/techniques and relations, and three kinds of results (concepts, abstractions).
    1. Aggregation (decomposition): One function of abstraction is to allow to treat several individual entities (`parts', `components', `constituents') as one by ignoring the distinction between and subsuming them under one `composite' individual. For example, we can say "the triumvirate ruled Rome 60-49," and ignore the distinction between Julius Caesar, Crassus, and Pompeius. In programming, procedural abstraction, eg., allows to treat several, more primitive computational steps as one. (What steps these can be depends on your model of computation[^].) In the extreme, it allows to treat the whole program as one large step, which is/was recursively decomposed in software development to smaller steps (functional decomposition).

      - Process of decomposition: The problem solution strategy of divide & conquer means to decompose a problem without direct solution recursively into sub-problems to be solved independently; the aggregation of the final sub-problems' solutions constitutes the initial problem's solution [Quib].

    2. Classification (exemplification): Another function is to subsume all entities (`instances', [at base level only?] `particulars') sharing certain selected (``essential'') properties under one `class' (or `type', `kind'), so that they can be treated uniformly aka. generically. For example, we can investigate the properties of all systems with a finite number of states (finite automata), not just of particular ones, and make laws for all citizens, broadcasters, etc., not just for particular ones. In programming, the classification of values into types enables us, eg., to write algorithms that work with all values of a certain type.

      «As soon as we start working in an untyped universe, we begin to organize it in different ways for different purposes. Types arise informally in any domain to categorize objects according to their usage and behavior. The classification of objects in terms of the purposes for which they are used eventually results in a more or less well-defined type system. Types arise naturally, even starting from untyped universes» [UTDAP].

      - Relation of classification/exemplification: Note that from the three, only classification is non-transitive: Although Democracy and Dictatorship are instances of Form-of-Government, the U.S.A. (an instance of Democracy) is not a Form-of-Government.

    3. Generalization (specialization): Finally, abstraction can serve to subsume all concepts (`sub-concepts', `species', eg., subtypes, subclasses) defined by a common subset of properties under one concept (`super-concept', `genus', eg., supertype, superclass) in order to increase the scope of uniform treatment. For example, we can treat as irrelevant the difference between constitutional monarchies (the U.K., Canada, Spain, Japan) and republics (the U.S.A., France, Germany, Russia), and call them democracies. That is, Democracy is here the common generalization of Republic and Consitutional-Monarchy. In programming, object-oriented programming made generalization popular in the form of subclassing (see there).

      - Relation of generalization/specialization: «A concept C is considered to be a specialization of another concept C' if all phenomena belonging to the extension of C also belong to the extension of C' [C H Pedersen: Extending Ordinary Inheritance Schemes to Include Generalization; 407-417: OOPSAL'89]. Thus, C differs from C' in that it may have more specific properties» [VOOP].

      - Process of concretization: «The generalization/specialization ordering complements classification by allowing classes of entities to be described in terms of other (already described) classes» [VOOP].