SlideShare a Scribd company logo
1 of 59
Download to read offline
What's my Modularity
@bobpaulin
http://www2.pictures.zimbio.com/gi/Super+Rugby+Rd+12+Rebels+v+Reds+-eWcZZxaaJVl.jpg
“The bearing of a child takes nine
months, no matter how many
women are assigned”
- Fred Brooks
But could we make 9 babies in 9
Months….
http://www.smh.com.au/ffximage/2005/07/17/wrestling_wideweb__430x250.jpg
What is Modularity?
UNIX Rule of Modularity
Developers should build a program out of
simple parts connected by well defined
interfaces, so problems are local, and parts
of the program can be replaced in future
versions to support new features. This rule
aims to save time on debugging code that is
complex, long, and unreadable.
- Eric Raymond
What makes a module?
Java Application Architecture
Kirk Knoernschild
Testable
Deployable
Manageable
Natively Reusable
Composable
Stateless
Designing Modules
The modularizations include the
design decisions which must be
made before the work on
independent modules can begin.
- David Parnas
Changeability
Independent Development
Comprehensibility
A biological standard?
Evolvable
http://a66c7b.medialib.glogster.com/media/0c/0cdf43b19a5b5ae9f51f46208517c80434e08093c
52c679bb996022c27d9e0b8/cell-division-background.jpg
Transplantable
http://www.thinkgeek.com/product/e72e/
Containable
https://www.niaid.nih.gov/SiteCollectionImages/topics/im
munesystem/humanTCellSlide.jpg
Java Out of the Box
What's Missing in Java?
Versioning
1.0.0
Protection for Internal Classes
Security from unwanted classes
How Do We Deal?
Dependency Injection
Dependency Management
A good start but….
It doesn't actually stop us from doing
bad things
Project Jigsaw
➔ JEP 200: The Modular JDK
➔ JEP 201: Modular Source Code
➔ JEP 220: Modular Run-Time Images
➔ JSR 376: Java Platform Module System
Early Release Stuff working!
https://jdk9.java.net/jigsaw/
Inside a Module
module-info.java
module java.security.sasl {
requires java.logging;
exports javax.security.sasl;
exports com.sun.security.sasl.util to
jdk.security.jgss;
provides java.security.Provider with
com.sun.security.sasl.Provider;
}
No more JRE vs JDK Distinction
jlink
Build your own minimalist runtime!
Promised but not yet delivered
https://www.nlm.nih.gov/medlineplus/magazine/issues/fall10/articles/fall10pg5.html
OSGi
OSGi provides runtime modularity
Converting the Ball Of Mud to OSGi
Break Cyclical Dependencies
Consolidate cycle to one Jar
Consolidate cycle to separate Jar
Create BundleActivator classes
Register Services.
Import Services
Virtualization
Docker
Demo
Converting single JVM OSGi to
Containers
Add Docker File Generation to
Gradle
Add RemoteServiceAdmin
Build Docker Images and Start
When to use….
Parting thoughts for good modular
code….
No cyclical dependencies
Know how your modules need to
scale
Keep External Interfaces simple
Bob Paulin
Email
bob@bobpaulin.com Or
bob@apache.org
Twitter
@bobpaulin
GitHub
https://github.com/bobpaulin
CJUG
Meetup
http://www.meetup.com/ChicagoJUG/
Twitter
@cjug
Devoxx4Kids
Chicagoland
Website
http://devoxx4kids.org/usa/chicago/
http://www.meetup.com/Devoxx4Kids-
Chicagoland-Area/
Twitter
@devoxx4kids_chi
Off Heap
Java Pubhouse
Website
http://www.javaoffheap.com/
http://www.javapubhouse.com/
Twitter
@offheap
References
Parnas, D. L. On the criteria to be used in decomposing systems into modules.
Commun. ACM 15, 12 (December 1972), 1053-1058.
DOI=10.1145/361598.361623 http://doi.acm.org/10.1145/361598.361623
Knoernschild, Kirk. Java Application Architecture: Modularity Patterns with
Examples Using OSGi Addison-Wesley Professional 2012
Brooks, Fred. The Mythical Man-Month: Essays on Software Engineering
Addison-Wesley 1975
Raymond, Eric S. The Art of Unix Programming Addison-Wesley 2003
Perlis, Alan. Epigrams in Programming ACM SIGPLAN Notices 17 (September
1982) http://www.cs.yale.edu/homes/perlis-alan/quotes.html
Links
● Sonar http://www.sonarqube.org/
● Sonar Source Dashboard http://nemo.sonarqube.org/dashboard/index
● Docker https://www.docker.com/
● Apache Felix http://felix.apache.org/
● Amdatu Remote http://www.amdatu.org/components/remote.html
● Gradle https://gradle.org/
● Gradle Templates https://github.com/townsfolk/gradle-templates
● Apache Tika https://tika.apache.org/
● Tesseract OCR https://github.com/tesseract-ocr/tesseract
● Project Jigsaw http://openjdk.java.net/projects/jigsaw/

