Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 40 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
40
Dung lượng
3,09 MB
Nội dung
. : : ! ' . 'j ' $ ' j 'E i ' : . * C j Q@2 t H A p T : R y * From M odules Io Obletls ' E 1 1 . . ! . l I . ( . : i ' I function open - disk-file function open-tape-file function open-diskette-file1 l ;! y . . ( él)j ' ;l i I I 1 . Ii I Fileclass .l , 2 I ! ( t li : 1 abstract method open ;I j p . jI I ' ! 1 ' l 1 ' l '! l 1 . 1 . . 1l l . ; ! I j ! I .I p I I , ! ' . ! ( . : 11 ; p ; . I '' ! DiskFileclass TapeFileclass DisketteFileclassI l E I .1 Implementation of lmplementation of lmplementation of 'I q ' ;! ; . method open method open method open k I ' . for a disk file for a tape file for a diskette file j ' ' ! ! ' . (b): ! ' j ' .: . Flguee Kaa Actions need to open file . (a) Structured implementctions. (b) Obiect-oriented :l ! . ' file class hierarchy using Javc notation.4 ! . : : ! i : : .i . ' 1 1 j i ; J ! , now determines whether myFile is a disk file, a tape file, or a diskette file and in- ' j l ! t vokes the appropriate version of open. That is, the system determines at run time '.i l hether object myFise is an instanee of class DiskFilecloss, class TopeFilecloss, or ' , 1 1 l l ) l w i i ! lass Diske/eFilecloss and automatically invokes the correct method . Because thisI I C I i has to be done at run time (dynamically) and not at compile time (statically) , theI : l : I act of connecting an object to the appropriate method is termed dynamic binding.I l d ! .' 1 j Furthermore, because the method open can be applied to objects of different classes,I j l i it is termed polymorphic. The term means 'tof many shapesa'' Just as carbon crystals! E l in many different shapess including hard diamonds and soft graphite. so theI come1 t l I @ E l method open comes in three different versions. ln Java, these versions are denoted ' @ ! : I kFilecloss .open, TcpeFileclass.open, and DisketteFilecloss.open. (In C++, theI r, I Disi 1 j i period is replaced by two colons , and the hles are denoted DiskFileclass::open,l k : il j : . TapeFileclass::open, and DisketteFileclass::open.) However, because of dynamic I ! . I binding, it is not necessary to determine which method to invoke to open a spe- , 1 j 7 ific lile . Instead, at run time, it is necessary to send only the message myFile.openI , , , c ! ë F (), and the system will determine the type (class) of myFile and invoke the correct I j h d 1 m et o . : j ! t These ideas are applicable to more thanjust obslrod (virlual) methods. Considerj I : ' a hierarchy of classes. as show n in Figure 7 . 34. Al1 classes are derived by inheritance .1 ' : from the Bose class . Suppose method checkorder (b : Bose) takes as argument an!I - !j . . instance of class Bcse. Then, as a consequence of inheritance, polymorphism, and , ' i t d nam ic binding , it is valid to invoke checkorder with an argument notjust of classI 1 i y ' I 1 ! ; ; Bcse but also of any subclass of class Bose , that is, any class derived from Base. All ' j j ', '1 ! 1 1 : F . r i I i! ' r 1 ' i ;I . . 1 ! 1 ' . Please purchase Image To PDF Converter on http://www.verypdf.com/ to remove this message, thank you. 1 . l I . I 2 xp coHEsloN AND coupuNo oF oYlcTs 2oa ; l sa ?,! ' jIi l -I I ! E ' ' ji Ir . r.; t 1 .( ' r j ' )I . l 1. I !1 : ' . I l ' . l 1 $; 4 j ' Flsure Ka* Hierarchy of classes. p q . ! ' . ' ' ' . ji j that is needed is to invoke thetkorder and everything will be taken care of at run j time. This technique is extremely powerful, in that the software professional need not ! i t ' 1be concerned about the precise type of an argument at the time that a message s sen . lH owever, polymorphism and dynamic binding also have major disadvantages. I : . ' . jFirst , it generally is not possible to determine at compilation time which version of a . specific polymorphic method will be invoked at run time. Accordingly, the cause of j a failure can be extremely difficult to determine. ' ' Second, polymorphism and dynamic binding can have anegative im pact on m ain- : $ . i - tenance. The first task of a maintenance programm er usually is to try to understand j e the product (as explained in Chapter 16, the maintainer rarely is the person who de- t 'r veloped that code). However, this can be laborious if there are multiple possibilities ( p S for a specific method. The programmer has to consider all the possible methods that l 1: j ime-consuming task. ! !C could be invoked dynamically at a specific place in the code , a t ic binding add both strengths and weaknesses to the 1 lr . Thus, polymorphism and dynam j ;, object-oriented paradigm. ; ii j 'S Th e reasons for the superiority of the object-oriented paradigm given in Sec- t ) : e tion l .6 included conceptual and physical independence. To measure this indepen- l I ;l I71 dence . the concepts of cohesion and coupling must be reexamined within the context j ki je of objects . l j j ' I j1 , i! c j 'j - . I l3 - - : t y.@ ZOHESIO N ANp toupklNl @F @ BJEW S 1 r An object is a kind of module. Consequently, the material of Sections 7.2 and 7.3 5 l 1z ; concerning modules with high cohesion and low coupling applies equally to objects. r ' h ther special types of cohesion and coupling occur within i3 The question arises as to w e i i1 th e object-oriented paradigm. : jl I S First consider cohesion. (Recall that, as explained in Section 7.2, the cohesion of 1 : i l a module is the extent to which the actions performed by that module are functionally ( 1 'j I : ! ' ' j j . . I ' ' ' I Please purchase Image To PDF Converter on http://www.verypdf.com/ to remove this message, thank you. 7 ' y ' g ' i ( 'i . t ( ' : j ' 1 x@* t u a p T z . y . From Modules 'o obietls: ' !I i l ! ' : ' ! j ' related). A class can include actions of two kinds, inherited methods and methods k ! 1 specific to that class. The cohesion of a class is determined from its functionality,I $ ' : . l ; : irrespective of the source of that functionality. To see this, suppose that two classes i l E' : ' ; 1 have identical functionality. However, one class inherits a11 its functionality from ' ' . j I its superclasses (its aneestors in the inheritance hierarchyl; tbe other class inherits ' I i thing . Because both classes have identical functionality, they have identical levels :l ë I F10 j ' i - r yi , of cohesion. In other words, no types of cohesion are specific to classes', cohesion 1 applies equally to a1l types of modules , including classes (Schach, 19961.l 1 E i with regard to coupling, lirst ignore inheritance. In the absence of inheritance, the '! Il ! : I $I . ; I coupling betw een two classes clearly can be determ ined as in the classical paradigm. . l ' ! y' le if an attribute of a class is delined to be publk (accessible to all otheri or examp ,1 t i l units within the product), then this can induce common coupling. what is somewhati ! : l ising however, is that inheritance does not induce new forms of coupling. ThatI j surpr , l 1 i is the forms of co upling that arise as aconsequence of coupling can be shown to occurj : ! ,i : ; 1I j q in the classical paradigm as well gBinkley and Schach, 19971. So, despite the major 'l ( differences between the classical and object-oriented paradigms, the object-oriented .t ' i ë . 1 k ? paradigm does not induce new forms of either cohesion or coupling. 4 lj However, a number of metrics specilic to the object-oriented paradigm have J i :1 $ , ) been put forward', for example, the height of the inheritance tree kchidamber and z 1 17 ' Kem erer , 19941. Some of these metrics have been questioned on both theoretical and . (k . ; l ; . experimental grounds EBinkley and Schach, 1996, 19971. ln these cases, it remains to j 1 k : ' be shown that there is a need for speciticall y object-oriented metrics, as opposed to I( 'E : :( ; classical metrics (like cohesion and coupling) that can be applied equally to object- h ' ' oriented software. t1 i ' i j : k We conclude this chapter with a discussion of the object-oriented paradigm. Il l t i (E1 ' l I . . : ' j l '1 ' t I 1 i I . 1 t 4t Kl@ THE @ BJEW -@ RIKNTKP PARAPI*M tl l i fl I ' -I y ! There are two ways of looking at every software product. One way is to considerjust f)l l ': i the data, including local and global variables, arguments. dynamic data stnletures, iql : i files , and so on. Another way of viewing a product is to consider just the actions s -1 1 l ' 1 ' 1 '; . performed on the data, that is, the procedures and the functions. ln terms of this . al . l ' ! 1 division of software into data and actions . the structured techniques essentially fall r t,; . : . I 1 , ' l into two groups. Action-oriented techniques primarily consider the actions of the p' ( k . è I j ' product. The data then are of secondary importance, considered only after the actions y s' j l j ' ! of the product have been analyzed in depth. Conversely, data-oriented techniques sdi .i stress the data of the product', the actions are examined only within the framework of . c j. i ! 2 ! j the data. p . ' j .A fundamental weakness of both the data- and action-oriented approaches is thatl i : . . . , 1 data and action are two sides of the same coin; a data item cannot change unless an o1 - l 1 .j . r action is performed on it, and actions without associated data are equally meaningless. a ) ' ' j i Therefore, techniques that give equal weight to data and actions are needed. It should t) F i I 1 ' II 2 l : j not come as a surprise that the object-oriented techniques do this. After all, an object s1i i (I !! l , @ ' . I .j ' 1J t : ': i ) ' p :: ' ! , Please purchase Image To PDF Converter on http://www.verypdf.com/ to remove this message, thank you. ! i j 1 . l I yx TH: OBJECT-ORIENTED PARADIOM 2@s ( ; . ! .ls comprises both data and actions. Recall that an object is an instance of an abstract l I 2 jy, data type (or , more precisely, of a class). lt therefore incorporates both data and the I . - - - - - i : ' ls actions performed on those data. The data of an object are variously called attributes, ! ! : .! ' j .m state variables , instance variables, jields, or data members. The actions are called j ts methods or memberfunctions. But irrespective of the terminology used for data and I l iI q ,ls actions , both are present in objects as equal partners. Similarly, in all the object- ! j ln oriented techniques, data and actions are considered to be of the same importance, j j j and neither takes precedence over the other. 1 1; !i Ile lt is inaccurate to claim that data and actions are considered simultaneously in the j t j n. techniques of the object-oriented paradigm. From the material on stepwise refinement 'j '! Ij e,r (Section 5. l ), it is clear that there are times when data have to be stressed and times 'p : ;: I at when actions are m ore critical. Overall, however, data and actions are given equal i I I l ! Iat importance during the phases of the object-oriented paradigm . I j! ur Many reasons are given in Chapter 1 and this chapter as to why the object-oriented I ! ing al1 these reasons is that i 1 , !or paradigm is superior to the structured paradigm. Underly ld a well-designed object, that is, an object with high cohesion and 1ow coupling, mod- :1 els al1 the aspects of one physical entity. The details of how this is implemented are I ze ' hidden', the only communication with an object is via messages sent to that object. : l 1ld I As a result, objects essentially are independent units with a well-dehned interface. ; 1 ld ' Consequently, they are easily and safely maintainable', the chance of a regression l' ) . to : fault is reduced. Furthermore, as will be explained in Chapter 8, obiects are reusable, , I j . ' '''' - ''''' j ' ito and this reusability is enhanced by the property of inheritance. Turning now to de- j j rt- velopment using objects, it is safer to construct a large-scale product by combining j 'r these fundamental building blocks of software than to use the structured paradigm. I I Because objects essentially are independent components of a product, development j j of the product, as well as management of that development, is easier, and hence less r J likely to induce faults. I ! 2: $ tA1l th ese aspects of the superiority of the object-oriented paradigm raise a ques- j r f - tion: If the structured paradigm is so inferior to the object-oriented paradigm, why has ' j the structured paradigm had so many successes? This can be explained by realizing j ' hat the stnlctured paradigm was adopted at a time when software engineering was l i ' t y 5 st not widely practised. Instead, software was simply t'written.'' For managers, the most j ; .l - :s, important thing was for programmers to churn out lines of code. Little more than lip ! jk ' ; 3s service was paid to the requirements and specihcation (systems analysis) of a product, 1 I I ' I jis and design was almost never performed . The build-and-fix model (Section 3. l ) was , l ; ' i ! ' !tll typical of the techniques of the l970s . Therefore, use of the structured paradigm ex- ' posed the majority of software developers to methodical techniques for the first time. l j lle 'S Small wonder, then, that the structured techniques led to major improvements in the 1 ZS software industry worldwide. However. as software products grew in size. inadequa- t Rf ies of the stnlctured techniques started to becom e apparent , and the object-oriented iC ; paradigm was proposed as a better alternative. l at This, in turn, leads to another question: How do we know for certain that the ' I J tn object-oriented paradigm is superior to all other present-day techniques? No data t J ) S. are available that prove beyond a1l doubt that object-oriented technology is better I 'j I Ed ' than anything else currently available, and it is hard to imagine how such data could : ; : ! 1 !j '.2t be obtained . The best we can do is to rely on the experiences of organizations that :ê ' t , . j l 'I i 1 l i . l 1 Please purchase Image To PDF Converter on http://www.verypdf.com/ to remove this message, thank you. '1 E . j ' ! ' ! :. kl . 1 i aol t u A p v : . y . From Modules 'o obiet's1 4! ; @ ë . j ; !. ! 'j 1 have adopted the object-oriented paradigm. Although not all reports are favorable,: i l L ( the majority (if not the overwhelming majority) attest that using the object-oriented ! ; E ;l ; : : paradigm is a w ise decision. ' I h 1 For example . IBM has reported on three totally different projects that were devel-! il 1 ! oped using object-oriented technology gcapper, Colgate, Hunter, and James, 19941.l 1 ;l ! : ln almost every respect . the object-oriented paradigm greatly outperformed the struc-j . . ' ! tured paradigm. Specifically, there were major decreases in the number of faults ;1 ! 1 s , 1 ( t j j detected, far fewer change requests during both development and maintenance that ; l ! i 1 were not the result of unforeseeable business changes, and signihcant increases in $ : 1 ; ! ', . ' , . both adaptive and nerfective maintainabilitv. There also was an improvem ent in us- I l I * '- ''' - l i j ability, although not as large as the previous four improvements, and no meaningful . ; ' I difference in perform ance . .1 I I :1 ' ; A survey of l50 experienced U . S. software developers was undertaken to deten -1 ! mine their attitudes toward the object-oriented paradigm ëlohnson, 20001. The sampleI ' ,l ' 1 isted of 96 developers who have used the object-oliented paradigm and 54 whoI i i COnSI I ;l i S p still use the classical paradigm to develop software . Both groups felt that the object- g j ' Ei ' : ; oriented paradigm is superior, although the positive attitude of the object-oriented (l 1 -I i , group was signihcantly stronger. Both groups essentially discounted the various dis- ' '' 11 '',j'. ' I : advantages of the object-oriented paradigm. ! . Notwithstanding the many advantages of the object-oriented paradigm, some . t ' , difhculties and problems indeed have been reported. A frequently reported problemi j! ! concerns development effort and size . The first time anything new is done. it takesi .! ! ' ' ions; this initial period is sometimes referred to as the .1 j : Iongerthan on subsequent occas) - . j j i learning curvc. But when the object-oriented paradigm is used for the first time byi ! !)l : an organization , it often takes longer than anticipated, even allowing for the learning ,1 1 i j . i curve. This is because the size of the product is larger than when structured techniquesI l - , :'' : l are used. This is particularly noticeable when the product has a graphical userinterface ' j ) g (GUI) (see Section l 0.3). Thereafter, things improve greatly. First, maintenance costs C,l 1 are lower, reducing the overall lifetime cost of the product. Second, the next time l1 ( s l l 1 I that a new product is developed, some of the classes from the previous proiect can be . 1 ' : ''''' ''- ''''' ''' ''''' - 1 . reused, further reducing software costs. n is has been especially signihcant when a l I GUI has been used for the first time; much of the effort that went into th e GUl can l' I i 1 . l 1 '1 be recouped in subsequent products. '! h i -1 1 : 1 Problems of inheritance are harder to solve. A major reason for using inheritance ( ' l'' t : ' r' is that a new subclass that differs slightly from its parent class can be created without l I C ' i ' ffecting the parent class or any other ance stor class in the inheritance hierarchy. t! E ! aI l , : 1 conversely, however, once a producthas been implemented, any change to an existing ' . ' ' l i ! class directly affects all its descendants in the inheritance hierarchy', this often is 'ë' p 1 : ' t .I ' f d to as thefragile base classproblem. Atthe very least, the affected units have to :. j re erre . l i . j 1 be recompiled. ln some cases. the methods of the relevant objects (instantiations of the 1.l i . 1 @ E affected subclasses) have to be recoded', this can be a nontrivial task. To minimize this ,, ' ' ' i I C roblem , it is important that alI classes be carefully designed during the development t; P1 i This will reduce the ripple effect induced by a change to an existing class . )1 PVOCCSS , i () 1 1 I A second problem can result from a cavalier use of inheritance. Unless explic- )1 j i.' 1 itly prevented , a subclass inherits all the attributes of its parent classtes). Usually,) j I j ' ! t j subclasses have additional attributes of their own. As a consequence, objects lower :, . j ! I 2 y' r ;. )p ' It ; 1 ' j ! j . Please purchase Image To PDF Converter on http://www.verypdf.com/ to remove this message, thank you. I ' i ,' . jjIl !FoR FURTHER READING Q@F l i - lnle , , in the inheritance hierarchy quickly can get large, with resulting storage problems j ! Lted ! (Bruegge, Blythe, Jackson, and Shufelt, 19921. One way to prevent this is to change I 1, ' ' the dictum <'use inheritance wherever possible'' to d'use knhelitance wherever appro- jL Fel- priate.'' In addition, if a descendent class does not need an attribute of an ancestor, I j j )41. then that attribute should be explicitly excluded. ! 1, i ' luc - . A third group of problems stem from polymorphism and dynamic binding. These I r - I :.ults . were described in Section 7.8. hat ' One final question: Someday might there be something better than the object- I 4 in ( oriented paradigm? Even its strongest proponents do not claim that the object-oriented l us- . paradigm is the ultim ate answer to all software engineering problems. Furthermore, ; I ! i ' ftware engineers are looking beyond objects to the next majorbreakthrough . ! ; 7) ijjful today s so ' I !After all , in few selds of human endeavor are the discoveries of the past superior t ; 'j1 i ; ter- j to anything being put forward today. The object-oriented paradigm is sure to be , j . le superseded by the methodologies of the future. The important lesson is that, based i l 1IP q vho on today's knowledge, the object-oriented paradigm appears to be better than the j j zct- alternatives. l . ikted ; dis - i lI 1 )111 () p lem QHAPTER RzvlKw 11l j Xes ! j j the The chapter begins with a description of a module (Section 7. 1). The next two sec- j 1 . by tions analyze what constitutes a well-designed module in terms of module cohesion l k ' and module coupling (Sections 7.2 and 7.3). Specifically, a module should have high l lïing hesion and low coupling. Various types of abstraction are presented in Sections 7.4 Jgues co 'ace through 7.7, including data abstraction and procedural abstraction. In data encapsula- ! I làsts tion (Section 7 . 4), a module comprises a data structure and the actions performed on I j i ime that data structure. An abstract data type (Section 7.5) is a data type, together with the . ; . - - - - . J ' ! 1 be actions performed on instances ot that type. lnformation hiding (Section 7.6) consists j - 1 i Im a of designing a module in such a way that implementation details are hidden from other , ; . ! dcan m odules . The progression of increasing abstraction culminates in the description of j : a class, an abstract data type that supports inheritance (Section 7.7). An object is an ! I 'i ! jnce instance of a class. Polymorphism and dynamic binding are the subject of Section ( ; t kout 7.8, and cohesion and coupling of objects are described in Section 7.9. The chapter I I i! zhy. concludes with a discussion of the object-oriented paradigm (Section 7. 10). . 'l ling rl is I e to ; ' the ' 1 FoR FupTuzp Ru plxo ,jthis kent g j Is. Objects were first described in ëDahl and Nygaard, l 9661. Many of the ideas in this l lic- chapter originally were put forward by Parnas (Parnas, l 97 1, l 972a, 1972b1. The use jp t .Llly , of abstract data types in software development was put forward in (Liskov and Zilles, ' ' g1 i kver 19741,. another important early paper is ëGuttag, 19771. l I 1 ë @ (' j l ; ' 4 2 - ! i i Please purchase Image To PDF Converter on http://www.verypdf.com/ to remove this message, thank you. I q . j 'l . . 1 . 1 i ' . i aoa t u A e T : . y . From Modules 'o obieds I ! ' j ' ' ;l i ! The primary source on cohesion and coupling is gstevens, Myers, and Constan- y 4l1 ! 7 .! $ ' ti ne, 19741. The ideas of composite/structured design have been extended to objectsj I : ' : ' ' I 2 (Binkley and Schach, 19971. : l j ' ' t k Introductory material on objects ean be found in kMeyer, 19971. Ways in which ê :. ' i , $ object-oriented programming promotes reuse are put forward in (Meyer, 1987, 19901.; r s q ! k Different types of inheritance are described in (Meyer, t996b1. A number of short ' ! 1 articles on the object-oriented paradigm can be found in rEl-Rewini et al ., 19951. . V** . l I ! ! t ; The proceedings of the annual Conference on Object-oriented Programming Sys- V*7l 1 I 1 tems , Languages, and Applications (OOPSLA) include a wide selection of research V.'. j g j j t papers; the addendum to the proceedings (published annually in ACM SIGPLANNO- y.@l ! ' - ! I tices) contains informal reports describing successful obiect-oriented proiects. The j: j j = '- H - v *successful use of the object-oriented paradigm in three IBM projects is desclibed in l . !l j j ' g j jcapper, Colgate, Hunter, and James, 19941. Other experiences with the paradigm j !l 1 I ted in the October 1995 issue of the Communications ofthe ACM. A survey *l . j are repor1 ' ' ' f attitudes toward the object-oriented paradigm appears in (Johnson, 20001. gFayad,! r ! 1 O .12 , 1 i Tsai, and Fulghum, 19961 describe how to make the transition to object-oriented tech- I ( ' ' nology: a number of recommendations for managers are included. A detailed accountI r ; ' f object-oriented metrics is given in gllenderson-sellers, 19961.I o . I 1 h ' t ' l The October 1992 issue of IEEE Computer contains a number of important( ! . (q ,, . ! $,! ! articles on objects, including (Meyer, 1992a1, which describes design by contract. ) t ' i ' A variety of articles on objects ean be found in the January 1993 issue of IEEE i 1 ' ' y ' , : ! i ; Software; Snyder s paper carefully defining key terms in the field (Snyder, 19931 is . p : i ! i q ï . particularly useful. Possible drawbacks of polymorphism are described in (Ponder and .14 j ! j Bush, 19941. The October 1995 issue of the Communications of the ACM contains1 ' t j 1 articles on object technology, as does Issue No. 2, 1 996, of the 1BM Systems Journal. d I I .15 4I I : l : u I t i.'' . j ! . i pposu - s ' , 1 : j 'l 1 1 1 * 1 * d l 1 i 7 1 Choose any programming language with which you are familiar. Consider the two ' '* a1 , l definitions of modularity siven in section 7.1. oetermine which of the two definitions ' 4'1 l '' : ineludes what you intuiti-tely understand to constitute a module in the language you1 1 ) t l t i t have chosen.l p i ( ' ! ! - ( ! j 7.2 Determine the cohesion of the following modules: . ( , ! : ' @ ' i dit rofit and @ox record - ! T ù e p' - 11 i 1 edit profit record and tax record ! I ' i ' read delivery record and check solary pcyments ' . . ! : : ' v. jj : compute the op@imal cost using Aksen s algorithm I ' ! : !1 E measure vapor pressure and sound olarm if necessoryl l k i- . -1 .; ' j ' I . l 1 j 7.3 You are a software engineer involved in product development. Your manager asks ( i i i . I 1 jr j you to investigate ways of ensuring that modules designed by your group will be as 1 1 1 reusable as possible . W hat do you tell her?l I . ! ! r, - (1 l ; 1 ( ' i 1 ' , ! : . 1 ' 1 t t .1 j , 1 ' 1 t 1 ' Please purchase Image To PDF Converter on http://www.verypdf.com/ to remove this message, thank you. I ! l ; ' I I IREFERENtES ao@ l l I tn- ;.4 Your manager now asks you to determine how existing modules can be reused. Your j 2tS first suggestion is to break each module with coincidental cohesion into separate l ly points out that the separate i l ' 'modules with functional cohesion. Your managercorrect Ch dules have not been tested nor have they been docum ented . What do you say now? 1 imo j !I ;01. z s w hat is the innuence of cohesion on maintenance? 2 , ol't ! (T . 6 W hat is the insuence of coupling on maintenance? j ,51 . 1 . F.7 Carefully distinguish between data encapsulation and abstract data types.4s - vh : 7.8 Carefully distinguish between abstraction and intbrmation hiding. t ' ! ' Io- 7.# Carefully distinguish between polymomhism and dynamic binding. j I I $ ' 'he ' z 1: convert the comments in Figure 7 .23 to C++ orlava, as specified by your instructor. ( ; I ill Make sure that the resulting m odule executes correctly . i i jl ' . i I lm ;.1 1 It has been suggested that C++ and Java support implementation of abstract data ' i i 'CY but only at the cost of giving up information hiding . Discuss this claim . 1 8 ltypes q Xd' ' '' i C ase You W anted to Know'' box at the beginning 7; .1Q As pointed out in the Just n 2h- of this chapter, objects first were put forward in 1966. Only after essentially being ant 1 reinvented nearly 20 years later did objects begin to receive widespread acceptance. j Can you explain this phenomenon? l ànt è S ,, 7.13 Your instructor will distribute a structured software product. Analyze the modules I) 1! . j ' from the viewpoints of information hiding, levels of abstraction, coupling, and j !EE . cohesion. iI is . j krld 7.14 Your instructor will distribute an object-oriented software product. Analyze the mod- : q ins ules from the viewpoints of information hiding, levels of abstraction, coupling, and l ; fal. cohesion. Compare your answer with that of Problem 7. 13. 7.15 (Term Project) Suppose that the Broadlands Area Children's Hospital product of ing the structured paradigm. Give examples of modules ( 1 , Appendix A was developed us I ; ' of functional cohesion that you would expect to lind. Now suppose that the product j I developed using the object-oriented paradigm. Give examples of classes that you ' l twas p! ! would expect to find. ë i i t i 7.1: (Readings in SoftwareEngineering) Yourinstructorwill distribute copies of rlohnson, j ! ! wo 20001. Why do you think that the respondents viewed the drawbacks to the object- '@ 't ) ially irrelevant? jl l)ns oriented paradigm as essent j 'ou l 1 !I - . l' j IRZFKRKNtKS , ' j I (Berry, 19781 D. M. BERRY, personal communication. 1978. l 'A Comparison of Sixteen ' 1gBinkley and Schach , 1 9961 A. B. BINKLEY AND S. R. SCHACH, j Quality Metrics for Object-oriented Design,'' Information J'mccy-îïrw Letters 57 (No. 6. 'l June 1996), pp. 27 1-75. j j ;kS (Binkley and Schach . 1 9971 A. B. BINKLEY AND S. R. SCHACH, t'Toward a Unified Approach l ' ; ' yRS t o Object-oriented Coupling.'' Proceedings ofthe 35th Annual ACM Southeast i 1 ; Conference, Murtreesboro, TN. April 2 4, 1 997, pp. 9 1-97. r t l . ' : ) ' . l l , Please purchase Image To PDF Converter on http://www.verypdf.com/ to remove this message, thank you. g ' J : ' : ' l! ! : ' I . . 1 E ' ! .l i !' : j) . ; ; ' : ; . l ij t l ex p- . ; ' 1 . 4 ( y ' y -1 j i 1 i i 2 l ! ë - 1 ,I . :1 ) ! +++I ! . +1 l : : 1 E IkI y T IkI y . . : l i ' 11 i, I T: : IkI .r I : . 1 I 1 l :' I ! l 1 i 1 , !! ' l : ! t ' I E ' . ' ! : : 'ï , t :I t ; i . ' j . ( : I 1 -I j -E l ) i If reinventing the wheel were a criminal offense , many software professionals would be languishing in jail.I ' 'y l i ! ' For example, there are tens of thousands (if not hundreds of thousands) of different COBOL payroll programs,' ' l . 7 ' ' j I , : a1l doing essentially the same thing. Surely, a1l that the world needs isjust one payroll program that can nln on ' 1 ! ! . a variety of hardware and be tailored, if necessary, to cater to the specihc needs of an individual organization . . . j j ; , j h j However, instead of utilizing previously developed payroll programs, myliad organizations all over the world . J ' ) ! ' have built their own payroll program from scratch. - : 1) l g! . I In this chapter, we investigate why software engineers delight in continually reinventing the wheel andI r ' . 1 j l what can be done to achieve portable software built using reusable components. We begin by distinguishing ' t ' between portability and reusability. . ' j q ' I j . j . j -I I 1 1 1 e.I R zus: toxtzpTs @ ' ' i j:' f : l j A product ksportable if it is signifkantly easier to modify the product as a whole to run l ? it on another compiler - hardware-operating system configuration than recode it from( i ; ' 1 h In contrast , reuse refers to using components of one product to facilitate thescratc .' . : j é j : r development of a different product with different functionality. A reusable component! ' t g i need not necessarily be a module or a code fragment it could be a design, a pal't of : 1 ) - . . ! i : a manual, a set of test data, or a duration and cost estimate. ' l ! i Th ere are two types of reuse, accidental reuse and deliberate reuse. lf the de-I j .i 1 , I ' i : velopers of a new product realize that a component of a previously developed prod-( t ' 1 ' f uct can be reused in the new product , then this is accidental reuse or opportunisticl j i reuse. On the other hand, utilization of software components constructed specih- l k i 11 for possible future reuse is deliberate reus e or systematic reuse. One potential; j ca y l' l ( .,A- e-ploi-ea i- th- p o , th- t i-I offhi- chopte- .oy in- t sf,, i- p II-I with p , 2. l ! i1 l . l I 11 ' aIa I l ë !. $ j. , : j ë ; y . ' . ! I ' Please purchase Image To PDF Converter on http://www.verypdf.com/ to remove this message, thank you. I 1 ' I ; . aa REusE CoNcEpTs m a l l l ! j l .I . ' itdvalltagc Of dcliberate retlse Over accidental reuse is that components specially con- l I ' j! structed for use in future products are more likely to be easy and safe to reuse', such l : ; ' i j , components generally are robust. well documented, and thoroughly tested. In addi- 1 i tion, they usually display a uniformity of style that makes maintenance easier. The I ql : : other side of the coin is that implementing deliberate reuse within a company can be p : ive. lt takes time to specify, design, implement, test, and document a software 1 1expens 1 component. However, there can be no guarantee that such a component will ever be ! 4! r p ' reused and thereby recoup the m oney invested in developing the potentially reusable 1I i component. I , 1W hen computers were first constructed , nothing was reused. Every time a prod- )1 - uct was developed, items such as multiplication routines, input-output routines, or 1 i, j ) ' routines for computing sines and cosines were constructed from scratch. Quite soon, I l 1 1 '! l .however , it was realized that this was a considerable waste of effort, and subroutine ji I libraries were constructed. Programmers then simply could invoke square root or sine I j )' jfunctions whenever they wished . These subroutine libraries have become more and 1 l more sophisticated and developed into run-tim e support routines. Therefore. when a j I programmer calls a C++ or Java method, there is no need to write code to manage 1 the stack or pass the arguments explicitly; it is handled automatically by calling the ' ijail . ! appropriate run-time support routines. The concept of subroutine libraries has been i jams , i extended to large-scale statistical libraries such as SPSS (Norusis, 20001 and to nu- I ln on j Imerical analysis libraries like NAG (Phillips . l 9861. Class libraries also play a major T jtion .' jd role in assisting users of object-oriented languages. The environment for the Ianguage ! !por Eiffel incorporates seven libraries of classes (Meyer, 19901. The success of Smalltalk ! 1: 1at least partly is due to the wide variety of items in the Smalltalk library . In bothl and i instances, the presence of a browser, a CASE tool that assists the user to scan a class ' 'hing library, is of enormous assistance. W ith regard to C++ , a large number of different libraries are available, many in the public domain. One example is the C++ Standard j ! Template Library (STL) LMusser and Saini, 19961. ! ! l An application programming interface (APl) generally is a set of operating sys- j tem calls that facilitate programming. For exam ple, W in32 is an API for M icrosoft ; l ' E ! . operating systems such as W indows 2000 and W indows NT', and the M acintosh Tool- ; . 11 lr 'box is an APl for M ac OS , the M acintosh operating system. Although an APl usua y is implemented as a set ot operating system calls, to the programmer the routines 1 7) run , 1 constituting the API can be viewed as a subroutine library. For example, the Java j jfrom Application Programming lnterface consists of a number of packages (libraries). je the ,N o matter how high the quality of a software product m ay be, it will not sell if it 'ZCFX takes 4 years to get it onto the market when a competitive product can be delivered in ' l l trt of only 2 years. The length of the development process is critical in a market economy. AlI other criteria as to what constitutes a 'tgood'' product are irrelevant if the product z de- g cannot com pete timewise. For a corporation that has repeatedly failed to get a product ë lrod- to market ûrst, software reuse offers a tempting technique. After all, if an existing ! tistic component is reused, then there is no need to design, implement, test, and document lcili- that component. The key point is that, on average, only about l 5 percent of any rntial I j ' software product serves a truly original purpose (Jones. 19841. The other 85 percent . j . l of the product in theory could be standardized and reused in future products. ' 1 ! l . -! 1 : @ - ) i è ' i Please purchase Image To PDF Converter on http://www.verypdf.com/ to remove this message, thank you. [...]... ii terapaefmbhn a hneper r eid h do Grs g n c ni dta tek n ao sweei io o o o f me h t h a g ro r mr me a ey dia me a d t r or i n w i s f t f dit l s r d n heef e t o s a e o l y a lneSnemslahhl prhp- softwaretl.untisnietswhpedng, n a cdtg iisteec t er oeAtproraeot otclmusttak careh enrni du h i r s t i eT o codrosaesBtlswtoadgh a yeusig e o v nurisina mulhfit.n i p n f si t e t e oo h o us ga r mme... td t b e s efa i ti rao igi ta amo uewi f n t a c h so i n t o e ay Th lw n hs e snn s h t d l t u ci l o e in s o h on j! l 1: , ;' 1! ; 4! ( ci n7 i i amo l p r me onyo ea t ,twa tou h t b Se t 2 6) That s f due et d l n ci i s h g t o e o br on j; ;! 1! i s fconti d an i el ane d ndepe t I ta i hast opert ondat I uc nden nse d t o ae a e i r us t n t da a on whi i i t ope a e mus be r e tfs h... ieta a yc mp ttrsma hn , u a yc so ri-d ie e o g e s x e sv h n n o eio ' c ie b t n utme la vsd n u h l t bu fom adif en manufct e wilbe s ng $35, o yr fer t a urr l pendi hvtpyo $0000toconvertexistingsoftwareanddatatoomuhadao aeoasme20 00ttheform an the 0 o c tofl s , n M CM mac ne onhi Mo igfo tep ee igi gn r staint tera wo l temo t u vn rm h rc dn ma iay i to o h e l rd,h s s c u cesf ln ofcomput . of software in a NASA software production $ ' ! 1 ! . ; ' : group that produces ground support software for unmanned spacecraft control (Selby, i ! ' i 19891 . Altogether 25 software. The NASA staffers reused software simply because they believed that reuse is a l I ? : ;lion , worthwhile software engineering technique. In addition, there were no software tools cent to assist. j ' hat the stnlctured paradigm was adopted at a time when software engineering was l i ' t y 5 st not widely practised. Instead, software was simply t'written.'' For managers,