SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
Smalltalk in Large-Scale
Enterprise Architectures

    Rob Vens
    http://www.sepher.com
    rob@sepher.com
Traditional Smalltalk Applications

    Client-Server
    Fat client
    GUI intensive
Recent developments

    Web enabled
    Using web standards
         HTML
         XML
         Soap
         WDSL
         UDDI
    Poor support for distribution, connectivity (i.e.
     with Java and J2EE)
Smalltalk market share

    Negligible – (don’t blame ESUG)

    Largest in 1994 (according to STIC) when
     Smalltalk was competing with C++
    Steep decline since 1995 when Sun
     announced Java
    Now a niche player?
Can you sell Smalltalk to your
management?
    Proven technology is what they want
    If it’s not Java it’s not modern
    Or the old arguments:
         Smalltalk is slow
         Too pure OO
         Object-orientation has failed
The Java onslaught

    Many (if not most) Smalltalk developers
     moved to the Java world
    Many see Microsoft .NET as a more
     attractive alternative, with possibilities to
     continue to work with Smalltalk (Dave
     Simmons’ SmallScript)
But there is another alternative …

    Basic idea is to use Smalltalk as an
     Enterprise Application Integrator (EAI)
    Several architectures are possible to do this
    I will propose a business-centred architecture
What is a business-centred architecture?

    Hub-and-spoke architecture
    All business logic in the hub
    Publish-and-subscribe mechanism in the
     spokes
    Adapters implementing the spokes
    Smalltalk in the hub, anything else in the rest
Core Model
                 Security




     CRM                      Persistency




           JSP              ERP
What is business-centred?

    All business logic is concentrated in one
     logical component
    There is no business logic in any other
     component
         Esp. ERP, CRM
         Also messaging middleware is connected without
          business logic in the middleware tier
    This component is placed in the hub
Why Smalltalk?

    Smalltalk is eminently suited for the business
     logic component because:
         Language and problem domain are closer than
          any language I know
         For the business domain component other
          concerns are important (vs. service components):
              Flexibility
              Extensibility
Characteristics of the domain component

1.    There is an OO model of the business
2.    This model is a Roger Rabbit model
3.    The model is written in UML
4.    It is implemented in Smalltalk as an
      executable
5.    It attempts to be an exact replica of the
      business in software – a kind of simulation
      model
OO model of the business

    Not new for many of you
    Recapitulating:
         OO is (as far as I know) the only modelling tool
          that effectively deals with complexity
         Only OO models can deal with the scalability
          problem (Alan Kays dog house metaphor)
         Three alternatives exist:
              Process modelling
              Data modelling
              Distributed agent models
Roger Rabbit models

    Also called: “active objects”
    What is active in the “real” world is passive in
     the model and vice-versa
    Business processes unfold in a backward-
     chaining process of objects delegating
     responsibilities (Responsibility Driven Design,
     CRC sessions)
    Process model is a “pull model”
    “Out of Control”
UML

    Smalltalk can be the modelling language but I
     hope we can agree that this is not ideal
    UML models need to be executable (OMG
     target in 2.0 and MDA)
    Close mapping between programming
     language and UML needed for the business
     component
         UML support needed in IDE’s!!!
The Smalltalk executable

    Logical component:
         Can be implemented distributed
              EasyBoard model
              CORBA
              Others …
         Probably needs fault-tolerance support (question
          for the audience)
    Contains no technical issues (i.e. database
     transparency, user interface unaware, etc.)
Modelling issues: Simulation science

    The running executable is like a running
     simulation
    Executable models need to deal with
     dynamic behaviour, esp.:
         Waiting lines
         Stochastics
    Smalltalk has deep roots in simulation!
Criterion

       The business component
           can and will run
with all other components unavailable
Hub-and-spoke: the spokes

    This is where Java (or whatever) comes in
    Publish-and-subscribe mechanism
         Well known to Smalltalkers
         Adapters in VisualWorks and VisualAge
         Based on event model in the domain
              MVC dependents
Links between hub and spokes

    Events out, messages in
    No direct dependencies between business
     component and “outside world”
