SlideShare a Scribd company logo
1 of 41
WTF is the core/mobile
divide
image
core is testable & mobile
is not
...
image
Android is a library
image
image
A brief history of
architecture
Software architecture refers to the high level structures of a software system, the discipline of creating
such structures, and the documentation of these structures. It is the set of structures needed to reason
about the software system.
image
CORE MOBILE
Software architecture refers to the high level structures of a software system, the discipline of creating
such structures, and the documentation of these structures. It is the set of structures needed to reason
about the software system.
image
Software architecture refers to the high level structures of a software system, the discipline of creating
such structures, and the documentation of these structures. It is the set of structures needed to reason
about the software system.
image
Software architecture refers to the high level structures of a software system, the discipline of creating
such structures, and the documentation of these structures. It is the set of structures needed to reason
about the software system.
image
Software architecture refers to the high level structures of a software system, the discipline of creating
such structures, and the documentation of these structures. It is the set of structures needed to reason
about the software system.
Why bother
image
image
image
image
image
core
image
image
image
image
image
mobile
image
image
image
divide
image
drawbacks
image
image
this sh*t is hard
image
image
image
image
summation
Android is a wrapper around our real application
Architecture is a way to reason about software & used for guidance
Learn from the past; successes & failures
core is for client business rules & client domain
having business rules all in one place is a big benefit
getting mobile module right will come once you get core right
mobile is for Android ‘mobile’ considerations & MVC MVP framework thoughts
always be conscious when crossing the divide
it’s not always easy to get right!
TLDR
image

More Related Content

Similar to Hack and Tell - wtf is the core mobile divide

Good code-isnt-enough
Good code-isnt-enoughGood code-isnt-enough
Good code-isnt-enoughSkills Matter
 
Architecture: where do you start?
 Architecture: where do you start? Architecture: where do you start?
Architecture: where do you start?Skills Matter
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design Arslan Anwar
 
CASE tools and their effects on software quality
CASE tools and their effects on software qualityCASE tools and their effects on software quality
CASE tools and their effects on software qualityUtkarsh Agarwal
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Mozaic Works
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and DesignRa'Fat Al-Msie'deen
 
Software development life cycle model in OOSE
Software development life cycle model in OOSESoftware development life cycle model in OOSE
Software development life cycle model in OOSENipunMeena
 
Software development life cycle model in OOSE
Software development life cycle model in OOSESoftware development life cycle model in OOSE
Software development life cycle model in OOSENipunMeena
 
Introduction to Software Architecture
Introduction to Software ArchitectureIntroduction to Software Architecture
Introduction to Software ArchitectureYuriy Guts
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownAvisi B.V.
 
Uber's new mobile architecture
Uber's new mobile architectureUber's new mobile architecture
Uber's new mobile architectureDhaval Patel
 
Introduction to Software Reverse Engineering
Introduction to Software Reverse EngineeringIntroduction to Software Reverse Engineering
Introduction to Software Reverse EngineeringTeodoro Cipresso
 
C4_Architecture_Diagrams_CE_Karunagappally.pptx
C4_Architecture_Diagrams_CE_Karunagappally.pptxC4_Architecture_Diagrams_CE_Karunagappally.pptx
C4_Architecture_Diagrams_CE_Karunagappally.pptxDileep Kumar K
 
.NET Architecture for Enterprises
.NET Architecture for Enterprises.NET Architecture for Enterprises
.NET Architecture for EnterprisesWade Wegner
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachBen Stopford
 

Similar to Hack and Tell - wtf is the core mobile divide (20)

Good code-isnt-enough
Good code-isnt-enoughGood code-isnt-enough
Good code-isnt-enough
 
What is Software Architecture?
What is Software Architecture?What is Software Architecture?
What is Software Architecture?
 
Software Development Life Cycle
Software Development Life Cycle Software Development Life Cycle
Software Development Life Cycle
 
Architecture: where do you start?
 Architecture: where do you start? Architecture: where do you start?
Architecture: where do you start?
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design
 
CASE tools and their effects on software quality
CASE tools and their effects on software qualityCASE tools and their effects on software quality
CASE tools and their effects on software quality
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
MVC
MVCMVC
MVC
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and Design
 
Software development life cycle model in OOSE
Software development life cycle model in OOSESoftware development life cycle model in OOSE
Software development life cycle model in OOSE
 
Software development life cycle model in OOSE
Software development life cycle model in OOSESoftware development life cycle model in OOSE
Software development life cycle model in OOSE
 
Introduction to Software Architecture
Introduction to Software ArchitectureIntroduction to Software Architecture
Introduction to Software Architecture
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon Brown
 
Doors Analyst
Doors AnalystDoors Analyst
Doors Analyst
 
Uber's new mobile architecture
Uber's new mobile architectureUber's new mobile architecture
Uber's new mobile architecture
 
Introduction to Software Reverse Engineering
Introduction to Software Reverse EngineeringIntroduction to Software Reverse Engineering
Introduction to Software Reverse Engineering
 
C4_Architecture_Diagrams_CE_Karunagappally.pptx
C4_Architecture_Diagrams_CE_Karunagappally.pptxC4_Architecture_Diagrams_CE_Karunagappally.pptx
C4_Architecture_Diagrams_CE_Karunagappally.pptx
 
.NET Architecture for Enterprises
.NET Architecture for Enterprises.NET Architecture for Enterprises
.NET Architecture for Enterprises
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile Approach
 

Recently uploaded

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 

