Wednesday 28 February 2007

Technical Notes - Rationale

I have spent about 50% of my working life (employed by the same, large, financial institution) involved in information technology. I started out as system analyst, but fairly quickly developed an interest in software development methods, and spent the bulk of my employment there becoming knowledgable about such methods,and their implementation of them in CASE (computer aided software engineering) tools. I became an instructor in two different software development methods; was involved in method and CASE tool selection; the specification of such tools, and amendments to existing tools; and consulting on methods within the organisation. Later I was involved in developing technology strategy and research, with particular reference to the software development environment.

Over a period of about 16 years I observed software development methods change and develop, and had exposure to virtually every development in the field.

One of my interests is Advanced Squad Leader (ASL) and I am trying to develop some computerised play aids for this game. As a software development this has some characteristics that make for complexity in the development process. The characteristics that give rise to this complexity are:
1 There are a very large number of rules within the game - the rule book is about 3" thick.
2 The rules have a very high level of interrelatedness - leading to sometimes arcane debates as to what the rules actually mean.
3 The rules are very situational dependant - some rules apply in some circumstances, and not in others. The way I believe is appropriate to handle this within a software development is to use reflexion - allow objects/classes/types to learn, from the system, about their own characteristics - to change the behaviour of objects in different circumstances.
4 The rules describe an inherently complex game - there are very large numbers of object types, relationship types and process types.

This interest has led to me try a personal system development project. This project has reignited my interest in ways of developing systems, and this in turn has forced me to clarify and codify my ideas about software development. As a result I am writing myself a series of notes about software development methods, which I am going to publish as a series of technical notes as I learn lessons from my development and codify my ideas on methods.

As a minor aside, there is a modern trend to use the word methodology rather than method in discussions of the software development lifecycle. Methodolgy to me is the study, understanding and comparison of different methods; a method is the way one goes about constructing a software system. I object to misusage of the word methodology, and believe that the software development is governed by a method (whether explicit, implicit, formal or informal).

No comments:

Post a Comment