SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
Проектирование
                     как процесс решения проблем
Владислав Балин
Инвестиционный холдинг «ФИНАМ»
Зам. руководителя IT-департамента по R&D
Разработка ПО – это
    производство?
Проведем правильную аналогию
Разработка устройства
Конструкторское бюро
                               Испытания и                 Испытания и             100
  Проектирование
                               правки РКД                  правки РКД            изделий


                              10      Исправленная        10      Исправленная
            РКД
                           образцов       РКД          образцов       РКД

Фабрика
              Производство                   Производство                Производство
                опытных                        опытных                   установочной
                образцов                       образцов                     партии

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




•  Производство – ответственный и затратный этап
•  Его не перепутать с проектированием
Hardware	
  People	
  
                                                Готовность
                                             к производству:
                    Проектирование
  Ключевые                                 - Рабочие изделия
 требования и       непрерывный процесс    - Прохождение
характеристики                             испытаний
                    постановки и решения   - Комплект РКД (для
                          проблем          производства)




 •  Логистика важна на этапе проектирования
 •  Развита дисциплина работы с документацией
 •  Явный фокус на решении проблем
    •  В ТЗ только ключевые требования и ТТХ
    •  РКД - не более чем средство
Куда девалась фабрика?
Компьютер разработчика ПО

  Разработка                   Отладка                   Отладка       Дистрибутив


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


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

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




•  Наша технология производства – верх совершенства
•  Настолько, что мы не склонны его замечать
So-ware	
  People	
  
                 "Промышленная"        Программный код:
Технические        разработка
                                       - Проходит тесты
требования
                  процесс написания    - Соответствует
                    и отладки кода     требованиям




•  Главный результат – отлаженный код
•  «Заказчик никогда не знает, что он хочет»
•  Упорная аналогия с конвейерной сборкой
    •  нет Ватерфолу, да здравствует Канбан!
Разработка – непрерывный
 процесс проектирования
   Проектирование – процесс
      решения проблем
Проблема	
  имеет	
  много	
  решений	
  
     ?
  Проблема

                  Так?
                Ага!   Пространство
                         решений
…которые	
  ставят	
  новые	
  проблемы	
  

     ?
 Проблема

                   Так?
                 Ой!   Пространство
                         решений

    ?!
…и	
  мы	
  перебираем	
  решения	
  
   ?
Проблема

                Так?
              Ой!    Пространство
                       решений

   ?!           Или так?




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

                 Так?         Теплее!


               Ой!   Пространство
                       решений      А может,
                                     вообще
                                    вот-так?
    ?!          Или так?



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

         А	
  так-­‐ли	
  хорошо	
  люди	
  умеют	
  
           разделять	
  проблемы,	
  и	
  их	
  
                           решения?	
  
«Добавьте в эту табличку
вот такое поле,
считающееся вот-так».

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

«Надо переписать риск-
сервер!»
Решение                       Проблема
«Добавьте в эту табличку    Менеджеру надо знать
вот такое поле,             актуальный остаток денег на
считающееся вот-так».       счете, чтобы оформить
                            клиенту выдачу наличных.
«Брокерская комиссия        Менеджеру надо знать
должна рассчитываться       актуальный остаток денег на
секунда в секунду по всем   счете, чтобы оформить
клиентам!»                  клиенту выдачу наличных.

«Необходимо слить ваши      Процесс выдачи наличных –
системы в одну, с единой    неудобен, требует
базой!».                    дублирования операций в
                            разных системах.
«Надо переписать риск-      В риск-сервере есть порядка 10
сервер!»                    неприятных ошибок, которые
                            давно пора исправить.
Пользователь	
  прекрасно	
  
осознает	
  свои	
  проблемы.	
  
Но	
  почему-­‐то	
  не	
  считает	
  нужным	
  о	
  
             них	
  говорить.	
  
«Требования»	
  –	
  решение	
  проблемы	
  
      Проблема
    пользователя



                   Функции
                   системы
