
Some time ago I posted the following musings to my work colleagues and a few of us chased it around for a while. I came across it recently and thought the ideas might be of some interest to the members of these lists. If anyone knows of resources please let me know... ----------- Included text --------------- I read a collection of papers on Software Engineering recently published by the IEEE and edited by Professor Richard Thayer (and his friend). One recurring theme in these "State of the Practice" papers was the lack of a fundamental theoretical basis for computing. i.e. there's nothing comparable to the laws of physics in software engineering. I started thinking and doodling about what the fundamentals are and came up with several notions (ideas would imply something far too well formed!) These are based around the concept that software manipulates data or more correctly "information"(no surprises there! :). However most information theory (Shannon et al) relates to bits. Far too low level to be useful. That started me thinking about levels of information and I came up with 3 layers of information - rather like an OSI comms model: 1/ Physical - bits/bytes, defined by the machine architecture operations are CPU specific, include bitwise OR/AND/NOT and binary arithmetic... 2/ Implementation/Environment - data types defined by the programming environment - object in Smallktalk; int, float, char in C etc... Operations include built in operators for arithmetic, boolean logic and I/O. [Question: Where do collections: arrays, lists etc fit into the layer proposal?] 3/ Application - User defined data types - records, files, RDBMS Tables etc Operations are user defined functions/procedures etc. Other candidate layers include "Standard libraries" etc, but I rejected these as a subset of either Implementation or Application layers. To be useful any fundamental basis of software would have to express concepts which applied with equal validity across all layers. - ie not be dependant on data format, or semantics but simply relate to *relative* information content. Operations would need to be expressable in terms of data transforms across and within layers. I could go on (onto the nature of operations!) but that's probably enough for now. Now the big question is: Since I am sure this isn't original, who has done this stuff before? - Where can I get papers or books on fundamental information representation/transformation theory? I assume there must be something? somewhere? [ Note: I am not talking about Knowledge Engineering which has more to do with how information is stored and processed than what information is, its empirical qualities etc... ] Alan Gauld BT computing partners Tel : 0141 220 8795 Fax : 0141 248 1284