Current work

    Of course, this architecture is not dependent on
     Smalltalk
    Currently implemented in Dutch Public Order and
     Security (mainly Police) with Java used for the hub
         Java creates many problems
         J2EE by long not ready for domain implementations
              Too much focus on database connectivity
              Too little support for active objects
              Internal concurrency not allowed
    Management could not be convinced to use
     Smalltalk 
Thank you

Weitere ähnliche Inhalte

Was ist angesagt?

Brain Cell IT - About our company
Brain Cell IT - About our companyBrain Cell IT - About our company
Brain Cell IT - About our company
Brain Cell IT
 
software-architecture-patterns
software-architecture-patternssoftware-architecture-patterns
software-architecture-patterns
Pallav Kumar
 
Con11257 schifano con11257-best practices for deploying highly scalable virtu...
Con11257 schifano con11257-best practices for deploying highly scalable virtu...Con11257 schifano con11257-best practices for deploying highly scalable virtu...
Con11257 schifano con11257-best practices for deploying highly scalable virtu...
Berry Clemens
 
Con8289 r12 maintenance tips heisler heisler-con8289
Con8289 r12 maintenance tips heisler heisler-con8289Con8289 r12 maintenance tips heisler heisler-con8289
Con8289 r12 maintenance tips heisler heisler-con8289
Berry Clemens
 

Was ist angesagt? (20)

Learning uml 2_part_1
Learning uml 2_part_1Learning uml 2_part_1
Learning uml 2_part_1
 
Acceleo Day - Orange
Acceleo Day - OrangeAcceleo Day - Orange
Acceleo Day - Orange
 
Forms 2 Future - the ongoing journey into the future for Oracle based organiz...
Forms 2 Future - the ongoing journey into the future for Oracle based organiz...Forms 2 Future - the ongoing journey into the future for Oracle based organiz...
Forms 2 Future - the ongoing journey into the future for Oracle based organiz...
 
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
 
BPMN, BPEL, ESB or maybe Java? What should I use to implement my project?
BPMN, BPEL, ESB or maybe Java? What should I use to implement my project?BPMN, BPEL, ESB or maybe Java? What should I use to implement my project?
BPMN, BPEL, ESB or maybe Java? What should I use to implement my project?
 
Oracle Fusion applications 101 [2010 OAUG Collaborate]
Oracle Fusion applications 101 [2010 OAUG Collaborate]Oracle Fusion applications 101 [2010 OAUG Collaborate]
Oracle Fusion applications 101 [2010 OAUG Collaborate]
 
Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...
 
Dom introduction-website-v1.0
Dom introduction-website-v1.0Dom introduction-website-v1.0
Dom introduction-website-v1.0
 
Case Study of Financial Web System Development and Operations with Oracle Web...
Case Study of Financial Web System Development and Operations with Oracle Web...Case Study of Financial Web System Development and Operations with Oracle Web...
Case Study of Financial Web System Development and Operations with Oracle Web...
 
Brain Cell IT - About our company
Brain Cell IT - About our companyBrain Cell IT - About our company
Brain Cell IT - About our company
 
Mohamed attia farag
Mohamed attia faragMohamed attia farag
Mohamed attia farag
 
software-architecture-patterns
software-architecture-patternssoftware-architecture-patterns
software-architecture-patterns
 
Con11257 schifano con11257-best practices for deploying highly scalable virtu...
Con11257 schifano con11257-best practices for deploying highly scalable virtu...Con11257 schifano con11257-best practices for deploying highly scalable virtu...
Con11257 schifano con11257-best practices for deploying highly scalable virtu...
 
Con8289 r12 maintenance tips heisler heisler-con8289
Con8289 r12 maintenance tips heisler heisler-con8289Con8289 r12 maintenance tips heisler heisler-con8289
Con8289 r12 maintenance tips heisler heisler-con8289
 
Interoperable Open Architecture through a Common Component Model
Interoperable Open Architecture through a Common Component ModelInteroperable Open Architecture through a Common Component Model
Interoperable Open Architecture through a Common Component Model
 
Oracle Hatchet Job on Mark Logic
Oracle Hatchet Job on Mark LogicOracle Hatchet Job on Mark Logic
Oracle Hatchet Job on Mark Logic
 
