SlideShare a Scribd company logo
1 of 53
Разработчик, аналитик, заказчик —
как найти общий язык?
 Николай Гребнев
 CUSTIS
Ситуация
Организация


     Процесс(ы)



        ИС
Процесс разработки
информационной системы
Участники
• Заказчик:
  – Методологи
  – Пользователи
  – Руководство
• Исполнитель:
  – Аналитики
  – Разработчики
  – Тестировщики
  – Руководители
У каждого участника свое
представление о ИС
Каждый говорит на своем языке
Заказчик
•   SDH
•   Оптическая секция
•   Сетевой элемент
•   СПК (сеть пакетной коммутации)
•   Тракт
•   …
Аналитик
•   Документ
•   Справочник
•   Состояние
•   …
Разработчик
•   Класс
•   Метод
•   Синглтон
•   SOLID
•   Датасет
•   Биндинг
•   …
Руководитель
• Сроки
• Бюджет
• …
Проблемы
• Непонятно, что делать
• Сделали не то
• Не можем обосновать стоимость работ
Непонятно, что делать
Сделали не то
Стоимость работ
Кто виноват?
Что делать?
Domain Driven Design (DDD)
Domain Driven Design
• Единый язык (модель)
• основанный на предметной области
• непосредственно воплощенный в исходном
  коде (проектирование по модели, Model
  Driven Development)
Единый язык


                    Модель
Переработка                    Единый
                  предметной
  знаний                        язык
                    области
Переработка знаний
– поиск системы абстрактных
понятий, учитывающей все необходимые
подробности
Все участники проекта
используют единый язык
Все требования формулируются
в терминах модели предметной
области
Единый язык основан на
предметной области
Основан на предметной области
• Понятия языка имеют смысл в предметной
  области
• В основе модели лежит представление всех
  участников проекта о предметной области
Основан на предметной
области, а не на особенностях
используемых технологий
Основан на предметной области

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


    Кадровое
делопроизводство                Соединение с БД



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

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


    Кадровое
делопроизводство   Сотрудник




                                 Табель УРВ
Единый язык непосредственно
воплощен в исходном коде
Воплощен в исходном коде
• Требование:
  – Зачислить сотрудника в подразделение
    начиная с заданной даты
Воплощен в исходном коде
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);
Воплощен в исходном коде
подразделение.Зачислить(
    сотрудник, дата);
ЧТО МЫ ПОЛУЧАЕМ?
Domain Driven Design
• Средство для формулировки требований и
  общения
• Адекватное отражение сложности системы
• Обоснованную стоимость работ
Обоснованная стоимость работ
   Большая сложность изменений



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



        Высокая стоимость
СКОЛЬКО ЭТО СТОИТ?
Из чего складывается
стоимость?
Много общения и согласований
Плотная работа с заказчиком
Высокая прозрачность системы
Меньше гибкости на стороне исполнителя
Разработчики должны участвовать в
построении модели предметной области
Общение с заказчиком
Компетенции аналитика у разработчика
Ограничения накладываемые инструментами
Не все, что можно придумать, можно реализовать.
Риск неправильно спроектировать модель
предметной области
А НУЖНО ЛИ ЭТО?
На каких проектах применять
DDD?
Основная сложность задачи
заключена в предметной
области
Очень широкая граница, о
которой необходимо
договариваться с заказчиком
ПРИМЕР
Распределение товаров по
           магазинам
• Сложная предметная область
• Информационные потоки и бизнес-процесс
  определяет заказчик
• Технические сложности преодолимы
АНТИПРИМЕР
Система обмена сообщениями с
высокой пропускной способностью

 • Простая постановка задачи
 • Информационные потоки и бизнес-процесс
   (обмен сообщениями) определяет
   исполнитель
 • Высокая техническая сложность
ТИПИЧНАЯ ОШИБКА
Переработка
  знаний




  Модель
предметной    Код
  области
Модель
               Модель
предметной
             приложения
  области
СПАСИБО
Докладчик: Николай Гребнев
e-mail: ngrebnev@gmail.com
slideshare.net: ngrebnev

More Related Content

Viewers also liked

Viewers also liked (9)

Babok v2.0 перевод на русский язык свод знаний по бизнес анализу
Babok v2.0 перевод на русский язык свод знаний по бизнес анализуBabok v2.0 перевод на русский язык свод знаний по бизнес анализу
Babok v2.0 перевод на русский язык свод знаний по бизнес анализу
 
ТРИЗ. Применение в бизнес-анализе
ТРИЗ. Применение в бизнес-анализеТРИЗ. Применение в бизнес-анализе
ТРИЗ. Применение в бизнес-анализе
 
