SlideShare a Scribd company logo
Presented by : Hakan C. İpek
A Pragmatic Approach
 Main Topics
 Evils of Duplication
 Orthogonality
 Reversibility
 Tracer Bullets
 Prototypes and Post-it Notes
 Domain Languages
 Estimating
The Evils of Duplication
 DRY – Don’t Repeat Yourself
 Every piece of knowledge must have a single,
unambiguous, authoritative representation within
system.
 If you change one, you need to change others.
The Evils of Duplication
 How Does Duplication Rise?
 Imposed Duplication
 Inadvernt Duplication
 Impatient Duplication
 Interdeveloper Duplication
 Make It Easy to Reuse
A Pragmatic Approach
 Main Topics
 Evils of Duplication
 Orthogonality
 Reversibility
 Tracer Bullets
 Prototypes and Post-it Notes
 Domain Languages
 Estimating
Orthogonality
 What Is Orthogonality?
 It is a critical concept if you want to produce systems
that are easy to design, build, test, and extend.
 A term of Geometry.(90 degree lines, x-y axis etc.)
 Independent lines.
 Parallel movement to an axis doesn’t change your position on
the other one.
 In computing, similar to geometry, two orthogonal
things, change in one doesn’t effect the other.
Orthogonality
 A Nonorthogonal System
 A Helicopter Example
Orthogonality
 Benefits of Orthogonality
 When components of any system are highly interdependent,
there is no such thing as a local fix.
 Eliminate Effects Between Unrelated Things
 Gain Productivity
 Reduce Risk
Orthogonality
 Comparing DPY with Orthogonality
 They are closely related.
 In DRY, we are looking to minimize duplication within
system.
 With orthogonality, we reduce the interpendency among the
system’s components.
 When you combine them, you’ll realize that the systems you
develop are more flexible, more understandable and easier to
debug, test and maintain.
A Pragmatic Approach
 Main Topics
 Evils of Duplication
 Orthogonality
 Reversibility
 Tracer Bullets
 Prototypes and Post-it Notes
 Domain Languages
 Estimating
Reversibility
 Nothing is more dangerous than an idea if it’s the only
one you have.
 Emil-Auguste Chartier, Propos sur la religion, 1938
 Nothing stays forever,
 if you rely heavily on some fact, you can almost
guarantee that it will change.
 Anything you do should be reversible.
Reversibility
 There is always more than one way to implement
something, and there is usually more than one vendor
available to provide a third-party product.
 While you writing your code, product can change.
 As time goes by, and your project progresses, you may
find yourself stuck in an untenable position.
 With every critical decision, the project team commits
to a smaller target.
 The problem is that critical decisions aren’t easily
reversible.
Reversibility
 Scenario;
 Early in the project, to use a relational database from
vendor A.
 Later, you discover that the database is slow, but
database from vendor B is faster.
 Most of the time, calls to third-party products are
entangled throughout the code
 But if you really abstracted the idea of a database out,
you have the flexibility to change horses in midstream.
Reversibility
 Mistake lies in assuming that any decision is cast in
stone.
 Instead of that, think of them more as being written in
the sand at the beach.
 A big wave can come along and wipe them out at any
time.
Reversibility
 Flexible Architecture
 Technologies such as CORBA can help insulate portions
of a project from changes in development language or
platform.
 Is the performance of Java on that platform not up to
expectations? Recode the client in C++, and nothing else
needs to change.
 With a CORBA architecture, you have to take a hit only
for the component you are replacing; the other
components shouldn’t be affected.
A Pragmatic Approach
 Main Topics
 Evils of Duplication
 Orthogonality
 Reversibility
 Tracer Bullets
 Prototypes and Post-it Notes
 Domain Languages
 Estimating
Tracer Bullets
 Like the gunners, you’re trying to hit a target in the
dark.
 Because you may be using algorithms, techniques,
languages, or libraries you aren’t familiar with, you face
a large number of unknowns.
Tracer Bullets
 Code That Glows in the Dark
 We’re looking for something that gets us from a
requirement to some aspect of the final system quickly,
visibly, and repeatably.
 Use commands to prove UI could talk to libraries.
