SlideShare a Scribd company logo
1 of 37
Download to read offline
Enforcing 
Architecture 
PaBerns 
with 
StaEc 
Code 
Analysis 
JDD 
2014, 
Krakow 
-­‐ 
PL 
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Pablo 
Barros 
ApplicaEons 
Architect 
October 
13, 
2014
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• The 
opinions 
and 
views 
expressed 
in 
this 
talk 
are 
my 
own, 
and 
do 
not 
necessarily 
reflect 
the 
opinions 
or 
views 
of 
my 
employer. 
3
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
About 
me 
4
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
About 
me 
5
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Giveaway 
• Lean 
Architecture 
by 
Coplien 
& 
Bjornvig 
6
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Agenda 
The 
Problem: 
“Architectural 
Decay” 
The 
SoluEon: 
“Architectural 
Agility” 
Defining 
your 
RelaEonships 
Tracking 
and 
Enforcing 
in 
AcEon 
Q&A 
7 
1 
2 
3 
4 
5
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
“Architectural 
Decay” 
The 
Problem 
8
What 
is 
So_ware 
Architecture? 
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• IEEE 
1471-­‐2000 
defines: 
“So_ware 
architecture 
is 
the 
fundamental 
organizaEon 
of 
a 
system, 
embodied 
in 
its 
components, 
their 
relaEonships 
to 
each 
other 
and 
the 
environment, 
and 
the 
principles 
governing 
its 
design 
and 
evoluEon.” 
9
What 
is 
So_ware 
Architecture? 
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• IEEE 
1471-­‐2000 
defines: 
“So_ware 
architecture 
is 
the 
fundamental 
organizaAon 
of 
a 
system, 
embodied 
in 
its 
components, 
their 
relaAonships 
to 
each 
other 
and 
the 
environment, 
and 
the 
principles 
governing 
its 
design 
and 
evoluAon.” 
10
Architecture 
Degenerates 
Over 
Time 
“As 
a 
system 
evolves, 
its 
complexity 
increases 
unless 
work 
is 
done 
to 
maintain 
or 
reduce 
it.” 
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
-­‐-­‐Lehman’s 
Laws 
of 
So.ware 
Evolu4on 
(1980) 
11
Architecture 
Work 
as 
Systems 
Grow 
Major 
Features 
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
12 
Architecture 
Work 
Time/Growth 
Sefng 
up 
foundaEon 
Rewrite
Reasons 
for 
“Architecture 
Decay” 
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• Increased 
system 
complexity 
• Architecture 
is 
not 
documented 
• Developers 
don’t 
know 
or 
don’t 
understand 
• “Shortcuts” 
caused 
by 
Eght 
deadlines 
• Division 
of 
work 
on 
different 
disperse 
teams 
13
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
“Architectural 
Agility” 
The 
SoluAon 
14
Defining 
“Architectural 
Agility” 
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
15 
• “Just 
Enough” 
Informed 
AnEcipaEon 
– Dependency 
Analysis 
– Real 
OpEon 
Analysis 
– Technical 
Debt 
Management
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Dependency 
Analysis 
• Cost 
of 
Change 
PropagaEon 
• Visibility 
of 
likely 
affected 
areas 
16 
Spring 
3.0 
Module 
Dependencies 
hBp://www.ogrigas.eu/spring/2009/12/diagram-­‐of-­‐spring-­‐3-­‐0-­‐module-­‐dependencies
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Technical 
Debt 
Management 
• Refactoring 
of 
relaEonships 
between 
components 
is 
expensive 
• Lack 
of 
“Architecture 
Agility” 
compromises 
“Enhancement 
Agility” 
17
Defining 
your 
RelaEonships 
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
18
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
RelaEonships 
• Layers 
– Horizontal 
Slices 
of 
the 
System 
• Examples: 
Controller, 
Service, 
DAO, 
Model, 
View. 
– How 
different 
layers 
can 
interact? 
– And 
cannot 
interact? 
• Modules 
– VerEcal 
Slices 
of 
the 
System 
• Examples: 
Catalog, 
Inventory, 
Ordering, 
ReporEng. 
– How 
different 
modules 
can 
interact? 
And 
cannot 
interact? 
19
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Layers 
• Organized 
in 
Package-­‐based 
hierarchy 
• Layers 
of 
a 
same 
“Module” 
are 
built 
together 
in 
a 
single 
JAR 
• How 
do 
we 
prevent 
introducing 
unwanted 
dependencies 
between 
layers? 
20
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Modules 
• Few 
opEons: 
– OSGi 
Bundles 
– Jars 
– Packages 
• How 
do 
we 
prevent 
introducing 
unwanted 
dependencies 
between 
modules? 
• How 
big/small 
should 
a 
module 
be? 
21 
Spring 
3.0 
Module 
Dependencies 
hBp://www.ogrigas.eu/spring/2009/12/diagram-­‐of-­‐spring-­‐3-­‐0-­‐module-­‐dependencies
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Packages 
You 
want 
to 
be 
able 
to 
slice 
and 
dice 
them 
22 
• Adopt 
a 
package 
convenEon 
and 
sEck 
with 
it! 
• Package-­‐by-­‐feature 
vs. 
Package-­‐by-­‐Layer 
• For 
example: 
com.company.product.module.layer! 
com.company.product.layer.module!
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Packages 
Compare 
these 
approaches: 
23 
• Package-­‐by-­‐layer 
• Package-­‐by-­‐feature
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
AnE-­‐PaBerns 
Not 
just 
your 
average 
“code 
smell” 
• Big 
ball 
of 
Mud 
• Circular 
Dependency 
• Jumble 
• Object 
cesspool 
• Object 
orgy 
• SequenEal 
coupling 
24
Tracking 
and 
Enforcing 
in 
AcEon 
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
25
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
StaEc 
Code 
Analysis 
(SCA) 
• Cheaper 
and 
more 
efficient 
to 
find 
certain 
types 
of 
bugs 
than 
code 
reviews 
– Not 
meant 
to 
replace 
them 
• Reduce 
need 
for 
knowledge 
of 
large 
frameworks 
• Allow 
for 
excepEons 
(as 
opposed 
to 
a 
compiler) 
• Good 
at 
Enforcing 
Standards 
and 
Best 
PracEces 
• Can 
be 
Automated 
• Early 
in 
the 
Development 
Process 
26
StaEc 
Code 
Analysis 
and 
the 
“Big 
Picture” 
javac! 
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
27
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Common 
Usage 
of 
SCA 
28 
• Finding 
bugs 
and 
code 
smells 
• Security 
vulnerabiliEes 
(certain 
types) 
• Unit 
test 
coverage
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Tools 
• General 
– NaEve 
IDE 
Support 
• Eclipse, 
IntelliJ, 
Jdeveloper 
– FindBugs 
– Coverity 
• Dependency-­‐analyzer 
– Dependency 
Finder 
– JDepend 
29 
• Architecture-­‐focus 
– Sonargraph 
– Lafx 
Architect 
– Structure101
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Demo 
Spring 
Petclinic 
Sample 
ApplicaAon 
• Define 
Layers 
and 
Slices 
• Plugging 
into 
the 
IDE 
• Image 
Credit: 
hBps://speakerdeck.com 
/michaelisvy/spring-­‐petclinic-­‐sample-­‐applicaEon 
30
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Making 
it 
Work 
• Integrate 
into 
Build 
System 
• Define 
Owners 
• Maintain 
and 
Grow 
set 
of 
Rules 
– New 
Rules 
come 
out 
of 
Code 
Reviews 
findings 
and 
discussions 
– Rules 
are 
categorized 
in 
different 
Severity 
Levels 
• Define 
AcEons 
required 
depending 
on 
different 
Severity 
Levels 
• Follow 
through 
31
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Measuring 
Quality 
• Not 
every 
warning 
needs 
to 
be 
“Fixed” 
• Keep 
a 
pulse 
on 
overall 
number 
of 
warnings 
• Focus 
on 
High 
Priority 
warnings 
• Monitor 
– Overall 
number 
of 
warnings 
– Code 
fragmentaEon 
– Code 
coverage 
(Unit 
tests) 
32
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Final 
Thoughts 
1. Take 
the 
first 
step, 
download 
and 
evaluate 
different 
tools 
2. Look 
at 
your 
current 
system 
3. Define 
basic 
structures 
to 
“stop 
the 
bleeding” 
4. Integrate 
into 
your 
build 
system 
5. Incrementally 
tackle 
and 
solve 
problems 
as 
you 
work 
on 
different 
areas 
of 
your 
applicaEon 
Be 
smart 
around 
your 
package 
structure! 
33
Also 
checkout 
session: 
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Q&A 
Thank 
you! 
34 
MulAtenant 
Search 
Tomorrow 
– 
17:00 
<Sputnik 
Track>
References 
and 
Further 
Reading 
• hBp://www.crosstalkonline.org/storage/issue-­‐archives/ 
2010/201011/201011-­‐Brown.pdf 
• hBp://www.ksi.edu/seke/Proceedings/seke11/166_Lei_Zhang.pdf 
• hBp://www.infoq.com/arEcles/architecture-­‐and-­‐agility-­‐good-­‐friends 
• hBp://www.sonarqube.org/evaluate-­‐your-­‐technical-­‐debt-­‐with-­‐sonar/ 
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
35
Copyright 
© 
2014 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
36
JDD2014: Enforcing architecture patterns with static code analysis - Pablo Barros

