SlideShare ist ein Scribd-Unternehmen logo
Soheil Karami
ABSTRACTION
AND
COST
CHANGE
Cost
An amount that has to be paid or
spent to buy or obtain something.
—Structured Design
“The goal of software design is to minimize
the cost of software and maximize the
value”
Cost
in software development
Cost Of Software
cost(change)
cost(software) ~=
—Manny Lehman
“E-Type program is software that
isn't ever done and changes, and
needs to change constantly. This
is because of it's specification and
requirements change constantly.”
Cost Of Software
cost(change)
cost(software) ~=
cost(change) ~= cost(big changes)
cost(big change)
Coupling
The degree of interdependence between software
modules; a measure of how closely connected two
routines or modules are; the strength of the
relationships between modules.
Cost Of Software
cost(change)
cost(software) ~=
cost(change) ~= cost(big changes)
cost(big change) ~= coupling
— Coupling
“Don't throw us away“
Abstraction
Abstraction, in the common natural language sense,
means to focus on the general and put aside the
specific. we abstract by emphasizing what is common
and deemphasizing details.
The Gang of 4 recommended that we design to interfaces,
which is another way of saying that relationships between
entities should be established at the abstract level.
—Some one
“Abstractions have run time,
compile time and human
costs“
—Sandi Metz
“Duplication is cheaper than
the wrong abstraction”
—Manny Lehman
“E-Type program is software that
isn't ever done and changes, and
needs to change constantly. This
is because of it's specification and
requirements change constantly.”
Chess
Eight Queens Puzzle
Lehman's laws
S-Programs E-Programs
Real-world activity
P-Programs
S P E
How do we use abstractions
safely?
A way can help you to find a
good Abstraction
Commonality
Variability
Analysis
Commonality Variability Analysis
a strong way to determine how a set of family members
might abstractly be considered the same, and then went
on to suggest that variability analysis could be performed
within the context of a given abstraction to determine how
they were different.
Commonality Analysis
Commonality analysis is the search for common elements
that helps us understand how family members are the
same.
Finding the domain is the first
step of
CVA
Variability Analysis
Variability analysis expresses what is not common
between a family members.
—Soheil Karami
“A Bounded Context and
Subdomain are indeed a form of
abstraction”
—James Coplien
“Grouping by commonality naturally leads to chunks
that are independent of each other because each
chunk has low commonality with the elements in
other chunks”
CVA
Supports Abstraction
01
02 Reduces Coupling
03 Reduces Maintenance Cost
Sales Inventory
Delivery
Accounting Payment
KetabKade
Inventory
Inventory
Inventory
Others
Sales
Sales
Book
AudioBook
Item
Book
AudioBook
Show PDF files
Sales Inventory
Delivery
Accounting Payment
KetabKade
Inventory
Inventory
Inventory
Others
Delivery
Epub PDF
Content
Variability
Positive
01
02 Negative
—Soheil Karami
“Don't use your implementation as an
abstraction“
Delivery
Content
PDF
epub
Showable
PDF
epub
Playable
Audio
List<T>
Variability
Changeable Parts
V
Commonality
Stable Parts
C
Strategy Design Pattern
Your last favor
Summary
The cost is our concern.
01
02 Wrong abstraction makes our life difficult.
03 Do CVA continually.
THANKS!

Weitere ähnliche Inhalte

Ähnlich wie انتزاع و هزینه - انتزاع و تاثیرات آن در توسعه و نگهداری نرم‌افزار

Bloom plseminar-sp15
Bloom plseminar-sp15Bloom plseminar-sp15
Bloom plseminar-sp15
Joe Hellerstein
 
Voice search lessons
Voice search lessonsVoice search lessons
Voice search lessons
Algolia
 
Demo day
Demo dayDemo day
Demo day
DeepikaRana30
 
Into the domain
Into the domainInto the domain
Into the domain
Knoldus Inc.
 
CASE tools and their effects on software quality
CASE tools and their effects on software qualityCASE tools and their effects on software quality
CASE tools and their effects on software quality
Utkarsh Agarwal
 
Data Samples & Data AnalysesNYU SCPSDataba
Data Samples & Data AnalysesNYU  SCPSDatabaData Samples & Data AnalysesNYU  SCPSDataba
Data Samples & Data AnalysesNYU SCPSDataba
OllieShoresna
 
All the cool kids....
All the cool kids....All the cool kids....
All the cool kids....
Matthias Noback
 
Semantic Perspectives for Contemporary Question Answering Systems
Semantic Perspectives for Contemporary Question Answering SystemsSemantic Perspectives for Contemporary Question Answering Systems
Semantic Perspectives for Contemporary Question Answering Systems
Andre Freitas
 
Using construction grammar in conversational systems
Using construction grammar in conversational systemsUsing construction grammar in conversational systems
Using construction grammar in conversational systems
CJ Jenkins
 
021114+sotfware+analysis,+a+roadmap.ppt
021114+sotfware+analysis,+a+roadmap.ppt021114+sotfware+analysis,+a+roadmap.ppt
021114+sotfware+analysis,+a+roadmap.ppt
Yann-Gaël Guéhéneuc
 