More Related Content

Viewers also liked

120208市川tmo講座発表最終ページ入り(竹中)
120208市川tmo講座発表最終ページ入り(竹中)120208市川tmo講座発表最終ページ入り(竹中)
120208市川tmo講座発表最終ページ入り(竹中)Toshiharu Takenaka
 
Perspective production studio
Perspective production studioPerspective production studio
Perspective production studioalladvertising
 
Рейтинг эффективности интернет-присутствия российских политических партий
Рейтинг эффективности интернет-присутствия российских политических партийРейтинг эффективности интернет-присутствия российских политических партий
Рейтинг эффективности интернет-присутствия российских политических партийalladvertising
 
I phoneアプリ入門 第5回
I phoneアプリ入門 第5回I phoneアプリ入門 第5回
I phoneアプリ入門 第5回Sachiko Kajishima
 
9be68fd865574bbbc9ae2d12d08fe6e8
9be68fd865574bbbc9ae2d12d08fe6e89be68fd865574bbbc9ae2d12d08fe6e8
9be68fd865574bbbc9ae2d12d08fe6e8Jatupoom Moonthep
 
Posicionament Seo a Google
Posicionament Seo a GooglePosicionament Seo a Google
Posicionament Seo a Googleaula20_2012
 
Агентство Реклама
Агентство РекламаАгентство Реклама
Агентство Рекламаalladvertising
 

Viewers also liked (20)

Flip book
Flip bookFlip book
Flip book
 
120208市川tmo講座発表最終ページ入り(竹中)
120208市川tmo講座発表最終ページ入り(竹中)120208市川tmo講座発表最終ページ入り(竹中)
120208市川tmo講座発表最終ページ入り(竹中)
 
Indices 06 jul2013040613
Indices 06 jul2013040613Indices 06 jul2013040613
Indices 06 jul2013040613
 
Indices 28 aug2013072803
Indices 28 aug2013072803Indices 28 aug2013072803
Indices 28 aug2013072803
 
Perspective production studio
Perspective production studioPerspective production studio
Perspective production studio
 
Caso clínico
Caso clínicoCaso clínico
Caso clínico
 
Facebook
Facebook Facebook
Facebook
 
Рейтинг эффективности интернет-присутствия российских политических партий
Рейтинг эффективности интернет-присутствия российских политических партийРейтинг эффективности интернет-присутствия российских политических партий
Рейтинг эффективности интернет-присутствия российских политических партий
 
I phoneアプリ入門 第5回
I phoneアプリ入門 第5回I phoneアプリ入門 第5回
I phoneアプリ入門 第5回
 
9be68fd865574bbbc9ae2d12d08fe6e8
9be68fd865574bbbc9ae2d12d08fe6e89be68fd865574bbbc9ae2d12d08fe6e8
9be68fd865574bbbc9ae2d12d08fe6e8
 
Indices 15 oct2012052511
Indices 15 oct2012052511Indices 15 oct2012052511
Indices 15 oct2012052511
 
Bi
BiBi
Bi
 
Indices 18 apr2013065440
Indices 18 apr2013065440Indices 18 apr2013065440
Indices 18 apr2013065440
 
Minisol create
Minisol createMinisol create
Minisol create
 
Indices 19 mar 2014
Indices 19 mar 2014Indices 19 mar 2014
Indices 19 mar 2014
 
Posicionament Seo a Google
Posicionament Seo a GooglePosicionament Seo a Google
Posicionament Seo a Google
 
Агентство Реклама
Агентство РекламаАгентство Реклама
Агентство Реклама
 
Indices 27 aug2013065912
Indices 27 aug2013065912Indices 27 aug2013065912
Indices 27 aug2013065912
 
Panther
PantherPanther
Panther
 
Indices 19 jul2013052008
Indices 19 jul2013052008Indices 19 jul2013052008
Indices 19 jul2013052008
 

Similar to What's My Modularity

Java 9 modularity+
Java 9 modularity+Java 9 modularity+
Java 9 modularity+Ivelin Yanev
 
What's new in Gradle 4.0
What's new in Gradle 4.0What's new in Gradle 4.0
What's new in Gradle 4.0Eric Wendelin
 
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build TimesUsing Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build TimesDevOps.com
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolithJudy Breedlove
 
C2B2 WebLogic Administration Training
C2B2 WebLogic Administration TrainingC2B2 WebLogic Administration Training
C2B2 WebLogic Administration TrainingC2B2 Consulting
 
