SlideShare a Scribd company logo
ARCHITECTURE
THE CLEAN WAY
Mohammad YeganehFar, Software Project Manager
THE
DEPENDENCY
JOB
UNDERSTANDING THE ARCHITECT
AND WHY SHE DISTRUSTS SNEAKY DEPENDENCIES
A DEPENDENCY exists when a given
piece of software element cannot be
understood and modified in isolation.
Complexity Conformity Changeability
COHESION refers to the degree to which
software elements inside a module belong
together.
COUPLING refers to the degree to which
a software element is independent from
others.
The Big Ball of Mud
COMMON CLOSURE PRINCIPLE:
Gather into components those classes
that change for the same reasons and
at the same times.
Accountability Autonomy
BUSINESS LOGIC
DATABASE
WEB
DATABASE
BUSINESS
WEB
Database-Centric Architecture
Avoid Coupling to Premature Decisions.
Keep Software Soft by Leaving Options Open.
A good architect maximizes the number
of decisions not made.
— Robert C. Martin
BUSINESS LOGIC
DATABASE
WEB
DEPENDENCY INVERSION PRINCIPLE:
High-level modules should not depend on
Low-level modules. both should depend
on abstractions.
Send Money Service
Account Repository
Send Money Service
Account Repository
Implementation
Account Repository
<I>
A SEAM is a place where you can alter
behavior in your program without
editing in that place.
BUSINESS
LOGIC
DATABASE
WEB
Domain-Centric Architecture
DATABASE
DOMAIN
WEB
APPLICATION
Layered Architecture for DDD
DEPENDENCY RULE:
Source code dependencies can only
point inwards.
ENTITIES
USE CASES
CONTROLLERS
DB
Clean Architecture (Uncle Bob)
ENTITIES
USE CASES
CONTROLLERS
DB
DOMAIN
APPLICATION
DB
Clean Architecture (Uncle Bob) Layered Architecture for DDD
Independent
Domain Model
Dependency
Rule
Policy &
Mechanism
Testability &
Independency of
Frameworks
SendMoneyService
<I>
SendMoneyInteractor
Account
SendMoneyUseCase
<I>
SendMoneyRequest
<DS>
Controller
SendMoneyOutPort
<I>
SendMoneyResponse
<DS>
PresenterViewModel
<DS>
SendMoneyImplAccountRepository
<I>
AccountRepositoryImpl
View
Account
<ORM-Managed>
Presentation Layer
Persistence Layer
Domain LayerComposition Root Component
THE GOAL OF SOFTWARE ARCHITECTURE
… is to minimize the human resources required
to build and maintain the required system.
— Robert C. Martin
REFERENCES
Clean Architecture- A Craftsman's Guide to Software Structure and Design
A Philosophy of Software Design
The Mythical Man-Month
Dependency Injection Principles, Practices, and Patterns
INSPIRED- How to Create Tech Products Customers Love
Working Effectively with Legacy Code
Domain-Driven Design- Tackling Complexity in the Heart of Software
Implementing Domain-Driven Design

More Related Content

Similar to Clean architecture تاملی در

Microservicessai 141024145932-conversion-gate01 (1)
          Microservicessai 141024145932-conversion-gate01 (1)          Microservicessai 141024145932-conversion-gate01 (1)
Microservicessai 141024145932-conversion-gate01 (1)
Michel Habert
 
L02 What is Software Architecture?
L02 What is Software Architecture?L02 What is Software Architecture?
L02 What is Software Architecture?
Ólafur Andri Ragnarsson
 
Large scale enterprise software architecture
Large scale enterprise software architectureLarge scale enterprise software architecture
Large scale enterprise software architecture
Mohammad Yeganehfar
 
Software architectures
Software architecturesSoftware architectures
Software architectures
Amandeep Singh
 
MicroServices, yet another architectural style?
MicroServices, yet another architectural style?MicroServices, yet another architectural style?
MicroServices, yet another architectural style?
ACA IT-Solutions
 
Microservice final final
Microservice final finalMicroservice final final
Microservice final final
gaurav shukla
 
L02 Architecture
L02 ArchitectureL02 Architecture
L02 Architecture
Ólafur Andri Ragnarsson
 
