SlideShare una empresa de Scribd logo
1 de 9
Descargar para leer sin conexión
Rolemodeling as a graphic extension of the
Smalltalk IDE
● Hobby, Experience
● Based on the ideas of Trygve Reenskaug
● 35 years dilemma!
many 1000 lines of code = a big labyrinth
when a developer wants to change anything (old/no doc)
● 35 years only strings for code!
But some times a graphic can say more then 1000 words!
Peter Werner, peter_eh.werner@t-online.de
Introduction & Motivation
Example
A class diagram in a system
browser which represents always
the current code –> that is possible!
Oh – it can be helpful !
But:
● it is to big – scroll, scroll …
To many classes !!!
To many details !!!
● Many people have tried to
intruduce graphic elements into
software development with a
small success – why?
Class diagram
==> we need a smaller graphic?
The feeling of a Role
● E.g. take an actor (an Object) in a theater
● He can play 1 or more Roles
● He can be exchanged by another one without any influence of the
played story
● The story is based on a set of Roles and Relations between
them
● The story gives a statement (parable or Pattern) form the author
==> People and animals learn by playing Roles and they think in
Roles and Pattern intuitive (by default).
==> new point of view on Objects
Definition of Role and Rolemodel
● A Role describes a part of an Object of the real world (Object
System)
– Similar to a class under multiple inheritance
● A Rolemodel describes a part (story/Pattern) of the real world from a
given point of view, called Aspect, by:
– A small fixed set of Roles and
– Relations between the Roles
● Roles have properties e.g.:
– modeled (which is to implement) or
– external, to express how the the Model is to use (incoming,
outgoing). The set of external Roles is called the Environment of
the Model.
Example: Role Relation Diagram
(a view on a Rolemodel; is garphic oriented code)
Methods
value <observed:Observed
Properties
OrderedCollection
add: on; del: on
Properties
get: on; set: on
Scenarios
value ^Observed
value <observed:Observed
setValue <observed:Observed
addDependent <dep:Dependent
removeDependent <dep:Dependent
changed <Symbol with :Observed
User Observer
<
Observed
1
<
Dependent
0-N
update<with<from<
Properties
get: on; set: on
1
value <Observed
value <observed:Observed
The development process
Object
System
Model
Aspect
(= any part of the Object System)
R1
R3
R2
R1*
R4 R2*
Aspects
Object 3
Object 1
Object 2
Object 4
Class
1
Class
4
.....
OO Development
Process
Rolemodeling
● isolated class and method
descriptions
● comments/doc ?
● collecting variables and
methods per class
● detect Aspects
● documents every Aspect
explicit via a Rolemodel,
● so that a Rolmodel has
small number of
collaborating Roles (blue)
● reuse Rolemodels!
Composition
R 1
R1
R 1
R4
R 1
R2
R 1
R3
R 1
R 32
Object
System
Model
R 1
R 12
R 1
R 21
R 1
R 13
R 1
R 22
R 1
R 23
R 1
R 31
R 1
R 34
Aspect 1
Aspect 3
Aspect 2
Object
2
Object
4
Object
1
Object
3
Composition
● define a simple Rolemodel RM
or
● compose it by others:
Composition(RMi) =def.
modify&generalize(
unify i=1...n(
derive&specialize(
RMi) ) )
● simplify it for high reuse,
hide/unhide details and already
completed parts
● plugged = derive + specialize +
plugg it
● add Role Changes = message
call
Role Work Shop (RWS)
Brings a ‘common language’ for all participants of the development process (in
analysis, design, partly implementation) by:
● extending the Smalltalk IDE via some browsers
● which allow to model the top level things of an Application by 4 different
Diagrams (= real graphic statements):
– Role Relation (bit similar to a class diagram)
– Scenario (bit similar to message flow diagram)
– Model Composition (new)
– Design Class (new, complete the Model, can ‘generate’
complete Control Code, strongly separated from *)
● Diagrams have slots for text code snippets
● Detail Code* is always written as text (outside the Rolemodels)
Example: Scenario
(a view on a Rolmodel)
Properties
OrderedCollection(Dependent)
do <D[<Dependent]
Observed := observed
[D] update <#observed with <observed from <Observer
O
User Observer
<
Dependent
value <observed
SC: value <observed:Observed
< input parameter (readOnly)
: input parameter like Smallatlk
^ output parameter