OSGi in Action Chapter 1 and 2
OSGi in Action Chapter 1 and 2OSGi in Action Chapter 1 and 2
OSGi in Action Chapter 1 and 2pjhInovex
 
CodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzleCodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzleCodecamp Romania
 
Java 9 / Jigsaw - LJC / VJUG session (hackday session)
Java 9 / Jigsaw - LJC / VJUG session (hackday session)Java 9 / Jigsaw - LJC / VJUG session (hackday session)
Java 9 / Jigsaw - LJC / VJUG session (hackday session)Mani Sarkar
 
Node.js Development Tools
 Node.js Development Tools Node.js Development Tools
Node.js Development ToolsSofiaCarter4
 
Curious Coders Java Web Frameworks Comparison
Curious Coders Java Web Frameworks ComparisonCurious Coders Java Web Frameworks Comparison
Curious Coders Java Web Frameworks ComparisonHamed Hatami
 
Java in a world of containers
Java in a world of containersJava in a world of containers
Java in a world of containersDocker, Inc.
 
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Arun Gupta
 
[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson LinHanLing Shen
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Flexible delivery options
Flexible delivery options Flexible delivery options
Flexible delivery options Micro Focus
 
Deploy Angular to the Cloud
Deploy Angular to the CloudDeploy Angular to the Cloud
Deploy Angular to the CloudSimona Cotin
 
Exploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott DeegExploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott DeegVMware Tanzu
 
COBOL deployment to .NET or JVM
COBOL deployment to .NET or JVMCOBOL deployment to .NET or JVM
COBOL deployment to .NET or JVMMicro Focus
 

Similar to What's My Modularity (20)

Java 9 modularity+
Java 9 modularity+Java 9 modularity+
Java 9 modularity+
 
What's new in Gradle 4.0
What's new in Gradle 4.0What's new in Gradle 4.0
What's new in Gradle 4.0
 
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build TimesUsing Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolith
 
C2B2 WebLogic Administration Training
C2B2 WebLogic Administration TrainingC2B2 WebLogic Administration Training
C2B2 WebLogic Administration Training
 
OSGi in Action Chapter 1 and 2
OSGi in Action Chapter 1 and 2OSGi in Action Chapter 1 and 2
OSGi in Action Chapter 1 and 2
 
CodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzleCodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzle
 
Java 9 / Jigsaw - LJC / VJUG session (hackday session)
Java 9 / Jigsaw - LJC / VJUG session (hackday session)Java 9 / Jigsaw - LJC / VJUG session (hackday session)
Java 9 / Jigsaw - LJC / VJUG session (hackday session)
 
Node.js Development Tools
 Node.js Development Tools Node.js Development Tools
Node.js Development Tools
 
Curious Coders Java Web Frameworks Comparison
Curious Coders Java Web Frameworks ComparisonCurious Coders Java Web Frameworks Comparison
Curious Coders Java Web Frameworks Comparison
 
Java in a world of containers
Java in a world of containersJava in a world of containers
Java in a world of containers
 
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018
 
[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Java modularity: life after Java 9
Java modularity: life after Java 9Java modularity: life after Java 9
Java modularity: life after Java 9
 
Java 9 Modularity in Action
Java 9 Modularity in ActionJava 9 Modularity in Action
Java 9 Modularity in Action
 
Flexible delivery options
Flexible delivery options Flexible delivery options
Flexible delivery options
 
Deploy Angular to the Cloud
Deploy Angular to the CloudDeploy Angular to the Cloud
Deploy Angular to the Cloud
 
Exploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott DeegExploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott Deeg
 
COBOL deployment to .NET or JVM
COBOL deployment to .NET or JVMCOBOL deployment to .NET or JVM
COBOL deployment to .NET or JVM
 

More from Bob Paulin

Fundraising At Apache
Fundraising At ApacheFundraising At Apache
Fundraising At ApacheBob Paulin
 
Open Development When You're Not in Charge
Open Development When You're Not in ChargeOpen Development When You're Not in Charge
Open Development When You're Not in ChargeBob Paulin
 
Apache When You're Not in Charge
Apache When You're Not in ChargeApache When You're Not in Charge
Apache When You're Not in ChargeBob Paulin
 
Modular Open Source in Java for Now and Later
Modular Open Source in Java for Now and LaterModular Open Source in Java for Now and Later
Modular Open Source in Java for Now and LaterBob Paulin
 
Microservice Networking in Anger
Microservice Networking in AngerMicroservice Networking in Anger
Microservice Networking in AngerBob Paulin
 
User Groups: The Gateway to Apache
User Groups: The Gateway to ApacheUser Groups: The Gateway to Apache
User Groups: The Gateway to ApacheBob Paulin
 
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEMDo more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEMBob Paulin
 
Adding Modularity Afterward with Embedded OSGi
Adding Modularity Afterward with Embedded OSGiAdding Modularity Afterward with Embedded OSGi
Adding Modularity Afterward with Embedded OSGiBob Paulin
 
Continuous delivery with Gradle
Continuous delivery with GradleContinuous delivery with Gradle
Continuous delivery with GradleBob Paulin
 
Frontend 'vs' Backend Getting the Right Mix
Frontend 'vs' Backend   Getting the Right MixFrontend 'vs' Backend   Getting the Right Mix
Frontend 'vs' Backend Getting the Right MixBob Paulin
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBob Paulin
 
Code Quality Practice and Tools
Code Quality Practice and ToolsCode Quality Practice and Tools
Code Quality Practice and ToolsBob Paulin
 

More from Bob Paulin (12)

Fundraising At Apache
Fundraising At ApacheFundraising At Apache
Fundraising At Apache
 
Open Development When You're Not in Charge
Open Development When You're Not in ChargeOpen Development When You're Not in Charge
Open Development When You're Not in Charge
 
Apache When You're Not in Charge
Apache When You're Not in ChargeApache When You're Not in Charge
Apache When You're Not in Charge
 
Modular Open Source in Java for Now and Later
Modular Open Source in Java for Now and LaterModular Open Source in Java for Now and Later
Modular Open Source in Java for Now and Later
 
Microservice Networking in Anger
Microservice Networking in AngerMicroservice Networking in Anger
Microservice Networking in Anger
 
User Groups: The Gateway to Apache
User Groups: The Gateway to ApacheUser Groups: The Gateway to Apache
User Groups: The Gateway to Apache
 
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEMDo more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
 
Adding Modularity Afterward with Embedded OSGi
Adding Modularity Afterward with Embedded OSGiAdding Modularity Afterward with Embedded OSGi
Adding Modularity Afterward with Embedded OSGi
 
Continuous delivery with Gradle
Continuous delivery with GradleContinuous delivery with Gradle
Continuous delivery with Gradle
 
Frontend 'vs' Backend Getting the Right Mix
Frontend 'vs' Backend   Getting the Right MixFrontend 'vs' Backend   Getting the Right Mix
Frontend 'vs' Backend Getting the Right Mix
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache Sling
 
Code Quality Practice and Tools
Code Quality Practice and ToolsCode Quality Practice and Tools
Code Quality Practice and Tools
 

Recently uploaded

Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 

Recently uploaded (20)

Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 

What's My Modularity

Editor's Notes

  1. So today's talk isn't really about anything new and sexy like Microservices or Data Science. However I've found many of the most interesting problems to work with are the ones that we've known about since the dawn of Computer Science and still grapple with today. For example how many people here have been on a project that has fallen behind schedule. Be honest. Ok how many times has the solution been to add more people? An how many of you are still not done? Well this quote should ring pretty true.
  2. 1975 – Mythical Man Month I use it. Leads to the next question
  3. It Depends Can the project actually be broken down It depends on Modularity
  4. So let talk about what I mean by this.
  5. Here's one definition from the Unix Philosophy. I think this answers it pretty well for 2 sentences. But that doesn't really give me enough to work with. Lets go deeper. Lets talk about what makes a module.
  6. Anyone care to take a stab at this? Kirk Knoewschild Definition different Deployable Manageable Testable Natively Reusable Composable Stateless
  7. Simple – need to name Name = purpose Version – software evolves Together should be unique Developer should be able to identify and integrate
  8. Useless if it can only be used in one place It should also be easily removable from an application.
  9. Protect inner workiings from the public Sounds bad but helps with refactoring If exposed people will write code with it Once that happens Piss community off or dance around the problems Ever create a admin interface that a client found?
  10. David Parnas – Module design.
  11. We need to think about this Existing or new we have a tendency towards the ball of mud. (one big class. One big program) Here are some things he mentions we need to think about in his paper
  12. Hard – Fortune telling Where do we have questions. Where are we unclear Good candidate for change Encapsulate things that might change
  13. Loose coupling. The key to making 9 babies Separate deployable units Independent function - Manageable
  14. Cohesion Understood without the rest of the system Lets talk about Java… Java has a number of features that help with modularity ootb
  15. Packages - Groups of classes Imports – Allow classes from other groups into other classes
  16. Ways of protecting implementation details
  17. Currently packages can't be versioned Neither can jars
  18. By default classes are public No good way to restrict people from using them This is why Java never removes anything
  19. Interfaces and Spring Contexts
  20. We need to go beyond this. DI is only a start not a solution Still have public classes. No versioning.
  21. No more rt.jar or tools.jar
  22. Is a upcoming new technology based upon a number of older technologies A lot like virtualization but no hypervisor
  23. Native Libraries Similar Network ports Shared file systems But with this comes added complexity Discovery Orchestration What were code issues are now spread over the whole system