Процессы разработки ПО Разработка корпоративных приложений.
Процессы разработки ПО
Разработка корпоративных приложений.
Зачем вообще нужны процессы
Люди не идеальны
• Контроль (внешний и внутренний), гарантии, риски, размеры организации (много дырок), трудоустройство теоретиков, передача знаний
Многообразие страшных слов
• ISO (9000), ГОСТ, CMMI• PMBOK, PMI, ITIL (не про нас), • IDEF, UML• Водопад, RUP (OpenUP), MSF, Agile, Scrum,
Kanban, Lean, XP….
google it
Стандарты (конституция)
• ГОСТ (ну вы поняли)• ISO (международный, про качество)• CMMI (американский про качество)
• Зачем?– Для военных и других критических сфер– Хотя сфера применения быстро сокращается
(см. шведская полиция - http://
blog.crisp.se/henrikkniberg/2011/05/27/1306495980000.html )
Инструкции (законы)
• PMI (совм. С ISO) выпускает PMBOK• Инструкция про управления всем
(соответствующего размера)• В отличии от законов – можно не читать
IDEF & UML (юридический язык)
• Светлая утопия о том, что можно формально описать ПО, а потом сгенерировать код
• IDEF0-14 (CASE!)– ERWin, BPWin, и их незавидная судьба (google)
• UML (то же самое, но толковые авторы)– Будете изучать в следующем семестре– Взлетело чуть лучше чем IDEF, но все равно не
очень
ПРОЦЕССЫ РАЗРАБОТКИПодзаконные акты
Что такое процесс
• Описывает что надо делать (жизненный цикл)
• В какой последовательности• Кому (требуемые квалификации и роли)• Как (конкретные практики)– Документация– Инженерные практики (как писать код, как
тестировать)
Жизненный цикл ПО
• Водопад, RUP (OpenUP), MSF, Agile, Scrum, Kanban, Lean, XP…
• Есть фреймворки, есть процессы, есть практики: терминология размыта
• Смелое утверждение: все хорошие процессы являются циклом Деминга: – PDCA -> plan, do, check, act
Эволюция процесса
1. Водопад 2. Итеративная разработка3. Гибкая разработка (SCRUM)4. Lean / Kanban
Водопад
• Есть ли цикл Деминга (PDCA)?
Проблемы?
Итеративная разработка
• PDCA?
Гибкая (agile) разработка
• PDCA?
Lean / Kanban
• PDCA?• Тоже agile
Играем в монетки
1 2 3 4 5 Посл.
1 2 3 4 5
Перв:
Посл:
По 20
По 5
По 1
1 2 3 4 5
Перв:
Посл:
Резюмируя. Что изобрели?
• Конвейер • Почему на это потребовалось 40 лет?– Существенно сложнее чем классическое
производство– Много общения и взаимодействия людей– Логичное желание все задокументировать
заранее (чисто инженерный подход)
Конвейер творческой работы (нужна идеология)
• Agile (Европа)– Люди и взаимодействие важнее процессов и
инструментов– Работающий продукт важнее исчерпывающей
документации– Сотрудничество с заказчиком важнее
согласования условий контракта– Готовность к изменениям важнее следования
первоначальному плану
Конвейер творческой работы (идеология 2)
• Lean (Япония, Toyota production system)– Исключение потерь (см. теория ограничений)– Вызов (постоянная постановка целей)– Постоянное улучшение процесса– Докопаться до истины (5Whys)– «Вытягивание» (pull vs push) работы– Поток ценности, JIT– Ограничение работы в процессе– SHU-HA-RI (повторяй, думай, забудь правила)
РОЛИ В РАЗРАБОТКЕ ПОкто
Менеджер
• Менеджер проекта (project / product / program manager / owner)
• Ответственность за все• Координация
А дальше очень сильно зависит от внедренного процесса и конкретного процесса
Аналитик
• Обдумывает (анализирует) предметную область – Опрашивает экспертов / клиента или является
экспертом• Детально описывает требования со всеми
нюансами
UI дизайнер
• Смотрит на требования • Рисует как все это выглядит• Думает про usability• Решает про навигацию
Архитектор
• Придумывает как это все делать (глобально)– Какие технологии подойдут– Какие потребуются ресурсы (сервера и прочее)– Как будет устроена система, из каких больших
частей– По итогу – всякие красивые диаграммы и
прочее, иногда – прототип системы
Разработчик (логика, БД, UI)
• Разгребает все что пришло свыше• Есть еще ведущий разработчик (team lead)– Обычно координирует и направляет остальных– Представляет интересы других– Иногда – заводит и распределяет конкретные
задачи
Quality Engineer (QA, тестер)
• Пишет тест кейсы (как проверить) по тому что написал аналитик
• Пишет автоматизированные тесты• Лично все тестирует и принимает– Заводит баги
Другие
• Технический писатель, • Release / Deploy инженер• Линейные начальники• ….• Перекладыватель бумажек
Идеальный член команды
• Если все такие – процесс не нужен
• Обычно становятся большими начальниками
Читаем
• Википедия -> раз, два и т.д.• http://agilemanifesto.org/• Scrum. Гибкая разработка ПО • Бережливое
производство программного обеспечения. От идеи до прибыли
• http://scrumtrek.ru/• Конференции (AgileDays, MS DevDays, MS TechEd,
SoftwarePeople, CEE-SECR)• UML ->
http://www.ozon.ru/context/detail/id/2260613/
В следующих сериях
• Краткое введение в SCRUM (далее рассматривать будем именно его)
• Роль product owner’а подробнее
Темы для докладов
• AOP• MSF• Kanban / Lean
Лабы
• Открытые данные– http://www.apps4russia.ru/– http://apps4russia.reformal.ru/– http://data.worldbank.org/
• Готовое:– http://minenergo.gov.ru/activity/statistic/ – http://www.fms.gov.ru/about/ofstat/– http://www.federalspace.ru/main.php?id=10
• Повышенный балл:– Или наличие БД– Или наличие веб интерфейса
Вопросы?
PO
Scrum роли
• Управленец• Технарь
Backlog
Scrum
Scrum
Разработчик (часть 1)
Лекция хз
Основы программирования
• Базовые элементы синтаксиса, процедурное программирование– If / циклы / функции / переменные
• Указатели и работа с памятью (C )• ООП (C++)
•библиотеки / платформа