Seife Framework – Model driven architectures on the mobile client side

System design

By making use of Java source-level annotations the toolchain integrates into existing architectures without side effects. The annotations are interpreted to transform part of the existing model and interface definition into android source code. This is done by a code generator (JSR-175), it generates state-of-the-art DataProviders and Sqlite database accessibility peer classes with no middleware library creating an additional memory footprint for object management.

The approach saves a lot of time integrating android mobile devices into existing infrastructures and reduces error probability without giving up efficiency on handheld and mobile devices.

Client/Server models

Existing (JSR-338) JPA environments can easily be extended to export parts of the datastructures to mobile code. Keeping the source bases in sync and maintainable is a natural result of declaring the mobile relevant parts in the same place as the server side model.

Model driven apps

The framework is also used in mobile only development projects. It generates the neccessary boiler-plate code that is needed to run sqlite databases, define and maintain Dataproviders with CRUD operations (create/read/update/delete).
It also supports creating code for parcelable api, hence provides better support to the android interface definition languae (aidl) to export system services that accept non-trivial datastructures.

Seife is an acronym for “serializing entity interchange framework extension” and the german word for soap in case you wondered. The first versions of this tool where used to transport serialized data in servlets or client side java applications. Today it is used as a robust and simple solution to store data in model based software environments.
It uses the standard Android API to efficiently handle transactional object storage requirements, this also results in an improved energy consumption on mobile devices when compared with other library based software stacks for object relational mapping.