Transcript
Page 1: Разработчик, аналитик, заказчик — как найти общий язык?

Разработчик, аналитик, заказчик — как найти общий язык?

Николай ГребневCUSTIS

Page 2: Разработчик, аналитик, заказчик — как найти общий язык?

СитуацияОрганизация

Процесс(ы)

ИС

Page 3: Разработчик, аналитик, заказчик — как найти общий язык?

Процесс разработки информационной системы

Page 4: Разработчик, аналитик, заказчик — как найти общий язык?

Участники• Заказчик:– Методологи– Пользователи– Руководство

• Исполнитель:– Аналитики– Разработчики– Тестировщики– Руководители

Page 5: Разработчик, аналитик, заказчик — как найти общий язык?

У каждого участника свое представление о ИС

Page 6: Разработчик, аналитик, заказчик — как найти общий язык?

Каждый говорит на своем языке

Page 7: Разработчик, аналитик, заказчик — как найти общий язык?

Заказчик• SDH• Оптическая секция• Сетевой элемент• СПК (сеть пакетной коммутации)• Тракт• …

Page 8: Разработчик, аналитик, заказчик — как найти общий язык?

Аналитик• Документ• Справочник• Состояние• …

Page 9: Разработчик, аналитик, заказчик — как найти общий язык?

Разработчик• Класс• Метод• Синглтон• SOLID• Датасет• Биндинг• …

Page 10: Разработчик, аналитик, заказчик — как найти общий язык?

Руководитель• Сроки• Бюджет• …

Page 11: Разработчик, аналитик, заказчик — как найти общий язык?

Проблемы• Непонятно, что делать• Сделали не то• Не можем обосновать стоимость работ

Page 12: Разработчик, аналитик, заказчик — как найти общий язык?

Непонятно, что делать

Page 13: Разработчик, аналитик, заказчик — как найти общий язык?

Сделали не то

Page 14: Разработчик, аналитик, заказчик — как найти общий язык?

Стоимость работ

Page 15: Разработчик, аналитик, заказчик — как найти общий язык?

Кто виноват?

Page 16: Разработчик, аналитик, заказчик — как найти общий язык?

Что делать?

Page 17: Разработчик, аналитик, заказчик — как найти общий язык?

Domain Driven Design (DDD)

Page 19: Разработчик, аналитик, заказчик — как найти общий язык?

Domain Driven Design• Единый язык (модель)• основанный на предметной области• непосредственно воплощенный в исходном

коде (проектирование по модели, Model Driven Development)

Page 20: Разработчик, аналитик, заказчик — как найти общий язык?

Единый язык

Переработка знаний

Модель предметной

областиЕдиный

язык

Page 21: Разработчик, аналитик, заказчик — как найти общий язык?

Переработка знаний– поиск системы абстрактных понятий, учитывающей все необходимые подробности

Page 22: Разработчик, аналитик, заказчик — как найти общий язык?

Все участники проекта используют единый язык

Page 23: Разработчик, аналитик, заказчик — как найти общий язык?

Все требования формулируются в терминах модели предметной области

Page 24: Разработчик, аналитик, заказчик — как найти общий язык?

Единый язык основан на предметной области

Page 25: Разработчик, аналитик, заказчик — как найти общий язык?

Основан на предметной области• Понятия языка имеют смысл в предметной

области• В основе модели лежит представление всех

участников проекта о предметной области

Page 26: Разработчик, аналитик, заказчик — как найти общий язык?

Основан на предметной области, а не на особенностях используемых технологий

Page 27: Разработчик, аналитик, заказчик — как найти общий язык?

Основан на предметной области

Кадровое делопроизводство

Датасет с таблицей сотрудников

Команда на обновление

Соединение с БД

Page 28: Разработчик, аналитик, заказчик — как найти общий язык?

Основан на предметной области

Личное дело сотрудника

Табель УРВ

Сотрудник

Кадровое делопроизводство

Page 29: Разработчик, аналитик, заказчик — как найти общий язык?

Единый язык непосредственно воплощен в исходном коде