…которое	
  ставит	
  частные	
  проблемы	
  
      Проблема
    пользователя



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




                                     Как
     Как будет     Как будет
                                 отобразятся
    выглядеть?     работать?
                                 на систему?




                   Алгоритмы и    Структура
    Внешний вид
                    структуры      модулей,
        UI
                     данных      классов, и пр.



  …имеющие множество возможных решений
…которые	
  можно	
  по	
  разному	
  
       реализовать	
  
     Проблема
   пользователя



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




                                    Как
     Как будет    Как будет
                                отобразятся
    выглядеть?    работать?
                                на систему?




                  Алгоритмы и    Структура
   Внешний вид
                   структуры      модулей,
       UI
                    данных      классов, и пр.


                                          ?     ?   Исходный код
                                      ?       ? ?
…но	
  кое-­‐что	
  ограничивает	
  пространство	
  решений	
  
                                     Каковы                           Как в целом
           Проблема
                                    ключевые                           устроена
         пользователя
                                      ТТХ?                             система?


                                                          Базовые
                         Функции
                                                         технологии
                         системы
                                                         и принципы




                                                   Как
           Как будет    Как будет
                                               отобразятся
          выглядеть?    работать?
                                               на систему?




                        Алгоритмы и             Структура
         Внешний вид
                         структуры               модулей,
             UI
                          данных               классов, и пр.


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

«Необходимо переписать
этот кривой, как турецкая
сабля, код!».
Решение                      Проблема
«Наше С++ приложение        Наше приложение должно уметь
будет мелко нарезано на     на чем-то скриптоваться. Лень
изолированные COM-          думать, пусть это будет Visual
объекты»                    Basic. И точка.
«Исходный код торговых      Я сходил на недельные курсы по
роботов будут храниться в   MS SQL, и не могу держать это
базе данных»                знание внутри себя.
«Будем все писать на        Ничего кроме Delphi не умеем, и
Дельфи».                    изучать не хотим.
«Необходимо все             Нам очень не нравится Дельфи,
переписать на .NET!»        изучения которого надо
                            избежать.
«Необходимо переписать      Этот код не мой. Я ничего в нем
этот кривой, как турецкая   не понимаю, и панически боюсь
сабля, код!».               его.
Разработчик	
  прекрасно	
  
осознает	
  свои	
  проблемы	
  
Но	
  почему-­‐то	
  не	
  считает	
  нужным	
  
           о	
  них	
  говорить.	
  
Поэтому,	
  мы	
  выбираем	
  
   решения	
  наугад!	
  




   И	
  да	
  поможет	
  нам	
  Ag:)e.	
  
Нам	
  поможет	
  Методология	
  Х?	
  

    Или,	
  может,	
  стоит	
  осмысленно	
  
            выбирать	
  решения?	
  
«Чеклист	
  детектива»	
  
•  Выяснить	
  проблему	
  
•  Определить	
  критерии	
  успешного	
  решения	
  
•  Рассмотреть	
  несколько	
  
   «версий»	
  (вариантов	
  решения)	
  
•  Отработать	
  все	
  версии,	
  собирая	
  факты	
  и	
  
   «улики»	
  
•  «Отбросьте	
  невозможное,	
  и	
  останется	
  
   истина».	
  ШХ.	
  
                                                               	
  
Проектирование	
  супер-­‐ЭВМ	
  
Отбор кандидатов


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



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


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



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

                            Эльбрус-2
Цикл	
  «гипотеза-­‐эксперимент»	
  
•  Умение	
  выдвигать	
  разумные	
  гипотезы,	
  и	
  
   проверять	
  их	
  логически	
  
•  Умение	
  ставить	
  эксперименты,	
  и	
  делать	
  из	
  
   них	
  правильные	
  выводы	
  
