SlideShare une entreprise Scribd logo
1  sur  18
Guerrilla IT with Pharo
piotr@palacz.net
00 First Things First: Clarifications
Guerrilla in IT (be it with Pharo or without it) is just a metaphor.
It is not, among others:
• An adaptation of Mao Zedong ideas on guerrilla tactics in practice
The enemy advances, we retreat; the enemy camps, we harass;
the enemy tires, we attack; the enemy retreats, we pursue.
• An endorsement or an encouragement to incite or actually carry out any form of physical
violence in the workplace.
• And so on.
The Guerrilla in IT metaphor brings out some facets of the situation you are
likely to find yourself in when using Pharo in an Enterprise setting.
This setting has inherent challenges:
• In some cases, mitigation could be attempted using Pharo, but it should not: there are better means
for the mitigation.
• In some other cases, it could be attempted fruitfully.
I am going to talk of both. Hence: Guerrilla IT with Pharo.
No animals were hurt when preparing this talk.
01 The Guerrilla Metaphor and IT
… As a description and as a strategy
02 Key Challenges and their Mitigations
… Featuring Guest Appearances by Requirements and Traceability
03 Enter Pharo into the Guerrilla
... Some examples and suggestions
04 Conclusions
Guerrilla warfare is a type of asymmetric engagement:
competition between opponents of unequal strength.
Asymmetric engagement takes place between belligerents
• Whose relative military power differs significantly, or
• Whose strategy and/or tactics differ significantly.
01 More about Guerrilla
These concepts have some elements of interest for us.
Guerrilla as an indication of the status quo at hand, including:
• Existing asymmetry in strength (personnel, resources, etc.)
• Contrast in the impacts of failure on respective sides
• Actual differences in strategy and tactics (as in e.g. in corporate/PM culture).
01 Interesting Pieces
Guerrilla as an indication of a Strategy aiming to:
• Magnify the impact of a small, mobile force on a larger, more
cumbersome one
• Not simply to defeat an enemy, but (also) to win popular support
As a Status Quo description:
• Small or tiny teams
• Relatively small budgets
• Short timeframes
• Dealing with defective requirements
• Dealing with urgency, nervousness,…
• … etc.
01 Guerrilla in IT
As a Strategy prescription:
• Driving the solution rather than waiting for it to happen
• Assuming broad SDLC responsibilities (from requirements to maintenance)
• Being open to non-conventional solutions
• Avoiding failure as a potentially lethal event
• … etc.
02 Key Challenges in Enterprise Setting
On Requirements, because:
• Reqs-related problems are common and wide-spread
• Reqs are the first building block
• Getting them wrong fundamentally dooms the effort
On Traceability, because:
• It is either absent, misunderstood or mishandled
• It ties the building blocks together, starting with Reqs
• Getting it wrong sky-rockets the risk of failure
The key challenges in Enterprise-type projects center on:
• Requirements
• Traceability
02 Meanings of Traceability
Broad meaning (IEEE): the degree to which a relationship can be
established between two or more products of the development process,
especially products having a predecessor-successor or master-
subordinate relationship to one another. [IEEE-610]
Abstract/academic idea: Linking together subsequent models using
well-defined model transformations
(e.g., from Requirements Model to Execution and Testing Models)
Narrow meaning (most common):Tracing testing artefacts (incl. tests and their
results) back to specific requirements, in order to prove that all requirements have
been (a) implemented, and (b) positively tested.
02 Traceability: Various Manifestations
Manifestations of Traceability in-the-small:
1. Non-existent (the default)
2. Antagonistic and backward-looking (when things go sour)
3. Collaborative and forward-looking (when doing well)
Manifestations of Traceability in-the-large:
1. Absent (when contract language is deficient)
2. Lip service (when things go OK)
3. Antagonistic (when things start going bad)
4. Nuclear Fusion (when litigation is looming)
5. Backward-looking (almost always)
02 Uses of Pharo in the Guerrilla
(1) Can Pharo be used outside its usual place as a construction
and testing toolkit?
(2) Can it be used to mitigate the Requirements Predicament?
(3) Can it be used to help establishing a collaborative,
forward-looking traceability?
Yes …
Yes …
Yes!
How all the are even possible?Yes
02 Possibilities
In the mainstream, the specification/design/construction/testing
overhead makes it unthinkable or at least impractical to use
its own tools to support the project outside of the construction proper.
This is not the case with Pharo:
• Low cost/high speed of building assistive tooling makes
using Pharo to support the Guerrilla strategy
(a) conceivable and (b) feasible
• Some types of that tooling (and associated simple practices introduced by it) p
roduce disproportionally good returns …
Real-Life Examples?
03 Examples: Some Rules of Thumb
Go for simple/low-cost improvements that have high impact potential
• Transforming representation of relevant data/information
• Making accessing and/or modifying this information easier
• Making generation of derived information painless, simple and quick
• … and so on
Note: making this or that here is not in the context of the target app!
Avoid:
• Things that cannot be fixed (e.g., an SDLC broken beyond repair)
• Replicating functions that can be had at even lower cost (e.g., an OSS issue tracker)
• Functions with low impact potential (which may still happen to be cool)
• … and so on
Real-Life Examples?
03 Examples: Dealing with Requirements
… Real-Life Case
• Transform the Reqs away from the typical inedible forms
• Republish them (or their relevant parts) in a digestible form
• (e.g. visualization) in an easy-to-access form (e.g., web site/portal)
• Provide simple query/reporting capabilities
• Show people that this is easier for them (and sometimes fun)
• Better traction with non-tech people
• Better external visibility of the issues
• More eyeballs -> better coverage -> better quality (eventually)
• Opportunities:
• To introduce structural corrections easily or painlessly
• To divide-and-conquer -> faster turnover
• To eliminate stop-and-go -> less friction
03 Example: Dealing with Requirements
… one of many ways Pharo 6 + Cytoscape + Object Model
Proposed Corpus Structure – Interactive Exploration
Initial Excel Corpus and its Issues
03 Examples: Towards Better Traceability
… Real-Life Case
• Identify requirement types that can be handled by
a DSL or the Interpreter pattern (typically, Business Rules are good candidate)
• Reify the specs in a model
• Provide for human-friendly self-description of that model
• Provide self-descriptions for eyeballing (re-generation on
change) and simple collection of feedback
• Disambiguation of notoriously problematic areas (esp. Business Rules)
• Early, pre-construction and pre-testing validation
of essential Reqs with potential design impacts
• Opportunities:
• To introduce improved precision and cohesion of the language
• To divide-and-conquer the space
• To introduce ownership and accountability
ROW Rule '50XY Defined in REQUISITION_APPROVER':
IF ((ROW has a value in FIELD: 'RA.ZZ_REQ_AD_HOC_APPR')
AND (ROW has at LEAST ONE value in FIELDS:
'RA.ZZ_REQ_APPROVER_1', 'RA.ZZ_REQ_APPROVER_2'))
THEN ( FAIL with MESSAGE: 'If Requisitions Ad Hoc Approver is identified,
then other Requisitions approver levels must not be identified')
03 Towards Better Traceability
… Interpreter Pattern and Early Reqs Validation
ROW Rule 'Rule 3005 Defined in AP_APPROVER':
IF ( (FIELD 'AP.ZZ_AP_APPROVER_2' has value)
AND (FIELD 'AP.EMAILID' is none of (case-insensitive) { ... 300 entries ... }))
THEN ( FAIL with MESSAGE: 'Each AP Approver 2 must have approved AUD15 form’)
Self-textual renderings …
… of rule class instances
Pharo 5/6 + GT + Seaside/Bootstrap + NeoCSV
04 Last Things Last: Conclusions
The Guerrilla Metaphor may:
• Help you relate to real-life experiences when using Pharo in an Enterprise context
and what that entails
• Help you consider what concrete Agile could be when the tire hits the road
• Stimulate devising other useful ways of using Pharo across all phases of the SDLC
The key thought is that with Pharo:
• Low cost/high speed of building assistive tooling makes using Pharo to support
the Guerrilla strategy (a) conceivable and (b) feasible
• Some types of that tooling (and associated simple practices introduced by it) c
an produce disproportionally good returns.
Thank you
Comments, suggestions, feedback, etc.: please email piotr@palacz.net

Contenu connexe

Similaire à Guerilla IT with Pharo

Business analysis interview question and answers
Business analysis interview question and answersBusiness analysis interview question and answers
Business analysis interview question and answersGaruda Trainings
 
Test driven development v1.0
Test driven development v1.0Test driven development v1.0
Test driven development v1.0Ganesh Kondal
 
Software Engineering: why it is more than coding, and why it is necessary
Software Engineering: why it is more than coding, and why it is necessarySoftware Engineering: why it is more than coding, and why it is necessary
Software Engineering: why it is more than coding, and why it is necessaryYazid Hamdi
 
测试向前一步
测试向前一步测试向前一步
测试向前一步drewz lin
 
What I have learned by dealing with a dungeon master
What I have learned by dealing with a dungeon masterWhat I have learned by dealing with a dungeon master
What I have learned by dealing with a dungeon masterRaúl Araya Tauler
 
Non-functional requirements
Non-functional requirements Non-functional requirements
Non-functional requirements Rohela Raouf
 
Discover Requirement
Discover RequirementDiscover Requirement
Discover Requirementzeyadtarek13
 
User story and splitting workshop
User story and splitting workshopUser story and splitting workshop
User story and splitting workshopBrian Sjoberg
 
Resilient Functional Service Design
Resilient Functional Service DesignResilient Functional Service Design
Resilient Functional Service DesignUwe Friedrichsen
 
Managing the Earthquake: Surviving Major Database Architecture Changes (rev.2...
Managing the Earthquake: Surviving Major Database Architecture Changes (rev.2...Managing the Earthquake: Surviving Major Database Architecture Changes (rev.2...
Managing the Earthquake: Surviving Major Database Architecture Changes (rev.2...Michael Rosenblum
 
空英課程 Agile development 2014
空英課程 Agile development 2014空英課程 Agile development 2014
空英課程 Agile development 2014芋頭 烤
 
Applying UML and Patterns (CH1, 6, 9, 10)
Applying UML and Patterns (CH1, 6, 9, 10)Applying UML and Patterns (CH1, 6, 9, 10)
Applying UML and Patterns (CH1, 6, 9, 10)Jamie (Taka) Wang
 
Structured Software Design
Structured Software DesignStructured Software Design
Structured Software DesignGiorgio Zoppi
 
Adopting Domain-Driven Design in your organization
Adopting Domain-Driven Design in your organizationAdopting Domain-Driven Design in your organization
Adopting Domain-Driven Design in your organizationAleix Morgadas
 

Similaire à Guerilla IT with Pharo (20)

Business analysis interview question and answers
Business analysis interview question and answersBusiness analysis interview question and answers
Business analysis interview question and answers
 
Requirement Engineering.ppt
Requirement Engineering.pptRequirement Engineering.ppt
Requirement Engineering.ppt
 
Test driven development v1.0
Test driven development v1.0Test driven development v1.0
Test driven development v1.0
 
Requirements analysis lecture
Requirements analysis lectureRequirements analysis lecture
Requirements analysis lecture
 
Anti-Patterns
Anti-PatternsAnti-Patterns
Anti-Patterns
 
Software Engineering: why it is more than coding, and why it is necessary
Software Engineering: why it is more than coding, and why it is necessarySoftware Engineering: why it is more than coding, and why it is necessary
Software Engineering: why it is more than coding, and why it is necessary
 
测试向前一步
测试向前一步测试向前一步
测试向前一步
 
What I have learned by dealing with a dungeon master
What I have learned by dealing with a dungeon masterWhat I have learned by dealing with a dungeon master
What I have learned by dealing with a dungeon master
 
AT2012_Pune_UserStories_BhawanaGupta
AT2012_Pune_UserStories_BhawanaGuptaAT2012_Pune_UserStories_BhawanaGupta
AT2012_Pune_UserStories_BhawanaGupta
 
Non-functional requirements
Non-functional requirements Non-functional requirements
Non-functional requirements
 
Discover Requirement
Discover RequirementDiscover Requirement
Discover Requirement
 
User story and splitting workshop
User story and splitting workshopUser story and splitting workshop
User story and splitting workshop
 
Resilient Functional Service Design
Resilient Functional Service DesignResilient Functional Service Design
Resilient Functional Service Design
 
Managing the Earthquake: Surviving Major Database Architecture Changes (rev.2...
Managing the Earthquake: Surviving Major Database Architecture Changes (rev.2...Managing the Earthquake: Surviving Major Database Architecture Changes (rev.2...
Managing the Earthquake: Surviving Major Database Architecture Changes (rev.2...
 
BDD Primer
BDD PrimerBDD Primer
BDD Primer
 
空英課程 Agile development 2014
空英課程 Agile development 2014空英課程 Agile development 2014
空英課程 Agile development 2014
 
Crutial steps in requirement gathering
Crutial steps in requirement gatheringCrutial steps in requirement gathering
Crutial steps in requirement gathering
 
Applying UML and Patterns (CH1, 6, 9, 10)
Applying UML and Patterns (CH1, 6, 9, 10)Applying UML and Patterns (CH1, 6, 9, 10)
Applying UML and Patterns (CH1, 6, 9, 10)
 
Structured Software Design
Structured Software DesignStructured Software Design
Structured Software Design
 
Adopting Domain-Driven Design in your organization
Adopting Domain-Driven Design in your organizationAdopting Domain-Driven Design in your organization
Adopting Domain-Driven Design in your organization
 

Plus 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
 

Plus 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
 

Dernier

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
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 2024Victor Rentea
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
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 2024Victor Rentea
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
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 WorkerThousandEyes
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
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.pdfOrbitshub
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
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 FresherRemote DBA Services
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 
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 FMESafe Software
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
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...apidays
 

Dernier (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
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
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
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
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
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
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
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...
 

Guerilla IT with Pharo

  • 1. Guerrilla IT with Pharo piotr@palacz.net
  • 2. 00 First Things First: Clarifications Guerrilla in IT (be it with Pharo or without it) is just a metaphor. It is not, among others: • An adaptation of Mao Zedong ideas on guerrilla tactics in practice The enemy advances, we retreat; the enemy camps, we harass; the enemy tires, we attack; the enemy retreats, we pursue. • An endorsement or an encouragement to incite or actually carry out any form of physical violence in the workplace. • And so on. The Guerrilla in IT metaphor brings out some facets of the situation you are likely to find yourself in when using Pharo in an Enterprise setting. This setting has inherent challenges: • In some cases, mitigation could be attempted using Pharo, but it should not: there are better means for the mitigation. • In some other cases, it could be attempted fruitfully. I am going to talk of both. Hence: Guerrilla IT with Pharo. No animals were hurt when preparing this talk.
  • 3. 01 The Guerrilla Metaphor and IT … As a description and as a strategy 02 Key Challenges and their Mitigations … Featuring Guest Appearances by Requirements and Traceability 03 Enter Pharo into the Guerrilla ... Some examples and suggestions 04 Conclusions
  • 4. Guerrilla warfare is a type of asymmetric engagement: competition between opponents of unequal strength. Asymmetric engagement takes place between belligerents • Whose relative military power differs significantly, or • Whose strategy and/or tactics differ significantly. 01 More about Guerrilla These concepts have some elements of interest for us.
  • 5. Guerrilla as an indication of the status quo at hand, including: • Existing asymmetry in strength (personnel, resources, etc.) • Contrast in the impacts of failure on respective sides • Actual differences in strategy and tactics (as in e.g. in corporate/PM culture). 01 Interesting Pieces Guerrilla as an indication of a Strategy aiming to: • Magnify the impact of a small, mobile force on a larger, more cumbersome one • Not simply to defeat an enemy, but (also) to win popular support
  • 6. As a Status Quo description: • Small or tiny teams • Relatively small budgets • Short timeframes • Dealing with defective requirements • Dealing with urgency, nervousness,… • … etc. 01 Guerrilla in IT As a Strategy prescription: • Driving the solution rather than waiting for it to happen • Assuming broad SDLC responsibilities (from requirements to maintenance) • Being open to non-conventional solutions • Avoiding failure as a potentially lethal event • … etc.
  • 7. 02 Key Challenges in Enterprise Setting On Requirements, because: • Reqs-related problems are common and wide-spread • Reqs are the first building block • Getting them wrong fundamentally dooms the effort On Traceability, because: • It is either absent, misunderstood or mishandled • It ties the building blocks together, starting with Reqs • Getting it wrong sky-rockets the risk of failure The key challenges in Enterprise-type projects center on: • Requirements • Traceability
  • 8. 02 Meanings of Traceability Broad meaning (IEEE): the degree to which a relationship can be established between two or more products of the development process, especially products having a predecessor-successor or master- subordinate relationship to one another. [IEEE-610] Abstract/academic idea: Linking together subsequent models using well-defined model transformations (e.g., from Requirements Model to Execution and Testing Models) Narrow meaning (most common):Tracing testing artefacts (incl. tests and their results) back to specific requirements, in order to prove that all requirements have been (a) implemented, and (b) positively tested.
  • 9. 02 Traceability: Various Manifestations Manifestations of Traceability in-the-small: 1. Non-existent (the default) 2. Antagonistic and backward-looking (when things go sour) 3. Collaborative and forward-looking (when doing well) Manifestations of Traceability in-the-large: 1. Absent (when contract language is deficient) 2. Lip service (when things go OK) 3. Antagonistic (when things start going bad) 4. Nuclear Fusion (when litigation is looming) 5. Backward-looking (almost always)
  • 10. 02 Uses of Pharo in the Guerrilla (1) Can Pharo be used outside its usual place as a construction and testing toolkit? (2) Can it be used to mitigate the Requirements Predicament? (3) Can it be used to help establishing a collaborative, forward-looking traceability? Yes … Yes … Yes! How all the are even possible?Yes
  • 11. 02 Possibilities In the mainstream, the specification/design/construction/testing overhead makes it unthinkable or at least impractical to use its own tools to support the project outside of the construction proper. This is not the case with Pharo: • Low cost/high speed of building assistive tooling makes using Pharo to support the Guerrilla strategy (a) conceivable and (b) feasible • Some types of that tooling (and associated simple practices introduced by it) p roduce disproportionally good returns … Real-Life Examples?
  • 12. 03 Examples: Some Rules of Thumb Go for simple/low-cost improvements that have high impact potential • Transforming representation of relevant data/information • Making accessing and/or modifying this information easier • Making generation of derived information painless, simple and quick • … and so on Note: making this or that here is not in the context of the target app! Avoid: • Things that cannot be fixed (e.g., an SDLC broken beyond repair) • Replicating functions that can be had at even lower cost (e.g., an OSS issue tracker) • Functions with low impact potential (which may still happen to be cool) • … and so on Real-Life Examples?
  • 13. 03 Examples: Dealing with Requirements … Real-Life Case • Transform the Reqs away from the typical inedible forms • Republish them (or their relevant parts) in a digestible form • (e.g. visualization) in an easy-to-access form (e.g., web site/portal) • Provide simple query/reporting capabilities • Show people that this is easier for them (and sometimes fun) • Better traction with non-tech people • Better external visibility of the issues • More eyeballs -> better coverage -> better quality (eventually) • Opportunities: • To introduce structural corrections easily or painlessly • To divide-and-conquer -> faster turnover • To eliminate stop-and-go -> less friction
  • 14. 03 Example: Dealing with Requirements … one of many ways Pharo 6 + Cytoscape + Object Model Proposed Corpus Structure – Interactive Exploration Initial Excel Corpus and its Issues
  • 15. 03 Examples: Towards Better Traceability … Real-Life Case • Identify requirement types that can be handled by a DSL or the Interpreter pattern (typically, Business Rules are good candidate) • Reify the specs in a model • Provide for human-friendly self-description of that model • Provide self-descriptions for eyeballing (re-generation on change) and simple collection of feedback • Disambiguation of notoriously problematic areas (esp. Business Rules) • Early, pre-construction and pre-testing validation of essential Reqs with potential design impacts • Opportunities: • To introduce improved precision and cohesion of the language • To divide-and-conquer the space • To introduce ownership and accountability
  • 16. ROW Rule '50XY Defined in REQUISITION_APPROVER': IF ((ROW has a value in FIELD: 'RA.ZZ_REQ_AD_HOC_APPR') AND (ROW has at LEAST ONE value in FIELDS: 'RA.ZZ_REQ_APPROVER_1', 'RA.ZZ_REQ_APPROVER_2')) THEN ( FAIL with MESSAGE: 'If Requisitions Ad Hoc Approver is identified, then other Requisitions approver levels must not be identified') 03 Towards Better Traceability … Interpreter Pattern and Early Reqs Validation ROW Rule 'Rule 3005 Defined in AP_APPROVER': IF ( (FIELD 'AP.ZZ_AP_APPROVER_2' has value) AND (FIELD 'AP.EMAILID' is none of (case-insensitive) { ... 300 entries ... })) THEN ( FAIL with MESSAGE: 'Each AP Approver 2 must have approved AUD15 form’) Self-textual renderings … … of rule class instances Pharo 5/6 + GT + Seaside/Bootstrap + NeoCSV
  • 17. 04 Last Things Last: Conclusions The Guerrilla Metaphor may: • Help you relate to real-life experiences when using Pharo in an Enterprise context and what that entails • Help you consider what concrete Agile could be when the tire hits the road • Stimulate devising other useful ways of using Pharo across all phases of the SDLC The key thought is that with Pharo: • Low cost/high speed of building assistive tooling makes using Pharo to support the Guerrilla strategy (a) conceivable and (b) feasible • Some types of that tooling (and associated simple practices introduced by it) c an produce disproportionally good returns.
  • 18. Thank you Comments, suggestions, feedback, etc.: please email piotr@palacz.net