More Related Content

What's hot

Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemBruno Borges
 
Java EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudJava EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudBruno Borges
 
S11 implementation bootcamp
S11 implementation bootcampS11 implementation bootcamp
S11 implementation bootcampOry Chhean
 
Coding from Application Container Cloud to Oracle JET
Coding from Application Container Cloud to Oracle JETCoding from Application Container Cloud to Oracle JET
Coding from Application Container Cloud to Oracle JETGeertjan Wielenga
 
JFall 2016: Oracle JET Session
JFall 2016: Oracle JET SessionJFall 2016: Oracle JET Session
JFall 2016: Oracle JET SessionGeertjan Wielenga
 
Useful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaUseful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaPT.JUG
 
Overview of Eclipse technologies
Overview of Eclipse technologiesOverview of Eclipse technologies
Overview of Eclipse technologiesPT.JUG
 
Oracle ADF Architecture TV - Planning & Getting Started - Team, Skills and D...
Oracle ADF Architecture TV -  Planning & Getting Started - Team, Skills and D...Oracle ADF Architecture TV -  Planning & Getting Started - Team, Skills and D...
Oracle ADF Architecture TV - Planning & Getting Started - Team, Skills and D...Chris Muir
 
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...Chris Muir
 
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with OracleMobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with OracleChris Muir
 