•  Необходимо	
  умение	
  отделять:	
  
   –  Факты	
  от	
  предположений	
  
   –  Проблемы	
  от	
  решений	
  
   –  Цели	
  от	
  задач	
  
Группа	
  эффективнее	
  одиночки	
  в	
  
 выработке	
  и	
  проверке	
  гипотез	
  
  Группа	
  должна	
  быть	
  организована,	
  
       чтобы	
  быть	
  эффективнее	
  
Сессия	
  проектирования	
  
•  Собираем	
  проектную	
  группу	
  
•  Вводная:	
  
   –  Проблема	
  пользователя	
  
   –  Очевидные	
  варианты	
  решений	
  
   –  «Что	
  нам	
  мешает	
  сделать	
  это	
  прямо	
  сейчас?»	
  
•  Дополняем	
  список	
  вариантов	
  решений	
  
•  Составляем	
  список	
  открытых	
  проблем	
  
   –  Что	
  мы	
  не	
  знаем,	
  и	
  должны	
  узнать	
  
Список	
  открытых	
  проблем	
  
•  Главный	
  предмет	
  совещания	
  
•  Виден	
  всей	
  группе	
  на	
  маркерной	
  доске	
  
•  Всегда	
  актуален	
  
•  Должен	
  меняться	
  со	
  временем	
  
   – Количество	
  проблем	
  высшего	
  порядка	
  
     должно	
  уменьшаться,	
  сменяясь	
  
     частными	
  
Правила	
  проверки	
  решений	
  
•  «Это	
  неправильно»	
  «Как	
  ваше	
  решение	
  
   будет	
  работать	
  вот	
  в	
  такой	
  ситуации?»	
  
•  Давление	
  на	
  авторитеты	
  Ссылки	
  на	
  
   конкретный	
  опыт	
  с	
  примерами	
  
•  Убеждения	
  В	
  инженерии	
  все	
  можно	
  
   обосновать	
  логически	
  
•  Это	
  будет	
  так!	
  «В	
  закон	
  Ома	
  верю.	
  Все	
  
   остальное	
  надо	
  проверять»	
  
Хорошо	
  известные	
  вам	
  вещи..	
  
  –  Прототипы	
  
  –  Дизайн-­‐ревью	
  
  –  Код-­‐ревью	
  
  –  Тесты	
  
	
  
     …являются не «практиками», а
	
  
 средствами проверки «гипотез»
«-­‐	
  Ты	
  должен	
  мне	
  поверить!	
  
-­‐	
  Ты	
  кто	
  -­‐	
  Иисус	
  Христос,	
  чтобы	
  
                       тебе	
  верить?»	
  
                                  	
   Главный	
  
                 А.	
  М.	
  Степанов.	
  
      программист	
  первого	
  советского	
  
             комплекса	
  ПВО.	
  
Роль	
  руководителя	
  
•  Организует	
  и	
  ведет	
  совещание	
  
•  Поддерживает	
  список	
  открытых	
  проблем	
  
•  Отвечает	
  за	
  логику	
  и	
  формат,	
  разрешая	
  
   конфликты,	
  оставляя	
  креатив	
  подчиненным	
  
•  Направляет	
  процесс,	
  выдавая	
  задания	
  
   (схема	
  «научного	
  семинара»)	
  
•  Вникает	
  в	
  проблемы,	
  которые	
  не	
  
   меняются	
  
Для	
  одного	
  программиста	
  
•  Периодически	
  подходить	
  к	
  
   программисту	
  
•  Беседовать	
  о	
  текущих	
  проблемах	
  
•  Отмечать	
  те,	
  что	
  не	
  меняются	
  
•  Вникать	
  только	
  в	
  них,	
  и	
  разбираться,	
  
   почему:	
  
   –  Человеку	
  может	
  быть	
  нужна	
  помощь	
  
   –  Выдумывать	
  проблемы	
  тяжело	
  
Спасибо	
  за	
  внимание!	
  

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

