Smalltalk and Object Orientation: an Introduction - Free
Smalltalk and Object Orientation: an Introduction - Free
Smalltalk and Object Orientation: an Introduction - Free
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
of appropriate classes <strong><strong>an</strong>d</strong> their interfaces without necessarily having the i nformation to enable them to<br />
do this in <strong>an</strong> appropriate m<strong>an</strong>ner for the overall system. For example, little reference is made to the<br />
system’s overall functionality when determining class functionality etc. Indeed, some methods provide<br />
little more th<strong>an</strong> some vague guidelines <strong><strong>an</strong>d</strong> <strong>an</strong>ecdotal heuristics.<br />
In contrast, fusion explicitly attempts to provide a systematic approach to object -oriented software<br />
development. In m<strong>an</strong>y ways the fusion method is a mixture of a r<strong>an</strong>ge of other approaches (indeed the<br />
authors of the method acknowledge that there is little that is new in the approach other th<strong>an</strong> the fact that<br />
they have put it all together in a single method, for example see Figure 16.1).<br />
Booch<br />
OMT<br />
Fusion<br />
Formal Methods<br />
Requirements<br />
Analysis<br />
Figure 16.1: Some of the influences on Fusion<br />
As with other OOD methods, fusion is based around the construction of appropriate models that<br />
capture different elements of the system as we ll as different knowledge. These models are built up<br />
during three distinct phases. The <strong>an</strong>alysis phase, the design phase <strong><strong>an</strong>d</strong> the implementation phase:<br />
• The <strong>an</strong>alysis phase produces <strong>an</strong>alysis models which provide a description of the high level<br />
constraints from which the design models are developed.<br />
• The design phase produces a set of models that describe how the system behaves in terms of a<br />
collection of interacting objects.<br />
• The implementation phase describes how to map the design models onto implementation<br />
l<strong>an</strong>guage constructs.<br />
Within each phase a set of detailed steps attempts to guide the developer through the fusion process.<br />
These steps include checks to ensure the consistency <strong><strong>an</strong>d</strong> completeness of the emerging design. In<br />
addition the output of one step acts as the input for the next.<br />
Fusion's greatest weakness is its complexity - it really requires the use of a sophisticated CASE tool.<br />
Without such a tool it is almost impossible to produce a consistent <strong><strong>an</strong>d</strong> complete design.<br />
16.9 Summary<br />
In this chapter we have reviewed a number of OO <strong>an</strong>alysis <strong><strong>an</strong>d</strong> design methods as well as the Unified<br />
Modeling L<strong>an</strong>guage. We have briefly considered what each offers as well as their strengths <strong><strong>an</strong>d</strong><br />
weaknesses. It should be noted that a problem encountered with all these systems is th at during the<br />
design process it is often difficult to identify commonalities between classes at the implementation<br />
level. This me<strong>an</strong>s that during <strong>an</strong>y implementation phase, experienced OO technici<strong>an</strong>s should be looking<br />
for situations in which they c<strong>an</strong> move implementation level components up in <strong>an</strong>y class hierarchy. This<br />
c<strong>an</strong> greatly increase the amount of reuse within a software system. This may then lead to the<br />
introduction of new abstract classes whose role is to contain the common code. The problem with t his<br />
is that the implemented class hierarchy no longer reflects the design class hierarchy. It is therefore<br />
necessary to have a free flow of information from the implementation phase to the design phase <strong><strong>an</strong>d</strong><br />
vice versa in <strong>an</strong> object oriented project.<br />
136