Microservices + Oracle: A Bright Future
Microservices + Oracle: A Bright FutureMicroservices + Oracle: A Bright Future
Microservices + Oracle: A Bright FutureKelly Goetsch
 
Down-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EEDown-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EEReza Rahman
 
Oracle JET, with JET Mobile Content
Oracle JET, with JET Mobile ContentOracle JET, with JET Mobile Content
Oracle JET, with JET Mobile ContentGeertjan Wielenga
 
Open Security Controls Assessment Language (OSCAL) - 1st Workshop, Nov 5-7, 2019
Open Security Controls Assessment Language (OSCAL) - 1st Workshop, Nov 5-7, 2019Open Security Controls Assessment Language (OSCAL) - 1st Workshop, Nov 5-7, 2019
Open Security Controls Assessment Language (OSCAL) - 1st Workshop, Nov 5-7, 2019MichaelaIorgaPhD
 
Oracle Open World Exadata Monitoring and Management with EM12c
Oracle Open World Exadata Monitoring and Management with EM12cOracle Open World Exadata Monitoring and Management with EM12c
Oracle Open World Exadata Monitoring and Management with EM12cKellyn Pot'Vin-Gorman
 
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Heather VanCura
 

What's hot (20)

Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
 
Java EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudJava EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The Cloud
 
MySQL
MySQLMySQL
MySQL
 
Oracle User Group Holland
Oracle User Group HollandOracle User Group Holland
Oracle User Group Holland
 
S11 implementation bootcamp
S11 implementation bootcampS11 implementation bootcamp
S11 implementation bootcamp
 
Coding from Application Container Cloud to Oracle JET
Coding from Application Container Cloud to Oracle JETCoding from Application Container Cloud to Oracle JET
Coding from Application Container Cloud to Oracle JET
 
JFall 2016: Oracle JET Session
JFall 2016: Oracle JET SessionJFall 2016: Oracle JET Session
JFall 2016: Oracle JET Session
 
Useful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaUseful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with Java
 
Overview of Eclipse technologies
Overview of Eclipse technologiesOverview of Eclipse technologies
Overview of Eclipse technologies
 
Oracle ADF Architecture TV - Planning & Getting Started - Team, Skills and D...
Oracle ADF Architecture TV -  Planning & Getting Started - Team, Skills and D...Oracle ADF Architecture TV -  Planning & Getting Started - Team, Skills and D...
Oracle ADF Architecture TV - Planning & Getting Started - Team, Skills and D...
 
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
 
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with OracleMobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
 
Microservices + Oracle: A Bright Future
Microservices + Oracle: A Bright FutureMicroservices + Oracle: A Bright Future
Microservices + Oracle: A Bright Future
 
Down-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EEDown-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EE
 
Oracle JET, with JET Mobile Content
Oracle JET, with JET Mobile ContentOracle JET, with JET Mobile Content
Oracle JET, with JET Mobile Content
 
