62
Жизненный цикл программного обеспечения Тема № 2

Практические аспекты разработки ПО #2

Embed Size (px)

Citation preview

Page 1: Практические аспекты разработки ПО #2

Жизненный цикл программного обеспечения

Тема № 2

Page 2: Практические аспекты разработки ПО #2

Почему «цикл»?

Page 3: Практические аспекты разработки ПО #2

Почему «цикл»?

Page 4: Практические аспекты разработки ПО #2

Почему «цикл»?

Page 5: Практические аспекты разработки ПО #2

Жизненный цикл ПО (AL)

Page 6: Практические аспекты разработки ПО #2

Эдвард Деминг

Американский ученый-статистик, консультант по теории управления качеством. Основоположник концепции «бережливого производства» (lean manufacturing)

Page 7: Практические аспекты разработки ПО #2

Цикл Деминга (PDCA)

Page 8: Практические аспекты разработки ПО #2

Определение AL

• Жизненный цикл программного обеспечения (ПО) — период времени, который начинается с момента принятия решения о необходимости создания программного продукта и заканчивается в момент его полного изъятия из эксплуатации

Стандарт IEEE 610.12

Page 9: Практические аспекты разработки ПО #2

Разные модели AL

• Модель AL – это способ организации процессов разработки, внедрения и сопровождения программного обеспечения

• Модель AL – это способ, которым решили потратить время жизненного цикла ALб

Page 10: Практические аспекты разработки ПО #2

Примитивная модель AI:Code & Fix

Page 11: Практические аспекты разработки ПО #2

Стадии и активности AL

Page 12: Практические аспекты разработки ПО #2

Модели AL

• «Водопадная»– Стадии проходятся последовательно с

максимальным качеством приближения к заданному результату. Итерации внутри стадий.

• «Спиральная»– Стадии укорачиваются и проходятся

итеративно, каждая итерация приближает к промежуточному результату. Стадии внутри итераций.

Page 13: Практические аспекты разработки ПО #2

Уинстон Ройс

Американский менеджер в сфере разработки ПО, руководитель Центра программных технологий компании «Локхид». В 1970 г. опубликовал работу с описанием «водопадной» модели

Page 14: Практические аспекты разработки ПО #2

Водопадная модель AL

Page 15: Практические аспекты разработки ПО #2

Три амиго

Page 16: Практические аспекты разработки ПО #2

Rational Unfied Process (RUP)

Page 17: Практические аспекты разработки ПО #2

Читаем

А. ЯкобсонГ. БучДж. РамбоУнифицированный

процесс разработки программного обеспечения

Page 18: Практические аспекты разработки ПО #2

Барри Боэм

Директор отдела исследований программного обеспечения и технологий аэрокосмической корпорации TRW. Автор метода оценки затрат на разработку ПО COCOMO и спиральной модели AI.

Page 19: Практические аспекты разработки ПО #2

Спиральная модель AL

Page 20: Практические аспекты разработки ПО #2

Спиральная модель AL

Page 21: Практические аспекты разработки ПО #2

Спиральная модель AL

Page 22: Практические аспекты разработки ПО #2

Время в водопадной модели AL

Page 23: Практические аспекты разработки ПО #2

Время в спиральной модели AL

Page 24: Практические аспекты разработки ПО #2

Гибкая разработка (Agile)

Page 25: Практические аспекты разработки ПО #2

Гибкая разработка (Agile)

• Жизненный цикл состоит из повторяющихся итераций

• Каждая итерация содержит все стадии

• Результатом итераций является выпуск законченной версии продукта

Page 26: Практические аспекты разработки ПО #2

Основные идеи Agile

• Личности и их взаимодействия важнее, чем процессы и инструменты;

• Работающее программное обеспечение важнее, чем полная документация;

• Сотрудничество с заказчиком важнее, чем контрактные обязательства;

• Реакция на изменения важнее, чем следование плану.

Agile Manifesto, 2001

Page 27: Практические аспекты разработки ПО #2

Принципы Agile

• удовлетворение клиента за счёт ранней и бесперебойной поставки ценного ПО;

• приветствие изменений требований, даже в конце разработки (это может повысить конкурентоспособность полученного продукта);

• частая поставка рабочего ПО (каждый месяц или неделю или ещё чаще);

• тесное, ежедневное общение заказчика с разработчиками на протяжении всего проекта;

Agile Manifesto, 2001

Page 28: Практические аспекты разработки ПО #2

Принципы Agile

• проектом занимаются мотивированные личности, которые обеспечены нужными условиями работы, поддержкой и доверием;

• рекомендуемый метод передачи информации — личный разговор (лицом к лицу);

• работающее ПО — лучший измеритель прогресса;• спонсоры, разработчики и пользователи должны иметь

возможность поддерживать постоянный темп на неопределенный срок;