Tracer Bullets
 Advantages of Tracer Code;
 Users get to see something working early.
 Developers build a structure to work in.
 You have an integration platform.
 You have something to demonstrate.
 You have a better feel for progress.
 Tracer Bullets Don’t Always Hit Their Target
 Tracer bullets show what you’re hitting. This may not always
be the target. You then adjust your aim until they’re on target.
A Pragmatic Approach
 Main Topics
 Evils of Duplication
 Orthogonality
 Reversibility
 Tracer Bullets
 Prototypes and Post-it Notes
 Domain Languages
 Estimating
Prototypes and Post-it Notes
 Prototypes are designed to answer just a few questions,
so they are much cheaper and faster to develop than
applications that go into production.
 The code can ignore unimportant details.
 If you find yourself in an environment where you
cannot give up the details, then you need to ask
yourself if you are really building a prototype at all.
Perhaps a tracer bullet style of development would be
more appropriate in this case.
Prototypes and Post-it Notes
 Things to Prototype
 Architecture
 New functionality in an existing system
 Structure or contents of external data
 Third-party tools or components
 Performance issues
 User interface design
 Prototyping is a learning experience. Its value lies not
in the code produced, but in the lessons learned.
That’s really the point of prototyping.
Prototypes and Post-it Notes
 When building a prototype, what details can you
ignore?
 Correctness
 Ex : use dummy data where appropriate.
 Completeness
 Ex : with only one preselected piece of input data and one
menu item.
 Robustness
 Ex : check error, crashes are okay
 Style
A Pragmatic Approach
 Main Topics
 Evils of Duplication
 Orthogonality
 Reversibility
 Tracer Bullets
 Prototypes and Post-it Notes
 Domain Languages
 Estimating
A Pragmatic Approach
 Main Topics
 Evils of Duplication
 Orthogonality
 Reversibility
 Tracer Bullets
 Prototypes and Post-it Notes
 Domain Languages
 Estimating

More Related Content

What's hot

Natural language processing (NLP)
Natural language processing (NLP) Natural language processing (NLP)
Natural language processing (NLP)
ASWINKP11
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
Tathagat Varma
 
Agile Methodology and Tools
Agile Methodology and ToolsAgile Methodology and Tools
Agile Methodology and Tools
Naresh Gajuveni
 
3.software testing
3.software testing3.software testing
3.software testing
Deepak Sharma
 
Regression Testing - An Overview
Regression Testing - An OverviewRegression Testing - An Overview
Regression Testing - An Overview
BugRaptors
 
GPT-2: Language Models are Unsupervised Multitask Learners
GPT-2: Language Models are Unsupervised Multitask LearnersGPT-2: Language Models are Unsupervised Multitask Learners
GPT-2: Language Models are Unsupervised Multitask Learners
Young Seok Kim
 
Reliability growth models
Reliability growth modelsReliability growth models
Reliability growth models
Roy Antony Arnold G
 
Importance of the quality of code
Importance of the quality of codeImportance of the quality of code
Importance of the quality of code
Shwe Yee
 
Software re engineering
Software re engineeringSoftware re engineering
Software re engineering
deshpandeamrut
 
A Comprehensive Review of Large Language Models for.pptx
A Comprehensive Review of Large Language Models for.pptxA Comprehensive Review of Large Language Models for.pptx
A Comprehensive Review of Large Language Models for.pptx
SaiPragnaKancheti
 
Chapter 15 software product metrics
Chapter 15 software product metricsChapter 15 software product metrics
Chapter 15 software product metrics
SHREEHARI WADAWADAGI
 
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdf
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdfRetrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdf
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdf
Po-Chuan Chen
 
Black & White Box testing
Black & White Box testingBlack & White Box testing
Software Testing
Software TestingSoftware Testing
Software Testing
Mousmi Pawar
 
Explaining Black-Box Machine Learning Predictions - Sameer Singh, Assistant P...
Explaining Black-Box Machine Learning Predictions - Sameer Singh, Assistant P...Explaining Black-Box Machine Learning Predictions - Sameer Singh, Assistant P...
Explaining Black-Box Machine Learning Predictions - Sameer Singh, Assistant P...
Sri Ambati
 
requirement gathering
requirement gatheringrequirement gathering
requirement gathering
SaeedMat
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process Models
Ahmed Alageed
 