Open Security Controls Assessment Language (OSCAL) - 1st Workshop, Nov 5-7, 2019
Open Security Controls Assessment Language (OSCAL) - 1st Workshop, Nov 5-7, 2019Open Security Controls Assessment Language (OSCAL) - 1st Workshop, Nov 5-7, 2019
Open Security Controls Assessment Language (OSCAL) - 1st Workshop, Nov 5-7, 2019
 
Oracle Open World Exadata Monitoring and Management with EM12c
Oracle Open World Exadata Monitoring and Management with EM12cOracle Open World Exadata Monitoring and Management with EM12c
Oracle Open World Exadata Monitoring and Management with EM12c
 
State of NetBeans
State of NetBeansState of NetBeans
State of NetBeans
 
Oracle JET
Oracle JETOracle JET
Oracle JET
 
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374
 

Viewers also liked

PLNOG 13: Adam Obszyński: DNSSEC – Cryptography in the service of the secure DNS
PLNOG 13: Adam Obszyński: DNSSEC – Cryptography in the service of the secure DNSPLNOG 13: Adam Obszyński: DNSSEC – Cryptography in the service of the secure DNS
PLNOG 13: Adam Obszyński: DNSSEC – Cryptography in the service of the secure DNSPROIDEA
 
PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...
PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...
PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...PROIDEA
 
PLNOG 13: Michał Dubiel: OpenContrail software architecture
PLNOG 13: Michał Dubiel: OpenContrail software architecturePLNOG 13: Michał Dubiel: OpenContrail software architecture
PLNOG 13: Michał Dubiel: OpenContrail software architecturePROIDEA
 
JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...
JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...
JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...PROIDEA
 
PLNOG15: Find the location of your superhero with 802.11 - Sebastian Pasternacki
PLNOG15: Find the location of your superhero with 802.11 - Sebastian PasternackiPLNOG15: Find the location of your superhero with 802.11 - Sebastian Pasternacki
PLNOG15: Find the location of your superhero with 802.11 - Sebastian PasternackiPROIDEA
 
PLNOG15: What about latency? - Piotr Jabłoński
PLNOG15: What about latency? - Piotr JabłońskiPLNOG15: What about latency? - Piotr Jabłoński
PLNOG15: What about latency? - Piotr JabłońskiPROIDEA
 
Atmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern DatacenterAtmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern DatacenterPROIDEA
 
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...PROIDEA
 
4Developers 2015: Continuous Security in DevOps - Maciej Lasyk
4Developers 2015: Continuous Security in DevOps - Maciej Lasyk4Developers 2015: Continuous Security in DevOps - Maciej Lasyk
4Developers 2015: Continuous Security in DevOps - Maciej LasykPROIDEA
 
PLNOG15: Network Automation and Programmability Abstraction Layer with Multiv...
PLNOG15: Network Automation and Programmability Abstraction Layer with Multiv...PLNOG15: Network Automation and Programmability Abstraction Layer with Multiv...
PLNOG15: Network Automation and Programmability Abstraction Layer with Multiv...PROIDEA
 
PLNOG15: Network Migration and Service Assurance using Smart SFP Modules - To...
PLNOG15: Network Migration and Service Assurance using Smart SFP Modules - To...PLNOG15: Network Migration and Service Assurance using Smart SFP Modules - To...
PLNOG15: Network Migration and Service Assurance using Smart SFP Modules - To...PROIDEA
 
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech DworakowskiPROIDEA
 
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel JedrzejewskiPROIDEA
 
CONFidence 2015: Polska cyber armia ochotnikow
CONFidence 2015: Polska cyber armia ochotnikowCONFidence 2015: Polska cyber armia ochotnikow
CONFidence 2015: Polska cyber armia ochotnikowPROIDEA
 
JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...
JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...
JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...PROIDEA
 
PLNOG 13: Piotr Szolkowski: 100G Ethernet – Case Study
PLNOG 13: Piotr Szolkowski: 100G Ethernet – Case StudyPLNOG 13: Piotr Szolkowski: 100G Ethernet – Case Study
PLNOG 13: Piotr Szolkowski: 100G Ethernet – Case StudyPROIDEA
 
JDD2014: REST API versioning practice: from header to model - Łukasz Wierzbicki
JDD2014: REST API versioning practice: from header to model - Łukasz WierzbickiJDD2014: REST API versioning practice: from header to model - Łukasz Wierzbicki
JDD2014: REST API versioning practice: from header to model - Łukasz WierzbickiPROIDEA
 
