FAQ (Frequently Asked Questions) about Object Oriented Design and Architecture


What is OOD?

OOD shows HOW the functional and non-functional requirements to the system are to be realized and provides the framework for programming. OOD implements the analysis results, which describe WHAT the system has to do.
A complete OOD-model contains several views that portray the system under various aspects (e.g. which data, processes, layers). These views on the system are described in various abstraction levels, from very coarse (architecture) to very fine (detailed design).


Which other concepts belong to OOD?


> OOSE (object-oriented software engineering)
>Object oriented analysis
> Object oriented design
> Object oriented architectures
> Object oriented test


    > UML
    > class diagram
    > Sequence diagram
    > Component diagram
    > State diagram
    Are there any definitions of OOD?

    Architecture: "The specification of the fundamental structure of a system"

    Design: "All activities within a software development process, which structure a model logically and physically which describe how a system realizes the requirements described in analysis."


    Helmut Balzert defines OOD as follows:
    "OOD expands, modifies and optimizes an OOA-model under technical views, so that afterwards, an implementation of the OOD-model is possible. OOD comprises of architectural- and implementational design".

    What is OOD used for?

    Each system has architecture and design.

    Nevertheless, OOD should be performed sensibly in order to provide a structure for the system that facilitates the implementation of non-functional requirements (e.g. requirements to the performance, serviceability, changeability). To do so, various techniques are used (e.g. the use of design patterns). The non-functional requirements are prioritized and decisions for solutions are met from a series of design alternatives.

    With an incremental development, a good design is needed to have the system become expandable.
    Within the design, components of the system are partitioned and interfaces are defined for them.


    When and how is OOD used?

    OOD starts as soon as the most important functional requirements and the essential non-functional requirements are known. At that point in time, the architecture as a working basis is created.

    At a later point in design, detailed requirements are transformed into an executable system, using the architecture as a basis. With an iterative, incremental development, OOD is used to split up the system into expandable components and to designate interfaces for the same.


    What can happen if OOD is not used?

    If OOD is not used, it may very well be, that the non-functional requirements are being insufficiently considered, and the system does not meet them.

    Is it necessary to have a tool?

    Theoretically, OOD-models may be drawn with pen and paper. However, tool support offers considerable advantages when creating a model. For mid-size to large projects with several designers, a tool is imperative. By model views and consistency checking, the model complexity can be reduced.

    Tools are usually used to generate a code-framework from the created model, which "only" has be complemented with algorithms.


    How much does OOD cost, what does it yield?

    When OOD is implemented sensibly, some time is needed in order to create an advantageous system structure. Through the OOD, the risk is reduced dramatically, not to be able to control the system after a few expansions, because a design is treating non-functional aspects such as expansibility and robustness.

    Who would (typically) use OOD?

    Today, for mid-size to large projects, an architecture is conventionally created in a team of its own. Besides, the architecture team has the task to pass-on the know-how for further design to the software developers.

    What kind of training is needed for using OOD?

    To create a system architecture, experience in the area of architecture is required in order to recognize risks and to select proven solutions. An architect should have a good overview of current technologies including their pros and cons. Since he is also projects intermediary, he has to possess distinctive soft-skills. For further design of the system, it is valuable to have experience in the area of object oriented methods with all its possibilities as well as its pros and cons.

    Schooling, spread over a few days, may ease a practice related start into this subject matter.


    Which website/books are providing additional information?

    > Larman C.: Applying UML and Patterns, Prentice Hall PTR 2001

    > Buschmann, F. et al: Pattern-Oriented Software Architecture, John Wiley & Sons, 1996

    > Gamma, E. et al: Design Patterns, Addison-Wesley Pub Co, 1995
      http://www.cetus-links.comhttp://hillside.net/patterns/