Smart-EIS is a full fledged software framework for building enterprise information systems.


The below diagram shows the high-level architecture design of the Smart-EIS

Framework Features

The following sections list the main features of Smart-EIS, These features are categorized in terms of :


  1. All configuration screens can be built dynamically; In most information system applications, most of the database tables are configuration tables that require only simple CRUD operations, using Smart-EIS, the CRUD operations functionality for theses tables are generated dynamically during runtime.
  2. Follow convention-over configurations concept; To avoid overloading the framework users with big amount of configuration, we followed the convention over configuration principle, where there are defaults almost of everything. For example, the metadata for database tables are extracted automatically either in development time using the Database Analyzer, or dynamically at runtime using database metadata provided by JDBC API.
  3. Ready-made database driven components; In Smart-EIS, we have designed and implemented a database-driven GUI component to reduce the development cost of views and business logic. DataTable, for example, builds itself dynamically using metadata extracted from SQL statement, which is also filterable, sortable, printable and exportable to Microsoft Excel.
  4. Full dependency preparation and setup; We have reduced the project setup dramatically by using the de-facto standard project-object-model – Maven. With Maven the developer only needs to include Smart-EIS dependency, and then Maven will automatically resolve all the required internal dependencies, libraries and API’s.
  5. The ability to disable security on developer’s machines; One of the challenges of unit-testing is the security setup and navigation. For example, in most systems, if the developer wants to make a manual testing for a specific view, he/she is required to start the application, login, navigate to the designated view, then test the views. In Smart-EIS, the developer can start the application in development mode so that he/she can access the security defaults, which are set automatically for him/her, and he/she will be able to access the view directly.
  6. Simple straight forward data-access-API ; Using the proposed APIs, such as the data-access API and exception-handling API, shall reduce the required lines of code, which will result in a better productivity, readability and maintainability.
  7. Transparent localization support; The developers don not need to care about the application localization, which includes: GUI design orientation, component labels and reports. All of these are managed transparently by Smart-EIS


In Smart-EIS, quality has been one of the main objectives. That is why we have implemented features that can increase the software quality with zero test-development cost. These features include:

  1. Full dynamic test for all views during CI; The framework builds and validates all the views during the continues integration phase to ensure that there are no technical issues in the views.
  2. Full dynamic reports validations during CI; The framework compiles, builds and runs all the system reports to ensure that the reports have no technical issues.
  3. Full dynamic unit-test CRUD test for all tables during CI to ensure database structure and constraints definitions; The framework validates all database tables’ structure and constraints by applying automated test-cases to execute CRUD operation using the test-values provided in the metadata.
  4. Full dynamic unit test for all services; The framework executes dynamic test-cases for the services based on the metadata provided with the test-data.
  5. The ability to use in-memory database for faster testing; The API has been designed to work with any database with JDBC driver, this includes many in-memory databases (e.g. H2). This shall make the unit-testing preparation easier and more practical for developers by avoiding the stand alone database configurations and setup, especially with large scale-databases such as Oracle.
  6. Easy to extract metrics for quality measurements and benchmarking.


  1. Automatic hashing for password fields; For securing password fields, most of the applications designs require to hash passwords into a value that cannot be recoverable. This can be done using various cryptographic hashing algorithms, such as Sha-1 and MD5. In Smart-EIS, this is transparent for the developer; just adding hashed attribute to the database field makes it managed transparently by the framework.
  2. Automatic handling for secured fields; In most applications, there are some critical data that should be secured by encrypting it in the database, such as credit card numbers. In Smart-EIS the fields encryption is handled transparently by setting the secured attribute in the field metadata.
  3. Automatic encryption/decryption over network; The framework has been designed to support client-server model where the clients interact with the back-end through remote interface only, and the client does not have direct access to the database. In Smart-EIS, the communication between the client and the server is secured transparently for the developers.
  4. Full automatic auditing on all levels; All the transactions in applications to be built on top of Smart-EIS will be transparently audited with all the required details including: the user, date, time, operation, old-record, new-record, GUI-screenshot.


  1. Server-side and client-side caching; One of the most important factors that affects the application performance is remote calls. However, there are many cases where these remote calls are consuming resources and fetching data that does not change frequently, such as the client-name, client-logo, the departments, job-titles, etc. Keep fetching these data from the database and from client to server will affect the system performance. The design of Smart-EIS has a transparent caching functionality that reduces these remote calls and network traffic to increase system performance.
  2. View-Caching; Some views construction may take relatively long time to build especially for dynamic views as well as views that require remote resources. In Smart-EIS, there are transparent views caching mechanism that makes the system more responsive and usable by avoiding the delays and flickers caused by views constructions.
  3. Compression over network; Since most of the enterprise applications have network connections between the back-end and the database as well as between the client and the back-end, compressing the large message can reduce the network traffic, which will reduce the response-time and thus increase the performance.
  4. Batch processing; In most of the applications, there are many operations that can be grouped into a single remote call, such as updating the master and details tables. The framework has the ability to make this type of operations batched into a single call to reduce network traffic and increase the performance.

 User Experience and Usability

  1. Consistency across all views; Since all the configurations views are built dynamically and the other GUI components are built using components provided by the framework, this ensures the GUI consistency across the whole system.
  2. Special GUI container to show for most accessed views in order to reduce the navigation time to reach the view.
  3. Full shortcuts for every GUI-based functionality in the system, such as menus, views, and buttons.
  4. Both single view and multiple views are supported.

and many others…

If you reach this paragraph, most likely you will be very interested to try Smart-EIS into your next project, if you feel so, please dont hesitate to contact us. But if you still un-sure, we highly recommand you to make your first proof of concept using Smart-Desktop project which is one of the components of Smart-EIS.