Interviewer Insights  
About Us  
Comments, Suggestions  
  or General Feedback  
Interested in writing for  
Tech Talk Tips?  

 

 


Application Developer - Question 2
How OOA/OOD supports Software Reusability

by Joy P. Alonzo


The target candidate audience is an application designer/developer skilled in OOA/OOD with 3 to 5 years or more experience with OOA/OOD methodology. The question pertains to the essential principles of OOA/OOD and anyone who has participated in a lead role in more than one application development life-cycle should be able to respond correctly regardless of the CASE tool they used for modeling purposes or the OOA/OOD methodology used (e.g.: Yourdon, Booch, Rumbaugh, etc).


How OOA/OOD supports Software Reusability?


Scenario:

You are a software developer in the design phase of a project using OOA/OOD to develop a model of the software architecture for the client. The client informs you that sometime post delivery of the project, his company is planning a major re-architecture of the existing IT infrastructure. They want assurances from you that the software you are planning to deliver will be reusable in the new environment. Assuming that you can identify the key abstractions and reduce the dependencies between software components as far as possible, how will designing the project using OOA/OOD methodology help you to ensure that the software you are planning to deliver will be maximally reusable?


What to look for in your candidate's response:

The technique of encapsulation which distinguishes between what an object displays externally as its publicly accessible interface and what an object retains as private internally combined with the technique of polymorphism which allows objects with many different private insides and different public interfaces to conform to a single expected public interface support software reuse. Inheritance aids in software reuse by supporting evolution by extension rather than reimplementation. New features of classes to be defined by specifying new subclasses. Subclasses inherit all the existing features of the parent class, modified where necessary, without changing the original class definition itself or even the programs that will use the new subclass (provided they use it in the same way they would use the parent class).


Explanation:

Encapsulation is a technique for minimizing interdependencies among separately written modules (objects) by defining strict external interfaces. The external interface of a module serves as a contract between the module and its clients. If clients depend only on the external interface, the module can be re-implemented without affecting any clients, so long as the new implementation supports the same external interface. The ability to reuse software designed in this manner is a direct consequence of distinguishing between the internal operations and data and the external interfaces of each object. The inside of one object contains assumptions about the external interfaces of the other objects that it uses. Any object that offers an external interface conforming to these expectations is a valid partner in this relationship, an idea known as polymorphism. Software components constructed in this manner rely as little as possible on the details of the surrounding environment. The concept of inheritance extends polymorphism and maximizes the reuse of design and implementation information, while minimizing the parts of the system that do have to be changed when extensions are made.

A candidate who answers with a simple "information hiding" or answers that the CASE models provide a structured visible design that can provide the future software engineers the documentation necessary to reuse the software may not understand the essence of object methodology. The reusability of a software component is inversely related to the amount it depends upon the rest of the world. Building reusable software requires the developer to identify the abstractions that reduce dependencies between software components as far as possible. The distinction between the insides and outsides of objects contrasts strongly with the more traditional distinction between data and processing. A candidate who does not completely grasp this concept may be very skilled at using CASE tools supporting OOA/OOD methodology, but may not be designing the software in the most effective manner. It would be highly beneficial if the interviewer can encourage the candidate to discuss how these techniques were used during analysis and design of a real world project or two in which they have participated.


About the author

My background includes 15 years of progressively responsible experience in software and systems engineering for a variety of applications developed on multiple platforms and languages including multi-tier client server systems. I have experience in every aspect of the software life cycle from feasibility analysis through deployment and maintenance. Additionally, I have been responsible as a project manager for recruiting, hiring, and developing IT staff for 9 years.

 

 

 

 

 

 

 

 


REVIEWNET is a trademark and service mark of ReviewNet Corporation © 1997-2001,
Jenkintown, PA - All Rights Reserved. This information is confidential and proprietary
to ReviewNet Corporation. Use, duplication or misappropriation is strictly prohibited.