Overall & technical IT Recruitment skills
Overall &  technical IT Recruitment skills Overall &  technical IT Recruitment skills
Overall & technical IT Recruitment skills
 
end2end Enterprise Architecture - Application Architecture
end2end Enterprise Architecture - Application Architectureend2end Enterprise Architecture - Application Architecture
end2end Enterprise Architecture - Application Architecture
 
S424. Soa Mainframe Practices Best And Worst
S424. Soa Mainframe Practices   Best And WorstS424. Soa Mainframe Practices   Best And Worst
S424. Soa Mainframe Practices Best And Worst
 
Java on zSystems zOS
Java on zSystems zOSJava on zSystems zOS
Java on zSystems zOS
 

Ähnlich wie Smalltalk in Large-scale Enterprise Architectures

Introduction to Business Modeling
Introduction to Business ModelingIntroduction to Business Modeling
Introduction to Business Modeling
Laurence White
 
Software architecture-patterns
Software architecture-patternsSoftware architecture-patterns
Software architecture-patterns
pedro
 
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
ghodgkinson
 
Gangadhar_SOA_Resume
Gangadhar_SOA_ResumeGangadhar_SOA_Resume
Gangadhar_SOA_Resume
gangadhar v
 

Ähnlich wie Smalltalk in Large-scale Enterprise Architectures (20)

Smalltalk in large scale enterprise architectures
Smalltalk in large scale enterprise architecturesSmalltalk in large scale enterprise architectures
Smalltalk in large scale enterprise architectures
 
ERP_Up_Down.ppt
ERP_Up_Down.pptERP_Up_Down.ppt
ERP_Up_Down.ppt
 
Introduction to Business Modeling
Introduction to Business ModelingIntroduction to Business Modeling
Introduction to Business Modeling
 
Agile Modeling with Uml and Visual Studio 2010
Agile Modeling with Uml and Visual Studio 2010Agile Modeling with Uml and Visual Studio 2010
Agile Modeling with Uml and Visual Studio 2010
 
Smalltalk speaks dot net
Smalltalk speaks dot netSmalltalk speaks dot net
Smalltalk speaks dot net
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Using Agile Methodologies
Using Agile MethodologiesUsing Agile Methodologies
Using Agile Methodologies
 
Software architecture-patterns
Software architecture-patternsSoftware architecture-patterns
Software architecture-patterns
 
Software arquitectura patron diseño
Software arquitectura patron diseñoSoftware arquitectura patron diseño
Software arquitectura patron diseño
 
[DSC Europe 23] Igor Ilic - Redefining User Experience with Large Language Mo...
[DSC Europe 23] Igor Ilic - Redefining User Experience with Large Language Mo...[DSC Europe 23] Igor Ilic - Redefining User Experience with Large Language Mo...
[DSC Europe 23] Igor Ilic - Redefining User Experience with Large Language Mo...
 
Agile Modeling using the Architecture Tools in VS 2010
Agile Modeling  using the Architecture Tools in VS 2010Agile Modeling  using the Architecture Tools in VS 2010
Agile Modeling using the Architecture Tools in VS 2010
 
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
 
DDD
DDDDDD
DDD
 
Let's talk about... Microservices
Let's talk about... MicroservicesLet's talk about... Microservices
Let's talk about... Microservices
 
NET Event - Migrating WinForm
NET Event - Migrating WinFormNET Event - Migrating WinForm
NET Event - Migrating WinForm
 
Ibt Soa Babson Talk V8
Ibt Soa Babson Talk V8Ibt Soa Babson Talk V8
Ibt Soa Babson Talk V8
 
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons LearnedITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
 
Practical machine learning
Practical machine learningPractical machine learning
Practical machine learning
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code First
 
Gangadhar_SOA_Resume
Gangadhar_SOA_ResumeGangadhar_SOA_Resume
Gangadhar_SOA_Resume
 

Mehr von ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

Mehr von ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Kürzlich hochgeladen

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 

