exhibit an isomorphic relationship with their subject
matter, this relationship may not reveal the theoreti-
cal connections that allow the theory to be defended
in the form of Ryle’s definition of a theory. Ideally,
then, the theory must be statable independent of the
computer model. In an essay that predates Naur’s pa-
per but still based on a prevailing view of the time that
programs are theories, James Moor notes:
“My claim is that this is rarely, if ever, the
correct response. Even if there is some the-
ory behind a model, it cannot be obtained by
simply examining the computer program. The
program will be a collection of instructions
which are not true or false, but the theory will
be a collection of statements which are true
or false. Thus, the program must be inter-
preted in order to generate a theory. Abstract-
ing a theory from the program is not a sim-
ple matter for different groupings of the pro-
gram can generate different theories. There-
fore, to the extent that a program, understood
as a model, embodies one theory it may well
embody many theories.”(Moor, 1978, p.221)
From this analysis arises two key concerns. Firstly,
programs and models may have multiple theories and
a program or model may not refer to the same the-
ory. Secondly these theories must be state-able inde-
pendent of the program or the model. Then, there is
an additional dichotomy: Is a program a representa-
tion of one view of an aggregate theory or is the pro-
gram a representation of a component theory of the
aggregate theory? These complexities, in the case of
Naur’s Programming as theory perspective have im-
plications, because if the program is the only vehicle
through which a theory can demonstrate that require-
ments of the intended system have been met, then,
that theory testing process comes too late in the sys-
tem life cycle.
2.2 On Methods and Theory Building
Earlier we noted that Naur had reserved considerable
criticism for methods. We develop this discussion fur-
ther in this section. The tendency of methods research
in the IS discipline is to propose algorithmic steps to
analysing and designing solutions to problems. As
Naur notes: “A method implies a claim that program
development can and should proceed as a sequence of
actions leading to a particular kind of documented re-
sult”. In contrast, a theory building view holds that
a theory “held by a person has no inherent division
into parts and no inherent ordering”. At large, IS/SE
research is embarked on a journey based on epistemo-
logical foundations and as a consequence has mostly
neglected techne (the technical know how of getting
things done) and phronosis (wisdom derived from so-
cialised practices) (Wyssusek, 2007). In a more gen-
eralised form, this has correspondence to the distinc-
tions between explicit and tacit knowledge (Nonaka
and Takeuchi, 1995) and Naur would seem to be argu-
ing the case for methods research that suggests more
attunement with the effects that methods may have in
the education of programmers. That is, the creation
and embedding of tacit knowledge rather than the pro-
duction of artifacts representing explicit knowledge
through an algorithmic process.
Naur cites a study of five different methods by
Floyd et al (cited here for completeness (Floyd,
1984))where the key result that a system of rules will
lead to good solutions is an illusion, what remains is
the effect of methods on the education of program-
mers. Thus the use of methods may themselves not
lead to a good design but the practice of the method
may lead to a better innate ability for theory building.
Much research in IS literature relates to methods for
IS development but this point is absent until we con-
sider the advent of what we mightterm as micro meth-
ods - such as the literature surrounding Design Pat-
terns (Gamma et al., 1995). Here Naur seems to have
predicted the advent of design patterns approaches to
theory building: “the quality of the theory built by a
programmer will depend to a large extent on the pro-
grammers familiarity with model solutions of typical
problems with techniques of description and verifica-
tion and with principles of structuring systems con-
sisting of many parts in complicated interactions.”.
If the quality of the theory that a programmer has
developed will depend on the familiarity of the pro-
grammer with a specific class of problem and perhaps
the clarity of the question to be asked then methods
that create a familiarity with model solutions of typ-
ical problems will be more effective. This of course
resonates with the shift towards design patterns, anal-
ysis patterns and even enterprise architecture patterns
where there has been a focus on capturing explicit
knowledge as pattern solutions to specific problems.
The class of problem under consideration is a key is-
sue. It is clearly true that some classes of programs
are easier than others (clerical versus algorithmic).
Clerical programs that require little or no algorith-
mic complexity are more amenable to automation and
have less need for theory building. A good example
where program = model and methods to arrive at a
theory of a program occurred when Texas Instruments
and (later Sterling Software Ltd) developed the Infor-
mation Engineering Facility (IEF) - a model driven
environment that used an integrated set of diagrams
and modeling notation to generate relatively low com-
RE-THINKING SOFTWARE ENGINEERING APPROACHES: A CRITICAL REFLECTION ON THEORY BUILDING
61