Agile Manifesto, 2001

Page 29: Практические аспекты разработки ПО #2

Принципы Agile

• постоянное внимание на улучшение технического мастерства и удобную архитектуру;

• простота — искусство НЕ делать лишней работы;• лучшие технические требования и архитектура

получаются у самоорганизованной команды;• постоянная адаптация к изменяющимся

обстоятельствам.

Agile Manifesto, 2001

Page 30: Практические аспекты разработки ПО #2

Варианты методологий Agile

• SCRUM• Экстремальное программирование

(eXtreme Programming, XP)• Бережливая разработка (Lean

Development); Kanban

Page 31: Практические аспекты разработки ПО #2

SCRUM

Page 32: Практические аспекты разработки ПО #2

Джефф Сазерленд, Кен Швабер

Page 33: Практические аспекты разработки ПО #2

SCRUM

Page 34: Практические аспекты разработки ПО #2

SCRUM: Burndown diagram

Page 35: Практические аспекты разработки ПО #2

SCRUM: Burndown diagram

Page 36: Практические аспекты разработки ПО #2

SCRUM: Task board

Page 37: Практические аспекты разработки ПО #2

Максим ДорофеевРуководитель отдела

разработки Лаборатории Касперского.

Возможно, один из лучших IT-менеджеров России.

http://cartmendum.livejournal.com/

Page 38: Практические аспекты разработки ПО #2

Дорофеев: История одной доски

Page 39: Практические аспекты разработки ПО #2

Дорофеев: История одной доски

Page 40: Практические аспекты разработки ПО #2

Дорофеев: История одной доски

Page 41: Практические аспекты разработки ПО #2

Дорофеев: История одной доски

Page 42: Практические аспекты разработки ПО #2

Читаем

Хенрик КнибергSCRUM и XP: Заметки

с передовой. Как мы делаем SCRUM

Page 43: Практические аспекты разработки ПО #2

eXtreme programming

Page 44: Практические аспекты разработки ПО #2

Кент Бек, Уорд Каннингем

Page 45: Практические аспекты разработки ПО #2

eXtreme programming (XP)

Более технологичная методология, чем SCRUM

Фокус не только на человеческом взаимодействии, но и на инженерных практиках

Page 46: Практические аспекты разработки ПО #2

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

Читаем

Кент БекЭкстремальное

программирование

Page 48: Практические аспекты разработки ПО #2

Читаем

Кент Бек, Мартин ФаулерЭкстремальное

программирование: Планирование

Page 49: Практические аспекты разработки ПО #2

Читаем

Кент Бек, Экстремальное

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

Page 50: Практические аспекты разработки ПО #2

Kanban

Page 51: Практические аспекты разработки ПО #2

Kanban

• Kanban – это метод «гладкого и непрерывного» выполнения производственного процесса

• Это часть методологии «бережливого производства» (Lean Manufacturng)

• Разработано в Производственной системе компании Toyota (Toyota Production System, TPS) и подсмотрено американцами.

Page 52: Практические аспекты разработки ПО #2

Толстая книжка

Джеффри ЛайкерДао «Тойота»: 14

принципов менеджмента ведущей компании мира

Page 53: Практические аспекты разработки ПО #2

Смотрим презентацию

Максим ДорофеевLean: Принципы

бережливого производства

http://www.slideshare.net/Cartmendum/intro-2-lean

Page 54: Практические аспекты разработки ПО #2

Таичи Оно

Page 55: Практические аспекты разработки ПО #2

7 принципов Lean

1. Убираем потери2. Встраиваем качество3. Постоянное обучение4. Откладывать обещания на более позднее

время5. Доставлять заказчику как можно быстрее6. Уважать людей и доверять им7. Оптимизировать целое, а не частности

Page 56: Практические аспекты разработки ПО #2

7 видов потерь

1. Не полностью сделанная работа2. Лишние возможности3. Изучение заново4. Слишком длинная цепочка5. Переключение с задачи на задачу6. Задержки7. Дефекты

Page 57: Практические аспекты разработки ПО #2

Kanban

Page 58: Практические аспекты разработки ПО #2
Page 59: Практические аспекты разработки ПО #2

Читаем

Хенрик КнибергМаттиас СкаринScrum и Kanban:

выжимаем максимум

Page 60: Практические аспекты разработки ПО #2

Выпуск продукта в «водопаде» и итеративной модели

Page 61: Практические аспекты разработки ПО #2

Выбор модели AL

• В зависимости от размера проекта• Его типичности или новизны• Выделенного на него времени• Состава и опыта команды• Требований заказчика

Page 62: Практические аспекты разработки ПО #2

Вопросы для реферата

• Какая модель жизненного цикла Вам лично ближе?

• Почему?• Как можно было бы применить полученные

знания в учебном процессе или на (будущей) работе?