Upload
ngodang
View
245
Download
0
Embed Size (px)
Citation preview
Open Source ERP Code Analysis
Object-oriented Enterprise ApplicationProgramming Model for In-Memory Databases
Team: Paul Möller, Michael WolowykSupervisors: Arian Treffer, Ralf Tausner, Martin Lorenz, Jürgen Müller
The Challenge
● How does enterprise software look like?
● Is there a common way to classify code?○ Automatically?
● How much coding effort is spent on○ Persistence layer○ Application logic○ Presentation layer○ Configuration○ ...
● (Back to 2-tier architecture?)2
Steps ● Define code categories
○ adopt classification as we go
● Take two open source ERP systems○ Java○ Python
● Classify code manually● Classify code automatically
○ Code classification○ Code analysis○ Code metrics○ Architecture conformance○ Machine learning
3
Code classificationDB Application server Client
m a n u a l l y m a i n t a i n e d
g e n e r a t e d
l i b r a r y d u m p s
e x a m p l e c o d e
5
Code classificationDB Client
m a n u a l l y m a i n t a i n e d
g e n e r a t e d
l i b r a r y d u m p s
e x a m p l e c o d e
PersistenceLayer
Logic Layer
Presentation Layer
6
Code classificationDB Client
m a n u a l l y m a i n t a i n e d
g e n e r a t e d
l i b r a r y d u m p s
e x a m p l e c o d e
PersistenceLayer
Logic Layer
Presentation Layer
Other system
s y s t e m i n t e g r a t i o n
7
Code classificationDB Client
m a n u a l l y m a i n t a i n e d
g e n e r a t e d
l i b r a r y d u m p s
e x a m p l e c o d e
PersistenceLayer
Logic Layer
Presentation Layer
Other system
s y s t e m i n t e g r a t i o n
config config config
config config
config
config
config config config
8
Apache OFBiz (The Apache Open For Business Project) is an open source enterprise automation software project licensed
under the Apache License Version 2.0.
© Apache OfBiz documentation 12
● Entity - relational data construct that contains any number of Fields and can be related to other entities(application data)
Basic Components:
13
Basic Components:● Service - is a simple process that performs a specific
operation(application functionality)
14
DB ClientPersistenceLayer
Logic Layer
Presentation Layer
● MVC● Decorator
pattern● Templates vs
actions● Meta-
programming● Widgets
● SOA● Web Services● Scripting Languages● Meta-programming
● XML Data Modeling
● ORM● Database
independence● Meta-
programming
config config
F R A M E W O R K S
● entitygroup*.xml● entitymodel*.xml● ...
config
● services*.xml● servicegroups*.xml● ...
● Screen.xml● Forms.xml● ...
15
Next Steps ● Define code categories
○ adopt classification as we go● Take two open source ERP systems
○ Java○ Python
●Classify code manually
●Classify code automatically○ Code classification○ Code analysis, Code metrics○ Architecture conformance○ Machine learning, SVMs
●Compare results to improve classifiers16