Introduction to Agile Software Development
Introduction to Agile Software DevelopmentIntroduction to Agile Software Development
Introduction to Agile Software Development
Life Cycle Engineering
 
Overview of Agile Methodology
Overview of Agile MethodologyOverview of Agile Methodology
Overview of Agile Methodology
Haresh Karkar
 
Agile Software Development
Agile Software Development Agile Software Development
Agile Software Development
OwaisAli44
 

What's hot (20)

Natural language processing (NLP)
Natural language processing (NLP) Natural language processing (NLP)
Natural language processing (NLP)
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Agile Methodology and Tools
Agile Methodology and ToolsAgile Methodology and Tools
Agile Methodology and Tools
 
3.software testing
3.software testing3.software testing
3.software testing
 
Regression Testing - An Overview
Regression Testing - An OverviewRegression Testing - An Overview
Regression Testing - An Overview
 
GPT-2: Language Models are Unsupervised Multitask Learners
GPT-2: Language Models are Unsupervised Multitask LearnersGPT-2: Language Models are Unsupervised Multitask Learners
GPT-2: Language Models are Unsupervised Multitask Learners
 
Reliability growth models
Reliability growth modelsReliability growth models
Reliability growth models
 
Importance of the quality of code
Importance of the quality of codeImportance of the quality of code
Importance of the quality of code
 
Software re engineering
Software re engineeringSoftware re engineering
Software re engineering
 
A Comprehensive Review of Large Language Models for.pptx
A Comprehensive Review of Large Language Models for.pptxA Comprehensive Review of Large Language Models for.pptx
A Comprehensive Review of Large Language Models for.pptx
 
Chapter 15 software product metrics
Chapter 15 software product metricsChapter 15 software product metrics
Chapter 15 software product metrics
 
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdf
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdfRetrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdf
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdf
 
Black & White Box testing
Black & White Box testingBlack & White Box testing
Black & White Box testing
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
Explaining Black-Box Machine Learning Predictions - Sameer Singh, Assistant P...
Explaining Black-Box Machine Learning Predictions - Sameer Singh, Assistant P...Explaining Black-Box Machine Learning Predictions - Sameer Singh, Assistant P...
Explaining Black-Box Machine Learning Predictions - Sameer Singh, Assistant P...
 
requirement gathering
requirement gatheringrequirement gathering
requirement gathering
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process Models
 
Introduction to Agile Software Development
Introduction to Agile Software DevelopmentIntroduction to Agile Software Development
Introduction to Agile Software Development
 
Overview of Agile Methodology
Overview of Agile MethodologyOverview of Agile Methodology
Overview of Agile Methodology
 
Agile Software Development
Agile Software Development Agile Software Development
Agile Software Development
 

Similar to A Pragmatic Approach

Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patterns
Steven Smith
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Software
svilen.ivanov
 
Hexagonal Symfony - SymfonyCon Amsterdam 2019
Hexagonal Symfony - SymfonyCon Amsterdam 2019Hexagonal Symfony - SymfonyCon Amsterdam 2019
Hexagonal Symfony - SymfonyCon Amsterdam 2019
Matthias Noback
 
Google Interview Prep Guide Software Engineer
Google Interview Prep Guide Software EngineerGoogle Interview Prep Guide Software Engineer
Google Interview Prep Guide Software Engineer
Lewis Lin 🦊
 
Put to the Test
Put to the TestPut to the Test
Put to the Test
Kevlin Henney
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st Century
Henry Jacob
 
Contemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With EnterpriseContemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With Enterprise
Kenan Sevindik
 
What would Jesus Developer do?
What would Jesus Developer do?What would Jesus Developer do?
What would Jesus Developer do?
Lukáš Čech
 
Prototyping.eveningclass.ppt
Prototyping.eveningclass.pptPrototyping.eveningclass.ppt
Prototyping.eveningclass.ppt
azida3
 
Prototyping.eveningclass.ppt.slideshare.information.system.analysis
Prototyping.eveningclass.ppt.slideshare.information.system.analysisPrototyping.eveningclass.ppt.slideshare.information.system.analysis
Prototyping.eveningclass.ppt.slideshare.information.system.analysis
lynmanguilimotan06
 
The Role of the Architect
The Role of the ArchitectThe Role of the Architect
The Role of the Architect
Jonathan Holloway
 
