Gaperton - Software People 2012

36
Проектирование Владислав Балин Инвестиционный холдинг «ФИНАМ» Зам. руководителя IT-департамента по R&D как процесс решения проблем

description

 

Transcript of Gaperton - Software People 2012

Page 1: Gaperton - Software People 2012

Проектирование

Владислав Балин Инвестиционный холдинг «ФИНАМ» Зам. руководителя IT-департамента по R&D

как процесс решения проблем

Page 2: Gaperton - Software People 2012

Разработка ПО – это производство?

Проведем правильную аналогию

Page 3: Gaperton - Software People 2012

Разработка устройства

Фабрика

Конструкторское бюро

Проектирование Испытания и правки РКД

Испытания и правки РКД

Производство опытных образцов

Производство опытных образцов

Производство установочной

партии

РКД ИсправленнаяРКД

10образцов

10образцов

ИсправленнаяРКД

100изделий

месяц месяц месяц

•  Производство – ответственный и затратный этап •  Его не перепутать с проектированием

Page 4: Gaperton - Software People 2012

Hardware  People  

Проектирование

непрерывный процесспостановки и решения

проблем

Ключевые требования ихарактеристики

Готовностьк производству:

- Рабочие изделия- Прохождение испытаний- Комплект РКД (для производства)

•  Логистика важна на этапе проектирования •  Развита дисциплина работы с документацией •  Явный фокус на решении проблем

•  В ТЗ только ключевые требования и ТТХ •  РКД - не более чем средство

Page 5: Gaperton - Software People 2012

Куда девалась фабрика?

•  Наша технология производства – верх совершенства •  Настолько, что мы не склонны его замечать

Компьютер разработчика ПО

Разработка Отладка Отладка

Компиляция и сборка

Компиляция и сборка

Компиляция и сборка

Исходныйкод

Исправленныйкод EXEEXE

Исправленныйкод

Дистрибутив

минуты минуты минуты

Page 6: Gaperton - Software People 2012

So-ware  People  

"Промышленная" разработка

процесс написанияи отладки кода

Техническиетребования

Программный код:

- Проходит тесты- Соответствует требованиям

•  Главный результат – отлаженный код •  «Заказчик никогда не знает, что он хочет» •  Упорная аналогия с конвейерной сборкой

•  нет Ватерфолу, да здравствует Канбан!

Page 7: Gaperton - Software People 2012

Разработка – непрерывный процесс проектирования

Проектирование – процесс решения проблем

Page 8: Gaperton - Software People 2012

Проблема  имеет  много  решений  

?

Проблема

Пространстворешений

Так?

Ага!

Page 9: Gaperton - Software People 2012

…которые  ставят  новые  проблемы  

?

Проблема

Пространстворешений

Так?

Ой!

?!

Page 10: Gaperton - Software People 2012

…и  мы  перебираем  решения  

?

Проблема

Пространстворешений

Так?

Или так?

Ой!

?!

?

Page 11: Gaperton - Software People 2012

…чтобы  найти  оптимальное.  

?

Проблема

Пространстворешений

Так?

Или так?

А может,вообще вот-так?

Теплее!

Ой!

?!

?Э-э-э...

Page 12: Gaperton - Software People 2012

«Требования  меняются»  «Заказчик  не  знает,  что  он  хочет»  

А  так-­‐ли  хорошо  люди  умеют  разделять  проблемы,  и  их  

решения?  

Page 13: Gaperton - Software People 2012

«Добавьте в эту табличку вот такое поле, считающееся вот-так».

«Брокерская комиссия должна рассчитываться секунда в секунду по всем клиентам!» «Необходимо слить ваши системы в одну, с единой базой!».

«Надо переписать риск-сервер!»

Page 14: Gaperton - Software People 2012

Решение Проблема

«Добавьте в эту табличку вот такое поле, считающееся вот-так».

Менеджеру надо знать актуальный остаток денег на счете, чтобы оформить клиенту выдачу наличных.

«Брокерская комиссия должна рассчитываться секунда в секунду по всем клиентам!»

Менеджеру надо знать актуальный остаток денег на счете, чтобы оформить клиенту выдачу наличных.

«Необходимо слить ваши системы в одну, с единой базой!».

Процесс выдачи наличных – неудобен, требует дублирования операций в разных системах.

«Надо переписать риск-сервер!»

В риск-сервере есть порядка 10 неприятных ошибок, которые давно пора исправить.

Page 15: Gaperton - Software People 2012

Пользователь  прекрасно  осознает  свои  проблемы.  

Но  почему-­‐то  не  считает  нужным  о  них  говорить.  

Page 16: Gaperton - Software People 2012

«Требования»  –  решение  проблемы  

Проблемапользователя

Функциисистемы

Page 17: Gaperton - Software People 2012

…которое  ставит  частные  проблемы  Проблема

пользователя

Функциисистемы

Как отобразятсяна систему?

Структура модулей,

классов, и пр.

Как будет работать?

Как будет выглядеть?

Алгоритмы и структуры данных

Внешний вид UI

…имеющие множество возможных решений

Page 18: Gaperton - Software People 2012

…которые  можно  по  разному  реализовать  

Проблемапользователя

Функциисистемы

Как отобразятсяна систему?

Структура модулей,

классов, и пр.

Как будет работать?

Как будет выглядеть?

Алгоритмы и структуры данных

Внешний вид UI

Исходный код??? ? ?

Page 19: Gaperton - Software People 2012

…но  кое-­‐что  ограничивает  пространство  решений  

Проблемапользователя

Функциисистемы

Как отобразятсяна систему?

Структура модулей,

классов, и пр.

Как будет работать?

Как будет выглядеть?

Алгоритмы и структуры данных