Weitere ähnliche Inhalte

Was ist angesagt?

Практический анализ и визуальное моделирование на UML
Практический анализ и визуальное моделирование на UMLПрактический анализ и визуальное моделирование на UML
Практический анализ и визуальное моделирование на UMLNikolai Kireev
 
Практический анализ по RUP
Практический анализ по RUPПрактический анализ по RUP
Практический анализ по RUPSQALab
 
Планируем релиз играючи
Планируем релиз играючиПланируем релиз играючи
Планируем релиз играючиIrina Vinogradova
 
Release planning tetris_spm2012
Release planning tetris_spm2012Release planning tetris_spm2012
Release planning tetris_spm2012vovchiklee
 
Интерфейс — Совместная работа аналитика и проектировщика
Интерфейс — Совместная работа аналитика и проектировщикаИнтерфейс — Совместная работа аналитика и проектировщика
Интерфейс — Совместная работа аналитика и проектировщикаYury Solonitsyn
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахCUSTIS
 
Применение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примере
Применение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примереПрименение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примере
Применение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примереSergey Sobolev
 
Илья Бурдин - Рассказ о NIST CPS Framework
Илья Бурдин - Рассказ о NIST CPS FrameworkИлья Бурдин - Рассказ о NIST CPS Framework
Илья Бурдин - Рассказ о NIST CPS FrameworkAlexander Shamanin
 
Представление знаний в технических системах
Представление знаний в технических системахПредставление знаний в технических системах
Представление знаний в технических системахAnatoly Levenchuk
 
SECON'2016. Куприянов Юрий, OMG Essence - единая теория программной инженерии
SECON'2016. Куприянов Юрий, OMG Essence - единая теория программной инженерииSECON'2016. Куприянов Юрий, OMG Essence - единая теория программной инженерии
SECON'2016. Куприянов Юрий, OMG Essence - единая теория программной инженерииSECON
 
Тех. Документация - UX beyond UI
Тех. Документация - UX beyond UI Тех. Документация - UX beyond UI
Тех. Документация - UX beyond UI Yury Solonitsyn
 

Was ist angesagt? (16)

L1 requirements
L1 requirementsL1 requirements
L1 requirements
 
Практический анализ и визуальное моделирование на UML
Практический анализ и визуальное моделирование на UMLПрактический анализ и визуальное моделирование на UML
Практический анализ и визуальное моделирование на UML
 
Sep reqm-lec2
Sep reqm-lec2Sep reqm-lec2
Sep reqm-lec2
 
Design & Process Models
Design & Process ModelsDesign & Process Models
Design & Process Models
 
Практический анализ по RUP
Практический анализ по RUPПрактический анализ по RUP
Практический анализ по RUP
 
Планируем релиз играючи
Планируем релиз играючиПланируем релиз играючи
Планируем релиз играючи
 
Release planning tetris_spm2012
Release planning tetris_spm2012Release planning tetris_spm2012
Release planning tetris_spm2012
 
Интерфейс — Совместная работа аналитика и проектировщика
Интерфейс — Совместная работа аналитика и проектировщикаИнтерфейс — Совместная работа аналитика и проектировщика
Интерфейс — Совместная работа аналитика и проектировщика
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектах
 
Task-Centered Design
Task-Centered DesignTask-Centered Design
Task-Centered Design
 
Применение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примере
Применение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примереПрименение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примере
Применение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примере
 
Илья Бурдин - Рассказ о NIST CPS Framework
Илья Бурдин - Рассказ о NIST CPS FrameworkИлья Бурдин - Рассказ о NIST CPS Framework
Илья Бурдин - Рассказ о NIST CPS Framework
 
Представление знаний в технических системах
Представление знаний в технических системахПредставление знаний в технических системах
Представление знаний в технических системах
 
Kupriyanov
KupriyanovKupriyanov
Kupriyanov
 
