No object-oriented analysis

In the heydays of object orientation, when software gurus (stupidly) said that object-orientation was good because the world is so full of objects, or when the operating system OS/400 was (stupidly) said to be object-oriented, many software engineers spoke about OOP (for object-oriented programming), about OOD (for object-oriented design), and even about OOA (for object-oriented analysis). I read a couple of books about object-oriented analysis and design, and I could find a clear difference between the two. In fact, object-oriented analysis appeared just as a high-level kind of object-oriented design.

Another question is that the word analysis by itself has zillion of technical meanings in the different fields of knowledge, and therefore often it is quite ambiguous to talk about “analysis” tout court. Here we are talking about “requirement analysis”. Some people made a complete confusion between analysis and design, talking about “requirement capture” for what I here mean with the phrase “software requirement analysis”, and talking about “analysis” for what I here mean with the phrase “software design”. I heard even the word “microanalysis” to mean low-level design. A software developer was classified as “analyst”, “programmers”, or “programmer analyst” (a.k.a. “analyst programmer”). No mention for software designers. Then came the Web, and “Web designer” became the phrase to refer to the professional expert in artistic composition of Web pages and sites.

The distinction between analysis and design was so blurred that the phrase “analysis and design” became a buzzword, and the word “modeling” was borrowed from the fashion world to mean just “analysis or design”. For example it was used in the acronym UML (Unified Modeling Language).

Now at last, a more reasonable language usage has prevailed. Now for most people “software analysis” means “software requirement capture” and “software design” means “software architecture specification”, or “language-independent algorithm writing”.

Also the meaning phrase “object-oriented” has shrunk to the original meaning of “class-oriented”, as, in my opinion, it should have always been called.

Given that new/old meaning of “analysis” and of “object-oriented”, it is quite hard to make a sense for the concept of “object-oriented analysis”. Software analysis is the work of talking with the domain experts (or marketing experts) to get their wishes about what the new software should do. They are not expert of software development technology and concepts, like object and classes, they shouldn’t become. The purpose of such work is to write a document specifying the requirements of software. This document must be fully understood by all the stakeholders. How is thinkable to write such a document in an object-oriented fashion?

The conclusion is: there is object-oriented programming, that is computer programming done using an object-oriented programming language; there is also object-oriented software design, that is software architectural planning or algorithm invention done in an object-oriented way, and possibly implemented in a non-object-oriented programming language; but there is no thing as object-oriented requirements analysis.


About Carlo Milanesi

I am a software developer in Italy. I have develop financial, engineering and commercial software using many programming languages, mainly C, C++, Visual Basic, Java, and C#. Now I am interested in Rust and TypeScript.
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s