Object-oriented analysis and design
|Wikiversity has learning materials about Object Oriented Software Design|
Object-oriented analysis and design (OOAD) is an approach to modeling an application that is used at the beginning of the software life cycle when using an object-oriented approach to software development.
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. The earliest stages of this process are analysis and design. The distinction between analysis and design is often described as "what vs. how". In analysis developers work with users and domain experts to define what the system is supposed to do. Implementation details are supposed to be mostly or totally (depending on the particular method) ignored at this phase. The goal of the analysis phase is to create a functional model of the system regardless of constraints such as appropriate technology. In object-oriented analysis this is typically done via use cases and abstract definitions of the most important objects. The subsequent design phase refines the analysis model and makes the needed technology and other implementation choices. In object-oriented design the emphasis is on describing the various objects, their data, behavior, and interactions. The design model should have all the details required so that programmers can implement the design in code.
An object-oriented system is composed of objects. The behavior of the system results from the collaboration of those objects. Collaboration between objects involves them sending messages to each other. Sending a message differs from calling a function in that when a target object receives a message, it decides on its own what function to carry out to service that message. The same message may be implemented by many different functions, the one selected depending on the state of the target object.
The implementation of "message sending" varies depending on the architecture of the system being modeled, and the location of the objects being communicated with.
Object-oriented analysis (OOA) is the process of analyzing a task (also known as a problem domain) to develop a conceptual model that can then be used to complete the task. A typical OOA model would describe computer software that could be used to satisfy a set of customer-defined requirements. During the analysis phase of problem-solving, the analyst might consider a written requirements statement, a formal vision document, or interviews with stakeholders or other interested parties. The task to be addressed might be divided into several subtasks (or domains), each representing a different business, technological, or other areas of interest. Each subtask would be analyzed separately. Implementation constraints, (e.g., concurrency, distribution, persistence, or how the system is to be built) are not considered during the analysis phase; rather, they are addressed during object-oriented design (OOD).
The conceptual model that results from OOA will typically consist of a set of use cases, one or more UML class diagrams, and a number of interaction diagrams. It may also include some kind of user interface mock-up.
During object-oriented design (OOD), a developer applies implementation constraints to the conceptual model produced in object-oriented analysis. Such constraints could include not only constraints imposed by the chosen architecture but also any non-functional – technological or environmental – constraints, such as transaction throughput, response time, run-time platform, development environment, or those inherent in the programming language. Concepts in the analysis model are mapped onto implementation classes and interfaces resulting in a model of the solution domain, i.e., a detailed description of how the system is to be built.
- Grady Booch. "Object-oriented Analysis and Design with Applications, 3rd edition":http://www.informit.com/store/product.aspx?isbn=020189551X Addison-Wesley 2007.
- Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiener. Designing Object Oriented Software. Prentice Hall, 1990. [A down-to-earth introduction to the object-oriented programming and design.]
- A Theory of Object-Oriented Design: The building-blocks of OOD and notations for representing them (with focus on design patterns.)
- Martin Fowler. Analysis Patterns: Reusable Object Models. Addison-Wesley, 1997. [An introduction to object-oriented analysis with conceptual models]
- Bertrand Meyer. Object-oriented software construction. Prentice Hall, 1997
- Craig Larman. Applying UML and Patterns - Introduction to OOA/D & Iterative Development. Prentice Hall PTR, 3rd ed. 2005.,mnnm,n,nnn
- Setrag Khoshafian. Object Orientation.
- Norbisrath Zündorf Jubeh, Ulrich Albert Ruben (2013). Story Driven Modeling. Amazon Createspace. p. 333. ISBN 9781483949253.
- ATLAS Transformation Language ATL
- Class-Responsibility-Collaboration card (CRC cards)
- Domain-driven design
- Domain Specific Language (DSL)
- Domain-specific modelling (DSM)
- Meta-Object Facility MOF
- Model Driven Engineering (MDE)
- Model-based testing (MBT)
- Object-oriented modeling
- Object-oriented programming
- Object-oriented user interface
- Object modeling language
- Software analysis pattern
- Story-driven modeling
- Unified Modeling Language UML
- XML Metadata Interchange XMI
||This article includes a list of references, related reading or external links, but its sources remain unclear because it lacks inline citations. (May 2009)|
- Article Object-Oriented Analysis and Design with UML and RUP an overview (also about CRC cards).
- Applying UML - Object Oriented Analysis & Design tutorial
- OOAD & UML Resource website and Forums - Object Oriented Analysis & Design with UML.
- Software Requirement Analysis using UML article by Dhiraj Shetty.
- Article Object-Oriented Analysis in the Real World