Cloud Native IT Transformation - Whitepaper by RapidValue
Cloud Native IT Transformation - Whitepaper by RapidValueCloud Native IT Transformation - Whitepaper by RapidValue
Cloud Native IT Transformation - Whitepaper by RapidValue
RapidValue
 
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
ghodgkinson
 
construction management system final year report
construction management system final year reportconstruction management system final year report
construction management system final year report
chiragbarasiya
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Harsh Jegadeesan
 
Microservice architecture : Part 1
Microservice architecture : Part 1Microservice architecture : Part 1
Microservice architecture : Part 1
NodeXperts
 
Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)
MuhammadTalha436
 
Software Engineering Solved Past Paper 2020
Software Engineering Solved Past Paper 2020 Software Engineering Solved Past Paper 2020
Software Engineering Solved Past Paper 2020
MuhammadTalha436
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitecture
ABDEL RAHMAN KARIM
 
Making bimodal it_a_reality_final
Making bimodal it_a_reality_finalMaking bimodal it_a_reality_final
Making bimodal it_a_reality_final
Centric Consulting
 
Best Practices Building Cloud Scale Apps with Microservices
Best Practices Building Cloud Scale Apps with MicroservicesBest Practices Building Cloud Scale Apps with Microservices
Best Practices Building Cloud Scale Apps with Microservices
Jim (张建军) Zhang
 
Cloud Native In-Depth
Cloud Native In-DepthCloud Native In-Depth
Cloud Native In-Depth
Siva Rama Krishna Chunduru
 
Understanding the basic need of Service Oriented Architecture and getting sta...
Understanding the basic need of Service Oriented Architecture and getting sta...Understanding the basic need of Service Oriented Architecture and getting sta...
Understanding the basic need of Service Oriented Architecture and getting sta...
Shantanu Thakre
 
CNS Presentation
CNS PresentationCNS Presentation
CNS Presentation
John Couston
 

Similar to Clean architecture تاملی در (20)

Microservicessai 141024145932-conversion-gate01 (1)
          Microservicessai 141024145932-conversion-gate01 (1)          Microservicessai 141024145932-conversion-gate01 (1)
Microservicessai 141024145932-conversion-gate01 (1)
 
L02 What is Software Architecture?
L02 What is Software Architecture?L02 What is Software Architecture?
L02 What is Software Architecture?
 
Large scale enterprise software architecture
Large scale enterprise software architectureLarge scale enterprise software architecture
Large scale enterprise software architecture
 
Software architectures
Software architecturesSoftware architectures
Software architectures
 
MicroServices, yet another architectural style?
MicroServices, yet another architectural style?MicroServices, yet another architectural style?
MicroServices, yet another architectural style?
 
Microservice final final
Microservice final finalMicroservice final final
Microservice final final
 
L02 Architecture
L02 ArchitectureL02 Architecture
L02 Architecture
 
Cloud Native IT Transformation - Whitepaper by RapidValue
Cloud Native IT Transformation - Whitepaper by RapidValueCloud Native IT Transformation - Whitepaper by RapidValue
Cloud Native IT Transformation - Whitepaper by RapidValue
 
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
 
construction management system final year report
construction management system final year reportconstruction management system final year report
construction management system final year report
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Microservice architecture : Part 1
Microservice architecture : Part 1Microservice architecture : Part 1
Microservice architecture : Part 1
 
Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)
 
Software Engineering Solved Past Paper 2020
Software Engineering Solved Past Paper 2020 Software Engineering Solved Past Paper 2020
Software Engineering Solved Past Paper 2020
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitecture
 
Making bimodal it_a_reality_final
Making bimodal it_a_reality_finalMaking bimodal it_a_reality_final
Making bimodal it_a_reality_final
 
Best Practices Building Cloud Scale Apps with Microservices
Best Practices Building Cloud Scale Apps with MicroservicesBest Practices Building Cloud Scale Apps with Microservices
Best Practices Building Cloud Scale Apps with Microservices
 
Cloud Native In-Depth
Cloud Native In-DepthCloud Native In-Depth
Cloud Native In-Depth
 
Understanding the basic need of Service Oriented Architecture and getting sta...
Understanding the basic need of Service Oriented Architecture and getting sta...Understanding the basic need of Service Oriented Architecture and getting sta...
Understanding the basic need of Service Oriented Architecture and getting sta...
 
