Object-oriented design: a responsibility-driven approach

R. Wirfs-Brock, B. Wilkerson
1989 Conference proceedings on Object-oriented programming systems, languages and applications - OOPSLA '89  
Object-oriented programming languages support encapsulation, thereby improving the ability of software to be reused, refined, tested, maintained, and extended. The full benefit of this support can only be realized if encapsulation is maximized during the design process. We argue that design practices which take a data-driven approach fail to maximize encapsulation because they focus too quickly on the implementation of objects. We propose an alternative object-oriented design method which takes
more » ... a responsibility-driven approach. We show how such an approach can increase the encapsulation by deferring implementation issues until a later stage. The primary benefit of object-oriented programming is its ability to increase the value of a number of software metrics. These metrics include beiig able to reuse, refine, test, maintain, and extend the code. Yet the value of these metrics has been decreasing as the size of applications, and hence their complexity, has been increasing. Object-oriented progr amming increases the value of these metrics by managing this complexity. The most effective tool available for dealing with complexity is abstraction. Many types of abstraction can be used, but encapsulation is the main form of abstraction by which complexity is managed in objectoriented programming. Programming in an object-oriented language, however, does not ensure that the complexity of an application will be well encapsulated. Applying good programming techniques can improve encapsulation, but the full benefit of object-oriented programming can be realized only if encapsulation is a recognized goal of the design process. The approach taken by a designer has a profound impact on the degree to which encapsulation is embodied in a design. We will describe the data-driven approach to design and why it
doi:10.1145/74877.74885 dblp:conf/oopsla/Wirfs-BrockW89 fatcat:532oyjlrfnbhtcbgcgotzphlmy