29.11.2014 Views

Smalltalk and Object Orientation: an Introduction - Free

Smalltalk and Object Orientation: an Introduction - Free

Smalltalk and Object Orientation: an Introduction - Free

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!