SECON'2016. Куприянов Юрий, OMG Essence - единая теория программной инженерии
SECON'2016. Куприянов Юрий, OMG Essence - единая теория программной инженерииSECON'2016. Куприянов Юрий, OMG Essence - единая теория программной инженерии
SECON'2016. Куприянов Юрий, OMG Essence - единая теория программной инженерии
 
Тех. Документация - UX beyond UI
Тех. Документация - UX beyond UI Тех. Документация - UX beyond UI
Тех. Документация - UX beyond UI
 

Ähnlich wie Gaperton - Software People 2012

Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUAREТехники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARESQALab
 
А кем будете вы?
А кем будете вы?А кем будете вы?
А кем будете вы?Maria Makarova
 
Обзор Feature-Driven Development и Domain-Driven Design
Обзор Feature-Driven Development и Domain-Driven DesignОбзор Feature-Driven Development и Domain-Driven Design
Обзор Feature-Driven Development и Domain-Driven DesignAndrey Bibichev
 
Консалтинг высоконагруженных web систем
Консалтинг высоконагруженных web системКонсалтинг высоконагруженных web систем
Консалтинг высоконагруженных web системMedia Gorod
 
Тяжело в учении - легко в бою
Тяжело в учении - легко в боюТяжело в учении - легко в бою
Тяжело в учении - легко в боюDmitry Zimin
 
Никита Ремизов - Введение в разработку ТЗ
Никита Ремизов - Введение в разработку ТЗНикита Ремизов - Введение в разработку ТЗ
Никита Ремизов - Введение в разработку ТЗDrupalSPB
 
А.Левенчук -- тренды в инженерии требований
А.Левенчук -- тренды в инженерии требованийА.Левенчук -- тренды в инженерии требований
А.Левенчук -- тренды в инженерии требованийAnatoly Levenchuk
 
Почему размер имеет значение
Почему размер имеет значениеПочему размер имеет значение
Почему размер имеет значениеSQALab
 
раубичи ронд
раубичи рондраубичи ронд
раубичи рондzolik
 
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...sqadays8
 
Принципы построения современных систем управления жизненным циклом
Принципы построения современных систем управления жизненным цикломПринципы построения современных систем управления жизненным циклом
Принципы построения современных систем управления жизненным цикломAnatoly Levenchuk
 
CI для Microsoft Dynamics crm
CI для Microsoft Dynamics crmCI для Microsoft Dynamics crm
CI для Microsoft Dynamics crmRoman Savran
 
Agile days `16 summary
Agile days `16 summaryAgile days `16 summary
Agile days `16 summaryAnton Zhukov
 
Системная инженерия в России и мире
Системная инженерия в России и миреСистемная инженерия в России и мире
Системная инженерия в России и миреAnatoly Levenchuk
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
 
CEE-SECR'2011 Бизнес-процессы
CEE-SECR'2011 Бизнес-процессыCEE-SECR'2011 Бизнес-процессы
CEE-SECR'2011 Бизнес-процессыYury Kupriyanov
 

Ähnlich wie Gaperton - Software People 2012 (20)

Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUAREТехники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
 
А кем будете вы?
А кем будете вы?А кем будете вы?
А кем будете вы?
 
IT people
IT peopleIT people
IT people
 
Sep reqm-lec1
Sep reqm-lec1Sep reqm-lec1
Sep reqm-lec1
 
Обзор Feature-Driven Development и Domain-Driven Design
Обзор Feature-Driven Development и Domain-Driven DesignОбзор Feature-Driven Development и Domain-Driven Design
Обзор Feature-Driven Development и Domain-Driven Design
 
Консалтинг высоконагруженных web систем
Консалтинг высоконагруженных web системКонсалтинг высоконагруженных web систем
Консалтинг высоконагруженных web систем
 
Тяжело в учении - легко в бою
Тяжело в учении - легко в боюТяжело в учении - легко в бою
Тяжело в учении - легко в бою
 