Smalltalk in Large-scale Enterprise Architectures

  • 1. Smalltalk in Large-Scale Enterprise Architectures Rob Vens http://www.sepher.com rob@sepher.com
  • 2. Traditional Smalltalk Applications   Client-Server   Fat client   GUI intensive
  • 3. Recent developments   Web enabled   Using web standards   HTML   XML   Soap   WDSL   UDDI   Poor support for distribution, connectivity (i.e. with Java and J2EE)
  • 4. Smalltalk market share   Negligible – (don’t blame ESUG)   Largest in 1994 (according to STIC) when Smalltalk was competing with C++   Steep decline since 1995 when Sun announced Java   Now a niche player?
  • 5. Can you sell Smalltalk to your management?   Proven technology is what they want   If it’s not Java it’s not modern   Or the old arguments:   Smalltalk is slow   Too pure OO   Object-orientation has failed
  • 6. The Java onslaught   Many (if not most) Smalltalk developers moved to the Java world   Many see Microsoft .NET as a more attractive alternative, with possibilities to continue to work with Smalltalk (Dave Simmons’ SmallScript)
  • 7. But there is another alternative …   Basic idea is to use Smalltalk as an Enterprise Application Integrator (EAI)   Several architectures are possible to do this   I will propose a business-centred architecture
  • 8. What is a business-centred architecture?   Hub-and-spoke architecture   All business logic in the hub   Publish-and-subscribe mechanism in the spokes   Adapters implementing the spokes   Smalltalk in the hub, anything else in the rest
  • 9. Core Model Security CRM Persistency JSP ERP
  • 10. What is business-centred?   All business logic is concentrated in one logical component   There is no business logic in any other component   Esp. ERP, CRM   Also messaging middleware is connected without business logic in the middleware tier   This component is placed in the hub
  • 11. Why Smalltalk?   Smalltalk is eminently suited for the business logic component because:   Language and problem domain are closer than any language I know   For the business domain component other concerns are important (vs. service components):   Flexibility   Extensibility
  • 12. Characteristics of the domain component 1.  There is an OO model of the business 2.  This model is a Roger Rabbit model 3.  The model is written in UML 4.  It is implemented in Smalltalk as an executable 5.  It attempts to be an exact replica of the business in software – a kind of simulation model
  • 13. OO model of the business   Not new for many of you   Recapitulating:   OO is (as far as I know) the only modelling tool that effectively deals with complexity   Only OO models can deal with the scalability problem (Alan Kays dog house metaphor)   Three alternatives exist:   Process modelling   Data modelling   Distributed agent models
  • 14. Roger Rabbit models   Also called: “active objects”   What is active in the “real” world is passive in the model and vice-versa   Business processes unfold in a backward- chaining process of objects delegating responsibilities (Responsibility Driven Design, CRC sessions)   Process model is a “pull model”   “Out of Control”
  • 15. UML   Smalltalk can be the modelling language but I hope we can agree that this is not ideal   UML models need to be executable (OMG target in 2.0 and MDA)   Close mapping between programming language and UML needed for the business component   UML support needed in IDE’s!!!
  • 16. The Smalltalk executable   Logical component:   Can be implemented distributed   EasyBoard model   CORBA   Others …   Probably needs fault-tolerance support (question for the audience)   Contains no technical issues (i.e. database transparency, user interface unaware, etc.)
  • 17. Modelling issues: Simulation science   The running executable is like a running simulation   Executable models need to deal with dynamic behaviour, esp.:   Waiting lines   Stochastics   Smalltalk has deep roots in simulation!
  • 18. Criterion The business component can and will run with all other components unavailable
  • 19. Hub-and-spoke: the spokes   This is where Java (or whatever) comes in   Publish-and-subscribe mechanism   Well known to Smalltalkers   Adapters in VisualWorks and VisualAge   Based on event model in the domain   MVC dependents
  • 20. Links between hub and spokes   Events out, messages in   No direct dependencies between business component and “outside world”
  • 21. Current work   Of course, this architecture is not dependent on Smalltalk   Currently implemented in Dutch Public Order and Security (mainly Police) with Java used for the hub   Java creates many problems   J2EE by long not ready for domain implementations   Too much focus on database connectivity   Too little support for active objects   Internal concurrency not allowed   Management could not be convinced to use Smalltalk 