Домейн е област от знания, свързана с проблем, който се опитваме да разрешим.

Модел на домейн представлява тези аспекти на домейн, които са подходящи за определен проблем.

„Дизайн, управляван от домейн“ има за цел да изгради стратегически софтуер, базиран на модели на домейн, и дефинира две основни концепции за постигането му.

  • Ограничен контекст е подсистема, която дефинира конкретна отговорност с изрична граница. Например, в приложение за пазаруване, ние създаваме компоненти, които да поддържат контекста на продажбите и други, които да поддържат контекста на купувача.
  • Вездесъщият език отразява език, който се говори сред членовете на екипа, работещи в Ограничения контекст.

Използването на ограничени контексти намалява свързването между подсистемите и можем да обменяме данни между тях чрез изричен API, като избягваме зависимостите.

Като разработчици трябва да изберем подходящи имена за нашите променливи, които отразяват бизнес термините, използвани във всички комуникационни канали по време на етапа на проектиране на нашите модели на домейн.

Казус

Бизнес-към-бизнес (B2B) е бизнес, осъществяван между една компания и друга.

Водеща компания внедрява портал за електронна търговия за продажба на тениски от различни доставчици и производители.

Доставчикът иска да избегне дублирането на усилията за ръчно качване на изображения от двете страни и моли водещата компания да използва вътрешен API, за да актуализира своите продуктови изображения.

По време на процеса на интеграция бизнес експертите и разработчиците са в постоянна комуникация за изясняване на изискванията. Например.

  • Доставчикът съобщава на екипа за разработка, че неговият вътрешен API описва атрибут mediaAssetID за уникално идентифициране на обект на изображение в неговия домейн.
  • Извършват се взаимодействия по имейл, за да се изясни как да се създаде URL път за извличане на крайния обект на изображение с помощта на атрибута mediaAssetID.

Разберете бизнес концепциите, преди да ги преведете в изходен код

Вездесъщият език е езикът на бизнеса. Техническите имена не са разрешени за описание на бизнес домейна.

Някои разработчици могат да посочат следния дизайн на класа, когато вашият ограничен контекст е преведен в изходен код.

Атрибутът imageId е добро име, но други бизнес домейни може вече да го използват. Ние, като разработчици, понякога се изключваме от бизнеса и търсим имена на променливи, които обикновено следват конвенции, стандарти, езици за програмиране, препоръки за рамка или технически термини.

Ако сме участвали в анализ на изискванията от седмици, защо не въведем същата бизнес терминология в имената на нашите променливи? „Имената на променливите разкриват намерение“.

Вездесъщият език се опитва да въведе влиянието на бизнес комуникационните структури върху софтуера. Когато можете, опитайте се да въведете бизнес терминология в имената на вашите променливи.

Никога не предполагайте и не задавайте въпроси, за да изясните двусмислени и синоними.

Получавате задача да внедрите услуга за извличане на документи, използвани при превоза на стоки, и решавате да я наречете транспортни бележки. Но вашият бизнес не изпраща стоки по море!

Винаги задавайте въпроси на вашите колеги и бизнес експерти, за да изясните бизнес концепциите. Тогава ще разберете, че вашата услуга трябва да въведе бележки за доставка.

Следният дизайн на класа представлява фундаментална концепция в умствения модел на експерта по домейна.

Използвайте вездесъщия език като инструмент за ефективна комуникация и споделяне на знания.



«Принципи за проектиране на софтуер: Практическо ръководство (издание на английски език)
Принципите за проектиране на софтуер са насоки, които помагат на разработчиците да направят дизайн на обектно-ориентирана система, устойчив на...amzn .да се"



Обичам да споделям знанията и опита си в програмирането на Java, Интервюта за кодиране, Алгоритми, Структури на данни, Чист код, Принципи на SOLID, Разпределени системи, Spring Framework, Уеб услуги, Проектиране на софтуер и други Технически теми.



Първоначално публикувано в https://codersite.dev на 27 август 2022 г.