PLNOG15: Is there something less complicated than connecting two LAN networks...
PLNOG15: Is there something less complicated than connecting two LAN networks...PLNOG15: Is there something less complicated than connecting two LAN networks...
PLNOG15: Is there something less complicated than connecting two LAN networks...PROIDEA
 

Viewers also liked (20)

PLNOG 13: Adam Obszyński: DNSSEC – Cryptography in the service of the secure DNS
PLNOG 13: Adam Obszyński: DNSSEC – Cryptography in the service of the secure DNSPLNOG 13: Adam Obszyński: DNSSEC – Cryptography in the service of the secure DNS
PLNOG 13: Adam Obszyński: DNSSEC – Cryptography in the service of the secure DNS
 
PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...
PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...
PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...
 
PLNOG 13: Michał Dubiel: OpenContrail software architecture
PLNOG 13: Michał Dubiel: OpenContrail software architecturePLNOG 13: Michał Dubiel: OpenContrail software architecture
PLNOG 13: Michał Dubiel: OpenContrail software architecture
 
JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...
JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...
JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...
 
PLNOG15: Find the location of your superhero with 802.11 - Sebastian Pasternacki
PLNOG15: Find the location of your superhero with 802.11 - Sebastian PasternackiPLNOG15: Find the location of your superhero with 802.11 - Sebastian Pasternacki
PLNOG15: Find the location of your superhero with 802.11 - Sebastian Pasternacki
 
PLNOG15: What about latency? - Piotr Jabłoński
PLNOG15: What about latency? - Piotr JabłońskiPLNOG15: What about latency? - Piotr Jabłoński
PLNOG15: What about latency? - Piotr Jabłoński
 
Atmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern DatacenterAtmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern Datacenter
 
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
 
4Developers 2015: Continuous Security in DevOps - Maciej Lasyk
4Developers 2015: Continuous Security in DevOps - Maciej Lasyk4Developers 2015: Continuous Security in DevOps - Maciej Lasyk
4Developers 2015: Continuous Security in DevOps - Maciej Lasyk
 
PLNOG15: Network Automation and Programmability Abstraction Layer with Multiv...
PLNOG15: Network Automation and Programmability Abstraction Layer with Multiv...PLNOG15: Network Automation and Programmability Abstraction Layer with Multiv...
PLNOG15: Network Automation and Programmability Abstraction Layer with Multiv...
 
PLNOG15: Network Migration and Service Assurance using Smart SFP Modules - To...
PLNOG15: Network Migration and Service Assurance using Smart SFP Modules - To...PLNOG15: Network Migration and Service Assurance using Smart SFP Modules - To...
PLNOG15: Network Migration and Service Assurance using Smart SFP Modules - To...
 
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
 
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
 
CONFidence 2015: Polska cyber armia ochotnikow
CONFidence 2015: Polska cyber armia ochotnikowCONFidence 2015: Polska cyber armia ochotnikow
CONFidence 2015: Polska cyber armia ochotnikow
 
JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...
JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...
JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...
 
PLNOG 13: Piotr Szolkowski: 100G Ethernet – Case Study
PLNOG 13: Piotr Szolkowski: 100G Ethernet – Case StudyPLNOG 13: Piotr Szolkowski: 100G Ethernet – Case Study
PLNOG 13: Piotr Szolkowski: 100G Ethernet – Case Study
 
JDD2014: REST API versioning practice: from header to model - Łukasz Wierzbicki
JDD2014: REST API versioning practice: from header to model - Łukasz WierzbickiJDD2014: REST API versioning practice: from header to model - Łukasz Wierzbicki
JDD2014: REST API versioning practice: from header to model - Łukasz Wierzbicki
 
Crockpot recipes
Crockpot recipesCrockpot recipes
Crockpot recipes
 
PLNOG15: Is there something less complicated than connecting two LAN networks...
PLNOG15: Is there something less complicated than connecting two LAN networks...PLNOG15: Is there something less complicated than connecting two LAN networks...
PLNOG15: Is there something less complicated than connecting two LAN networks...
 
nakabayasi m
nakabayasi mnakabayasi m
nakabayasi m
 

Similar to JDD2014: Enforcing architecture patterns with static code analysis - Pablo Barros

What is DevOps?
What is DevOps?What is DevOps?
What is DevOps?jeckels
 
Oracle ADF Architecture TV - Development - Version Control
Oracle ADF Architecture TV - Development - Version ControlOracle ADF Architecture TV - Development - Version Control
Oracle ADF Architecture TV - Development - Version ControlChris Muir
 
Oracle Management Cloud
Oracle Management CloudOracle Management Cloud
Oracle Management CloudFabio Batista
 