Más contenido relacionado

Destacado

Reef: AJAX the way it should be 
Reef: AJAX the way it should be Reef: AJAX the way it should be 
Reef: AJAX the way it should be ESUG
 
Smalltalk Metaprogramming supports Probabilistic Program Analysis
Smalltalk Metaprogramming supports Probabilistic Program AnalysisSmalltalk Metaprogramming supports Probabilistic Program Analysis
Smalltalk Metaprogramming supports Probabilistic Program AnalysisESUG
 
Pillar: one language for all supports
Pillar: one language for all supportsPillar: one language for all supports
Pillar: one language for all supportsESUG
 
PharoJS
PharoJSPharoJS
PharoJSESUG
 
Pragmas: Literal Messages as Powerful Method Annotations
Pragmas: Literal Messages as Powerful Method AnnotationsPragmas: Literal Messages as Powerful Method Annotations
Pragmas: Literal Messages as Powerful Method AnnotationsESUG
 
Power and Energy Code Profiling in Pharo
Power and Energy Code Profiling in PharoPower and Energy Code Profiling in Pharo
Power and Energy Code Profiling in PharoESUG
 
The Object Repository - Pulling Objects out of the Ecosystem
The Object Repository - Pulling Objects out of the EcosystemThe Object Repository - Pulling Objects out of the Ecosystem
The Object Repository - Pulling Objects out of the EcosystemESUG
 
How to remove tonsil stones naturally 10 home remedies that work
How to remove tonsil stones naturally 10 home remedies that workHow to remove tonsil stones naturally 10 home remedies that work
How to remove tonsil stones naturally 10 home remedies that workhow to get rid of tonsillitis
 
Foods to Eat in Heart Diseases in Hindi Iह्रदय रोग में क्या खाएI
Foods to Eat in Heart Diseases in Hindi Iह्रदय रोग में क्या खाएIFoods to Eat in Heart Diseases in Hindi Iह्रदय रोग में क्या खाएI
Foods to Eat in Heart Diseases in Hindi Iह्रदय रोग में क्या खाएIHerbal Daily
 
Tendencias de la Economía Digital 2016
Tendencias de la Economía Digital 2016Tendencias de la Economía Digital 2016
Tendencias de la Economía Digital 2016George Lever
 
Presentación Gonzalo Baez - eCommerce Day Santiago 2016
Presentación Gonzalo Baez - eCommerce Day Santiago 2016Presentación Gonzalo Baez - eCommerce Day Santiago 2016
Presentación Gonzalo Baez - eCommerce Day Santiago 2016eCommerce Institute
 
Presentación Marco Leon - eCommerce Day Santiago 2016
Presentación Marco Leon - eCommerce Day Santiago 2016Presentación Marco Leon - eCommerce Day Santiago 2016
Presentación Marco Leon - eCommerce Day Santiago 2016eCommerce Institute
 
2.8 cellular respiration
2.8 cellular respiration 2.8 cellular respiration
2.8 cellular respiration Bob Smullen
 
Presentación José Gabriel Carrasco - eCommerce Day Santiago 2016
Presentación José Gabriel Carrasco - eCommerce Day Santiago 2016Presentación José Gabriel Carrasco - eCommerce Day Santiago 2016
Presentación José Gabriel Carrasco - eCommerce Day Santiago 2016eCommerce Institute
 

Destacado (16)

Reef: AJAX the way it should be 
Reef: AJAX the way it should be Reef: AJAX the way it should be 
Reef: AJAX the way it should be 
 
Smalltalk Metaprogramming supports Probabilistic Program Analysis
Smalltalk Metaprogramming supports Probabilistic Program AnalysisSmalltalk Metaprogramming supports Probabilistic Program Analysis
Smalltalk Metaprogramming supports Probabilistic Program Analysis
 
Pillar: one language for all supports
Pillar: one language for all supportsPillar: one language for all supports
Pillar: one language for all supports
 
English Week 2016
English Week 2016English Week 2016
English Week 2016
 
PharoJS
PharoJSPharoJS
PharoJS
 
