2. HOMEWORK PROJECT
The project was a homework assignment at the Budapest
University of Technology and Economics during the System
Integration course lead by the Fault Tolerant System
Research Group.
https://www.inf.mit.bme.hu/en
https://www.inf.mit.bme.hu/edu/courses/szolgint
3. ASSIGNMENT
• Design and implement the business logic of an app store,
where…
• Customers can:
• Browse and view applications
• Buy applications
• Get recommendations on which apps to buy
• Manage their accounts
• Developers can:
• Upload their applications with additional metainformation
• Manage, and update their uploaded applications
• Transfer their profit to a bank account
• Shop managers can:
• Supervise submitted apps, accept, or reject them
4. DEVELOPMENT
PHASES
We used a model driven approach to create our App store.
Development phases:
1. Analysis and design
• Requirement analysis
• Domain analysis
• System design with domain specific model
• Business process modeling
2. Implementation of business logic
• Facilitated with code generation from system model
3. Add rule-based app recommendation feature
5. DEVELOPMENT
PROCESS
Requirement analysis
Analysis
& Business process Architectural design
model
modeling
Business Generative Domain
process model implementation specific model
Rule based functionality
6. ANALYZING THE DOMAIN
• We created a domain specific meta-model using the
Eclipse Modeling Framework to help designing our
system.
Required modeling elements:
• Business entities with persistence
• Services and methods with REST interfaces
• Types, attributes, references…
• Using this domain specific language we could create an
instance model of our planned system.
7. DOMAIN SPECIFIC MODEL
system
REST service
features
method
attribute
parameter
entity persistence
features
entity
reference
8. CODE GENERATION
We extended the DSM with code generation using Xtend 2
technology.
Generated Java source artifacts from system model:
• Entity class files with JPA annotations for persistence
• Entity manager interfaces for entity manipulation
• Service interfaces files with JAX-RS annotations for RESTful
interface
To learn more of the Expendables Web Service Modeler visit:
http://code.google.com/p/expendables-ws-modeller/
10. GENERATED ENTITY MANAGER
AND SERVICE INTERFACES
Entity Manager Interface
for Transaction Entity
Service Interface for
Financial Service
11. ARCHITECTURE •
•
•
User Management
Store
Customer App
Management
• Developer
Eclipse – OSGi Framework • Quality Assurance
• Financial
Expendables AppStore
EclipseSource JAX-RS
REST Services
Connector
Entity
REST interface
Entities
Managers
Jersey
(JAX-RS)
EclipseLink (JPA)
Customer
or MySQL
Developer Connector
MySQL
Developed by
Expendables team Server
12. DATA STORAGE
• POJO Entity classes with JPA annotations
• Entirely generated code from system model
• JPQL named queries
• Various relationships between entities
• Entity Manager classes for retrieving and interacting with
entities
• OR mapping with EclipseLink (Java Persistence API 2.0
reference implementation)
• MySQL Server for storage
• Database schema generated by EclipseLink
• Connection with Java MySQLConnector
13. WEB SERVICES
• OSGi Java components with RESTful interfaces using
EclipseSource JAX-RS Connector
• Using Jersey JAX-RS reference implementation
• Generation gap pattern
• Generated Java interfaces with JAX-RS annotations
(from system model with generation tool)
• Manually written pure Java implementation classes
• Architecture:
• Java classes – services
• Java methods – service functions
• Usage:
• http://appstoredomain/service/function
14. QUALITY ASSURANCE Quality Assurance
Service for getting
and submitting
Manager
PHP Eclipse – OSGi Framework supervision
server information
Expendables AppStore
EclipseSource JAX-RS
Auto
Verify S.
jBPM
Workflow REST Services
Connector
Bytecode
Check S. jBPM workflow to drive
the supervision process Entity
REST interface
• Interacts with Entities
Managers
Jersey supervising Manager
(JAX-RS) HTML forms
via
• Manager approves
the values or
EclipseLink (JPA)
describes problems
• Separate PHP services
• Customer
Dummy implementations
MySQL
• Result or random value:
is
Developer
GO/NO GO
Connector
MySQL
Developed by
Expendables team Server
15. QUALITY ASSURANCE
JBPM WORKFLOW Name
Supervision
Autoverification &
Bytecode check
Human Test
Metadata
Supervision
16. BANK SYSTEM
Manager
PHP Eclipse – OSGi Framework
server
Expendables AppStore
EclipseSource JAX-RS
Auto
Verify S.
jBPM
Workflow REST Services
Connector
Bytecode
Separate ASP.NET Bank System
Check S.
Entity
REST interface
Entities
.NET Managers
Jersey
(JAX-RS) communication
REST
Bank
with AppStore Transfer Money
function for
EclipseLink (JPA)
transferring money to
Upload Credit service Bank
Customer for buying credits at
or AppStore MySQL
Developer Connector
MySQL
Developed by
Expendables team Server
17. GENIUS SERVICE
Rule based recommendation service
• Drools rule engine
• Applications assigned with a score
• Rule firings change the scores
• Prohibitive rules multiply the score by zero
• Recommending rules multiply the score by a greater than
one factor
• The factors initialized from a decision table
• Variable assignment can be done from an excel sheet
• Managers don’t affect the source code
• The service returns a list of applications with the highest
scores, meaning those the most recommended apps
18. GENIUS SERVICE
Drools rules:
• Age limit:
Apps for customers above a certain age are not recommended.
• Already owned apps:
Already owned apps are not recommended.
• Popular apps:
Apps purchased in the last 31 days and above a certain price are
recommended.
• Same developer or same category:
Apps from the same developer or category of already owned apps
are recommended.
19. GENIUS SERVICE
Automatic Derivation of rules with data mining methods
• Database:
• Transactions in adjacency matrix form (user – app
dimensions)
• Automatic update of the matrix with stored procedures
• Association:
• Generated Association rules with Weka
• API calls
• Read directly from MySQL DB
• FP-growth algorithm
http://en.wikipedia.org/wiki/Association_rule_learning#FP-
growth_algorithm
• Recommendations from the association rules
20. THE GENIUS PROCESS
Processing XML
rules with DOM Weka
parser Decision
FP- table
growth Correction
Asssociation factors
Lift factors
Association
rules Drools
The initial
Rules Fire rules
scores
1
1 Add the Multiply the The Top
List of . factors to scores with 5 Apps
Apps . scores the factors by
. scores
1
21. FINAL ARCHITECTURE •
•
•
User Management
Store
Customer App
Management
Manager • Developer
PHP Eclipse – OSGi Framework • Quality Assurance
server • Financial
Expendables AppStore
EclipseSource JAX-RS
Auto
Verify S.
jBPM
Workflow REST Services
Connector
Bytecode
Check S.
Genius
Service
Entity
REST interface
Entities
.NET Managers
Jersey
(JAX-RS)
Bank
JBoss
EclipseLink (JPA) Drools
Customer
or MySQL
Developer Connector
MySQL MySQL
Developed by Weka
Server Connector
Expendables team
22. CONTACTS
Members:
• Ableda Péter (abledapeter@gmail.com)
• Csicsely Attila (csicsely.attila@gmail.com)
• Kiss Dániel (kissdani89@gmail.com)
• Lóránd Bálint (balint.lorand@gmail.com)
Group e-mail address:
• expendables-team@googlegroups.com
Expendables Web Service Modeler
• http://code.google.com/p/expendables-ws-modeller/
Fault Tolerant System Research Group at BUTE
• https://www.inf.mit.bme.hu/en