Внешний вид UI

Исходный код

Как в целом устроена система?

??? ? ?

Базовые технологиии принципы

Каковы ключевые ТТХ?

Page 20: Gaperton - Software People 2012

«Наше С++ приложение будет мелко нарезано на изолированные COM-объекты» «Исходный код торговых роботов будут храниться в базе данных» «Будем все писать на Дельфи». «Необходимо все переписать на .NET!»

«Необходимо переписать этот кривой, как турецкая сабля, код!».

Page 21: Gaperton - Software People 2012

Решение Проблема «Наше С++ приложение будет мелко нарезано на изолированные COM-объекты»

Наше приложение должно уметь на чем-то скриптоваться. Лень думать, пусть это будет Visual Basic. И точка.

«Исходный код торговых роботов будут храниться в базе данных»

Я сходил на недельные курсы по MS SQL, и не могу держать это знание внутри себя.

«Будем все писать на Дельфи».

Ничего кроме Delphi не умеем, и изучать не хотим.

«Необходимо все переписать на .NET!»

Нам очень не нравится Дельфи, изучения которого надо избежать.

«Необходимо переписать этот кривой, как турецкая сабля, код!».

Этот код не мой. Я ничего в нем не понимаю, и панически боюсь его.

Page 22: Gaperton - Software People 2012

Разработчик  прекрасно  осознает  свои  проблемы  

Но  почему-­‐то  не  считает  нужным  о  них  говорить.  

Page 23: Gaperton - Software People 2012

Поэтому,  мы  выбираем  решения  наугад!  

И  да  поможет  нам  Ag:)e.  

Page 24: Gaperton - Software People 2012

Нам  поможет  Методология  Х?  

Или,  может,  стоит  осмысленно  выбирать  решения?  

Page 25: Gaperton - Software People 2012

«Чеклист  детектива»  •  Выяснить  проблему  •  Определить  критерии  успешного  решения  •  Рассмотреть  несколько  «версий»  (вариантов  решения)  

•  Отработать  все  версии,  собирая  факты  и  «улики»  

•  «Отбросьте  невозможное,  и  останется  истина».  ШХ.  

 

Page 26: Gaperton - Software People 2012

Проектирование  супер-­‐ЭВМ  

Глубокая проработка

Вариант 1 Вариант 2 Вариант 3 Вариант 4 Вариант 5

Эльбрус-2 БЭСМ-10

Отбор кандидатов

Детальное проектирование

Эльбрус-2

Page 27: Gaperton - Software People 2012

Цикл  «гипотеза-­‐эксперимент»  •  Умение  выдвигать  разумные  гипотезы,  и  проверять  их  логически  

•  Умение  ставить  эксперименты,  и  делать  из  них  правильные  выводы  

•  Необходимо  умение  отделять:  – Факты  от  предположений  – Проблемы  от  решений  – Цели  от  задач  

Page 28: Gaperton - Software People 2012

Группа  эффективнее  одиночки  в  выработке  и  проверке  гипотез  

Группа  должна  быть  организована,  чтобы  быть  эффективнее  

Page 29: Gaperton - Software People 2012

Сессия  проектирования  •  Собираем  проектную  группу  •  Вводная:  

– Проблема  пользователя  – Очевидные  варианты  решений  – «Что  нам  мешает  сделать  это  прямо  сейчас?»  

•  Дополняем  список  вариантов  решений  •  Составляем  список  открытых  проблем  

– Что  мы  не  знаем,  и  должны  узнать  

Page 30: Gaperton - Software People 2012

Список  открытых  проблем  •  Главный  предмет  совещания  •  Виден  всей  группе  на  маркерной  доске  •  Всегда  актуален  •  Должен  меняться  со  временем  

– Количество  проблем  высшего  порядка  должно  уменьшаться,  сменяясь  частными  

Page 31: Gaperton - Software People 2012

Правила  проверки  решений  •  «Это  неправильно»  «Как  ваше  решение  будет  работать  вот  в  такой  ситуации?»  

•  Давление  на  авторитеты  Ссылки  на  конкретный  опыт  с  примерами  

•  Убеждения  В  инженерии  все  можно  обосновать  логически  

•  Это  будет  так!  «В  закон  Ома  верю.  Все  остальное  надо  проверять»  

Page 32: Gaperton - Software People 2012

Хорошо  известные  вам  вещи..  

– Прототипы  – Дизайн-­‐ревью  – Код-­‐ревью  – Тесты  

   

…являются не «практиками», а средствами проверки «гипотез»

Page 33: Gaperton - Software People 2012

«-­‐  Ты  должен  мне  поверить!  -­‐  Ты  кто  -­‐  Иисус  Христос,  чтобы  

тебе  верить?»    А.  М.  Степанов.  Главный  

программист  первого  советского  комплекса  ПВО.  

Page 34: Gaperton - Software People 2012

Роль  руководителя  •  Организует  и  ведет  совещание  •  Поддерживает  список  открытых  проблем  •  Отвечает  за  логику  и  формат,  разрешая  конфликты,  оставляя  креатив  подчиненным  

•  Направляет  процесс,  выдавая  задания  (схема  «научного  семинара»)  

•  Вникает  в  проблемы,  которые  не  меняются  

Page 35: Gaperton - Software People 2012

Для  одного  программиста  •  Периодически  подходить  к  программисту  

•  Беседовать  о  текущих  проблемах  •  Отмечать  те,  что  не  меняются  •  Вникать  только  в  них,  и  разбираться,  почему:  – Человеку  может  быть  нужна  помощь  – Выдумывать  проблемы  тяжело  

Page 36: Gaperton - Software People 2012

Спасибо  за  внимание!  

Владислав  Балин  hrp://gaperton.livejournal.com