SW Engineering Management
SW Engineering ManagementSW Engineering Management
SW Engineering Management
Robert Sayegh
 
Software Architecture: How Much Design?
Software Architecture: How Much Design?Software Architecture: How Much Design?
Software Architecture: How Much Design?
Òscar Vilaplana
 
Pragmatic programmer
Pragmatic programmerPragmatic programmer
Pragmatic programmer
Maulik Shah
 
Refactoring 2 The Max
Refactoring 2 The MaxRefactoring 2 The Max
Refactoring 2 The Max
Alfredo Morresi
 
DevOps interview questions and answers
DevOps interview questions and answersDevOps interview questions and answers
DevOps interview questions and answers
HopeTutors1
 
Formal Versus Agile: Survival of the Fittest? (Paul Boca)
Formal Versus Agile: Survival of the Fittest? (Paul Boca)Formal Versus Agile: Survival of the Fittest? (Paul Boca)
Formal Versus Agile: Survival of the Fittest? (Paul Boca)
AdaCore
 
hints for computer system design by Butler Lampson
hints for computer system design by Butler Lampsonhints for computer system design by Butler Lampson
hints for computer system design by Butler Lampson
mustafa sarac
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
Svetlin Nakov
 
SAD07 - Project Management
SAD07 - Project ManagementSAD07 - Project Management
SAD07 - Project Management
Michael Heron
 

Similar to A Pragmatic Approach (20)

Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patterns
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Software
 
Hexagonal Symfony - SymfonyCon Amsterdam 2019
Hexagonal Symfony - SymfonyCon Amsterdam 2019Hexagonal Symfony - SymfonyCon Amsterdam 2019
Hexagonal Symfony - SymfonyCon Amsterdam 2019
 
Google Interview Prep Guide Software Engineer
Google Interview Prep Guide Software EngineerGoogle Interview Prep Guide Software Engineer
Google Interview Prep Guide Software Engineer
 
Put to the Test
Put to the TestPut to the Test
Put to the Test
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st Century
 
Contemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With EnterpriseContemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With Enterprise
 
What would Jesus Developer do?
What would Jesus Developer do?What would Jesus Developer do?
What would Jesus Developer do?
 
Prototyping.eveningclass.ppt
Prototyping.eveningclass.pptPrototyping.eveningclass.ppt
Prototyping.eveningclass.ppt
 
Prototyping.eveningclass.ppt.slideshare.information.system.analysis
Prototyping.eveningclass.ppt.slideshare.information.system.analysisPrototyping.eveningclass.ppt.slideshare.information.system.analysis
Prototyping.eveningclass.ppt.slideshare.information.system.analysis
 
The Role of the Architect
The Role of the ArchitectThe Role of the Architect
The Role of the Architect
 
SW Engineering Management
SW Engineering ManagementSW Engineering Management
SW Engineering Management
 
Software Architecture: How Much Design?
Software Architecture: How Much Design?Software Architecture: How Much Design?
Software Architecture: How Much Design?
 
Pragmatic programmer
Pragmatic programmerPragmatic programmer
Pragmatic programmer
 
Refactoring 2 The Max
Refactoring 2 The MaxRefactoring 2 The Max
Refactoring 2 The Max
 
DevOps interview questions and answers
DevOps interview questions and answersDevOps interview questions and answers
DevOps interview questions and answers
 
Formal Versus Agile: Survival of the Fittest? (Paul Boca)
Formal Versus Agile: Survival of the Fittest? (Paul Boca)Formal Versus Agile: Survival of the Fittest? (Paul Boca)
Formal Versus Agile: Survival of the Fittest? (Paul Boca)
 
hints for computer system design by Butler Lampson
hints for computer system design by Butler Lampsonhints for computer system design by Butler Lampson
hints for computer system design by Butler Lampson
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
SAD07 - Project Management
SAD07 - Project ManagementSAD07 - Project Management
SAD07 - Project Management
 

Recently uploaded

Iron and Steel Technology Roadmap - Towards more sustainable steelmaking.pdf
Iron and Steel Technology Roadmap - Towards more sustainable steelmaking.pdfIron and Steel Technology Roadmap - Towards more sustainable steelmaking.pdf
Iron and Steel Technology Roadmap - Towards more sustainable steelmaking.pdf
RadiNasr
 