Mastering DevOps With Oracle
Mastering DevOps With OracleMastering DevOps With Oracle
Mastering DevOps With OracleKelly Goetsch
 
IOUG at Coors Field ASH and AWR in EM12c!
IOUG at Coors Field ASH and AWR in EM12c!IOUG at Coors Field ASH and AWR in EM12c!
IOUG at Coors Field ASH and AWR in EM12c!Kellyn Pot'Vin-Gorman
 
JDD2014: Multitenant Search - Pablo Barros
JDD2014: Multitenant Search - Pablo BarrosJDD2014: Multitenant Search - Pablo Barros
JDD2014: Multitenant Search - Pablo BarrosPROIDEA
 
OOW15 - Oracle Enterprise Manager Cloud Control for Managing Oracle E-Busines...
OOW15 - Oracle Enterprise Manager Cloud Control for Managing Oracle E-Busines...OOW15 - Oracle Enterprise Manager Cloud Control for Managing Oracle E-Busines...
OOW15 - Oracle Enterprise Manager Cloud Control for Managing Oracle E-Busines...vasuballa
 
Java Community and Overview Track - March 2016
Java Community and Overview Track - March 2016Java Community and Overview Track - March 2016
Java Community and Overview Track - March 2016Yolande Poirier
 
Oracle Developer Cloud - 소개 (신기능 포함)
Oracle Developer Cloud - 소개 (신기능 포함)Oracle Developer Cloud - 소개 (신기능 포함)
Oracle Developer Cloud - 소개 (신기능 포함)Mee Nam Lee
 
Profiling of Engagers and Converters with Audience Analytics and Look-alike M...
Profiling of Engagers and Converters with Audience Analytics and Look-alike M...Profiling of Engagers and Converters with Audience Analytics and Look-alike M...
Profiling of Engagers and Converters with Audience Analytics and Look-alike M...Datacratic
 
Streamline it management
Streamline it managementStreamline it management
Streamline it managementDLT Solutions
 
Interoperability: The Elephants in the Room & What We're Doing About Them
Interoperability: The Elephants in the Room & What We're Doing About ThemInteroperability: The Elephants in the Room & What We're Doing About Them
Interoperability: The Elephants in the Room & What We're Doing About ThemMark Voelker
 
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan WielengaCoding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan WielengaJAXLondon_Conference
 
Oracle SQL Developer Data Modeler - for SQL Server
Oracle SQL Developer Data Modeler - for SQL ServerOracle SQL Developer Data Modeler - for SQL Server
Oracle SQL Developer Data Modeler - for SQL ServerJeff Smith
 
Java Community News - September 2015
Java Community News - September 2015Java Community News - September 2015
Java Community News - September 2015Yolande Poirier
 
Beneficios de la coexistencia de ambientes híbridos utilizando SOA
Beneficios de la coexistencia de ambientes híbridos utilizando SOABeneficios de la coexistencia de ambientes híbridos utilizando SOA
Beneficios de la coexistencia de ambientes híbridos utilizando SOASoftware Guru
 
10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScriptGeertjan Wielenga
 
Migrating Oracle Forms Using Oracle Application Express
Migrating Oracle Forms Using Oracle Application ExpressMigrating Oracle Forms Using Oracle Application Express
Migrating Oracle Forms Using Oracle Application ExpressDavidPeake15
 

Similar to JDD2014: Enforcing architecture patterns with static code analysis - Pablo Barros (20)

What is DevOps?
What is DevOps?What is DevOps?
What is DevOps?
 
Oracle ADF Architecture TV - Development - Version Control
Oracle ADF Architecture TV - Development - Version ControlOracle ADF Architecture TV - Development - Version Control
Oracle ADF Architecture TV - Development - Version Control
 
Oracle Management Cloud
Oracle Management CloudOracle Management Cloud
Oracle Management Cloud
 
Mastering DevOps With Oracle
Mastering DevOps With OracleMastering DevOps With Oracle
Mastering DevOps With Oracle
 
Em13c New Features- Two of Two
Em13c New Features- Two of TwoEm13c New Features- Two of Two
Em13c New Features- Two of Two
 
IOUG at Coors Field ASH and AWR in EM12c!
IOUG at Coors Field ASH and AWR in EM12c!IOUG at Coors Field ASH and AWR in EM12c!
IOUG at Coors Field ASH and AWR in EM12c!
 
JDD2014: Multitenant Search - Pablo Barros
JDD2014: Multitenant Search - Pablo BarrosJDD2014: Multitenant Search - Pablo Barros
JDD2014: Multitenant Search - Pablo Barros
 