CNS Presentation
CNS PresentationCNS Presentation
CNS Presentation
 

More from Iranian Domain-Driven Design Community

Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdfPrinciples of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Iranian Domain-Driven Design Community
 
Ian Cooper webinar for DDD Iran: Kent beck style tdd seven years after
Ian Cooper webinar for DDD Iran: Kent beck style tdd   seven years afterIan Cooper webinar for DDD Iran: Kent beck style tdd   seven years after
Ian Cooper webinar for DDD Iran: Kent beck style tdd seven years after
Iranian Domain-Driven Design Community
 
کشف ناشناخته‌ها به سبک EventStorming
کشف ناشناخته‌ها به سبک EventStormingکشف ناشناخته‌ها به سبک EventStorming
کشف ناشناخته‌ها به سبک EventStorming
Iranian Domain-Driven Design Community
 
Event sourcing
Event sourcingEvent sourcing
هنر کشف گنج، تطبیق مرزها - علیرضا رحمانی خلیلی
هنر کشف گنج، تطبیق مرزها - علیرضا رحمانی خلیلیهنر کشف گنج، تطبیق مرزها - علیرضا رحمانی خلیلی
هنر کشف گنج، تطبیق مرزها - علیرضا رحمانی خلیلی
Iranian Domain-Driven Design Community
 
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
Iranian Domain-Driven Design Community
 
How Event Strming can helps to find Bounded Contexts
How Event Strming can helps to find Bounded ContextsHow Event Strming can helps to find Bounded Contexts
How Event Strming can helps to find Bounded Contexts
Iranian Domain-Driven Design Community
 
Autonomous Bounded Contexts
Autonomous Bounded ContextsAutonomous Bounded Contexts
Autonomous Bounded Contexts
Iranian Domain-Driven Design Community
 
How #BDD helps #DDD
How #BDD helps #DDDHow #BDD helps #DDD
جادوی زبان، طلسم پیچیدگی
جادوی زبان، طلسم پیچیدگیجادوی زبان، طلسم پیچیدگی
جادوی زبان، طلسم پیچیدگی
Iranian Domain-Driven Design Community
 

More from Iranian Domain-Driven Design Community (10)

Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdfPrinciples of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
 
Ian Cooper webinar for DDD Iran: Kent beck style tdd seven years after
Ian Cooper webinar for DDD Iran: Kent beck style tdd   seven years afterIan Cooper webinar for DDD Iran: Kent beck style tdd   seven years after
Ian Cooper webinar for DDD Iran: Kent beck style tdd seven years after
 
کشف ناشناخته‌ها به سبک EventStorming
کشف ناشناخته‌ها به سبک EventStormingکشف ناشناخته‌ها به سبک EventStorming
کشف ناشناخته‌ها به سبک EventStorming
 
Event sourcing
Event sourcingEvent sourcing
Event sourcing
 
هنر کشف گنج، تطبیق مرزها - علیرضا رحمانی خلیلی
هنر کشف گنج، تطبیق مرزها - علیرضا رحمانی خلیلیهنر کشف گنج، تطبیق مرزها - علیرضا رحمانی خلیلی
هنر کشف گنج، تطبیق مرزها - علیرضا رحمانی خلیلی
 
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
 
How Event Strming can helps to find Bounded Contexts
How Event Strming can helps to find Bounded ContextsHow Event Strming can helps to find Bounded Contexts
How Event Strming can helps to find Bounded Contexts
 
Autonomous Bounded Contexts
Autonomous Bounded ContextsAutonomous Bounded Contexts
Autonomous Bounded Contexts
 
How #BDD helps #DDD
How #BDD helps #DDDHow #BDD helps #DDD
How #BDD helps #DDD
 
جادوی زبان، طلسم پیچیدگی
جادوی زبان، طلسم پیچیدگیجادوی زبان، طلسم پیچیدگی
جادوی زبان، طلسم پیچیدگی
 

Recently uploaded

Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
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
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
ssuserad3af4
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
Drona Infotech
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 

Recently uploaded (20)

Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
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 ⚡️
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 

Clean architecture تاملی در