Как стать автором
Обновить

Комментарии 13

А можно побольше реальных примеров? Как например оформить составные объекты (заказ и строка заказа)? Каким образом описывается взаимодействие? Какие инструменты используете, чтобы быстро рисовать и изменять эти карточки?

В реальных проектах для скорости (и создания и поддержки) делаем все это в mindmap. Про строку заказа не совсем понял вопрос. Что касается заказа, то он не сильно отличается по логике описания с вакансией: у него также есть номер, дата создания, пользователь, стоимость и так далее. Связан он может быть ассоциацией с другими заказами, товарами (и любыми другими, кто контекстно уместно для вашего конкретного продукта. Если фантазировать, то если это, например, билет на концепт, то это может быть парковка, доп услуги к заказу или расписание концерта). Надеюсь, что все верно понял и подходяще ответил) Если что — дополню

Внутри заказа есть строки — какой товар, в каком кол-ве, по какой цене и с какой скидкой и налогами. Строка заказа не может существовать отдельно от заказа.

Это уже свойства товара: сколько он стоит, какая скидка и тд. В нашем случае «Товар» будет просто отдним из параметров заказа. Товаров в заказе может быть уже много. Как и «Технологий» в случае с вакансией из статьи
У вас ни разу не было проекта с заказами? Или другими сложно составными сущностями?

Цена да, но скидка (и налоги) в каждом заказе на каждый отдельный товар может быть разная. Поэтому ее нельзя хранить в товаре.

В общем суть в чем — на простых учебных материалах все эти методики выглядят отлично, но когда дело касается реальной более менее сложной предметной области — все летит к чертям. Вот и вопрос — есть примеры описания сложных составных сущностей? И как это выглядит?

Технология — это поле (в ui — выпадающий список из справочника), а строки заказа — это вложенный список других объектов. И не просто объектов, а с доп. полями, которые нельзя хранить объекте товара (скидка).

Можно посмотреть на книжку Эванса про DDD — там как раз рассматриваются агрегаты.

Синюю книжку читал (но там опять все довольно поверхностно), красную не осилил. И вообще это мы уже переходим к холивару богатая vs анемичная модель. Это не совсем то.

Я ищу способ хорошо организованной документации по проекту и по бизнес-процессам. От простого к сложному или взгляд с разных сторон (как 4+1 в архитектуре). Чтобы пришел программист и сразу все нашел и понял, и не пришлось бы перечитывать тонну доков, прежде чем сделать задачу. То, что описано в статье — мне показалось хорошей базой для этого. Описания объектов по крайней мере простые и лаконичные. Как-то я видел описания юзер-сторей, которые ложились на код один-к-одному, даже папочки в коде в IDE были в соответствии с ними.

Если б я видел какие-то такие организованные системы документации, я б сказал с уверенностью. Самое навороченное, что я видел был RUP, но это было сто лет назад и не знаю, чем там дело кончилось с ним. Есть какой-то Open UP эклипсовски.


На практике, я вижу инкрементность документации — т.е. кто-то описывает текущий инкремент, а потом он устаревает и через год надо ходить по истории и собирать эти икременты и применять их друг к другу, чтобы получить целостное представление.


В результате практичный способ оказывается конгломератом из кода, тестов, тасок и мозгов сотрудников которые дополняются только основными концепциями написанными в вики (потому, что основные концепции меняются редко и их не в лом поддерживать).


Детальное проектирование проще держать в коде и тестах.


Если у кого-то есть другой опыт, я бы с удовольствием про него почитал.

ООД не преследует цель сделать логическую схему БД на стартовом этапе проектирования. Все примеры которые вы приводите — разумные и важные для логической схемы БД, но для нужд ООД ими можно пренебречь (по моему опыту). На данном этапе нам не важно от чего зависит цена — главное, что цена есть как параметр объекта. Не важно от чего зависит скидка — главное, что эта скидка есть. Аналогичного живого примера с моего проекта нет (пример с вакансией с живого проекта), но я бы сделал так, как написал: есть «Заказ» и его цена и есть ассоциированный объект «Товар» с его ценой. В товар также можно положить «Скидку» как напоминание, что есть зависимое значение. А от чего именно — это уже вопрос следующих этапов (хотя ты все равно про это думаешь при формирование этой самой карты объектов)
Здравствуйте у Вас дубль абзацов 2 и 3 в разделе «Помогаем стартапам экономить»
Спасибо, что обратили внимание. Убрал дубль
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории