The Architecture of Enterprise Information Systems.
A view based on patterns.
2. -Requirements and Information Systems Main Processes
3. -Common Components
“... you can see a predefined structure that remains from the source content to the resulting content...” Moisés D. Díaz.
There are plenty of software systems, being information a constant in all of them. Information is not only a constant element in the systems we are going to focus on, but the fundamental element. The relevance of information in software systems is related to their function, that of managing this ungraspable element (that we call information). That is why the main problems these systems have to solve are related to information representation and persistence, data reception and transmission, and to the devices that help us to transmit and communicate this information.
Then, what is an information system?. We can define an information system as the compound of components (or elements) that operate together in order to catch, process, store, and distribute information. This information is generally used for taking decisions, for the co-ordination, the control, and the analysis in an organisation. In many occasions, the system´s basic aim is the management of that information.
If we go further, we may wonder about the main features of information systems. Then, let´s analyse them:
§ They manage huge amounts of persistent data (concretely, they manage the data they store)
§ They manage many users converging access to information (these users produce and consume data that the system manages)
§ Information system graphic interfaces are, in some aspect, defined in relation to the kind of information the system manages (certainly, in many formulation screens and reports)
§ Information systems can integrate to many other enterprise and ofimatic applications.
It is said that function defines form, that is, whatever system whose structure or architecture is closely related to what is to be made.That is why the compound of information systems share a common architecture, and well defined processes. Because all of them have equal aims to achieve (not to forget: to integrate, to process, to store, and to distribute information). As well as a compound of common features previously commented.
The concept of architecture is frequently and differently used, making change its meaning into something diffuse (Truly, I can not assure if it has ever been clear).
In this article we understand architecture as the structure that the compound of components that makes up a system. That is, a high-level system structural view.
We can define a design pattern as the abstract representation of a good solution (or design) for a concrete problem that is delivered in one or more contexts.
What is what patterns do offer us? Those ones have facilitates us the possibility of organising our categories, components, and subsystems in common structures, correctly proved; Impacting in the system, that is increasing its flexibility, modularity, and extensiveness. In other words, patterns meliorate the design value, quality, and consequently they meliorate the software itself.
Patterns have proved to be the ideal way to transmit a structural knowledge, that is, design knowledge; as for example, systems architecture, the subject we are dealing with.
I will present the different elements by means of a documented structure, inspired upon design pattern, although much less formal.
In the same way, patterns are frequently grouped into language patterns. Generally, a compound of patterns is described in these languages for a possible identification of a series of roles in the particular context that is applied, and also to identify the way they are related to each other. Then, we can completely describe the systems that appear in such a context by means of language patterns. Either to solve the different problems that can appear in a specific context.
In a certain way, this article constitutes a language of patterns that describe all the components and information system basic processes.
2.Requirements and Information system basic processes
We have previously said that one of the information systems features is that of managing the users access to the system.
This access can be produced due to different causes: In order to add, modify or erase data. As well as to consult, and manage the information system itself.
We will have different uses or actors depending on the kind of access.
Information producers, information consumers, and system managers.
An actor is an extern element to the system that interact with it, being this actor a person, either a computer program.
Three kinds of actors have been identified, and three types of basic functions are to be achieved by an information system:
§ To integrate the information to the system. The original data for this activity will be given by information producers. This process can lead to an earlier processing of such a data. They can be processed before they have been stored in the system. .
§ To distribute information to the users. Obviously, to the information consumers. This process can also entail the stored data processing that we are going to distribute.
§ To manage the system, to enrol and withdraw, to modify new information producers and consumers, establishing permissions regarding their activity. It is essential not to forget that whatever information system is a real system, that requires administration, carried out by the system managers.
As we can see a direct correspondence is established among the actors and the interacting functionality of the system itself.
After analysing this fact, let’s analyse in a deeper way the two highest impactive architectonic processes.
Integrating information is one of the fundamental processes that an information system must carry out.
At the same time this process can be divided into a series of sub-processes that will have to be implemented depending on the complexity of our system and on the tools we are working with.
Generally, to integrate information means to process the data that producers generate, and incorporate this information to our data store (normally, related data stores). Being more specific to storage information means:
§ To accept the information package (When speaking about information package we will refer to the grouped and structured data). The system can possibly contain modules generated by information packages, by means of the information taken when actors interact.
§ To verify the information package (for example, in a e-mail you have to verify addressers, adjunct restrictions, etc.)
§ To verify the structural validity of data that has been sent (for example, in a xml, it would be to make it valuable against its xschema). And also verify permissions (of the producers with respect to the data.
§ To integrate and transform the information into data stores. Generally, it will mean to incorporate that information into any table compound of any relational data base Of a relational database (in this case verification processes can occur between the producers and the kind of data that has been sent).
§ To generate answers concerning those packages process to producers of such an information.
This process would end up like this, if we document it as a pattern
® Integration pattern. Info-integration process
To integrate the information generated by the “Producers” information actors into the system.
Basic forces: Forces are functional requirements themselves: Business necessities, structural validities, content validities, answers generation.
To create a structure of components that shows, maps, and covers the functional requirements of incorporating the information to the system.
With a direct correspondence between each requirement of the process and a component.
Distributing information is one of the main processes that information system must carry out.
It would be worthless to obtain huge or little amount of information if it was not going to be distributed (after being processed or not) to those users that need it for their job.
But, not all the users share equal necessities and privileges. There will be users capable of obtaining whatever kind of information. Meanwhile, the other will only be able to access to a section of it.
The same way, formats in which such an information will be distributed can be very different, as well as the protocols used for the transmission.
Then, distributing information is a complex process that can be subdivided into different subprocesses.
§ To admit information petitions. The system can equipped with modules that represent directly such an information to the consumer.
§ Information petitions validaties.
§ Collecting information.
§ Formatting-processing of it.
§ Sending information to the consumer.
Whose pattern is the following one:
Distributing information to the users.
Basic forces. Forces are the functional requirements themselves:business necessities,(Distributing information, a primary functional requirement),users and request validities (restrictions), information formatting and sending, etc.
We turn each subprocess into a well-defined component concerning functionality. And it will possibly be implemented depending on two facts:
§ First, if it has or has not been previously implemented by our development tools.
§ And depending on the complexity required by the task.
Models of interaction:
I will finally add some notes about the models of interaction between a system and its users:
§ Synchrone. The “interacting customer” model and must communicate synchronically. The compound of all interactions among components must be of a low degree of latency. These solutions offer complete surroundings for recording data, and for sending huge amounts of information. N-layer Customer-server architecture, with communications framed in local webs, in which components can interact by means of dcom or corba(Soap) is the current solution.
§ Synchrone with latency. Another internet solution based on web, web activex crossing or java Applets. Generally, Synchronic applications can be implemented in this case, but featured with latency (due to the band width,...)and with a lower level of interaction.
§ Light Asynchrones: Systems in which communication is based on asynchronic messages systems, in which answers can take even minutes in being originated. For example: JMS, MSMQ, etc.
§ Heavy Asynchrones: Systems in which communication is based on electronic mail. Firstly, information is sent. Since this information is processed, the integration manager sends a message to the sender
We have seen that both patterns are similar in terms of structure well as they share components, that can be found in whatever information system. Now, let´s focus on peripheral components.
In the previous section we have taken into account aspects about Integrating and Distributing patterns.We have basically focused on their inside mechanics, that is, on the interior elements that make up an information system.. Now, we will speak about the peripheral elements, those that are found in the limits of the system itself, and interact with the system information exterior.
®Peripheral Component Producer-System Interface
Mechanisms must be available in order to incorporate the information (that exists in the dominion of the problem,) to the system. And consequently it will processed by it.
§ The producer produces information
§ This information must be collected and treated by the system
§ Information must be formatted for a correct treatment
§ There must be mechanisms that send those information packages to those system components, suitable for their treatment. These mechanisms must be transparent to the producer user,
An element is constructed in order to assume this role. The purposes of this element are:
§ To generate the information packages , by means of the interaction with the user (This activity is generally called “data recording”
§ To establish mechanisms that interact with the producer. This mechanism helps the producer to incorporate information packages (that have already been created or generated by other devices) to the system.
§ To transmit the information packages to the system components (created for the information management and treatment)
This is the most sensitive part of the system
Examples: (All this will seen more specifically in the following note)
§ This role could be modelled in a bureau customer application, in a customer/server application context.
§ In a context of a local application, in which this application is carried out by a data base manager (as for example, the Access),the application is already implemented with all this functionality. All this functionality and the interface itself are forms presented by the manager to the user.They can be carried out automatically .
§ In the context of a system distributed among wider geographic areas: Packages transmission protocols must be chosen, as well as formats, to structure such information, and then, to be treated by the system. In many occasions, information comes from any other system, that generates an information package (generally, a file) for our system, and uses the mechanisms(interface applications),that are supplied to interact with the system.
® Common Component:System-consumer Interface
Mechanisms must be supplied in order the consumer can send and process the information that exists in the information system.This activity generally avails the visualisation of the solicited information representation .And, it also avails the capacity to export such an information to other systems.
§ The consumer solicits and uses the information that the system has.
§ Information that is given to the consumer can be processed and filtered, if before its reception.
§ Information must be delivered in a structured way (visually or by means of files)
§ There must be mechanisms to avail the consumer to process the distributed information, addressed to him. This can be achieved by means of mechanisms supplied by the system itself, either exporting the information to other surroundings.
To construct an element that assumes this role, whose aims will be:
§ To receive the information packages, that have been generated by the system.
§ To establish mechanisms that help the consumer to interact with the information system.
§ To establish mechanisms that export the information to other systems.
This role can be implemented by other components that establish a low latency communication with information distributing mechanisms.
It could be considered the acting part of the digital (nervious)system.
Examples: (All this will be seen in a more detailed way in the following section)
§ Starting point :A context with a customer/server application in the local dependencies of the enterprise. The interface is a bureau application , made up of languages and platforms that make all the information sending and reception management questions invisible, even to the developer. The programme accedes to the enterprise data base in the customer computer. And it shows the result of consults in the user´s screen, availing the user to carry out some defined processing activities ,as well as to export the obtained data to spreadsheet formats, and to personal data base managers(or to low degree data base manager).
§ Starting point: A context based on the internet technologies. The interface component (plus the user) is a navigator that presents and represents the information, as well as additional interface elements, codified in html; either any other scripts language .We could add plug-ins to the navigator , in order to provide more richness to the executing-customer surrounding.
®Common Component: Central information Store
To store huge amounts of information, in such a way that it is easy to integrate more information(generated by the information producers ),either to distribute it(towards the information consumers).
§ To store huge amounts of information
§ To modify the stored information.
§ To extract and distribute the information that we have.
§ To make possible various simultaneous interactions with the compound of data.
To use a component or system that can assume this role. There are several options. Data base managing systems are the most used(commonly named data base).These systems are a compound of applications or components that permit to store, modify , and extract information from a data base. This data base is merely a huge compound of information , organised into files and registers .There are different kinds of data base managing systems(ranging from), covering from those tiny systems that work in a personal computer, to those enormous systems that are executed in Mainframes.
How can we map all we have learnt by now about contemporary standard architecture?.
Let´s start saying that we will distinguish two kinds of architectures: a logic one, made up by components, subsystems and applications and the physic one, made up of computers or groups of computers.
Nowadays, the logical architecture follows a basic scheme , formed by three primary layers: user interface , logic domain , and data source.
This scheme, though useful, is not enough to show the logical architecture of the contemporary enterprise applications. We can make the scheme evolve into a more precise and consistent one., in accordance with the present reality.
This second scheme is made up of five logical layers .
This model adds a mediating layer , that works among the primary layers, to obtain a higher independence among them.And, then, to permit their evolution or substitution autonomously, decreasing considerably their impact in the other parts of the system.
With a five logical layers architecture, how will we map all the processes and components, that we have seen in this kind of architecture? . The following diagram will show the solution
The following scheme shows the process to a five logical layer architecture.
Five logical layers, info-integrating and info-distributing process, the compound of components that belong to those processes, and the information currents that are produced, have been shown in this scheme.
This five logical layer architecture is changed into a one, two, or three-layer architecture when it is physically implanted. The monopositioned solutions (just one physical layer; for example, an application carried out in Access that works upon/over a local data base) are not frequently in /at enterprise surroundings, where applications are usually complex, multipositioned, and, where data are usually protected, requiring a considerable administration effort.
Consequently, architectures based on two or three physical layers are the most frequent in enterprise surroundings.
If we focus on two or three physical layers architecture, we will say that they are basically articulated into two settings. Each one with its logical layers distribution, its components, technologies, etc.
These settings are:the web architecture, and the client-server architecture.
Let’s represent it graphically, assuming the following premises: Each rectangle represents a node, that is, a computer. It will be associated to a rounded angle rectangle, where we have written the logical layers it would have, as well as the different technologies we can use for its implementation. The thick arrows represent the connections among those nodes, and they also are written with protocols and substitutes, that we can use in these kinds of communications.
We can watch two different variables: one, formed by the navigator, the web server, and the data base; and, the other, in which an application server would be added.
Web architectures have represented one of the biggest changes in enterprise software applications of this last decade. These have brought us a great quantity of benefits like: universal access by means of internet navigators (IE and Netscape), standardization of communication protocols (http, Soap, etc), standardization of languages of representation of graphical interfaces (html), decrease of costs associated to the maintenance of the software in the PC.
Customers and servers are supposed to belong to the same corporative web in this kind of architecture. This approach offers different advantages. For example it supplies the chance of creating customers with richer interfaces( very useful for recording and manipulating data), of using the PC´s processing capacity, and it also offers a better applications agility, for there is a bigger width band for each customer station when running throughout private webs.
Several disadvantages are also involved, if comparing to architectures based on web systems:
There is a much higher maintaining cost due to the applications to construct and distribute in customer stations.
There are more connecting restrictions that in the web. For the latter( and its associated technologies) have turned into an ubiquitous and omnipresent environments. Web architectures are normally chosen when possible.
Each problem is different, as well as each solution. A series of patterns, components, and architecture, that are not new at all, have been explained in this article. Otherwise, they try to supply a structural and clear vision to the problem (and solution) of creating Enterprise Information Systems. I hope they can help and be an useful guide, when facing a project. Nevertheless, we must always take into account that there is no pattern, neither architecture, nor tool or article, that can substitute the human brain (at least, by now;-))
Links and e-Bibliography: