Components
One way of analysing the different issues is to divide them between those activities that deal with messaging, and those that deal with data management and transformation. Messaging has as an essential component, the summarised nature of the communication, in order to provide optimisation in terms of data transfer speed. At the point of each messaging service there needs to be an interface from the message to the system data bases. This interface is itself a transformation. Data management and transformation requires that data is held in the most accurate and efficient way.Apart from the optimising of memory, we can look at the systems we build in terms of the databases that are held in the systems and the messages that the systems send to one another. It is a trivial distinction perhaps, but every process in a component can be divided into two types, those processes that happen within the component, and those processes that require a communication with another component. We can characterise these two elements as being internal elements and interface elements. Highly efficient organisms have been shown to involve an important component of self-organisation and self-managment. The same is true for computer systems, and individual components of computers systems. For a system that wants to use this encapsulation of process to the full, we would need to focus on what is required in order to maximise the encapsulation of functionality within our systems.
Building a model of the world is bound to require some sort of persistent data, even if the persistence is only limited to the existence of the data while the process is running. Processing within a module is dependent of the data in that module and the nature of the data transformation. All processing can be seen in terms of a transformation, of which we can analyse the effect of the transformation in terms of the input, output and the status of changes to the data, ie, does the input get modified by the output. Apart from the parameters of the transformation, which can be analysed for correctness and efficiency, processing speed is an issue. Transformations can be written efficiently or inefficiently, something which can be addressed with algorithms that determine the relevance of datasets in order to optimise the inputs into the process.
If we are satisfied with our component modules, we also need to specify the interface transformations from our module to other modules. A transformation interface from a module to an unknown module must conform to an interface standard, something which can be globally defined only to the extent that interface domain is globally defined. Any interface represents a double transformation, a transformation from the sender system databases to data that would constitute the interface file, and a second transformation which is the actual data transformation which is the interface transmission.
Using any standard for interfacing between components will lead to an increase the cost of processing, due to redundancy in the interfaces, although it is likely to lead to an increase in the efficiency of writing and maintaining the systems. We need to consider the extreme case of the interface scenario, in which we send the whole module data, as the base from which we want to divine our efficient interfaces.
Using the above model, that any internal process consists of a single transformation, and that an interface will require a transformation and then a transformation for the transmission, we need to look at the ways we can clearly describe the requirements and then how we can optimise the whole model.
See slashdot for review and discussion of "Java Frameworks and Components" by Michael Nash