OOW15 - Oracle Enterprise Manager Cloud Control for Managing Oracle E-Busines...
OOW15 - Oracle Enterprise Manager Cloud Control for Managing Oracle E-Busines...OOW15 - Oracle Enterprise Manager Cloud Control for Managing Oracle E-Busines...
OOW15 - Oracle Enterprise Manager Cloud Control for Managing Oracle E-Busines...
 
Java Community and Overview Track - March 2016
Java Community and Overview Track - March 2016Java Community and Overview Track - March 2016
Java Community and Overview Track - March 2016
 
Oracle Developer Cloud - 소개 (신기능 포함)
Oracle Developer Cloud - 소개 (신기능 포함)Oracle Developer Cloud - 소개 (신기능 포함)
Oracle Developer Cloud - 소개 (신기능 포함)
 
Profiling of Engagers and Converters with Audience Analytics and Look-alike M...
Profiling of Engagers and Converters with Audience Analytics and Look-alike M...Profiling of Engagers and Converters with Audience Analytics and Look-alike M...
Profiling of Engagers and Converters with Audience Analytics and Look-alike M...
 
Streamline it management
Streamline it managementStreamline it management
Streamline it management
 
Interoperability: The Elephants in the Room & What We're Doing About Them
Interoperability: The Elephants in the Room & What We're Doing About ThemInteroperability: The Elephants in the Room & What We're Doing About Them
Interoperability: The Elephants in the Room & What We're Doing About Them
 
MVC 1.0 / JSR 371
MVC 1.0 / JSR 371MVC 1.0 / JSR 371
MVC 1.0 / JSR 371
 
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan WielengaCoding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
 
Oracle SQL Developer Data Modeler - for SQL Server
Oracle SQL Developer Data Modeler - for SQL ServerOracle SQL Developer Data Modeler - for SQL Server
Oracle SQL Developer Data Modeler - for SQL Server
 
Java Community News - September 2015
Java Community News - September 2015Java Community News - September 2015
Java Community News - September 2015
 
Beneficios de la coexistencia de ambientes híbridos utilizando SOA
Beneficios de la coexistencia de ambientes híbridos utilizando SOABeneficios de la coexistencia de ambientes híbridos utilizando SOA
Beneficios de la coexistencia de ambientes híbridos utilizando SOA
 
10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript
 
Migrating Oracle Forms Using Oracle Application Express
Migrating Oracle Forms Using Oracle Application ExpressMigrating Oracle Forms Using Oracle Application Express
Migrating Oracle Forms Using Oracle Application Express
 

Recently uploaded

APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Recently uploaded (20)

APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

