SlideShare a Scribd company logo
1 of 9
Download to read offline
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

More Related Content

Viewers also liked

PharoJS
PharoJSPharoJS
PharoJS
ESUG
 
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
ESUG
 
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
ESUG
 
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
Herbal Daily
 

Viewers also liked (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 to Rolemodeling as a graphic extension of the Smalltalk IDE

P Training Presentation
P Training PresentationP Training Presentation
P Training Presentation
Gaurav Tyagi
 
Object-oriented modeling and design.pdf
Object-oriented modeling and  design.pdfObject-oriented modeling and  design.pdf
Object-oriented modeling and design.pdf
SHIVAM691605
 
12266422.ppt
12266422.ppt12266422.ppt
12266422.ppt
CSEC5
 
UML (Hemant rajak)
UML (Hemant rajak)UML (Hemant rajak)
UML (Hemant rajak)
hrajak5
 
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
randymartin91030
 

Similar to 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
 

More from 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
 

More from 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
 

Recently uploaded

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Recently uploaded (20)

call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 

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