Object-oriented modeling: Difference between revisions

Content deleted Content added
No edit summary
Tag: gettingstarted edit
Language: Move image to top of section for better layer
 
(34 intermediate revisions by 18 users not shown)
Line 1:
{{Short description |Object-oriented approach to modeling a system}}
{{mergeto|Object-oriented analysis and design#Object-oriented modeling|discuss=Talk:Object-oriented modeling#Merge into OOAD proposal|date=December 2013}}
{{More citations needed|date=July 2019}}
[[File:Component-based-Software-Engineering-example2.png|class=skin-invert-image|thumb|500px|Object-oriented model of a travel reservation system.]]
'''Object-oriented modeling''' (OOM) is an approach to modeling a system as [[object (programming)|objects]]. It is primarily used for [[software development |developing]] [[software]], but can be and is used for other types of systems such as [[business process]]. [[Unified Modeling Language]] (UML) and [[SysML]] are two popular international standard languages used for OOM.<ref name="Jacobsen 1992 https://archive.org/details/objectorientedso00jaco/page/15 15,199">{{cite book|last=Jacobsen|first=Ivar|title=Object Oriented Software Engineering|year=1992|publisher=Addison-Wesley ACM Press|isbn=0-201-54435-0|pages=[https://archive.org/details/objectorientedso00jaco/page/15 15,199]|author2=Magnus Christerson|author3=Patrik Jonsson|author4=Gunnar Overgaard|url=https://archive.org/details/objectorientedso00jaco/page/15}}</ref>
 
For [[software development]], OOM is used for [[software requirements analysis |analysis]] and [[software design |design]] and is a key practice of [[object-oriented analysis and design]] (OOAD). The practice is primarily performed during the early stages of the development process although can continue for the [[software life cycle |life]] of a system. The practice can be divided into two aspects: the modeling of dynamic behavior like [[use cases]] and the modeling of static structures like [[Class (programming)|classes]] and [[software component |components]]; generally as [[Visual modeling |visual modeling diagram]]s.
'''Object-oriented modeling''' is an approach to modeling an application that is used at the beginning of the [[Software development process|software life cycle]] when using an object-oriented approach to software development.
 
The benefits of using OOM include:
In OOM "Object-oriented modeling" the modeling passes through the following processes:
* System Analysis
* System Design
* Object Design and
* Final Implementation
The software life cycle is typically divided up into stages going from abstract descriptions of the problem to designs then to code and testing and finally to deployment. Modeling is done at the beginning of the process. The reasons to model a system before writing the code are:
 
*Communication.; Efficient and effective communication: Users typically cannothave understanddifficulties programmingunderstanding [[technical documentation]] and language[[source code]]. ModelVisual diagrams can be more understandable and can allow users and stakeholders to give developers feedback on the appropriate requirements and structure of the system. A key goal of the Objectobject-Orientedoriented approach is to decrease the "semantic gap" between the system and the real world, and to have the system be constructed using terminology that is almost the same as the functionsstakeholders thatuse usersin performeveryday business. ModelingOOM is an essential tool to facilitate this.
 
*Abstraction; Useful and stable abstraction: Modeling supports [[programming |coding]]. A goal of most modern [[software development methodology |development methodologies]] is to first address "what" questions and then address "how" questions., Ii.e., first determine the functionality the system is to provide without consideration of implementation constraints, and then consider how to takemake thisspecific solutions to these abstract descriptionrequirements, and refine itthem into andetailed implementable designdesigns and codecodes givenby constraints such as technology and budget. ModelingOOM enables this by allowingproducing [[Abstraction (computer science)|abstract]] and accessible descriptions of processesrequirements and objectsdesigns as models that define their essential structurestructures and behavior.behaviors like processes and objects, which are important and valuable development assets with higher abstraction levels above concrete and complex source code.
 
==Language==
[[File:UML History.jpg|450px|thumbnail|right|Milestones in the evolution of the UML.<ref>{{cite web|last=Riley|first=Mike|title=A Special Guide-MDA and UML Tools: CASE 2.0—or the Developer's Dream|url=http://www.drdobbs.com/a-special-guide-mda-and-uml-tools-case-2/184415500|work=drdobbs.com|publisher=Dr. Dobb's|access-date=19 December 2013|date=April 1, 2006|quote=If it weren't for the dominance that UML has gained over the industry, MDA and related modeling standards couldn't even exist.}}</ref>]]
 
The notation used for modelling is a language of graphical elements that imply design based on convention. Many conventions have been devised and they vary in formality. It may be relatively informal in nature, or consist of predefined graphical templates or consist of a formally defined [[grammar]].
 
A modeling language is often associated with a object-oriented [[software development methodology]] since a methodology often spawns a language. The modeling language defines the elements of a model, such as [[class (programming)|classes]], [[method (programming)|methods]], [[property (programming)|properties]], etc. The methodology defines the steps developers take to create and maintain a software system in relation to the models. For example, the [[Booch method]] may refer to [[Grady Booch]]'s standard for diagramming, his methodology, or both. Or the Rumbaugh [[Object Modeling Technique]] is both a set of diagrams and a process model for developing object-oriented systems.
 
In the early years of the object-oriented development there were several competing modeling and methodology variants. Booch and Rumbaugh were two of the most popular, and [[Ivar Jacobson]]'s Objectory, Shlaer-Mellor, and Yourdon-Coad were also popular. Starting in the mid-1990s, efforts began to harmonize modelling languages; to reconcile the leading models and focus on one unified specification. The graphic shows the evolution of and adoption of the [[Unified Modeling Language]] (UML).
 
<!--
==See also==
-->
 
Object-oriented modeling is typically done via [[use cases]] and abstract definitions of the most important objects. The most common language used to do object-oriented modeling is the [[Object Management Group|Object Management Group's]] [[Unified Modeling Language|Unified Modeling Language (UML)]]. <ref>{{cite book|last=Jacobsen|first=Ivar|title=Object Oriented Software Engineering|year=1992|publisher=Addison-Wesley ACM Press|isbn=0-201-54435-0|pages=15,199|coauthors=Magnus Christerson, Patrik Jonsson, Gunnar Overgaard}}</ref>
== References ==
{{reflist}}
 
[[Category:Object-oriented programming]]
[[Category:Software design]]
 
 
{{Comp-sci-stub}}