Computational Engineering IITH Presentation
Computational Engineering IITH PresentationComputational Engineering IITH Presentation
Computational Engineering IITH Presentation
co23btech11018
 
Electric vehicle and photovoltaic advanced roles in enhancing the financial p...
Electric vehicle and photovoltaic advanced roles in enhancing the financial p...Electric vehicle and photovoltaic advanced roles in enhancing the financial p...
Electric vehicle and photovoltaic advanced roles in enhancing the financial p...
IJECEIAES
 
Embedded machine learning-based road conditions and driving behavior monitoring
Embedded machine learning-based road conditions and driving behavior monitoringEmbedded machine learning-based road conditions and driving behavior monitoring
Embedded machine learning-based road conditions and driving behavior monitoring
IJECEIAES
 
Textile Chemical Processing and Dyeing.pdf
Textile Chemical Processing and Dyeing.pdfTextile Chemical Processing and Dyeing.pdf
Textile Chemical Processing and Dyeing.pdf
NazakatAliKhoso2
 
TIME DIVISION MULTIPLEXING TECHNIQUE FOR COMMUNICATION SYSTEM
TIME DIVISION MULTIPLEXING TECHNIQUE FOR COMMUNICATION SYSTEMTIME DIVISION MULTIPLEXING TECHNIQUE FOR COMMUNICATION SYSTEM
TIME DIVISION MULTIPLEXING TECHNIQUE FOR COMMUNICATION SYSTEM
HODECEDSIET
 
Presentation of IEEE Slovenia CIS (Computational Intelligence Society) Chapte...
Presentation of IEEE Slovenia CIS (Computational Intelligence Society) Chapte...Presentation of IEEE Slovenia CIS (Computational Intelligence Society) Chapte...
Presentation of IEEE Slovenia CIS (Computational Intelligence Society) Chapte...
University of Maribor
 
Understanding Inductive Bias in Machine Learning
Understanding Inductive Bias in Machine LearningUnderstanding Inductive Bias in Machine Learning
Understanding Inductive Bias in Machine Learning
SUTEJAS
 
Question paper of renewable energy sources
Question paper of renewable energy sourcesQuestion paper of renewable energy sources
Question paper of renewable energy sources
mahammadsalmanmech
 
Recycled Concrete Aggregate in Construction Part II
Recycled Concrete Aggregate in Construction Part IIRecycled Concrete Aggregate in Construction Part II
Recycled Concrete Aggregate in Construction Part II
Aditya Rajan Patra
 
学校原版美国波士顿大学毕业证学历学位证书原版一模一样
学校原版美国波士顿大学毕业证学历学位证书原版一模一样学校原版美国波士顿大学毕业证学历学位证书原版一模一样
学校原版美国波士顿大学毕业证学历学位证书原版一模一样
171ticu
 
Casting-Defect-inSlab continuous casting.pdf
Casting-Defect-inSlab continuous casting.pdfCasting-Defect-inSlab continuous casting.pdf
Casting-Defect-inSlab continuous casting.pdf
zubairahmad848137
 
哪里办理(csu毕业证书)查尔斯特大学毕业证硕士学历原版一模一样
哪里办理(csu毕业证书)查尔斯特大学毕业证硕士学历原版一模一样哪里办理(csu毕业证书)查尔斯特大学毕业证硕士学历原版一模一样
哪里办理(csu毕业证书)查尔斯特大学毕业证硕士学历原版一模一样
insn4465
 
Modelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdfModelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdf
camseq
 
22CYT12-Unit-V-E Waste and its Management.ppt
22CYT12-Unit-V-E Waste and its Management.ppt22CYT12-Unit-V-E Waste and its Management.ppt
22CYT12-Unit-V-E Waste and its Management.ppt
KrishnaveniKrishnara1
 
A SYSTEMATIC RISK ASSESSMENT APPROACH FOR SECURING THE SMART IRRIGATION SYSTEMS
A SYSTEMATIC RISK ASSESSMENT APPROACH FOR SECURING THE SMART IRRIGATION SYSTEMSA SYSTEMATIC RISK ASSESSMENT APPROACH FOR SECURING THE SMART IRRIGATION SYSTEMS
A SYSTEMATIC RISK ASSESSMENT APPROACH FOR SECURING THE SMART IRRIGATION SYSTEMS
IJNSA Journal
 