Recently uploaded (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
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
 

Hack and Tell - wtf is the core mobile divide

  • 1. WTF is the core/mobile divide
  • 3. core is testable & mobile is not ...
  • 5. Android is a library
  • 8. A brief history of architecture Software architecture refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures. It is the set of structures needed to reason about the software system.
  • 9. image CORE MOBILE Software architecture refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures. It is the set of structures needed to reason about the software system.
  • 10. image Software architecture refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures. It is the set of structures needed to reason about the software system.
  • 11. image Software architecture refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures. It is the set of structures needed to reason about the software system.
  • 12. image Software architecture refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures. It is the set of structures needed to reason about the software system.
  • 14. image
  • 15. image
  • 16. image
  • 17. image
  • 18. image
  • 19. core
  • 20. image
  • 21. image
  • 22. image
  • 23. image
  • 24. image
  • 26. image
  • 27. image
  • 28. image
  • 30. image
  • 32. image
  • 33. image
  • 34. this sh*t is hard
  • 35. image
  • 36. image
  • 37. image
  • 38. image
  • 40. Android is a wrapper around our real application Architecture is a way to reason about software & used for guidance Learn from the past; successes & failures core is for client business rules & client domain having business rules all in one place is a big benefit getting mobile module right will come once you get core right mobile is for Android ‘mobile’ considerations & MVC MVP framework thoughts always be conscious when crossing the divide it’s not always easy to get right! TLDR
  • 41. image

Editor's Notes

  1. All our apps have two modules /core/ and /mobile/. Just a little refresher about the aim & values of these two modules. What behaviour belongs in core and how we don't always get it right but we always learn
  2. W T F. Who likes the divide? Who dislikes the divide? Who thinks they understand the divide? Who has no clue what the divide is about?
  3. whilst this is ~correct, it is the wrong way to think about it
  4. Android is implementation detail, android sdk vs android as a language. Talking about the SDK
  5. Who cares that we program on Android any more, clients don’t care, users don’t care, dom doesn’t care, we don’t care!
  6. Android is just a wrapper around our REAL application. Android is the gold wrapper and we code teh juicy chocolate inside
  7. the high level structures of a software system. done
  8. the discipline of creating such structures. It gives us some rules and continuation, everyone loves patterns in their life.
  9. and the documentation of these structures. We do document I’m just trolling.
  10. It is the set of structures needed to reason about the software system. It makes us think - why is this like this, why am I being pushed in this direction, what is the reasoning behind this - which leads to further questions but they turn into questions about the domain and about our REAL application.
  11. Why even bother with any type of architecture, or trying to split our code into two code bases - it’s so annoying when you can’t reference some code that you need. Many people have trodden this path before, they must be onto something right ...
  12. A lot of clever people care about this way of working.
  13. It is the set of structures needed to reason about the software system. It makes us think - why is this like this, why am I being pushed in this direction, what is the reasoning behind this - which leads to further questions but they turn into questions about the domain and about our REAL application.
  14. Jeffery Palermo's "Onion Architecture"
  15. we should be following in the footsteps of our predecessors
  16. we should be learning from what people have done before. Just because Android didn’t exist doesn’t mean knowledge of large systems did not exist. 1905 Also not remembering success codemns you to NOT repeat it!
  17. module:core
  18. The core is the core of the application. “the part of something that is central to its existence or character.” That is to say “it is core to the value of the application”. It’s where everything specific to the application about client business rules & client domain should sit.
  19. Business Rules A business rule is a rule that defines or constrains some aspect of business and always resolves to either true or false. Business rules are intended to assert business structure or to control or influence the behavior of the business. Business rules describe the operations, definitions and constraints that apply to an organization. Business rules can apply to people, processes, corporate behavior and computing systems in an organization, and are put in place to help the organization achieve its goals. For example a business rule might state that no credit check is to be performed on return customers.
  20. Domain Driven Design - eric evans implementing domain driven design - vaughn vernon Domain Driven Design Quickly - InfoQ (Abel Avram)
  21. Just because it looks like a duck (and quacks like a duck) doesn’t mean it’s a real duck! Just because it’s a java only class does not mean it belongs in the core module.
  22. Just because it’s intrinsic to the application does not mean it’s implementation sits in core. For example: doing http requests should not sit in core. Perhaps an interface declaring how the core wants to do requests could sit there, but not the code itself. The declaring interface can be called a Port and the implementation (outside of core) the adapter. This is like in nature where a plant has a specific flower shape to allow for it to be pollinated. The flower NEEDS the humming bird but the hummingbirds implementation is outside of the core plant.
  23. module: mobile For me Mobile is less of a worry and it falls into two camps.
  24. 1 . It is the great unknown. If you get core right, either we’ll learn what we want to do with mobile or it will just fall into place itself.
  25. 2 . Android is in charge you should be considerate of the platform you’re on, optimisations etc
  26. Mobile is where you would discuss, architectures like this.
  27. nothing lives in the divide, but you still have to considerate. You are constantly crossing whenever you’re writing code, although it doesn’t physically exist you have to be aware of where you are.
  28. drawbacks of division .. or are they
  29. You can’t just do whatever you want, you have to constantly be thinking where should this code sit. This is a good thing!
  30. You notice that something is different. You want to use an Android helper class, but you’re in core at the moment! This is annoying, but also it’s a code smell that something is wrong. Something is living at the wrong level of abstraction. Perhaps this class has too many responsibilities. Perhaps a business rule is missing. Perhaps there is a java way to do the same thing! (your leaning on Android unnecessarily)
  31. yes, yes it is. It’s about learning and evolving
  32. Talking about it, discussions can give new insights
  33. trying new things to get over problems to embrace change
  34. learning from mistakes. We must have been through 10 apps with this idea, and each time the idea evolves or we find out something that doesn’t quite work or does work!
  35. we learn together, from our failures & our successes