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

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
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
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
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
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
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
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 

Recently uploaded (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
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
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
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...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
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
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 

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