Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Clean architecture تاملی در

103 Aufrufe

Veröffentlicht am

اگر در نگاه اول، عنوان معماری تميز (Clean Architecture) حس كنجكاوی شما را به خود جلب می‌كند، احتمالاً شما به معماری نرم‌افزاری كه در حال ساخت آن هستید اهميت ويژه‌ایی می‌دهيد. به نوعی می‌توان گفت مهمترين نيازمندی Non-functional يک نرم‌افزار، موضوع نگهداشت (Maintainabilty) آن است؛ به هر ميزان كه هزينه نگهداشت یک محصول نرم افزاری پايين و يا قابل قبول باشد، به مراتب سريع‌تر و كم هزينه‌تر می‌توانيم قابليت‌های جديدی به آن اضافه كنيم و يا چاره‌ایی برای رفع مشكلات كارایی و مقياس پذيری آن بیندیشیم، و حتی رفع مشكلات امنيتی آن را نيز سریعتر کنیم.
محمد یگانه‌فر در اين ارائه به نحوه درست پياده سازی یک معماری تميز و ظرفيت‌های اين شيوه در كنترل هزينه نگهداشت یک محصول نرم‌افزاری خواهد پرداخت.

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Clean architecture تاملی در

  1. 1. ARCHITECTURE THE CLEAN WAY Mohammad YeganehFar, Software Project Manager
  3. 3. A DEPENDENCY exists when a given piece of software element cannot be understood and modified in isolation.
  4. 4. Complexity Conformity Changeability
  5. 5. COHESION refers to the degree to which software elements inside a module belong together.
  6. 6. COUPLING refers to the degree to which a software element is independent from others.
  7. 7. The Big Ball of Mud
  8. 8. COMMON CLOSURE PRINCIPLE: Gather into components those classes that change for the same reasons and at the same times.
  9. 9. Accountability Autonomy
  11. 11. DATABASE BUSINESS WEB Database-Centric Architecture
  12. 12. Avoid Coupling to Premature Decisions. Keep Software Soft by Leaving Options Open.
  13. 13. A good architect maximizes the number of decisions not made. — Robert C. Martin
  15. 15. DEPENDENCY INVERSION PRINCIPLE: High-level modules should not depend on Low-level modules. both should depend on abstractions.
  16. 16. Send Money Service Account Repository Send Money Service Account Repository Implementation Account Repository <I>
  17. 17. A SEAM is a place where you can alter behavior in your program without editing in that place.
  18. 18. BUSINESS LOGIC DATABASE WEB Domain-Centric Architecture
  19. 19. DATABASE DOMAIN WEB APPLICATION Layered Architecture for DDD
  20. 20. DEPENDENCY RULE: Source code dependencies can only point inwards.
  21. 21. ENTITIES USE CASES CONTROLLERS DB Clean Architecture (Uncle Bob)
  22. 22. ENTITIES USE CASES CONTROLLERS DB DOMAIN APPLICATION DB Clean Architecture (Uncle Bob) Layered Architecture for DDD
  23. 23. Independent Domain Model Dependency Rule Policy & Mechanism Testability & Independency of Frameworks
  24. 24. SendMoneyService <I> SendMoneyInteractor Account SendMoneyUseCase <I> SendMoneyRequest <DS> Controller SendMoneyOutPort <I> SendMoneyResponse <DS> PresenterViewModel <DS> SendMoneyImplAccountRepository <I> AccountRepositoryImpl View Account <ORM-Managed>
  25. 25. Presentation Layer Persistence Layer Domain LayerComposition Root Component
  26. 26. THE GOAL OF SOFTWARE ARCHITECTURE … is to minimize the human resources required to build and maintain the required system. — Robert C. Martin
  27. 27. 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