Manufacturing Process of molasses based distillery ppt.pptx
Manufacturing Process of molasses based distillery ppt.pptxManufacturing Process of molasses based distillery ppt.pptx
Manufacturing Process of molasses based distillery ppt.pptx
Madan Karki
 
International Conference on NLP, Artificial Intelligence, Machine Learning an...
International Conference on NLP, Artificial Intelligence, Machine Learning an...International Conference on NLP, Artificial Intelligence, Machine Learning an...
International Conference on NLP, Artificial Intelligence, Machine Learning an...
gerogepatton
 
basic-wireline-operations-course-mahmoud-f-radwan.pdf
basic-wireline-operations-course-mahmoud-f-radwan.pdfbasic-wireline-operations-course-mahmoud-f-radwan.pdf
basic-wireline-operations-course-mahmoud-f-radwan.pdf
NidhalKahouli2
 
A review on techniques and modelling methodologies used for checking electrom...
A review on techniques and modelling methodologies used for checking electrom...A review on techniques and modelling methodologies used for checking electrom...
A review on techniques and modelling methodologies used for checking electrom...
nooriasukmaningtyas
 

Recently uploaded (20)

Iron and Steel Technology Roadmap - Towards more sustainable steelmaking.pdf
Iron and Steel Technology Roadmap - Towards more sustainable steelmaking.pdfIron and Steel Technology Roadmap - Towards more sustainable steelmaking.pdf
Iron and Steel Technology Roadmap - Towards more sustainable steelmaking.pdf
 
Computational Engineering IITH Presentation
Computational Engineering IITH PresentationComputational Engineering IITH Presentation
Computational Engineering IITH Presentation
 
Electric vehicle and photovoltaic advanced roles in enhancing the financial p...
Electric vehicle and photovoltaic advanced roles in enhancing the financial p...Electric vehicle and photovoltaic advanced roles in enhancing the financial p...
Electric vehicle and photovoltaic advanced roles in enhancing the financial p...
 
Embedded machine learning-based road conditions and driving behavior monitoring
Embedded machine learning-based road conditions and driving behavior monitoringEmbedded machine learning-based road conditions and driving behavior monitoring
Embedded machine learning-based road conditions and driving behavior monitoring
 
Textile Chemical Processing and Dyeing.pdf
Textile Chemical Processing and Dyeing.pdfTextile Chemical Processing and Dyeing.pdf
Textile Chemical Processing and Dyeing.pdf
 
TIME DIVISION MULTIPLEXING TECHNIQUE FOR COMMUNICATION SYSTEM
TIME DIVISION MULTIPLEXING TECHNIQUE FOR COMMUNICATION SYSTEMTIME DIVISION MULTIPLEXING TECHNIQUE FOR COMMUNICATION SYSTEM
TIME DIVISION MULTIPLEXING TECHNIQUE FOR COMMUNICATION SYSTEM
 
Presentation of IEEE Slovenia CIS (Computational Intelligence Society) Chapte...
Presentation of IEEE Slovenia CIS (Computational Intelligence Society) Chapte...Presentation of IEEE Slovenia CIS (Computational Intelligence Society) Chapte...
Presentation of IEEE Slovenia CIS (Computational Intelligence Society) Chapte...
 
Understanding Inductive Bias in Machine Learning
Understanding Inductive Bias in Machine LearningUnderstanding Inductive Bias in Machine Learning
Understanding Inductive Bias in Machine Learning
 
Question paper of renewable energy sources
Question paper of renewable energy sourcesQuestion paper of renewable energy sources
Question paper of renewable energy sources
 
Recycled Concrete Aggregate in Construction Part II
Recycled Concrete Aggregate in Construction Part IIRecycled Concrete Aggregate in Construction Part II
Recycled Concrete Aggregate in Construction Part II
 
学校原版美国波士顿大学毕业证学历学位证书原版一模一样
学校原版美国波士顿大学毕业证学历学位证书原版一模一样学校原版美国波士顿大学毕业证学历学位证书原版一模一样
学校原版美国波士顿大学毕业证学历学位证书原版一模一样
 
