Найти в Дзене
JavaGuru

Проект Property Insurance Calculator (часть 2)

В прошлой статье мы привели описание проекта под названием "Property Insurance Calculator". Это классное задание для проверки навыков построения доменной модели и создания адаптированного под будущие изменения кода.

Готовы ли вы решить это задание?
Если да, то попробуйте сделать это прямо сейчас!

Удалось ли вам решить эту задачу?
Сколько времени вы потратили на ее решение?

Профессиональная разработка программного обеспечения не имеет ничего общего с решением задачи в лоб.

Очень часто берясь за решение задачи в лоб мы сталкиваемся с большими трудностями уже на первых шагах. И эти трудности все нарастают и нарастают как снежный ком по мере решения задачи.

Даже если на первый взгляд нам все понятно в описании задачи, мы запросто можем что-то упустить или не придать особого внимания деталям. Это приведёт к плохому решению бизнес задачи и последствиям, которые могут проявить себя уже на стадии поддержки.

Давайте посмотрим как более профессионально подходить к решению таких бизнес задач. Попробуем выстроить процесс решения сложных бизнес задач следуя которому мы сможем минимизировать потенциальные ошибки и недочёты в решении.

Далее приведём список шагов профессиональной разработки ПО:
1. Анализ задания и предметной области.
2. Проектирование данных (доменной модели задачи).
3. Проектирование и дизайн внешнего интерфейса.
4. Написание acceptance тестов (TDD).
5. Реализация бизнес процесса (алгоритма).
6. Рефакторинг кода.


1. Анализ задания и предметной области.

Профессиональная разработка должна начинаться с анализа задания и предметной области. Для хорошего разработчика очень важно погрузиться/вникнуть в предметную область задания, узнать специфические бизнес термины, изучить и понять бизнес процессы.
Мы убеждены, что без глубокого понимания программистом бизнеса клиента невозможно создание качественного ИТ решения.

Поэтому первое с чего стоит начинать работу над решением бизнес задачи - это анализ задания и предметной области.

Ниже перечислим некоторые вопросы на которые вам нужно дать ответ (оформите вопросы и ваши ответы на них в свободной форме в виде текстового документа и приложите его в качестве решения):

1.1. О какой предметной области идёт речь в описании задачи?
1.2. О каком виде страхования идёт речь в описании задачи?
1.3. Какие специфические бизнес термины применяются в описании бизнес задачи?

Попробуйте выписать из описания задачи все специфические бизнес термины (на eng), перевести их на русский и дать им краткое определение если это необходимо (напишите сами или найдите в интернете).

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

В дальнейшем, при написании кода вы сможете использовать эти термины в названиях переменных, методов, классов и так далее. Тем самым делая ваш код (ваше IT решение) более приближённым к реальной бизнес задаче.

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

В готовом решении вы сможете проследить где вы применили специфические бизнес термины из приведённого выше списка.

Облегчит ли их применение чтение и понимание кода?

Где еще в коде вы можете применить бизнес термины из списка?

Возможно вы что-то упустили?
Если вы замените специфические бизнес термины другими названиями сделает ли это код более простым в понимании?

1.4. Понимаете ли вы, какую бизнес задачу вас просят решить?

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

1.5. Понимаете ли вы, как с точки зрения бизнеса нужно решать поставленную задачу?

Именно с точки зрения бизнеса, а не технической реализации! Не опускайтесь в данный момент на уровень программного кода. Оперируйте только терминами и понятиями бизнес задачи.

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


1.6. Какие технические требования (ограничения, пожелания) выдвинуты к реализации? Перечислите их и дайте им пояснение простым языком (в свободной форме). Если вы в чём-то сомневаетесь - задайте уточняющие вопросы!

1.7. На что просят обратить ваше внимание в задании?

Напишите ваши ответы на приведённые выше вопросы в свободной форме в виде комментариев к этому посту.

Для удобства работы над проектом мы создали GitHub репозиторий:

-2

GitHub - javagurulv/project_property_insurance_calculator

В этом репозитории вы найдёте поэтапное решение задачи (приведённой выше) состояшее из 26 шагов.

Если у вас появилось желание попробовать порешать поставленную задачу, вы можете присоединиться к нашей Телеграм группе (вот линк: https://t.me/+2E9gjF-BFsFjYWE0), которую мы создали как раз для этого небольшого проета. Там можно задать любые вопросы по проекту, попросить доступ к GitHub репозиторию на запись для полноценной разработки!