Pragmas: Literal Messages as Powerful Method Annotations
Pragmas: Literal Messages as Powerful Method AnnotationsPragmas: Literal Messages as Powerful Method Annotations
Pragmas: Literal Messages as Powerful Method Annotations
 
Power and Energy Code Profiling in Pharo
Power and Energy Code Profiling in PharoPower and Energy Code Profiling in Pharo
Power and Energy Code Profiling in Pharo
 
The Object Repository - Pulling Objects out of the Ecosystem
The Object Repository - Pulling Objects out of the EcosystemThe Object Repository - Pulling Objects out of the Ecosystem
The Object Repository - Pulling Objects out of the Ecosystem
 
How to remove tonsil stones naturally 10 home remedies that work
How to remove tonsil stones naturally 10 home remedies that workHow to remove tonsil stones naturally 10 home remedies that work
How to remove tonsil stones naturally 10 home remedies that work
 
Foods to Eat in Heart Diseases in Hindi Iह्रदय रोग में क्या खाएI
Foods to Eat in Heart Diseases in Hindi Iह्रदय रोग में क्या खाएIFoods to Eat in Heart Diseases in Hindi Iह्रदय रोग में क्या खाएI
Foods to Eat in Heart Diseases in Hindi Iह्रदय रोग में क्या खाएI
 
Hamburg
HamburgHamburg
Hamburg
 
Tendencias de la Economía Digital 2016
Tendencias de la Economía Digital 2016Tendencias de la Economía Digital 2016
Tendencias de la Economía Digital 2016
 
Presentación Gonzalo Baez - eCommerce Day Santiago 2016
Presentación Gonzalo Baez - eCommerce Day Santiago 2016Presentación Gonzalo Baez - eCommerce Day Santiago 2016
Presentación Gonzalo Baez - eCommerce Day Santiago 2016
 
Presentación Marco Leon - eCommerce Day Santiago 2016
Presentación Marco Leon - eCommerce Day Santiago 2016Presentación Marco Leon - eCommerce Day Santiago 2016
Presentación Marco Leon - eCommerce Day Santiago 2016
 
2.8 cellular respiration
2.8 cellular respiration 2.8 cellular respiration
2.8 cellular respiration
 
Presentación José Gabriel Carrasco - eCommerce Day Santiago 2016
Presentación José Gabriel Carrasco - eCommerce Day Santiago 2016Presentación José Gabriel Carrasco - eCommerce Day Santiago 2016
Presentación José Gabriel Carrasco - eCommerce Day Santiago 2016
 

Similar a Rolemodeling as a graphic extension of the Smalltalk IDE

P Training Presentation
P Training PresentationP Training Presentation
P Training PresentationGaurav Tyagi
 
Design Patterns In Scala
Design Patterns In ScalaDesign Patterns In Scala
Design Patterns In ScalaKnoldus Inc.
 
Concepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming LanguagesConcepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming Languagesppd1961
 
The Larch - a visual interactive programming environment
The Larch - a visual interactive programming environmentThe Larch - a visual interactive programming environment
The Larch - a visual interactive programming environmentPython Ireland
 
Object-oriented modeling and design.pdf
Object-oriented modeling and  design.pdfObject-oriented modeling and  design.pdf
Object-oriented modeling and design.pdfSHIVAM691605
 
Design Patterns - 01 Introduction and Decorator Pattern
Design Patterns - 01 Introduction and Decorator PatternDesign Patterns - 01 Introduction and Decorator Pattern
Design Patterns - 01 Introduction and Decorator Patterneprafulla
 
Software enginering.group-no-11 (1)
Software enginering.group-no-11 (1)Software enginering.group-no-11 (1)
Software enginering.group-no-11 (1)riarana10
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture OneAngelo Corsaro
 
Software design and Architecture.pptx
Software design and Architecture.pptxSoftware design and Architecture.pptx
Software design and Architecture.pptxSHAHZAIBABBAS13
 
12266422.ppt
12266422.ppt12266422.ppt
12266422.pptCSEC5
 
Extending Rotor with Structural Reflection to support Reflective Languages
Extending Rotor with Structural Reflection to support Reflective LanguagesExtending Rotor with Structural Reflection to support Reflective Languages
Extending Rotor with Structural Reflection to support Reflective Languagesfranciscoortin
 
