Start | Sitemap | print | Search: 

What is OOD?

OOD shows HOW functional and non-functional requirements have to be realized in a system. Thus, it creates a framework for the programming. OOD puts the results of the analysis (WHAT shall the system do) into practice. A complete OOD model comprises several views, which deal with different aspects (e. g. data, processes, layers) of the system. These views are described with different levels of abstraction, from general (architecture) to very detailed (fine design). 

 

 

Which others terms are associated?

  • OOSE (object-oriented software engineering)
  • Object-oriented analysis
  • Object-oriented architectures
  • Object-oriented testing
  • UML
  • Class diagram
  • Sequence diagram
  • Component diagram
  • State machine

 

Are there any definitions of OOD?

Architecture: "The specification of a system’s basic structures." Design: All activities within the software development process that are used to structure a model logically and physically and to describe how a system fulfills the requirements described within the analysis.

Definition of  OOD according to Helmut Balzert:

“OOD expands, modifies and optimizes an OOD model from a technical point of view, making an implementation of this OOD model possible. OOD consists of a design for the architecture and a design for the implementation.”

 

Why do I need OOD?


Every system has an architecture and a design. Yet, OOD shall be applied consciously to create a structure for the system that makes the specification of non-functional requirements (e.g. requirements concerning performance, maintainability, modifiability) possible. For this purpose, various techniques (like, for example, design patterns) are applied. After prioritizing the non-functional requirements, a decision on the best solution out of several alternatives is made.

As in an incremental development process the system has to be expandable, is needs a sound design. Within the design, the components of the system are divided and their interfaces are defined.

 

When and how do I apply OOD?


OOD starts as soon as the most important functional requirements and the relevant non-functional requirements are known. At this point, the architecture is set up as basis for the following steps.  
In the course of the design, the detailed requirements are realized into a run-capable system based on the architecture. In an iterative, incremental process model, OOD is used to divide the system in expandable components and to define interfaces for those.

 

What could happen if I do not apply OOD? 


When OOD is not applied, non-functional requirements may be disregarded. As a consequence, these requirements will not be fulfilled by the system.

 

Do I really need a tool?


Theoretically, OOD models can be created with pen and paper. However, a tool helping you to create models offers significant advantages. In small or mid-sized projects with several designers a tool is absolutely necessary. The complexity of models can be reduced with the help of views and consistency checks. Moreover, tools are typically used to set up a code scaffolding out of the models created during the design. This scaffolding “only” needs to be completed with algorithms.

 

What are the costs and benefits of OOD?


If OOD is applied consciously it takes time to establish a favorable overall structure. However, the risk that the system becomes hardly controllable after some expansions can be significantly minimized since design deals with aspects like expandability and reliability.

 

Who usually applies OOD?


Nowadays it is common practice that in mid-sized or large-scale projects the architecture is created by a separate team. This architecture team also transfers the knowledge and knowhow for further design to the software developers.

 

What kind of training do I need to apply OOD?


To create a system architecture, experience in the field of architecture is necessary in order to identify risks and to choose reliable solutions. An architect should have a good overview of the latest technologies with their respective advantages and disadvantages. As he is a mediator within the project, an architect needs a high degree of soft skills. For the following design of the system, experience in object-oriented methods with their risks and chances is valuable.

A several-day training can offer you a practice-oriented introduction to the topic.

 

Which books can tell me more?

Larman C.: Applying UML and Patterns, Prentice Hall PTR 2001
Rupp C., Hruschka, P.: Agile Softwareentwicklung - für Embedded Real-Time Systems mit der UML, Hanser Verlag 2002 (only availabel in German!)

Object-oriented Design


 

 

 

 

 

 

 

 

 

 

 

Functional and nonfunctional requirements