Page 30: Разработчик, аналитик, заказчик — как найти общий язык?

Воплощен в исходном коде• Требование:– Зачислить сотрудника в подразделение

начиная с заданной даты

Page 31: Разработчик, аналитик, заказчик — как найти общий язык?

Воплощен в исходном кодеDepartmentHistoryRepository.Remove( from dh in DepartmentHistoryRepository where dh.EmployeeId = employee.Id && dh.DateStart >= date select dh);

var dhe = from dh in DepartmentHistoryRepository where dh.EmployeeId = employee.Id && dh.DateStart <= date && dh.DateEnd >= date select dh;dhe.DateEnd = date.AddDay(-1)

DepartmentHistoryRepository.CreateNew( employee, date);

Page 32: Разработчик, аналитик, заказчик — как найти общий язык?

Воплощен в исходном коде

подразделение.Зачислить( сотрудник, дата);

Page 33: Разработчик, аналитик, заказчик — как найти общий язык?

ЧТО МЫ ПОЛУЧАЕМ?

Page 34: Разработчик, аналитик, заказчик — как найти общий язык?

Domain Driven Design• Средство для формулировки требований и

общения• Адекватное отражение сложности системы• Обоснованную стоимость работ

Page 35: Разработчик, аналитик, заказчик — как найти общий язык?

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

Большая сложность изменений

Масштабные изменения моделиВведение новых понятий

Высокая стоимость

Page 36: Разработчик, аналитик, заказчик — как найти общий язык?

СКОЛЬКО ЭТО СТОИТ?

Page 37: Разработчик, аналитик, заказчик — как найти общий язык?

Из чего складывается стоимость?

Page 38: Разработчик, аналитик, заказчик — как найти общий язык?

Много общения и согласованийПлотная работа с заказчикомВысокая прозрачность системыМеньше гибкости на стороне исполнителя

Page 39: Разработчик, аналитик, заказчик — как найти общий язык?

Разработчики должны участвовать в построении модели предметной областиОбщение с заказчикомКомпетенции аналитика у разработчика

Page 40: Разработчик, аналитик, заказчик — как найти общий язык?

Ограничения накладываемые инструментамиНе все, что можно придумать, можно реализовать.

Page 41: Разработчик, аналитик, заказчик — как найти общий язык?

Риск неправильно спроектировать модель предметной области

Page 42: Разработчик, аналитик, заказчик — как найти общий язык?

А НУЖНО ЛИ ЭТО?

Page 43: Разработчик, аналитик, заказчик — как найти общий язык?

На каких проектах применять DDD?

Page 44: Разработчик, аналитик, заказчик — как найти общий язык?

Основная сложность задачи заключена в предметной области

Page 45: Разработчик, аналитик, заказчик — как найти общий язык?

Очень широкая граница, о которой необходимо договариваться с заказчиком

Page 46: Разработчик, аналитик, заказчик — как найти общий язык?

ПРИМЕР

Page 47: Разработчик, аналитик, заказчик — как найти общий язык?

Распределение товаров по магазинам

• Сложная предметная область• Информационные потоки и бизнес-процесс

определяет заказчик• Технические сложности преодолимы

Page 48: Разработчик, аналитик, заказчик — как найти общий язык?

АНТИПРИМЕР

Page 49: Разработчик, аналитик, заказчик — как найти общий язык?

Система обмена сообщениями с высокой пропускной способностью

• Простая постановка задачи• Информационные потоки и бизнес-процесс

(обмен сообщениями) определяет исполнитель

• Высокая техническая сложность

Page 50: Разработчик, аналитик, заказчик — как найти общий язык?

ТИПИЧНАЯ ОШИБКА

Page 51: Разработчик, аналитик, заказчик — как найти общий язык?

Модель предметной

областиКод

Переработка знаний

Page 52: Разработчик, аналитик, заказчик — как найти общий язык?

Модель предметной

области

Модель приложения

Page 53: Разработчик, аналитик, заказчик — как найти общий язык?

СПАСИБО

Докладчик: Николай Гребневe-mail: [email protected]: ngrebnev


Top Related