Никита Ремизов - Введение в разработку ТЗ
Никита Ремизов - Введение в разработку ТЗНикита Ремизов - Введение в разработку ТЗ
Никита Ремизов - Введение в разработку ТЗ
 
А.Левенчук -- тренды в инженерии требований
А.Левенчук -- тренды в инженерии требованийА.Левенчук -- тренды в инженерии требований
А.Левенчук -- тренды в инженерии требований
 
Почему размер имеет значение
Почему размер имеет значениеПочему размер имеет значение
Почему размер имеет значение
 
Автоматизация бизнес-процессов, электронного документооборота и архивного хра...
Автоматизация бизнес-процессов, электронного документооборота и архивного хра...Автоматизация бизнес-процессов, электронного документооборота и архивного хра...
Автоматизация бизнес-процессов, электронного документооборота и архивного хра...
 
раубичи ронд
раубичи рондраубичи ронд
раубичи ронд
 
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
 
Критерии выбора системы электронного документооборота
Критерии выбора системы электронного документооборотаКритерии выбора системы электронного документооборота
Критерии выбора системы электронного документооборота
 
Принципы построения современных систем управления жизненным циклом
Принципы построения современных систем управления жизненным цикломПринципы построения современных систем управления жизненным циклом
Принципы построения современных систем управления жизненным циклом
 
CI для Microsoft Dynamics crm
CI для Microsoft Dynamics crmCI для Microsoft Dynamics crm
CI для Microsoft Dynamics crm
 
Agile days `16 summary
Agile days `16 summaryAgile days `16 summary
Agile days `16 summary
 
Системная инженерия в России и мире
Системная инженерия в России и миреСистемная инженерия в России и мире
Системная инженерия в России и мире
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
CEE-SECR'2011 Бизнес-процессы
CEE-SECR'2011 Бизнес-процессыCEE-SECR'2011 Бизнес-процессы
CEE-SECR'2011 Бизнес-процессы
 

Kürzlich hochgeladen (9)

Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 

