Three of the key activities that one must perform during Object-Oriented Software Development are

and we will discuss each in turn.

Modeling the real world

A fundamental question at the basis of any kind of software development is, of course, this one: How should we model the real world in the sofware we are developing?

A quick answer, and perhaps one that is too glib, might be: It depends on the problem to be solved, and how both users and developers of the software will view that problem.

Here are some of the ways the answer to this question has been approached over the years:

A very brief history of Object-Oriented Software Development

The notion of a "class", and "objects" created from it, nowadays tends to be thought of as having come into existence with more recent object-oriented programming languages like the following (listed in order from newest to oldest): C#, Java, C++ and Smalltalk. In fact, classes first appeared in the late 1960s in the programming language Simula67, which was developed in Norway and designed explicitly to handle simulation-type problems. Nowadays it seems that every newly developed language is (or claims to be) object-oriented (Python, Ruby) and many older languages are being, or have been, re-tooled to be object-oriented (LISP, Perl).

By the beginning of the 1980s, although "object-oriented" programming languages were starting to appear, there was very little guidance for software engineers on how to analyze or design systems in an object-oriented way. By the end of the 1980s various "methodologies" were beginning to appear to fill this void. Among the more notable (see Lethbridge and Laganiere in the annotated book list on this web site, p. 153) are:

After 1994 there was a period of consolidation, inspired by the collaboration of, first, Booch and Rumbaugh, and, later, Jacobson. Their efforts morphed into what has become the UML (Unified Modelling Language). Since 1997, the OMG (Object Management Group) has endorsed, and has introduced the standardization process to, the UML, and the UML has become widely accepted and used in the software development industry.

Meaning of "object-oriented"

Because the adjective "object-oriented" is applied to so many different nouns, it might be good idea to ask if we can get some notion of just what it means, in general. Here's a reasonable, concise description taken more or less directly from Lethbridge and Laganiere (see above), p. 29, which they, in fact, call a "definition":

The object-oriented paradigm (another one of those nouns, meaning, "way of doing things" in this case) is an approach to the solution of problems in which all computations are performed in the context of objects. The objects are instances of programming constructs, normally called classes, which are data abstractions and which contain procedural abstractions that operate on the objects.
Thus, rightly or wrongly, and here, there, and everywhere, anything that contributes, or is perceived to contribute, to this "way of doing things", is likely to have the term "object-oriented" applied to it.