This post relates to the conceptual problems for systems integration. You might also find it interesting if you are interested by such concepts as "service oriented architecture", "loose coupling", and "enterprise architecture".
This intended audience for this post is people who work with logical models. This will include information architects, DBA's and data modelers, OOAD professionals, and people who work primarily with formal logic (philosophers). Those with a background in the more algorithmic side of computer science may also be interested. I spent some time wondering where to best discuss this topic, and it is my hope that members of the XKCD forum generally have a high standard of knowledge and a good grasp of the concepts logical validity and soundness. If anyone can direct me to additional places where this topic might be welcome and productive discourse could follow, please do let me know!
For the purpose of this discussion, I will use the term "application" to mean a computer system which has, at minimum, a logical representation of some domain of discourse which is the relevant ontology, and where that representation is dependent on the domain of discourse alone, and not dependent on any other representation. The system may also, of course, be composed of some user interface, API's, reporting, and so on, but for the purpose of this topic these components will not be relevant.
If I may use an example to make that more concrete: Any company operates within some domain of discourse, being an ontological subset of "all of reality". A company, for example, may have the concept of a "customer". This concept relates to something in reality, but the relevant attributes of that thing, with respect to the company, represent the customer in the ontology of the company. The company may similarly require concepts such as product, sale, and so on. When we take all of these concepts together, what we have is the "domain of discourse" of the company. It is the role of an application to model some subset (often a proper subset) of this domain of discourse.
Reality contains no logical contradictions and so, when the application's model is constructed, it is of vital importance that the model is not in contradiction with reality as represented by the domain of discourse. I think it should be obvious why a model that contradicts reality is a problem, and further why a model with internal contradictions is a problem.
Let us, then, presume the existence of some application, app_A, which contains a model of a subdomain of the domain of discourse. There are many different vocabularies we could employ to describe the composition of the model: objects and methods, entities and relationships, tables and procedures, and so on. When thinking about this post you may conceptualize this model in the manner most comfortable to you. The important premise is this: The model used by app_A is not in contradiction with the subset of reality represented by the domain of discourse.
Let us also presume the existence of some other application, app_B, which also models some subdomain of the domain of discourse with no contradiction.
Finally, let us presume that the subdomain modeled by app_A need not be coextensive with the subdomain modeled by app_B, but that it is possible that app_A and app_B both model some common elements of the domain of discourse, which I will call the shared subdomain.
My most fundamental question, then, would be this: given that app_A is a logical transform of reality, and app_B is also a logical transform of reality, Is it necessarily true that it is possible to logically transform the shared subdomain directly between the model of app_A and the model of app_B?
Now that i've gotten the abstract concepts down, let me provide an example to make this concrete.
Imagine an enterprise with several applications: perhaps an ERP application, a CRM application, a point of sale application, a product management application.
Each of these applications makes use of some data model, and that model represents some subset of the domain of discourse that is the ontology of the company as a whole. Further, there are entities (and relationships, and business processes) that are common across at least some of the applications, for example, both the CRM system and the POS system include a "customer" entity. Each has its own definition of the attributes and methods that comprise a customer, but both systems are consistent with the domain of discourse, though neither necessarily models the entire entity as represented in that overarching domain.
If I then perform operations against the customer in the CRM system, and that operation logically requires a change to some attribute values in the POS system, is it necessarily true that this operation can be performed in the POS system without creating contradictions?
If so, what is required to make that possible? For example, is it possibly necessary that we actually instantiate the whole domain of discourse as a "shared" model to perform some kind of mappings?
Any single example of a failed or contradictory "mapping" would be sufficient to demonstrate that it is not necessarily possible in general.
A place to discuss the science of computers and programs, from algorithms to computability.
Formal proofs preferred.
Formal proofs preferred.
1 post • Page 1 of 1
Who is online
Users browsing this forum: No registered users and 4 guests