Lecturer: Professor Joost N. Kok (Leiden University)
Title: Basic concepts of object-oriented and component-based software engineering
Time: June 12-13, 2003
Location: Room A217, Department of Computer Science, University of Helsinki, Teollisuuskatu 23
Schedule: Thusday start at 10.15, Friday start at 9.15. Lectures end around 17.00 on both days
Registration: The course size is limited. All HeCSE students will be accepted. Other students are accepted only if there is room. Participants are asked to register to the course by sending an email to hecse-admin@cs.helsinki.fi
Project work: In addition to active participation to the lectures, student of the course may do a project work during June. The completed project work with the lectures will give 2 credit units.

In this course we present the basic concepts that underlie object-oriented and component-based software engineering, and their semantic justifications. We start with the basic concepts such as abstract data type and inheritance, as used in the object-oriented paradigm to enhance reuse, modularity and maintenance of software. We show how the concept of component supports and generalizes similar concerns in the engineering of large, heterogeneous, loosely-coupled, distributed software systems.

The current component technology regards components as extended objects. After reviewing it, we describe an alternative approach that starts with the concept of components as abstract behavioral types. We show how this new interpretation makes components amenable to explicit exogenous coordination, supports compositionality, and provides a clear separation between computation and communication concerns. This leads to a new model of component composition that is based on a calculus of connector for algebraic construction of component glue code.

Preliminary outline of the course:

  • Part 1: From Objects to Components
    • Review of Object Orientation
      • Abstract Data Types
      • Inheritance
      • Polymorphism
      • Interface
      • Semantics of objects
    • Beyond Objects
      • Reusability
      • Modifiability
      • Composability
      • Modeling objects (Behavioral interface)
    • Components
      • What are components
      • Functional and non-functional aspects
      • Architectural implications
      • Gluing components
  • Part 2: Components>
    • Components as extended objects
      • Multiple interfaces
      • Component composition
      • Current component technology
        • CORBA
        • DCOM
        • .NET
        • JavaBeans
        • Jini
    • Coordination
      • Computation vs. communication
      • Endogenous vs. Exogenous coordination
      • Dynamic reconfigurability
    • Components as Abstract Behavior Types
      • The ABT model
        • Observable behavior as interface
        • Mobile channels for interaction
      • Dynamic dataflow
      • IWIM and Manifold
      • Semantics for a compositional component model
    • A calculus of mobile channels
      • Channels as connectors
      • Composing connectors
      • Rew
 Links Course Home Page