Практические аспекты разработки ПО #2
TRANSCRIPT
![Page 1: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/1.jpg)
Жизненный цикл программного обеспечения
Тема № 2
![Page 2: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/2.jpg)
Почему «цикл»?
![Page 3: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/3.jpg)
Почему «цикл»?
![Page 4: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/4.jpg)
Почему «цикл»?
![Page 5: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/5.jpg)
Жизненный цикл ПО (AL)
![Page 6: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/6.jpg)
Эдвард Деминг
Американский ученый-статистик, консультант по теории управления качеством. Основоположник концепции «бережливого производства» (lean manufacturing)
![Page 7: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/7.jpg)
Цикл Деминга (PDCA)
![Page 8: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/8.jpg)
Определение AL
• Жизненный цикл программного обеспечения (ПО) — период времени, который начинается с момента принятия решения о необходимости создания программного продукта и заканчивается в момент его полного изъятия из эксплуатации
Стандарт IEEE 610.12
![Page 9: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/9.jpg)
Разные модели AL
• Модель AL – это способ организации процессов разработки, внедрения и сопровождения программного обеспечения
• Модель AL – это способ, которым решили потратить время жизненного цикла ALб
![Page 10: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/10.jpg)
Примитивная модель AI:Code & Fix
![Page 11: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/11.jpg)
Стадии и активности AL
![Page 12: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/12.jpg)
Модели AL
• «Водопадная»– Стадии проходятся последовательно с
максимальным качеством приближения к заданному результату. Итерации внутри стадий.
• «Спиральная»– Стадии укорачиваются и проходятся
итеративно, каждая итерация приближает к промежуточному результату. Стадии внутри итераций.
![Page 13: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/13.jpg)
Уинстон Ройс
Американский менеджер в сфере разработки ПО, руководитель Центра программных технологий компании «Локхид». В 1970 г. опубликовал работу с описанием «водопадной» модели
![Page 14: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/14.jpg)
Водопадная модель AL
![Page 15: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/15.jpg)
Три амиго
![Page 16: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/16.jpg)
Rational Unfied Process (RUP)
![Page 17: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/17.jpg)
Читаем
А. ЯкобсонГ. БучДж. РамбоУнифицированный
процесс разработки программного обеспечения
![Page 18: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/18.jpg)
Барри Боэм
Директор отдела исследований программного обеспечения и технологий аэрокосмической корпорации TRW. Автор метода оценки затрат на разработку ПО COCOMO и спиральной модели AI.
![Page 19: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/19.jpg)
Спиральная модель AL
![Page 20: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/20.jpg)
Спиральная модель AL
![Page 21: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/21.jpg)
Спиральная модель AL
![Page 22: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/22.jpg)
Время в водопадной модели AL
![Page 23: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/23.jpg)
Время в спиральной модели AL
![Page 24: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/24.jpg)
Гибкая разработка (Agile)
![Page 25: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/25.jpg)
Гибкая разработка (Agile)
• Жизненный цикл состоит из повторяющихся итераций
• Каждая итерация содержит все стадии
• Результатом итераций является выпуск законченной версии продукта
![Page 26: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/26.jpg)
Основные идеи Agile
• Личности и их взаимодействия важнее, чем процессы и инструменты;
• Работающее программное обеспечение важнее, чем полная документация;
• Сотрудничество с заказчиком важнее, чем контрактные обязательства;
• Реакция на изменения важнее, чем следование плану.
Agile Manifesto, 2001
![Page 27: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/27.jpg)
Принципы Agile
• удовлетворение клиента за счёт ранней и бесперебойной поставки ценного ПО;
• приветствие изменений требований, даже в конце разработки (это может повысить конкурентоспособность полученного продукта);
• частая поставка рабочего ПО (каждый месяц или неделю или ещё чаще);
• тесное, ежедневное общение заказчика с разработчиками на протяжении всего проекта;
Agile Manifesto, 2001
![Page 28: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/28.jpg)
Принципы Agile
• проектом занимаются мотивированные личности, которые обеспечены нужными условиями работы, поддержкой и доверием;
• рекомендуемый метод передачи информации — личный разговор (лицом к лицу);
• работающее ПО — лучший измеритель прогресса;• спонсоры, разработчики и пользователи должны иметь
возможность поддерживать постоянный темп на неопределенный срок;
Agile Manifesto, 2001
![Page 29: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/29.jpg)
Принципы Agile
• постоянное внимание на улучшение технического мастерства и удобную архитектуру;
• простота — искусство НЕ делать лишней работы;• лучшие технические требования и архитектура
получаются у самоорганизованной команды;• постоянная адаптация к изменяющимся
обстоятельствам.
Agile Manifesto, 2001
![Page 30: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/30.jpg)
Варианты методологий Agile
• SCRUM• Экстремальное программирование
(eXtreme Programming, XP)• Бережливая разработка (Lean
Development); Kanban
![Page 31: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/31.jpg)
SCRUM
![Page 32: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/32.jpg)
Джефф Сазерленд, Кен Швабер
![Page 33: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/33.jpg)
SCRUM
![Page 34: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/34.jpg)
SCRUM: Burndown diagram
![Page 35: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/35.jpg)
SCRUM: Burndown diagram
![Page 36: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/36.jpg)
SCRUM: Task board
![Page 37: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/37.jpg)
Максим ДорофеевРуководитель отдела
разработки Лаборатории Касперского.
Возможно, один из лучших IT-менеджеров России.
http://cartmendum.livejournal.com/
![Page 38: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/38.jpg)
Дорофеев: История одной доски
![Page 39: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/39.jpg)
Дорофеев: История одной доски
![Page 40: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/40.jpg)
Дорофеев: История одной доски
![Page 41: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/41.jpg)
Дорофеев: История одной доски
![Page 42: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/42.jpg)
Читаем
Хенрик КнибергSCRUM и XP: Заметки
с передовой. Как мы делаем SCRUM
![Page 43: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/43.jpg)
eXtreme programming
![Page 44: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/44.jpg)
Кент Бек, Уорд Каннингем
![Page 45: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/45.jpg)
eXtreme programming (XP)
Более технологичная методология, чем SCRUM
Фокус не только на человеческом взаимодействии, но и на инженерных практиках
![Page 46: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/46.jpg)
12 основных практик XP• Короткий цикл обратной связи (Fine scale feedback)
– Заказчик всегда рядом (Whole team, Onsite customer)– Игра в планирование (Planning game)– Разработка через тестирование (Test driven development)– Парное программирование (Pair programming)
• Непрерывный, а не пакетный процесс– Непрерывная интеграция (Continuous Integration)– Рефакторинг (Design Improvement, Refactor)– Частые небольшие релизы (Small Releases)
• Понимание, разделяемое всеми– Простота (Simple design)– Метафора системы (System metaphor)– Коллективное владение кодом (Collective code ownership) или выбранными
шаблонами проектирования (Collective patterns ownership)– Стандарты кодирования (Coding standard or Coding conventions)
• Социальная защищенность программиста (Programmer welfare):– 40-часовая рабочая неделя (Sustainable pace, Forty hour week)
![Page 47: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/47.jpg)
Читаем
Кент БекЭкстремальное
программирование
![Page 48: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/48.jpg)
Читаем
Кент Бек, Мартин ФаулерЭкстремальное
программирование: Планирование
![Page 49: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/49.jpg)
Читаем
Кент Бек, Экстремальное
программирование: Разработка через тестирование
![Page 50: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/50.jpg)
Kanban
![Page 51: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/51.jpg)
Kanban
• Kanban – это метод «гладкого и непрерывного» выполнения производственного процесса
• Это часть методологии «бережливого производства» (Lean Manufacturng)
• Разработано в Производственной системе компании Toyota (Toyota Production System, TPS) и подсмотрено американцами.
![Page 52: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/52.jpg)
Толстая книжка
Джеффри ЛайкерДао «Тойота»: 14
принципов менеджмента ведущей компании мира
![Page 53: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/53.jpg)
Смотрим презентацию
Максим ДорофеевLean: Принципы
бережливого производства
http://www.slideshare.net/Cartmendum/intro-2-lean
![Page 54: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/54.jpg)
Таичи Оно
![Page 55: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/55.jpg)
7 принципов Lean
1. Убираем потери2. Встраиваем качество3. Постоянное обучение4. Откладывать обещания на более позднее
время5. Доставлять заказчику как можно быстрее6. Уважать людей и доверять им7. Оптимизировать целое, а не частности
![Page 56: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/56.jpg)
7 видов потерь
1. Не полностью сделанная работа2. Лишние возможности3. Изучение заново4. Слишком длинная цепочка5. Переключение с задачи на задачу6. Задержки7. Дефекты
![Page 57: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/57.jpg)
Kanban
![Page 58: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/58.jpg)
![Page 59: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/59.jpg)
Читаем
Хенрик КнибергМаттиас СкаринScrum и Kanban:
выжимаем максимум
![Page 60: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/60.jpg)
Выпуск продукта в «водопаде» и итеративной модели
![Page 61: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/61.jpg)
Выбор модели AL
• В зависимости от размера проекта• Его типичности или новизны• Выделенного на него времени• Состава и опыта команды• Требований заказчика
![Page 62: Практические аспекты разработки ПО #2](https://reader035.vdocuments.site/reader035/viewer/2022062514/557f09ccd8b42a01678b4573/html5/thumbnails/62.jpg)
Вопросы для реферата
• Какая модель жизненного цикла Вам лично ближе?
• Почему?• Как можно было бы применить полученные
знания в учебном процессе или на (будущей) работе?