Flag

1. Educational Aims of the Course

The aim of this course is to give students a detailed understanding of (aspects of) the design and analysis of object oriented programs. A bewildering variety of design and analysis methodologies for object oriented software exist in the literature. (The author personally is aware of over 100 methodologies or design languages.) These are invariably graphically based, and therefore contain design constructs and notations which range from highly informal to mathematically precise.

Although graphical notations are intended to "sugar the pill", the best OO design notations are based on a rigourous mathematical foundation. This mathematical foundation is important for several reasons. For one thing, it explains the precise design content of language constructs, and allows us to compare design methodologies in a scientific way. On the other hand, a mathematical foundation provides an exact specification of a design methodology, so that all software tools can support the methodology in a standard way. Finally, for the serious computer science student, it is not any specific design language which matters per se. (History shows that the languages tend to be highly ephemeral!) It is the fundamental design concepts which matter. These tend to change more slowly, and their longevity makes serious study worthwhile.

We will focus on OO design notations which are both mature in terms of development, and have a rigorous mathematical basis, namely class and object diagrams, statecharts and message sequence charts (mscs). These formalisms combine in a natural way, and powerful analysis and simulation tools exist for each. They appear (in some form or other) in nearly all object oriented analysis models, in particular they are components of the recent unified modelling language which has been proposed. Thus in the last part of the course we will consider UML as a way to synthesise these techniques into a complete design methodology.

Since it is quite focussed, it is as well to say what this course is not about. We do not give a survey of all object oriented design and analysis methods which can be found in the literature at the present time. This information can be found in other texts. We do not even attempt to cover every aspect of object oriented design. Many of these aspects are still the subject of ongoing research. Instead, we choose to give a comprehensive introduction to three mature design formalisms which have a rigourous mathematical foundation, and are applicable to object oriented analysis and design.


2. Pre Requisites

For Stockholm University students, the prerequisites of this course are contained in the course OOP I.

For students outside Stockholm University, the prerequisites for this course would normally consist of an introductory course in computer programming, preferably including a structured imperative programming language, such as Ada, C, Modula or Pascal, followed by an introductory course in object-oriented programming. (The choice of language is not too critical, although a strongly typed language is preferable.) Previous exposure to an introductory software engineering course is also highly recommended, in order to fully appreciate the type of problems which the techniques we describe attempt to solve. It is highly beneficial if the student has already taken some form of introductory discrete mathematics course. However, we attempt to be self contained on all three themes of this text, abstract data types, statecharts and message sequence charts.


3. Educational Outcome of the Course

Our three subjects: class diagrams, statecharts and message sequence charts are covered in more or less equal amount. After completing the course, the student should be able to:

understand the fundamental mathematical concepts of class diagrams;

appreciate how these relate to software engineering problems;

design class and object diagrams;

understand the structure and behaviour of statecharts, including hierarchy, concurrency, non-determinism and dynamic event driven behaviour;

design and analyse the dynamic behaviour of objects using statecharts;

understand the structure and behaviour of message sequence charts,

design and analyse the communication behaviour of objects using message sequence charts;

have an understanding of the syntax and application of UML


Back to Index