An object oriented system is made of objects. How these objects interact with one another determines how the program behaves. They work collaboratively by sending messages to each other. This is not like calling a function because when a target object receives a message, it decides what function to carry out to service that message. You could have one message implemented by many different functions. The message selected depends on the target object. These are implemented in Object Oriented Programming (OOP). For an example of OOP see Defining Object Oriented Programming in Layman’s Terms.
Image Source: IBM/ Elements of Service-Oriented Analysis and Design
What is Object Oriented Analysis?
Object Oriented Analysis (OOA) begins by looking at the problem domain (the area of expertise or application that needs to be examined in order to solve a problem). The aim is to produce a conceptual model of the information that exists in the area being analyzed. There are a variety of sources for the analysis. It can be a formal vision document, a written requirements statement, interviews with stakeholders or other interested parties, and other methods. The result of object oriented analysis will appear in the form of a conceptual model that describes what the system is functionally required to do.
What is Object Oriented Design?
Object Oriented Design (OOD) will be the final step; it transforms the model produced in object oriented analysis. It will take into account the constraints imposed by the architecture and any nonfunctional technological or environmental constraints. This includes response time, transaction throughput, development environment, run-time platform, or the programming language.
What Object Oriented System Analysis and Design is Supposed to Accomplish:
Object Oriented Analysis and Design (OOAD) is frequently touted as an advance in software engineering. The goals are to reduce software development time, reduce the time and resources required to support existing programs and applications, increase program code reuse, and from a business perspective to provide a competitive advantage to those organizations that implement it.
No doubt that the potential benefits and advantages of OOAD are real. However, one of the disadvantages of object oriented analysis and design has been excessive hype, which has led to unrealistic expectations among executives and IT managers as well as developers.
Some Disadvantages of Object Oriented System Analysis and Design
As new software development technologies are adopted, an enthusiasm develops as is often the case, and many expectations are brought to the surface. Like an empty glass, developers and managers may fill it up not knowing whether the technology will, in fact, deliver what it is supposed to. Lack of understanding and unrealistic expectations seem to be common denominators. So there is a delay of their proper use. These problems can be minimized, even avoided, by having a clear understanding of the problems and pitfalls that programmers face when adopting these technologies. Most problems have two things in common: confusion about what OOAD is and what it entails.
Problems with Object Oriented System Analysis and Design
Form And Substance
Project managers and programmers may confuse style with substance. Some developers and managers today believe that OOAD simply means defining classes, objects, and methods. It is like what happened when structured programming development became popular. Developers and managers at first thought that structured development simply meant that one had to remove GOTO statements and increase the use of subroutines. While these steps helped, they were just surface features of a deeper group of more significant principles.
Implications of OOAD
Managers and developers may not recognize all the implications of OOAD. They often assume that using OOAD will eliminate development bottlenecks. This is due to expectations that OOAD will reduce the complexity of programs and will provide architectural modularity. This different approach to architecture may work better with different management and scheduling techniques.
Abandonment of Traditional Design Processes
Managers may be tempted to ignore or abandon traditional software design and engineering processes. OOAD is often adopted because of the promise of increased productivity coupled with a shortened development schedule. However, a sufficient amount of development time is often not allowed that will make sure the design processes are followed correctly. This may actually result in bigger problems. These include missed deadlines, schedule slippage, and project failures.
Insufficient OOAD Training
Finally, one of the disadvantages of object oriented analysis and design is that developers may get some education about OOAD, but not enough. A false sense of programming confidence may stem from just reading articles, or even a book, or taking a class in it. Programmers will need time to immerse themselves in the nuances of OOAD.
Traditional analysis and design efforts in program engineering focus on one of four aspects: functional state-flow analysis, decomposition, data flow analysis, or the events to be handled. These concepts produce programs that are well organized and functional. But there are some problems with this analysis and design approach. It is easy to confuse form with substance. Another disadvantage is the clouding of the full implications of this format. There is also the abandonment of traditional design processes, and not enough time is spent on the training of developers and programmers in this new approach.
Looking at the next step in object oriented programming: Cloud Computing vs. Grid Computing.