- Object oriented design ontology
An object oriented design ontology [http://protege.stanford.edu/publications/ontology_development/ontology101-noy-mcguinness.html] is a hierarchical structure of design constructs. Possible constructs that may be included within an object oriented design ontology are:
* Design patterns [http://www.patternlanguage.com/leveltwo/caframe.htm?/leveltwo/../bios/douglea.htm] ;
* Design principles;
* Design heuristics [http://www.amazon.co.uk/dp/1591408970] , [http://www.amazon.co.uk/dp/020163385X] .
It also describes the various relations that may exist amongst these constructs. There may also be specific meta data attached to a construct.
The intention for this is to provide part of a larger ontology for programming and engineering. There are also a number of general design ontologies.
A design ontology could have a number of different uses:
* Design Decision Support - for support when making design decisions, i.e. which pattern and accompanying principles to use for solving a particular problem.
* Patterns Recognition In Code - an ontology could be used to identify particular patterns within existing code when carrying out maintenance or as part of code comprehension, see Web Of Patterns [http://webofpatterns.blogspot.com/] .
* As a language agnostic way of structuring patterns possibly further in XML. This would allow the generation of patterns in particular languages much easier and could be used as an alternative to Pattern Languages which are relatively unstructured natural language descriptions of patterns.
A BlueJ extension currently exists to generate design pattern structures based on XML templates. This allows a user to generate a design pattern in a simplistic manner for a given domain, e.g. A Coffee Shop. [http://hamilton.bell.ac.uk/designpatterns/]
Some work has been done towards building relationships between patterns and classifying them:
Design Pattern Relationships and Classifications - http://www.ida.liu.se/~uweas/Lectures/DesignPatterns01/
There are a number of different design pattern families:
* Basic Design Patterns
* Enterprise Patterns
* J2EE Design Patterns
* Integration Patterns
There are a number of different design principles:
* Separation of concerns
* Convention over configuration
Design heuristics have been looked at in many different disciplines, this includes:
* Human Computer Interface
* Object Oriented Design Heuristics [Riel, 1996]
* Language Specific, Effective Java [Bloch, 2000]
Previous research has looked at aligning patterns, anti-patterns and principles in a taxonomy. These are built and situated within a specific domain using qualitative interviews between groups of developers [http://www.jonathanholloway.co.uk/thesis/industry.jpgAn Object Oriented Design Taxonomy]
The building-blocks of object-oriented design
According to [http://www.eden-study.org/articles/2002/isf4(4).pdf A Theory of Object-Oriented Design] , the rudiments ('building-blocks') in the ontology of object-oriented design are as follows:
* Uniform sets of entities (sets of classes, sets of methods)
* Uniform sets of uniform sets (sets of sets of classes, sets of sets of methods)
* Class hierarchies (sets of classes such that all inherit from one)
* Simple relations ('method m1 calls method m2', 'class subcls inherits from class supercls')
* Total relations ('all the concrete collections inherit from the Collection interface')
* Isomorphic relations ('each factory method creates and returns instances of a distinct product class')
Web Of Patterns - http://webofpatterns.blogspot.com/
Design Knowledge - http://www.springerlink.com/content/j62k9ruh40dt4jhx/
CODeP - http://www.cs.vu.nl/~guus/public/ekaw-tutorial/content-patterns.pdf
Design Patterns Applied (Pattern Hatching) C++ Examples - http://www.research.ibm.com/designpatterns/pubs/ph-jun99.pdf
Course Design Patterns - http://www.ida.liu.se/~uweas/Lectures/DesignPatterns01/
WebML - http://www.webml.org/webml/page1.do
The building-blocks of object-oriented design - [http://www.eden-study.org/articles/2002/isf4(4).pdf A Theory of Object-Oriented Design]
Object Oriented Design Patterns - http://www.oodesign.com/
Wikimedia Foundation. 2010.
Look at other dictionaries:
Object-oriented design ontology — An object oriented design ontology  is a hierarchical structure of design constructs. Possible constructs that may be included within an object oriented design ontology are: Design patterns ; Design principles; Design heuristics , .… … Wikipedia
Object-oriented programming — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing … Wikipedia
Object-oriented ontology — (OOO) is a metaphysical movement that rejects the privileging of human existence over the existence of nonhuman objects. Specifically, object oriented ontology opposes the anthropocentrism of Immanuel Kant s Copernican Revolution, whereby… … Wikipedia
Identity (object-oriented programming) — An identity in object oriented programming, object oriented design and object oriented analysis describes the property of objects that distinguishes them from other objects. This is closely related to the philosophical concept of identity.… … Wikipedia
Object Management Group — Formation 1989 Headquarters Needham, Massachusetts Website … Wikipedia
Object-Role Modeling — Not to be confused with Object relational mapping. Example of the application of Object Role Modeling in a Schema for Geologic Surface , Stephen M. Richard (1999). Object Role Modeling (ORM) is a method for conceptual modeling, and can be used … Wikipedia
Object role modeling — Not to be confused with Object relational mapping. [ Stephen M. Richard (1999). [http://pubs.usgs.gov/of/1999/of99 386/richard.html Geologic Concept Modeling] . U.S. Geological Survey Open File Report 99 386.] ] Object Role Modeling (ORM) in the… … Wikipedia
Object (computer science) — In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure. (With the later introduction of object oriented programming the same word,… … Wikipedia
Object model — In computing, object model has two related but distinct meanings: The properties of objects in general in a specific computer programming language, technology, notation or methodology that uses them. For example, the Java objects model, the COM… … Wikipedia
Ontology engineering — Example of a constructed MBED Top Level Ontology based on the Nominal set of views. Ontology engineering in computer science and information science is a new field, which studies the methods and methodologies for building ontologies: formal… … Wikipedia