The Architecture Concepts:
It
provide a methodological analysis of design methods, by trying to analyze their
forms and to classify them in some way.)The idea of a method as a structured
and 'procedural‘ way of doing things is on that should be familiar enough.
'Methods‘ are used to structure the way that we perform many routine tasks,
such as making a cup of tea: Boil the kettle; warm the pot; add the tea; pour
on water; wait a number of minutes; pour the tea into the cup. Like most
methods, this puts a strong emphasis on the ordering of actions (if you don‘t
think so, try changing the order of any of the operations in the above example,
and see what results!). However, it provides little or no guidance on those
issues that are more a matter of taste, such as:
·
how much tea to add
·
how long to wait for the tea to brew
since
these are personal preferences of the tea-maker. Since they are also essential
to
the
success of the tea-making process, we can reasonably conclude that ‗procedural‘
guidance alone is insufficient for this purpose, and that some ‗domain
knowledge‘ is also required. We can devise methods for organizing many other
activities, from driving a car to constructing kitchen units, model aircraft
and so on. However, such methods are rarely creative
in quite the same sense that we consider the act of design to be creative.
Rather, these methods are recipes for
doing something that we have learned to do through ‗experiment‘ or ‗theory‘ (or
some combination of both). We might be able to adapt a method like that in the
example above for other tasks (for making coffee instead of tea, perhaps), but
we cannot easily change its basic domain (that of making hot drinks).
A design
method is generally much less prescriptive than the kind of method that we
might use for making tea, or for assembling a new garden shed. Indeed, in some
ways a software design method can almost be considered as a ‗meta-method‘, in
that it is used to develop new processes, which in turn are ways of doing
things – where the‗ doing‘ that is involved will be the task of the computer.
Returning to the tea-making example the analogy in this case would be using a
design method to design the form of the tea-making process itself. So we can
reasonably expect that a design method should identify a general strategy to be
used by the designer, and provide some rather general guidelines on its use,
based upon experience. However, a method cannot be expected to be very
prescriptive about how the ultimate solution to a problem is to be attained,
since the specific design decisions required will be determined by the nature
of the problem, rather than by the method. (Think of all the different
processes that are used for making coffee!)
Vessey
and Conger (1994) have suggested that the knowledge involved in successfully
employing a design method can be categorized into two forms:
1. declarative knowledge,
describing what tasks need to be performed at each step in the design process; and the rationale for method
2.
procedural
knowledge, consisting of knowledge about how to employ a given method in a
particular situation. In terms of our example of making tea, the declarative
knowledge would include the tasks to be performed, and the order in which they
should be performed (boiling water, adding tea to pot, adding water to pot),
while the procedural knowledge would address such issues as how much tea to add
and how much water to use when making tea for four people. Declarative
knowledge is therefore fairly readily conveyed through the use of a ‗do this,
then do that‘ form of description, whereas procedural knowledge is more likely
to be acquired through experience. This experience may itself be acquired
directly (as is likely when the knowledge is about how to make tea) or through
exposure to case studies (which is probably more practical when the knowledge
is about how to design software). Since we often express the declarative
knowledge in what we term a procedural form, by specifying a sequence of
actions that should be performed, this terminology can be a little confusing,
although both uses of ‗procedural‘ are quite reasonable ones! (It is also worth
noting that Détienne (2002) uses the terms declarative and procedural in yet
another, slightly different, way.) Returning to the need to find ways of
designing software: in Chapter 2, the following three main components of a
software design method were identified, and their relationships are shown in
8.1
The representation part consists of one or
more forms of notation that can be used to describe (or model) both the
structure of the initial problem and that of the intended solution, using one
or more viewpoints and differing levels of abstraction. What is a software
design method?
The process part describes the procedures to
follow in developing the solution and the strategies to adopt in making
choices. This generally involves the designer in making a series of
transformations on the different forms that comprise the representation part.
A set of heuristics
or clichés provide guidelines on the
ways in which the activities defined in the process part can be organized for
specific classes of problem. These are generally based on experience of past
use of the method with a particular problem domain, or for a particular form of
structure. In terms of the classification of knowledge discussed above, the
process part can be considered as embodying the declarative knowledge, while
heuristics are more concerned with procedural knowledge. This description will
be elaborated further in the next chapter; for the moment these terms will
provide a very general descriptive framework. Software design methods fall into
two very broad and general categories. These are essentially distinguished by
the forms of representation that are used, although in turn the representation
forms have some influence upon the forms of process that can be used within
them
Formal methods largely depend on the use
of mathematical notations for the representation parts. These notations permit a degree of consistency checking
between the descriptions used in the different stages of design, as well as
more rigorous design transformations. However, while the representation parts
for such methods have been the subject of considerable research and
development, the process parts are less well refined and are apt to be
developments of the ‗top-down‘ strategy which is discussed more fully in
Section 9.3.
This
imbalance leads us to ask whether the term ‗Formal Method‘ is really the most
appropriate description. Because of this, the term Formal Description Technique (FDT) is sometimes preferred, as one
that emphasizes the powerful notational aspects while playing down the much
weaker procedural element. Figure 8.2 Some properties of formal and systematic
software design methods. The rationale for method Systematic methods are generally less mathematically rigorous in
form, both in terms of the representation part – which normally consists of one
or more forms of diagram – and also of the process part. This is true even for
those methods that are
Generally
considered to be more prescriptive in their form, such as JSP and SSADM. As a
consequence, there is far more scope to use ‗mix and match‘ techniques with
systematic methods, in which ideas or representation forms from one method can
be used to help resolve a particular issue, even though the design is being
developed using the strategy of another method.
The third
component of a design method, the heuristics
(or clichés) usually consist of a set
of techniques that are recommended for use in handling particular situations
that may be encountered across a wide variety of problems. These heuristics are
generally built up over a period of time, as experience is gained with using
the method in a wider problem domain, and so they are essentially experiential
in origin, although they may be highly systematic in form. We will encounter a
number of examples of these in later chapters, and they play an important role
in allowing a designer to reuse the experience of others. Examples of
heuristics can be found in both systematic and formal methods. The design
methods discussed in this book are all systematic in their form, although we
will also examine an example of an FDT in Chapter 18. This bias partly reflects
the relative preponderance of systematic methods in current industrial
practices, and partly the wider variety of design models that they tend to
provide.
The rest
of this chapter will examine in greater detail the rationale for using any
method to design software, and will consider some of the limitations that
generally apply to the use of a design method.8.2 The support that design
methods provide Since this is a book about design and design methods, it is not
unreasonable at this point to raise the question: why should anyone use a
method at all? Indeed, probably considerably more software has so far been
produced without the use of an explicit design method than through the use of
such methods – so what benefits might be expected from making use of a software
design method (whatever form this might take)? Some answers to this were
identified and were summarized at the beginning of this chapter. The last of
these, that of providing an artificial framework to assist with thinking about
an intrinsically invisible set of elements, is an important one, and one that
is largely addressed by the representation parts of design methods. A second
reason, and one that draws upon both the representation and process parts, is
simply that of scale. Software-based systems increasingly underpin almost all
aspects of a modern society. Some, such as those used to handle financial
transactions within banks and similar institutions, were designed with the
expectation that they would be large systems, while others may have become
large through an undirected
Process
of aggregation. (An example of the latter is the growth of many websites, where
different elements are owned and maintained by separate individuals or
organizations, but the site may still form a virtual whole.) For the former in
particular, the cognitive tasks involved in planning and understanding such
degrees of complexity are The support that design methods provide ones that may
be usefully supported by using a systematic and structured approach to
development and maintenance. For the latter, the need to ensure consistent behavior
and the need to facilitate integration between diverse elements also imply the
need for some degree of standardization, at least to the level of being able to
describe the structures involved. While such systems are less obviously
candidates for the use of design methods, there is certainly scope to employ
the representation elements and possibly some of the more strategic ideas. One
of the implicit features of design methods is that the use of any method will
lead to designs that employ the architectural style associated with that
method. With the long service life of much software, one way of preserving the
integrity and structure of a system is to develop and maintain it by using a
single design method. There are therefore two aspects of the software development
process (and of the subsequent maintenance task that normally goes with
software systems) that can be expected to benefit from using a method to
provide a structured and systematic approach to the development process. These
are:
·
technical
issues
·
management
issues
and so
both of these are considered in this section. Technical issues‘ consist of the
problem-related aspects of design. There are a number of these to consider,
with the relative importance of each one being somewhat dependent upon a range
of external factors such as the structure of the development organization, as
well as the nature of the design problem itself. So the following points should
not be considered as ranked in any particular order.
The use
of a design method should help the designer to produce a system that is
structured in a consistent way, which may be particularly important if the
design is being produced by a team of designers who will need to ensure that
their contributions fit together correctly. In such a case, the use of a design
method both helps with defining the chosen architectural form and also
establishes a set of common standards, criteria and goals for use by the team.
The use
of a method should lead to the production of records and representations in standard
form that can be used by a maintenance team to capture and understand the
intentions of the original designer(s) This allows the system maintainers to
make changes consistent with the overall structuring of The rationale for
method the system, as originally planned, and so to help preserve its
integrity.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2024 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.