Unit 1- OOAD ppt
Unit 1- OOAD  pptUnit 1- OOAD  ppt
Unit 1- OOAD pptPRIANKA R
 
Module 1 - Programming Fundamentals.pptx
Module 1 - Programming Fundamentals.pptxModule 1 - Programming Fundamentals.pptx
Module 1 - Programming Fundamentals.pptxGaneshRaghu4
 
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...Codemotion
 
UML (Hemant rajak)
UML (Hemant rajak)UML (Hemant rajak)
UML (Hemant rajak)hrajak5
 
New c sharp3_features_(linq)_part_iv
New c sharp3_features_(linq)_part_ivNew c sharp3_features_(linq)_part_iv
New c sharp3_features_(linq)_part_ivNico Ludwig
 
Phase 2 - Task 1Task TypeDiscussion BoardDeliverable Length.docx
Phase 2 - Task 1Task TypeDiscussion BoardDeliverable Length.docxPhase 2 - Task 1Task TypeDiscussion BoardDeliverable Length.docx
Phase 2 - Task 1Task TypeDiscussion BoardDeliverable Length.docxrandymartin91030
 

Similar a Rolemodeling as a graphic extension of the Smalltalk IDE (20)

P Training Presentation
P Training PresentationP Training Presentation
P Training Presentation
 
Design Patterns In Scala
Design Patterns In ScalaDesign Patterns In Scala
Design Patterns In Scala
 
UML Basics
UML BasicsUML Basics
UML Basics
 
Concepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming LanguagesConcepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming Languages
 
The Larch - a visual interactive programming environment
The Larch - a visual interactive programming environmentThe Larch - a visual interactive programming environment
The Larch - a visual interactive programming environment
 
Object-oriented modeling and design.pdf
Object-oriented modeling and  design.pdfObject-oriented modeling and  design.pdf
Object-oriented modeling and design.pdf
 
Design Patterns - 01 Introduction and Decorator Pattern
Design Patterns - 01 Introduction and Decorator PatternDesign Patterns - 01 Introduction and Decorator Pattern
Design Patterns - 01 Introduction and Decorator Pattern
 
L05 Design Patterns
L05 Design PatternsL05 Design Patterns
L05 Design Patterns
 
Software enginering.group-no-11 (1)
Software enginering.group-no-11 (1)Software enginering.group-no-11 (1)
Software enginering.group-no-11 (1)
 
Mca 504 dotnet_unit4
Mca 504 dotnet_unit4Mca 504 dotnet_unit4
Mca 504 dotnet_unit4
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture One
 
Software design and Architecture.pptx
Software design and Architecture.pptxSoftware design and Architecture.pptx
Software design and Architecture.pptx
 
12266422.ppt
12266422.ppt12266422.ppt
12266422.ppt
 
Extending Rotor with Structural Reflection to support Reflective Languages
Extending Rotor with Structural Reflection to support Reflective LanguagesExtending Rotor with Structural Reflection to support Reflective Languages
Extending Rotor with Structural Reflection to support Reflective Languages
 
Unit 1- OOAD ppt
Unit 1- OOAD  pptUnit 1- OOAD  ppt
Unit 1- OOAD ppt
 
Module 1 - Programming Fundamentals.pptx
Module 1 - Programming Fundamentals.pptxModule 1 - Programming Fundamentals.pptx
Module 1 - Programming Fundamentals.pptx
 
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
 
UML (Hemant rajak)
UML (Hemant rajak)UML (Hemant rajak)
UML (Hemant rajak)
 
New c sharp3_features_(linq)_part_iv
New c sharp3_features_(linq)_part_ivNew c sharp3_features_(linq)_part_iv
New c sharp3_features_(linq)_part_iv
 
Phase 2 - Task 1Task TypeDiscussion BoardDeliverable Length.docx
Phase 2 - Task 1Task TypeDiscussion BoardDeliverable Length.docxPhase 2 - Task 1Task TypeDiscussion BoardDeliverable Length.docx
Phase 2 - Task 1Task TypeDiscussion BoardDeliverable Length.docx
 

Más de 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 programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
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 RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
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 resultsESUG
 
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 6ESUG
 
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 GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
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 ModesESUG
 
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 ReportESUG
 
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 APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
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 CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
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 JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
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 TransformationsESUG
 

