Kamal R. Prasad even used
Kamal,
I need to transfer designs to my Indian collegues. The English specs I came up with were inadequate and incomplete. I need to some procedure to tell me when I have written enough to convey my design but I am a lowly software engineer, not an architect. It occurred to me that Sanskrit would be a good vehicle for this, unambiguous and concise.
It also occurred to me that the XP approach of writing the Test Cases first was a viable approach to task definition, but this could not replace the spec.
My own efforts have been directed towards making software that is more configurable, so that late- project changes and scope-creep can be readily accomodated. Instead of trying to define what I intend to build up-front, from a good spec, I have written a priori with the thought that the spec is unreliable. For example, I want to apply a set of clbuttes to some data. Each clbutt does one thing; I put the names of the clbuttes in a database field and read that at run-time, instantiating the clbuttes. When the boss comes in and tells me that the sky is falling, I drop the name of the clbutt that does that processing from the list, at run-time. If he wants something extra, I add the new task to the database list, and the software complains (but runs) until it finds the clbutt that defines the new task, when I add the new clbutt to the project. It's all very loose and forgiving with polymorphism and late- binding throughout.
I was thinking of a British versus a European locomotive. The latter has the pipes and vales on the outside, and the former has then all on the inside so it looks cleaner. Obviously, the latter is a lot easier to maintain.
I believe the above design has low coupling and high Sequential Cohesion, and is readily extensible. I am proud of it, but it is verbose and the very opposite of compact and efficient software. There is a lot of code to do relatively little, necessary because projects are defined by committee meetings which proceed at the same time as development.
Maybe a good spec is impossible in a business environment if requirement discovery proceeds at the same time as development! If so, then we need "liquid software", as above.
What do you think?
Max