13.07.2015 Views

Software Design 2e - DIM

Software Design 2e - DIM

Software Design 2e - DIM

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

One of the potential benefits from the use of object-oriented development is that ithas scope to encourage reuse. This arises chiefly from technological factors, not leastthat object-orientation promotes reuse through both the uses relationship and alsothrough inheritance.Unfortunately, this does not seem to be evident in practice, as was observed inboth the study by Fichman and Kemerer and that of Johnson and Hardgrave. Fromthese, and also from the subsequent study undertaken by Fichman and Kemerer(1997), it would appear that reuse is only likely to occur as the consequence of separateand specific initiatives within an organization, reinforcing the arguments of Lynexand Layzell that organizational barriers are significant and that ‘reuse requires thewhole organisation and funding of development to be revised’.There may also be cognitive reasons why inheritance in particular has not provedto be a particularly strong vehicle for supporting reuse. Détienne (2002) suggests thatthe study of categorization behaviour recognizes that when hierarchies are used forclassification, users (designers) will assign a special cognitive status for certain ‘basiclevel’ objects in a hierarchy, and that these ‘stand at an intermediate level of abstractionand form an anchor point for classification and reasoning’.* However, in contrastto this, the use of inheritance in object-orientation requires the anchor points containingthe major attributes to be assigned to the top of the abstraction hierarchy. Indeed,from a design perspective, most designers are probably happier using wide shallowinheritance trees rather than deep ones.Reuse remains an important objective, and is a theme that we will be discussingin both the next section and the following chapter. At this point therefore we confineourselves to noting that, while object-orientation provides support for reuse, this is notsufficient in itself to make reuse practical.This section has covered a wide range of issues and, taken together with the materialof the preceding section, it provides a quite extensive context for the remainingsections of this chapter. In these, we examine some of the procedural approaches thatare used to develop object-oriented systems in rather more detail.367Object-Oriented frameworks16.3 Object-Oriented frameworksAt the end of the preceding section, we examined some of the reasons why the inheritancemechanism has proved to be a less universal solution to the problem of softwarereuse than might have been hoped. However, the intrinsic uses and inheritance mechanismsare not the only ways in which object-oriented design solutions can be reused,in whole or in part. Another example is the design pattern mechanism described inChapter 10, which provides a more conceptual mechanism that can be employed toencourage reuse of design solutions.The object-oriented application framework offers yet another reuse mechanism,but this time one that is based upon reusing ‘physical’ objects. Less abstract than thedesign pattern (which itself can be used to describe frameworks), the key characteristic* Détienne offers the example of the hierarchy: living thing; animal; mammal; bear; polar bear, and observes thatthe basic level object that most humans would use in assigning distinctive classification attributes would be bear.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!