Más de 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
 

Último

Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfmaor17
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 

Último (20)

Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdf
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 

Rolemodeling as a graphic extension of the Smalltalk IDE

  • 1. Rolemodeling as a graphic extension of the Smalltalk IDE ● Hobby, Experience ● Based on the ideas of Trygve Reenskaug ● 35 years dilemma! many 1000 lines of code = a big labyrinth when a developer wants to change anything (old/no doc) ● 35 years only strings for code! But some times a graphic can say more then 1000 words! Peter Werner, peter_eh.werner@t-online.de Introduction & Motivation
  • 2. Example A class diagram in a system browser which represents always the current code –> that is possible! Oh – it can be helpful ! But: ● it is to big – scroll, scroll … To many classes !!! To many details !!! ● Many people have tried to intruduce graphic elements into software development with a small success – why? Class diagram ==> we need a smaller graphic?
  • 3. The feeling of a Role ● E.g. take an actor (an Object) in a theater ● He can play 1 or more Roles ● He can be exchanged by another one without any influence of the played story ● The story is based on a set of Roles and Relations between them ● The story gives a statement (parable or Pattern) form the author ==> People and animals learn by playing Roles and they think in Roles and Pattern intuitive (by default). ==> new point of view on Objects
  • 4. Definition of Role and Rolemodel ● A Role describes a part of an Object of the real world (Object System) – Similar to a class under multiple inheritance ● A Rolemodel describes a part (story/Pattern) of the real world from a given point of view, called Aspect, by: – A small fixed set of Roles and – Relations between the Roles ● Roles have properties e.g.: – modeled (which is to implement) or – external, to express how the the Model is to use (incoming, outgoing). The set of external Roles is called the Environment of the Model.
  • 5. Example: Role Relation Diagram (a view on a Rolemodel; is garphic oriented code) Methods value <observed:Observed Properties OrderedCollection add: on; del: on Properties get: on; set: on Scenarios value ^Observed value <observed:Observed setValue <observed:Observed addDependent <dep:Dependent removeDependent <dep:Dependent changed <Symbol with :Observed User Observer < Observed 1 < Dependent 0-N update<with<from< Properties get: on; set: on 1 value <Observed value <observed:Observed
  • 6. The development process Object System Model Aspect (= any part of the Object System) R1 R3 R2 R1* R4 R2* Aspects Object 3 Object 1 Object 2 Object 4 Class 1 Class 4 ..... OO Development Process Rolemodeling ● isolated class and method descriptions ● comments/doc ? ● collecting variables and methods per class ● detect Aspects ● documents every Aspect explicit via a Rolemodel, ● so that a Rolmodel has small number of collaborating Roles (blue) ● reuse Rolemodels!
  • 7. Composition R 1 R1 R 1 R4 R 1 R2 R 1 R3 R 1 R 32 Object System Model R 1 R 12 R 1 R 21 R 1 R 13 R 1 R 22 R 1 R 23 R 1 R 31 R 1 R 34 Aspect 1 Aspect 3 Aspect 2 Object 2 Object 4 Object 1 Object 3 Composition ● define a simple Rolemodel RM or ● compose it by others: Composition(RMi) =def. modify&generalize( unify i=1...n( derive&specialize( RMi) ) ) ● simplify it for high reuse, hide/unhide details and already completed parts ● plugged = derive + specialize + plugg it ● add Role Changes = message call
  • 8. Role Work Shop (RWS) Brings a ‘common language’ for all participants of the development process (in analysis, design, partly implementation) by: ● extending the Smalltalk IDE via some browsers ● which allow to model the top level things of an Application by 4 different Diagrams (= real graphic statements): – Role Relation (bit similar to a class diagram) – Scenario (bit similar to message flow diagram) – Model Composition (new) – Design Class (new, complete the Model, can ‘generate’ complete Control Code, strongly separated from *) ● Diagrams have slots for text code snippets ● Detail Code* is always written as text (outside the Rolemodels)
  • 9. Example: Scenario (a view on a Rolmodel) Properties OrderedCollection(Dependent) do <D[<Dependent] Observed := observed [D] update <#observed with <observed from <Observer O User Observer < Dependent value <observed SC: value <observed:Observed < input parameter (readOnly) : input parameter like Smallatlk ^ output parameter