Контрольный список для проверки требований
Контрольный список для проверки требованийКонтрольный список для проверки требований
Контрольный список для проверки требований
 
Глава 9 методы и техники бизнес-анализа (babok 2.0 на русском скачать)
Глава 9 методы и техники бизнес-анализа (babok 2.0 на русском скачать)Глава 9 методы и техники бизнес-анализа (babok 2.0 на русском скачать)
Глава 9 методы и техники бизнес-анализа (babok 2.0 на русском скачать)
 
05 задачи эксперта в работе аналитика
05 задачи эксперта в работе аналитика05 задачи эксперта в работе аналитика
05 задачи эксперта в работе аналитика
 
Управление требованиями
Управление требованиямиУправление требованиями
Управление требованиями
 
Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Введение в моделирование бизнес процессов
Введение в моделирование бизнес процессовВведение в моделирование бизнес процессов
Введение в моделирование бизнес процессов
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестирования
 

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

Domain Driven Design - как, почему и зачем?
Domain Driven Design - как, почему и зачем?Domain Driven Design - как, почему и зачем?
Domain Driven Design - как, почему и зачем?
ngrebnev
 
документирование долгоживущих веб проектов. г. белогорцев. зал 3
документирование долгоживущих веб проектов. г. белогорцев. зал 3документирование долгоживущих веб проектов. г. белогорцев. зал 3
документирование долгоживущих веб проектов. г. белогорцев. зал 3
rit2011
 
Domain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложенийDomain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложений
ngrebnev
 
социальные сети в производстве. Кейсы
социальные сети в производстве. Кейсысоциальные сети в производстве. Кейсы
социальные сети в производстве. Кейсы
ANROM Social Business
 

Similar to Разработчик, аналитик, заказчик — как найти общий язык? (20)

Domain Driven Design - как, почему и зачем?
Domain Driven Design - как, почему и зачем?Domain Driven Design - как, почему и зачем?
Domain Driven Design - как, почему и зачем?
 
Система управления требованиями Devprom
Система управления требованиями DevpromСистема управления требованиями Devprom
Система управления требованиями Devprom
 
DDD Workshop
DDD WorkshopDDD Workshop
DDD Workshop
 
Использование Wiki-системы большой командой для управления БА информацией
Использование Wiki-системы большой командой для управления БА информациейИспользование Wiki-системы большой командой для управления БА информацией
Использование Wiki-системы большой командой для управления БА информацией
 
Управление и координирование ИТ проектами
Управление и координирование ИТ проектамиУправление и координирование ИТ проектами
Управление и координирование ИТ проектами
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Экскурс в Domain-driven design
Экскурс в Domain-driven designЭкскурс в Domain-driven design
Экскурс в Domain-driven design
 
Проект внедрения КИС
Проект внедрения КИСПроект внедрения КИС
Проект внедрения КИС
 
документирование долгоживущих веб проектов. г. белогорцев. зал 3
документирование долгоживущих веб проектов. г. белогорцев. зал 3документирование долгоживущих веб проектов. г. белогорцев. зал 3
документирование долгоживущих веб проектов. г. белогорцев. зал 3
 
DDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодDDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в код
 
Domain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложенийDomain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложений
 
School IT recruiting
School IT recruiting School IT recruiting
School IT recruiting
 
методики управления развитием ис на базе 1с
методики управления развитием ис на базе 1сметодики управления развитием ис на базе 1с
методики управления развитием ис на базе 1с
 
социальные сети в производстве. Кейсы
социальные сети в производстве. Кейсысоциальные сети в производстве. Кейсы
социальные сети в производстве. Кейсы
 
Обзор Feature-Driven Development и Domain-Driven Design
Обзор Feature-Driven Development и Domain-Driven DesignОбзор Feature-Driven Development и Domain-Driven Design
Обзор Feature-Driven Development и Domain-Driven Design
 
Автоматизация бизнес-процессов, электронного документооборота и архивного хра...
Автоматизация бизнес-процессов, электронного документооборота и архивного хра...Автоматизация бизнес-процессов, электронного документооборота и архивного хра...
Автоматизация бизнес-процессов, электронного документооборота и архивного хра...
 
120706 pm v1
120706 pm v1120706 pm v1
120706 pm v1
 
Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01
 
Отказаться нельзя сделать: что важно понимать про модульные программы?
Отказаться нельзя сделать: что важно понимать про модульные программы?Отказаться нельзя сделать: что важно понимать про модульные программы?
Отказаться нельзя сделать: что важно понимать про модульные программы?
 
Формирование проектной команды
Формирование проектной командыФормирование проектной команды
Формирование проектной команды
 

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