Object-oriented analysis and design

No standard notations, consistent terms and process guides were the major concerns at the time, which degraded communication efficiency and lengthened learning curves.

Some of the well-known early object-oriented methodologies were from and inspired by gurus such as Grady Booch, James Rumbaugh, Ivar Jacobson (the Three Amigos), Robert Martin, Peter Coad, Sally Shlaer, Stephen Mellor, and Rebecca Wirfs-Brock.

Later, together with Philippe Kruchten and Walker Royce (eldest son of Winston Royce), they have led a successful mission to merge their own methodologies, OMT, OOSE and Booch method, with various insights and experiences from other industry leaders into the Rational Unified Process (RUP), a comprehensive iterative and incremental process guide and framework for learning industry best practices of software development and project management.

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.

This distinction was popularized by Barry Boehm in a very influential paper on his Spiral Model for iterative software development.

[3] 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 subsequent design phase refines the analysis model and makes the needed technology and other implementation choices.

[4] The purpose of any analysis activity in the software life-cycle is to create a model of the system's functional requirements that is independent of implementation constraints.

[5] Object-oriented design (OOD) is the process of planning a system of interacting objects to solve a software problem.

During OOD, a developer applies implementation constraints to the conceptual model produced in object-oriented analysis.

Such constraints could include the hardware and software platforms, the performance requirements, persistent storage and transaction, usability of the system, and limitations imposed by budgets and time.

These features are often referred to by these common names: The main advantage of using a design pattern is that it can be reused in multiple applications.

[9] The benefits of OOM are: Efficient and effective communication Users typically have difficulties in understanding comprehensive documents and programming language codes well.

Visual model 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 goal of most modern software methodologies is to first address "what" questions and then address "how" questions, i.e. first determine the functionality the system is to provide without consideration of implementation constraints, and then consider how to make specific solutions to these abstract requirements, and refine them into detailed designs and codes by constraints such as technology and budget.

Object-oriented modeling enables this by producing abstract and accessible descriptions of both system requirements and designs, i.e. models that define their essential structures and behaviors like processes and objects, which are important and valuable development assets with higher abstraction levels above concrete and complex source code.

OOAD is conducted in an iterative and incremental manner, as formulated by the Unified Process .