Casting-Defect-inSlab continuous casting.pdf
Casting-Defect-inSlab continuous casting.pdfCasting-Defect-inSlab continuous casting.pdf
Casting-Defect-inSlab continuous casting.pdf
 
哪里办理(csu毕业证书)查尔斯特大学毕业证硕士学历原版一模一样
哪里办理(csu毕业证书)查尔斯特大学毕业证硕士学历原版一模一样哪里办理(csu毕业证书)查尔斯特大学毕业证硕士学历原版一模一样
哪里办理(csu毕业证书)查尔斯特大学毕业证硕士学历原版一模一样
 
Modelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdfModelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdf
 
22CYT12-Unit-V-E Waste and its Management.ppt
22CYT12-Unit-V-E Waste and its Management.ppt22CYT12-Unit-V-E Waste and its Management.ppt
22CYT12-Unit-V-E Waste and its Management.ppt
 
A SYSTEMATIC RISK ASSESSMENT APPROACH FOR SECURING THE SMART IRRIGATION SYSTEMS
A SYSTEMATIC RISK ASSESSMENT APPROACH FOR SECURING THE SMART IRRIGATION SYSTEMSA SYSTEMATIC RISK ASSESSMENT APPROACH FOR SECURING THE SMART IRRIGATION SYSTEMS
A SYSTEMATIC RISK ASSESSMENT APPROACH FOR SECURING THE SMART IRRIGATION SYSTEMS
 
Manufacturing Process of molasses based distillery ppt.pptx
Manufacturing Process of molasses based distillery ppt.pptxManufacturing Process of molasses based distillery ppt.pptx
Manufacturing Process of molasses based distillery ppt.pptx
 
International Conference on NLP, Artificial Intelligence, Machine Learning an...
International Conference on NLP, Artificial Intelligence, Machine Learning an...International Conference on NLP, Artificial Intelligence, Machine Learning an...
International Conference on NLP, Artificial Intelligence, Machine Learning an...
 
basic-wireline-operations-course-mahmoud-f-radwan.pdf
basic-wireline-operations-course-mahmoud-f-radwan.pdfbasic-wireline-operations-course-mahmoud-f-radwan.pdf
basic-wireline-operations-course-mahmoud-f-radwan.pdf
 
A review on techniques and modelling methodologies used for checking electrom...
A review on techniques and modelling methodologies used for checking electrom...A review on techniques and modelling methodologies used for checking electrom...
A review on techniques and modelling methodologies used for checking electrom...
 