JDD2014: Enforcing architecture patterns with static code analysis - Pablo Barros

  • 1.
  • 2. Enforcing Architecture PaBerns with StaEc Code Analysis JDD 2014, Krakow -­‐ PL Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Pablo Barros ApplicaEons Architect October 13, 2014
  • 3. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • The opinions and views expressed in this talk are my own, and do not necessarily reflect the opinions or views of my employer. 3
  • 4. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | About me 4
  • 5. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | About me 5
  • 6. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Giveaway • Lean Architecture by Coplien & Bjornvig 6
  • 7. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Agenda The Problem: “Architectural Decay” The SoluEon: “Architectural Agility” Defining your RelaEonships Tracking and Enforcing in AcEon Q&A 7 1 2 3 4 5
  • 8. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | “Architectural Decay” The Problem 8
  • 9. What is So_ware Architecture? Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • IEEE 1471-­‐2000 defines: “So_ware architecture is the fundamental organizaEon of a system, embodied in its components, their relaEonships to each other and the environment, and the principles governing its design and evoluEon.” 9
  • 10. What is So_ware Architecture? Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • IEEE 1471-­‐2000 defines: “So_ware architecture is the fundamental organizaAon of a system, embodied in its components, their relaAonships to each other and the environment, and the principles governing its design and evoluAon.” 10
  • 11. Architecture Degenerates Over Time “As a system evolves, its complexity increases unless work is done to maintain or reduce it.” Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | -­‐-­‐Lehman’s Laws of So.ware Evolu4on (1980) 11
  • 12. Architecture Work as Systems Grow Major Features Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 12 Architecture Work Time/Growth Sefng up foundaEon Rewrite
  • 13. Reasons for “Architecture Decay” Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • Increased system complexity • Architecture is not documented • Developers don’t know or don’t understand • “Shortcuts” caused by Eght deadlines • Division of work on different disperse teams 13
  • 14. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | “Architectural Agility” The SoluAon 14
  • 15. Defining “Architectural Agility” Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 15 • “Just Enough” Informed AnEcipaEon – Dependency Analysis – Real OpEon Analysis – Technical Debt Management
  • 16. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Dependency Analysis • Cost of Change PropagaEon • Visibility of likely affected areas 16 Spring 3.0 Module Dependencies hBp://www.ogrigas.eu/spring/2009/12/diagram-­‐of-­‐spring-­‐3-­‐0-­‐module-­‐dependencies
  • 17. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Technical Debt Management • Refactoring of relaEonships between components is expensive • Lack of “Architecture Agility” compromises “Enhancement Agility” 17
  • 18. Defining your RelaEonships Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 18
  • 19. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | RelaEonships • Layers – Horizontal Slices of the System • Examples: Controller, Service, DAO, Model, View. – How different layers can interact? – And cannot interact? • Modules – VerEcal Slices of the System • Examples: Catalog, Inventory, Ordering, ReporEng. – How different modules can interact? And cannot interact? 19
  • 20. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Layers • Organized in Package-­‐based hierarchy • Layers of a same “Module” are built together in a single JAR • How do we prevent introducing unwanted dependencies between layers? 20
  • 21. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Modules • Few opEons: – OSGi Bundles – Jars – Packages • How do we prevent introducing unwanted dependencies between modules? • How big/small should a module be? 21 Spring 3.0 Module Dependencies hBp://www.ogrigas.eu/spring/2009/12/diagram-­‐of-­‐spring-­‐3-­‐0-­‐module-­‐dependencies
  • 22. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Packages You want to be able to slice and dice them 22 • Adopt a package convenEon and sEck with it! • Package-­‐by-­‐feature vs. Package-­‐by-­‐Layer • For example: com.company.product.module.layer! com.company.product.layer.module!
  • 23. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Packages Compare these approaches: 23 • Package-­‐by-­‐layer • Package-­‐by-­‐feature
  • 24. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | AnE-­‐PaBerns Not just your average “code smell” • Big ball of Mud • Circular Dependency • Jumble • Object cesspool • Object orgy • SequenEal coupling 24
  • 25. Tracking and Enforcing in AcEon Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 25
  • 26. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | StaEc Code Analysis (SCA) • Cheaper and more efficient to find certain types of bugs than code reviews – Not meant to replace them • Reduce need for knowledge of large frameworks • Allow for excepEons (as opposed to a compiler) • Good at Enforcing Standards and Best PracEces • Can be Automated • Early in the Development Process 26
  • 27. StaEc Code Analysis and the “Big Picture” javac! Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 27
  • 28. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Common Usage of SCA 28 • Finding bugs and code smells • Security vulnerabiliEes (certain types) • Unit test coverage
  • 29. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Tools • General – NaEve IDE Support • Eclipse, IntelliJ, Jdeveloper – FindBugs – Coverity • Dependency-­‐analyzer – Dependency Finder – JDepend 29 • Architecture-­‐focus – Sonargraph – Lafx Architect – Structure101
  • 30. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Demo Spring Petclinic Sample ApplicaAon • Define Layers and Slices • Plugging into the IDE • Image Credit: hBps://speakerdeck.com /michaelisvy/spring-­‐petclinic-­‐sample-­‐applicaEon 30
  • 31. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Making it Work • Integrate into Build System • Define Owners • Maintain and Grow set of Rules – New Rules come out of Code Reviews findings and discussions – Rules are categorized in different Severity Levels • Define AcEons required depending on different Severity Levels • Follow through 31
  • 32. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Measuring Quality • Not every warning needs to be “Fixed” • Keep a pulse on overall number of warnings • Focus on High Priority warnings • Monitor – Overall number of warnings – Code fragmentaEon – Code coverage (Unit tests) 32
  • 33. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Final Thoughts 1. Take the first step, download and evaluate different tools 2. Look at your current system 3. Define basic structures to “stop the bleeding” 4. Integrate into your build system 5. Incrementally tackle and solve problems as you work on different areas of your applicaEon Be smart around your package structure! 33
  • 34. Also checkout session: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Q&A Thank you! 34 MulAtenant Search Tomorrow – 17:00 <Sputnik Track>
  • 35. References and Further Reading • hBp://www.crosstalkonline.org/storage/issue-­‐archives/ 2010/201011/201011-­‐Brown.pdf • hBp://www.ksi.edu/seke/Proceedings/seke11/166_Lei_Zhang.pdf • hBp://www.infoq.com/arEcles/architecture-­‐and-­‐agility-­‐good-­‐friends • hBp://www.sonarqube.org/evaluate-­‐your-­‐technical-­‐debt-­‐with-­‐sonar/ Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 35
  • 36. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 36