Difference between revisions of "HowTo:Design a Customizing"
Line 35: | Line 35: | ||
= Architecture = | = Architecture = | ||
The architecture is something to consider on a rather abstract level, in the beginning of a project, but also on the level of a single task. | The architecture is something to consider on a rather abstract level, in the beginning of a project, but also on the level of a single task. | ||
− | In the context of a whole project, architecture means defining whether there are multiple {{UBIK}} installations on different sites, what products will be involved and how they are connected topologically and semantically. In this context, topology addresses the technical architecture. Questions: | + | In the context of a whole project, architecture means defining whether there are multiple {{UBIK}} installations on different sites, what products will be involved and how they are connected topologically and semantically. On task level, the same is interesting, just in greater detail. |
+ | |||
+ | === Topology === | ||
+ | In this context, topology addresses the technical architecture. Questions: | ||
* What top-level modules do exist where? | * What top-level modules do exist where? | ||
** in the network | ** in the network | ||
Line 42: | Line 45: | ||
** using which protocol | ** using which protocol | ||
** covering what data | ** covering what data | ||
+ | |||
+ | === Semantics === | ||
Semantics in this context addresses the functional architecture: which task-level modules are taking care of what responsibility, and how they play together. Questions: | Semantics in this context addresses the functional architecture: which task-level modules are taking care of what responsibility, and how they play together. Questions: | ||
* What is the purpose of a module? | * What is the purpose of a module? | ||
* What information is exchanged via an interface? | * What information is exchanged via an interface? | ||
− | + | === Restrictions === | |
− | + | ||
We recommend the architecture to satisfy the following restrictions. | We recommend the architecture to satisfy the following restrictions. | ||
− | === Top-Level architecture === | + | ==== Top-Level architecture ==== |
* Network-distances between the database server and the application server (e.g., web services) should be minimal for performance reasons. | * Network-distances between the database server and the application server (e.g., web services) should be minimal for performance reasons. | ||
* One should always plan for a staging strategy with multiple environments for QA. | * One should always plan for a staging strategy with multiple environments for QA. | ||
− | === Task-level architecture === | + | ==== Task-level architecture ==== |
* Custom code should always be developed in a plugin where possible, with the {{UBIK}} custom code just connecting the plugin code with the {{UBIK}} objects. | * Custom code should always be developed in a plugin where possible, with the {{UBIK}} custom code just connecting the plugin code with the {{UBIK}} objects. | ||
* Custom code should be arranged so heavy-duty processes (involving much data and complex calculations) are performed on powerful machines (and not on the mobile client). | * Custom code should be arranged so heavy-duty processes (involving much data and complex calculations) are performed on powerful machines (and not on the mobile client). |
Revision as of 08:00, 14 August 2023
Customizing UBIK® is a complex endeavor. In this article, we aim to provide a guide and best practices making this task as straight-forward as possible.