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.

2. Skill in communicating technical vision to other project members. This wasobserved to be so significant a factor that much of the design work was oftenaccomplished while interacting with others.3. Identification with project performance, to the extent that they could be foundtaking on significant management responsibilities for ensuring technical progress.Interestingly, though, the exceptional designers studied often did not possess particularlygood programming skills.Others too have identified the importance of the domain knowledge of thedesigner for producing successful designs (Adelson and Soloway, 1985), and clearlythis aspect can only come from the accumulation of experience in a particular problemdomain. It may well be, though, that the process of acquiring such knowledge can beaccelerated and improved.When we look at how successful designers work, there are other factors to consider,apart from those that were outlined in the previous section. Visser and Hoc(1990) have used the term ‘opportunistic’ to describe observations of software designactivity. Even where designers aim to follow a strategy such as ‘top-down’ (systematicallyrefining the description of the solution into ever smaller actions), they may deviatefrom this plan, either:33Transferring design knowledgennto postpone a decision, if the information required is not yet available at this designlevel; orto process information that is readily to hand, and which can be used for definingmodules in anticipation of further developments in the design.Such opportunistic design activity is not unstructured; instead, it is more likely toreflect the designer’s experience and domain knowledge. One important consequenceis that the developers of software design support tools should not give them an interfaceform that impedes this behaviour on the part of the designer.Even if rigorous procedures for performing the transformations between the stagesof a designer’s model cannot be devised, there may still be benefits in seeking to codifydesign strategies in some way. Experienced designers can make use of opportunistictechniques precisely because they are experienced, and have extensive domain knowledgeto guide their actions. However, such techniques are clearly inadequate wherethese characteristics are lacking, leaving the question of how are they to be acquired?Domain knowledge can be acquired partly through experience, and also, to somedegree, through learning a set of design practices that may be related to a particulardomain. Such practices place emphasis upon making decisions that are based upon thekey characteristics of the domain. One way of learning such practices is through theuse of design methods. The idea of design methods emerged in the 1970s in order tomeet this need for knowledge transfer, and in some ways their forms and use do seemto be something that is peculiar to software development. We can, therefore, regardthe purpose of a software design method as being to provide the framework that willenable a designer to develop and elaborate a design in a systematic manner.<strong>Design</strong> methods are not the only means of formalizing the transfer of domainknowledge, and more recently the idea of the design pattern is one that has offered a

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

Saved successfully!

Ooh no, something went wrong!