DevOps Paradox: Going Faster Brings Higher Quality, Lower Costs, & Better Out...
DevOps Paradox: Going Faster Brings Higher Quality, Lower Costs, & Better Out...DevOps Paradox: Going Faster Brings Higher Quality, Lower Costs, & Better Out...
DevOps Paradox: Going Faster Brings Higher Quality, Lower Costs, & Better Out...
dev2ops
 
System Dynamics (Sd) &amp; Agent Based Modelling
System Dynamics (Sd) &amp; Agent Based ModellingSystem Dynamics (Sd) &amp; Agent Based Modelling
System Dynamics (Sd) &amp; Agent Based Modelling
dseConsulting
 
introduction to machine learning and nlp
introduction to machine learning and nlpintroduction to machine learning and nlp
introduction to machine learning and nlp
Mahmoud Farag
 
New seven management tools
New seven management toolsNew seven management tools
New seven management tools
Javith Saleem
 
Architecture and organization (Abstractions II version)
Architecture and organization (Abstractions II version)Architecture and organization (Abstractions II version)
Architecture and organization (Abstractions II version)
Kevin Goldsmith
 
13285737.ppt
13285737.ppt13285737.ppt
13285737.ppt
Csechelper1
 
Patterns of Evolutionary Architecture
Patterns of Evolutionary ArchitecturePatterns of Evolutionary Architecture
Patterns of Evolutionary Architecture
Shawn Button
 
Part 1.2 Understanding the relevance of your search with Elasticsearch and Ki...
Part 1.2 Understanding the relevance of your search with Elasticsearch and Ki...Part 1.2 Understanding the relevance of your search with Elasticsearch and Ki...
Part 1.2 Understanding the relevance of your search with Elasticsearch and Ki...
ssuser65fa31
 

Ähnlich wie انتزاع و هزینه - انتزاع و تاثیرات آن در توسعه و نگهداری نرم‌افزار (20)

Bloom plseminar-sp15
Bloom plseminar-sp15Bloom plseminar-sp15
Bloom plseminar-sp15
 
Voice search lessons
Voice search lessonsVoice search lessons
Voice search lessons
 
Demo day
Demo dayDemo day
Demo day
 
Into the domain
Into the domainInto the domain
Into the domain
 
CASE tools and their effects on software quality
CASE tools and their effects on software qualityCASE tools and their effects on software quality
CASE tools and their effects on software quality
 
Marvin_Capstone
Marvin_CapstoneMarvin_Capstone
Marvin_Capstone
 
Data Samples & Data AnalysesNYU SCPSDataba
Data Samples & Data AnalysesNYU  SCPSDatabaData Samples & Data AnalysesNYU  SCPSDataba
Data Samples & Data AnalysesNYU SCPSDataba
 
All the cool kids....
All the cool kids....All the cool kids....
All the cool kids....
 
Poster2
Poster2Poster2
Poster2
 
Semantic Perspectives for Contemporary Question Answering Systems
Semantic Perspectives for Contemporary Question Answering SystemsSemantic Perspectives for Contemporary Question Answering Systems
Semantic Perspectives for Contemporary Question Answering Systems
 
Using construction grammar in conversational systems
Using construction grammar in conversational systemsUsing construction grammar in conversational systems
Using construction grammar in conversational systems
 
021114+sotfware+analysis,+a+roadmap.ppt
021114+sotfware+analysis,+a+roadmap.ppt021114+sotfware+analysis,+a+roadmap.ppt
021114+sotfware+analysis,+a+roadmap.ppt
 
DevOps Paradox: Going Faster Brings Higher Quality, Lower Costs, & Better Out...
DevOps Paradox: Going Faster Brings Higher Quality, Lower Costs, & Better Out...DevOps Paradox: Going Faster Brings Higher Quality, Lower Costs, & Better Out...
DevOps Paradox: Going Faster Brings Higher Quality, Lower Costs, & Better Out...
 
System Dynamics (Sd) &amp; Agent Based Modelling
System Dynamics (Sd) &amp; Agent Based ModellingSystem Dynamics (Sd) &amp; Agent Based Modelling
System Dynamics (Sd) &amp; Agent Based Modelling
 
introduction to machine learning and nlp
introduction to machine learning and nlpintroduction to machine learning and nlp
introduction to machine learning and nlp
 
New seven management tools
New seven management toolsNew seven management tools
New seven management tools
 
Architecture and organization (Abstractions II version)
Architecture and organization (Abstractions II version)Architecture and organization (Abstractions II version)
Architecture and organization (Abstractions II version)
 
13285737.ppt
13285737.ppt13285737.ppt
13285737.ppt
 
Patterns of Evolutionary Architecture
Patterns of Evolutionary ArchitecturePatterns of Evolutionary Architecture
Patterns of Evolutionary Architecture
 
Part 1.2 Understanding the relevance of your search with Elasticsearch and Ki...
Part 1.2 Understanding the relevance of your search with Elasticsearch and Ki...Part 1.2 Understanding the relevance of your search with Elasticsearch and Ki...
Part 1.2 Understanding the relevance of your search with Elasticsearch and Ki...
 

Kürzlich hochgeladen

BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
QuickwayInfoSystems3
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
abdulrafaychaudhry
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 

Kürzlich hochgeladen (20)

BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 

انتزاع و هزینه - انتزاع و تاثیرات آن در توسعه و نگهداری نرم‌افزار