Gaperton - Software People 2012

  • 1. Проектирование как процесс решения проблем Владислав Балин Инвестиционный холдинг «ФИНАМ» Зам. руководителя IT-департамента по R&D
  • 2. Разработка ПО – это производство? Проведем правильную аналогию
  • 3. Разработка устройства Конструкторское бюро Испытания и Испытания и 100 Проектирование правки РКД правки РКД изделий 10 Исправленная 10 Исправленная РКД образцов РКД образцов РКД Фабрика Производство Производство Производство опытных опытных установочной образцов образцов партии месяц месяц месяц •  Производство – ответственный и затратный этап •  Его не перепутать с проектированием
  • 4. Hardware  People   Готовность к производству: Проектирование Ключевые - Рабочие изделия требования и непрерывный процесс - Прохождение характеристики испытаний постановки и решения - Комплект РКД (для проблем производства) •  Логистика важна на этапе проектирования •  Развита дисциплина работы с документацией •  Явный фокус на решении проблем •  В ТЗ только ключевые требования и ТТХ •  РКД - не более чем средство
  • 5. Куда девалась фабрика? Компьютер разработчика ПО Разработка Отладка Отладка Дистрибутив Исходный Исправленный Исправленный код EXE код EXE код Компиляция и Компиляция и Компиляция и сборка сборка сборка минуты минуты минуты •  Наша технология производства – верх совершенства •  Настолько, что мы не склонны его замечать
  • 6. So-ware  People   "Промышленная" Программный код: Технические разработка - Проходит тесты требования процесс написания - Соответствует и отладки кода требованиям •  Главный результат – отлаженный код •  «Заказчик никогда не знает, что он хочет» •  Упорная аналогия с конвейерной сборкой •  нет Ватерфолу, да здравствует Канбан!
  • 7. Разработка – непрерывный процесс проектирования Проектирование – процесс решения проблем
  • 8. Проблема  имеет  много  решений   ? Проблема Так? Ага! Пространство решений
  • 9. …которые  ставят  новые  проблемы   ? Проблема Так? Ой! Пространство решений ?!
  • 10. …и  мы  перебираем  решения   ? Проблема Так? Ой! Пространство решений ?! Или так? ?
  • 11. …чтобы  найти  оптимальное.   ? Проблема Так? Теплее! Ой! Пространство решений А может, вообще вот-так? ?! Или так? Э-э-э... ?
  • 12. «Требования  меняются»   «Заказчик  не  знает,  что  он  хочет»   А  так-­‐ли  хорошо  люди  умеют   разделять  проблемы,  и  их   решения?  
  • 13. «Добавьте в эту табличку вот такое поле, считающееся вот-так». «Брокерская комиссия должна рассчитываться секунда в секунду по всем клиентам!» «Необходимо слить ваши системы в одну, с единой базой!». «Надо переписать риск- сервер!»
  • 14. Решение Проблема «Добавьте в эту табличку Менеджеру надо знать вот такое поле, актуальный остаток денег на считающееся вот-так». счете, чтобы оформить клиенту выдачу наличных. «Брокерская комиссия Менеджеру надо знать должна рассчитываться актуальный остаток денег на секунда в секунду по всем счете, чтобы оформить клиентам!» клиенту выдачу наличных. «Необходимо слить ваши Процесс выдачи наличных – системы в одну, с единой неудобен, требует базой!». дублирования операций в разных системах. «Надо переписать риск- В риск-сервере есть порядка 10 сервер!» неприятных ошибок, которые давно пора исправить.
  • 15. Пользователь  прекрасно   осознает  свои  проблемы.   Но  почему-­‐то  не  считает  нужным  о   них  говорить.  
  • 16. «Требования»  –  решение  проблемы   Проблема пользователя Функции системы
  • 17. …которое  ставит  частные  проблемы   Проблема пользователя Функции системы Как Как будет Как будет отобразятся выглядеть? работать? на систему? Алгоритмы и Структура Внешний вид структуры модулей, UI данных классов, и пр. …имеющие множество возможных решений
  • 18. …которые  можно  по  разному   реализовать   Проблема пользователя Функции системы Как Как будет Как будет отобразятся выглядеть? работать? на систему? Алгоритмы и Структура Внешний вид структуры модулей, UI данных классов, и пр. ? ? Исходный код ? ? ?
  • 19. …но  кое-­‐что  ограничивает  пространство  решений   Каковы Как в целом Проблема ключевые устроена пользователя ТТХ? система? Базовые Функции технологии системы и принципы Как Как будет Как будет отобразятся выглядеть? работать? на систему? Алгоритмы и Структура Внешний вид структуры модулей, UI данных классов, и пр. ? ? Исходный код ? ? ?
  • 20. «Наше С++ приложение будет мелко нарезано на изолированные COM- объекты» «Исходный код торговых роботов будут храниться в базе данных» «Будем все писать на Дельфи». «Необходимо все переписать на .NET!» «Необходимо переписать этот кривой, как турецкая сабля, код!».
  • 21. Решение Проблема «Наше С++ приложение Наше приложение должно уметь будет мелко нарезано на на чем-то скриптоваться. Лень изолированные COM- думать, пусть это будет Visual объекты» Basic. И точка. «Исходный код торговых Я сходил на недельные курсы по роботов будут храниться в MS SQL, и не могу держать это базе данных» знание внутри себя. «Будем все писать на Ничего кроме Delphi не умеем, и Дельфи». изучать не хотим. «Необходимо все Нам очень не нравится Дельфи, переписать на .NET!» изучения которого надо избежать. «Необходимо переписать Этот код не мой. Я ничего в нем этот кривой, как турецкая не понимаю, и панически боюсь сабля, код!». его.
  • 22. Разработчик  прекрасно   осознает  свои  проблемы   Но  почему-­‐то  не  считает  нужным   о  них  говорить.  
  • 23. Поэтому,  мы  выбираем   решения  наугад!   И  да  поможет  нам  Ag:)e.  
  • 24. Нам  поможет  Методология  Х?   Или,  может,  стоит  осмысленно   выбирать  решения?  
  • 25. «Чеклист  детектива»   •  Выяснить  проблему   •  Определить  критерии  успешного  решения   •  Рассмотреть  несколько   «версий»  (вариантов  решения)   •  Отработать  все  версии,  собирая  факты  и   «улики»   •  «Отбросьте  невозможное,  и  останется   истина».  ШХ.    
  • 26. Проектирование  супер-­‐ЭВМ   Отбор кандидатов Вариант 1 Вариант 2 Вариант 3 Вариант 4 Вариант 5 Глубокая проработка Эльбрус-2 БЭСМ-10 Детальное проектирование Эльбрус-2
  • 27. Цикл  «гипотеза-­‐эксперимент»   •  Умение  выдвигать  разумные  гипотезы,  и   проверять  их  логически   •  Умение  ставить  эксперименты,  и  делать  из   них  правильные  выводы   •  Необходимо  умение  отделять:   –  Факты  от  предположений   –  Проблемы  от  решений   –  Цели  от  задач  
  • 28. Группа  эффективнее  одиночки  в   выработке  и  проверке  гипотез   Группа  должна  быть  организована,   чтобы  быть  эффективнее  
  • 29. Сессия  проектирования   •  Собираем  проектную  группу   •  Вводная:   –  Проблема  пользователя   –  Очевидные  варианты  решений   –  «Что  нам  мешает  сделать  это  прямо  сейчас?»   •  Дополняем  список  вариантов  решений   •  Составляем  список  открытых  проблем   –  Что  мы  не  знаем,  и  должны  узнать  
  • 30. Список  открытых  проблем   •  Главный  предмет  совещания   •  Виден  всей  группе  на  маркерной  доске   •  Всегда  актуален   •  Должен  меняться  со  временем   – Количество  проблем  высшего  порядка   должно  уменьшаться,  сменяясь   частными  
  • 31. Правила  проверки  решений   •  «Это  неправильно»  «Как  ваше  решение   будет  работать  вот  в  такой  ситуации?»   •  Давление  на  авторитеты  Ссылки  на   конкретный  опыт  с  примерами   •  Убеждения  В  инженерии  все  можно   обосновать  логически   •  Это  будет  так!  «В  закон  Ома  верю.  Все   остальное  надо  проверять»  
  • 32. Хорошо  известные  вам  вещи..   –  Прототипы   –  Дизайн-­‐ревью   –  Код-­‐ревью   –  Тесты     …являются не «практиками», а   средствами проверки «гипотез»
  • 33. «-­‐  Ты  должен  мне  поверить!   -­‐  Ты  кто  -­‐  Иисус  Христос,  чтобы   тебе  верить?»     Главный   А.  М.  Степанов.   программист  первого  советского   комплекса  ПВО.  
  • 34. Роль  руководителя   •  Организует  и  ведет  совещание   •  Поддерживает  список  открытых  проблем   •  Отвечает  за  логику  и  формат,  разрешая   конфликты,  оставляя  креатив  подчиненным   •  Направляет  процесс,  выдавая  задания   (схема  «научного  семинара»)   •  Вникает  в  проблемы,  которые  не   меняются  
  • 35. Для  одного  программиста   •  Периодически  подходить  к   программисту   •  Беседовать  о  текущих  проблемах   •  Отмечать  те,  что  не  меняются   •  Вникать  только  в  них,  и  разбираться,   почему:   –  Человеку  может  быть  нужна  помощь   –  Выдумывать  проблемы  тяжело  
  • 36. Спасибо  за  внимание!   Владислав  Балин   hrp://gaperton.livejournal.com