The purpose of this project is to explore concepts and technologies for developing business applications. Currently business applications are delivered as monolithic applications. In other domains of software development we see frameworks consisting of open software modules which can be tied together and customized to clients needs. The purpose of this project is to develop a framework with open software modules which let developers quickly build stable and scable business applications.
As an example application we try to develop a consolidated reporting application consisting of the collection of data packages from different clients, consolidation of these client packages, and reporting the consolidated data for management or statutory reporting. Comparable functionality on the market is offered by a very limited group of large software vendors like SAP and Oracle.
Conceptual the functionality of any application can be modelled in following components:
Each computer program requires a large collection of software components to function properly. However the specific functionality of an application is only defined by the Data and Algorithm components. Each component should live in memory on some computer and communicates with other components. The interface communicates with the application via the security component. The security component authorizes requests and communicates with either the data component for retrieval of data, or the algorithm component for input or performing calculations. The algorithm component communicates with the data component for execution of algorithms. The data component communicates with the Storage. The interprocess communciation is a process that facilitates all communication between the processes.
Application vendors offer their applications as a tightly bundelled set of above components. The Storage and Communication components are already generic components used by these vendors. However the Data and Storage components are highly integrated. The purpose of this project is to uncouple the Data, Algorithm, Interface and Storage components from each other. The Data component provides a logic data model interface to the Security and Algorithm component and uses a simple file based Storage model. Also the Interface is fully decoupled from the Data and Application component allowing any type of interface to interact with the application functionality.
To define the Data component. We start analyzing data in general first.