Created July 4, 2010
Last updated July 4, 2010
[ Japanese | English ]

Merit and Demerit of object-oriented

  In this page , I will explain the merits and demerits with the reason.
  I think that the object-oriented is a tool ( or method ) in software development.
  Therefore , I think that if you understand the merits and demerits more , you can use the object-oriented more.

Note.
  About the reason , if you don't know the Software engineering and Project management , It might be difficult for you to understand.
( Because , if you don't know those , you think "It is OK if the software can be executed.". But this idea is wrong. Other qualities (maintainability etc.) and the development man-hours also are important.)
  If you don't know those , I want to you know the conclusion.
  If you want to study the Software engineering , I recommend the Fundamental Information Technology Engineer Examination or Applied Information Technology Engineer Examination of the Japan Information-Technology Engineers Examination. ( In the Information Technology Passport Examination , I think that it is lack. )

1. Merits and demerits of the object-oriented
2. Details and reason of the merits of the object-oriented
3. Details and reason of the demerits of the object-oriented
4. Reference


1. Merits and demerits of the object-oriented

  The merits and demerits of the object-oriented are followings.
  Note. About the merits , they are merits when object-oriented is correctly used. About the demerits , they are not only demerits when object-oriented is correctly used but also others.

Merits of the object-oriented:
  1. The Module Cohesion becomes higher , and the Module Coupling becomes lower.
  2. The program becomes more independent of a specification change.
  3. The program becomes more reusable.
  4. There is a case that the program becomes more understandable.
  5. The time of the testing decreases.
  6. The danger where Death march is generated can be decreased. ( Perhaps )
Demerits of the object-oriented:
  1. The time of the design increases.
  2. The executing time of the program increases.
  3. There is a case that the program becomes more difficult.
  4. Because there are few engineers who understands the object-oriented , there is a case that you are not able to design in the object-oriented.

Back to Top

2. Details and reason of the merits of the object-oriented

  I will explain the details and reason of the merits of the object-oriented.
  1. The Module Cohesion becomes higher , and the Module Coupling becomes lower.
      First of all , even if the designer said "I designed in the object-oriented" , when the module cohesion and module coupling are not pay attention , I think that it is not the object-oriented.
      Then , about the program that is correctly designed , the module cohesion is high and the coupling is low.

  2. The program becomes more independent of a specification change.
      This is related to the data-oriented. Because the data is more independent of a specification change than process.
      The "independent" means that the influence part by the specification change can be decreased and localize.

  3. The program becomes more reusable.
      Because the Module Cohesion is high , and the Module Coupling is low.

  4. There is a case that the program becomes more understandable.
      Because the Module Cohesion is high , and the Module Coupling is low. And because of the Encapsulation and Information hiding , the invalid datas are not setted and you don't need to know the unimportant datas.
      But this is not always.
      For example , when the Inheritance is used , you must understand the specificaiton of the super-class. Then , the time necessary to understand increases.
      And , the Encapsulation and Information hiding are very useful , but because you are able to know the datas and source code of the classes , there is a case that you are not able to understanding ( for example , the executing time of the program ).

  5. The time of the testing decreases.
      Because the low Module Coupling and the Encapsulation and Information hiding. And if you think about the test when you are designing and programming , the time of the testing decreases more.

  6. The danger where Death march is generated can be decreased. ( Perhaps )
      The reason of the death march is often the project management. Therefore , the object-oriented may not solve.
      But , if you design and program in the object-oriented, because the quality of the software ( maintainability in the ISO 9126) become better , and the man-hour decreases because of decreasing the bugs , this may be a prevention of the death march.
      If already in the death march , the object-oriented is not able to solve it.
Back to Top

3. Details and reason of the demerits of the object-oriented

  I will explain the details and reason of the demerits of the object-oriented.
  1. The time of the design increases.
      If you become accustomed to data-oriented , module cohesion and module coupling , this time decreases a little.
      Because the considering increases.
      But , even if the time of the design increases , after man-hour ( test etc. ) decreases.

  2. The executing time of the program increases.
      First of all , because of the time of the creating objects ( allocation of the heap memory ). I think that the use efficiency of the momory becomes bad.
      And , if in Java , because of the garbage collection.
      Because of the parameter checking for the Encapsulation too.
      But I think that because the performance of the recent computer is high , if in not embedded system or not scientific computation , there is a case that you don't need to consider. Therefore , I think that you should search after this problem is occurred.

  3. There is a case that the program becomes more difficult.
      I explained in the merits.
      When the Inheritance is used , you must understand the specificaiton of the super-class. Then , the time necessary to understand increases.
      And , the Encapsulation and Information hiding are very useful , but because you are able to know the datas and source code of the classes , there is a case that you are not able to understanding ( for example , the executing time of the program ).

  4. Because there are few engineers who understands the object-oriented , there is a case that you are not able to design in the object-oriented.
      This is the most important problem.
      There are a lot of engineer who is not studying the software engineering. Then , even if I explain the object-oriented for them , they can not understand.
      For example , if there are 20 persons in a project and one person only understand the object-oriented , I think that the object-oriented design is not used. Because , that the one person educate others and design until they can use object-oriented , is impossible.
      There is also a problem that the idea of object-oriented is difficult. ( Note. the point of the object-oriented is the module cohesion , module coupling and data-oriented ).
Back to Top

4. Reference

  The following tables are pages that I referred to create this page.

No.

Linked Website Name

Description

Linked date

1 Cohesion (computer science) - Wikipedia, the free encyclopedia This page explains the Module cohesion. July 4, 2010
2 ISO/IEC 9126 - Wikipedia, the free encyclopedia This page explains the software quality. July 4, 2010
3 Death march (software development) - Wikipedia, the free encyclopedia This page explains the death march.
I do not want to be assigned in such a project.
July 4, 2010
4 Object-oriented and the Module Cohesion and the Module Coupling - Dharma's Excel VBA This page explains the Module cohesion and Module Coupling. July 4, 2010
5 POA , DOA and Object-oriented Approach - Dharma's Excel VBA This page explains the idea of the data-oriented. July 4, 2010


  
Prev Up Next  Top
Back to Top

I doesn't assume the responsibility of any damage that occurs because of the use of this page.

Microsoft ,Windows ,Visual Basic and Excel are registered trademarks of Microsoft Corporation in the United States and other countries.
Visual Basic® for Applications may represent a VBA.
Mac ,Mac OS ,Mac OS X ,AppleScript are trademarks of Apple Inc., registerd in the U.S. and other countries.
UML ,Unified Modeling Language are trademarks of Object Management Group Inc. in the U.S. and other countries.
Sun, Sun Microsystems, Sun Microsystems Computer Corporation, the Sun logo, the Sun Microsystems Computer Corporation logo, Solaris, Java, JavaSoft, JavaScript, HotJava, JDK, and all Java-based trademarks or logos are trademarks or registered trademarks of Sun Microsystems, Inc.
Other brands and their products are trademarks or registered trademarks of their respective holders and should be noted as such.

The author of this page and these companies do not have any relationship.