A Pragmatic Approach

  • 1. Presented by : Hakan C. İpek
  • 2. A Pragmatic Approach  Main Topics  Evils of Duplication  Orthogonality  Reversibility  Tracer Bullets  Prototypes and Post-it Notes  Domain Languages  Estimating
  • 3. The Evils of Duplication  DRY – Don’t Repeat Yourself  Every piece of knowledge must have a single, unambiguous, authoritative representation within system.  If you change one, you need to change others.
  • 4. The Evils of Duplication  How Does Duplication Rise?  Imposed Duplication  Inadvernt Duplication  Impatient Duplication  Interdeveloper Duplication  Make It Easy to Reuse
  • 5. A Pragmatic Approach  Main Topics  Evils of Duplication  Orthogonality  Reversibility  Tracer Bullets  Prototypes and Post-it Notes  Domain Languages  Estimating
  • 6. Orthogonality  What Is Orthogonality?  It is a critical concept if you want to produce systems that are easy to design, build, test, and extend.  A term of Geometry.(90 degree lines, x-y axis etc.)  Independent lines.  Parallel movement to an axis doesn’t change your position on the other one.  In computing, similar to geometry, two orthogonal things, change in one doesn’t effect the other.
  • 7. Orthogonality  A Nonorthogonal System  A Helicopter Example
  • 8. Orthogonality  Benefits of Orthogonality  When components of any system are highly interdependent, there is no such thing as a local fix.  Eliminate Effects Between Unrelated Things  Gain Productivity  Reduce Risk
  • 9. Orthogonality  Comparing DPY with Orthogonality  They are closely related.  In DRY, we are looking to minimize duplication within system.  With orthogonality, we reduce the interpendency among the system’s components.  When you combine them, you’ll realize that the systems you develop are more flexible, more understandable and easier to debug, test and maintain.
  • 10. A Pragmatic Approach  Main Topics  Evils of Duplication  Orthogonality  Reversibility  Tracer Bullets  Prototypes and Post-it Notes  Domain Languages  Estimating
  • 11. Reversibility  Nothing is more dangerous than an idea if it’s the only one you have.  Emil-Auguste Chartier, Propos sur la religion, 1938  Nothing stays forever,  if you rely heavily on some fact, you can almost guarantee that it will change.  Anything you do should be reversible.
  • 12. Reversibility  There is always more than one way to implement something, and there is usually more than one vendor available to provide a third-party product.  While you writing your code, product can change.  As time goes by, and your project progresses, you may find yourself stuck in an untenable position.  With every critical decision, the project team commits to a smaller target.  The problem is that critical decisions aren’t easily reversible.
  • 13. Reversibility  Scenario;  Early in the project, to use a relational database from vendor A.  Later, you discover that the database is slow, but database from vendor B is faster.  Most of the time, calls to third-party products are entangled throughout the code  But if you really abstracted the idea of a database out, you have the flexibility to change horses in midstream.
  • 14. Reversibility  Mistake lies in assuming that any decision is cast in stone.  Instead of that, think of them more as being written in the sand at the beach.  A big wave can come along and wipe them out at any time.
  • 15. Reversibility  Flexible Architecture  Technologies such as CORBA can help insulate portions of a project from changes in development language or platform.  Is the performance of Java on that platform not up to expectations? Recode the client in C++, and nothing else needs to change.  With a CORBA architecture, you have to take a hit only for the component you are replacing; the other components shouldn’t be affected.
  • 16. A Pragmatic Approach  Main Topics  Evils of Duplication  Orthogonality  Reversibility  Tracer Bullets  Prototypes and Post-it Notes  Domain Languages  Estimating
  • 17. Tracer Bullets  Like the gunners, you’re trying to hit a target in the dark.  Because you may be using algorithms, techniques, languages, or libraries you aren’t familiar with, you face a large number of unknowns.
  • 18. Tracer Bullets  Code That Glows in the Dark  We’re looking for something that gets us from a requirement to some aspect of the final system quickly, visibly, and repeatably.  Use commands to prove UI could talk to libraries.
  • 19. Tracer Bullets  Advantages of Tracer Code;  Users get to see something working early.  Developers build a structure to work in.  You have an integration platform.  You have something to demonstrate.  You have a better feel for progress.  Tracer Bullets Don’t Always Hit Their Target  Tracer bullets show what you’re hitting. This may not always be the target. You then adjust your aim until they’re on target.
  • 20. A Pragmatic Approach  Main Topics  Evils of Duplication  Orthogonality  Reversibility  Tracer Bullets  Prototypes and Post-it Notes  Domain Languages  Estimating
  • 21. Prototypes and Post-it Notes  Prototypes are designed to answer just a few questions, so they are much cheaper and faster to develop than applications that go into production.  The code can ignore unimportant details.  If you find yourself in an environment where you cannot give up the details, then you need to ask yourself if you are really building a prototype at all. Perhaps a tracer bullet style of development would be more appropriate in this case.
  • 22. Prototypes and Post-it Notes  Things to Prototype  Architecture  New functionality in an existing system  Structure or contents of external data  Third-party tools or components  Performance issues  User interface design  Prototyping is a learning experience. Its value lies not in the code produced, but in the lessons learned. That’s really the point of prototyping.
  • 23. Prototypes and Post-it Notes  When building a prototype, what details can you ignore?  Correctness  Ex : use dummy data where appropriate.  Completeness  Ex : with only one preselected piece of input data and one menu item.  Robustness  Ex : check error, crashes are okay  Style
  • 24. A Pragmatic Approach  Main Topics  Evils of Duplication  Orthogonality  Reversibility  Tracer Bullets  Prototypes and Post-it Notes  Domain Languages  Estimating
  • 25. A Pragmatic Approach  Main Topics  Evils of Duplication  Orthogonality  Reversibility  Tracer Bullets  Prototypes and Post-it Notes  Domain Languages  Estimating