Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems...

34
2012

Transcript of Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems...

Page 1: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

2012

Page 2: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Ицыксон Владимир Михайлович ◦ Доцент СПбГПУ, к.т.н.

◦ E-mail: [email protected]

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 2

Page 3: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Предшествующие дисциплины (1ый семестр)

◦ Java

Связанные дисциплины (2ой семестр) ◦ Алгоритмы и структуры данных

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

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 3

Page 4: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 4

Анализ и планирование

Управление требованиями Планирование

Разработка ПО

Кодирование Языки

программирования Отладка

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

Проектирование ПО Объектно-ориентированный анализ и проектирование/ визуальное моделирование

Алгоритмизация

Документирование

Стандарты Технологии

документирования

Качество ПО

Стандарты качества Оценка качества

Обеспечение качества Процесс разработки ПО

Управление проектами Версионирование

Управление изменениями и дефектами

Непрерывная интеграция Сборка и выпуск

Управление рисками

Сопровождение

Выпуск продукта Лицензирование

Программная инженерия

Page 5: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Общая

◦ Гецци К., Джазаейри М., Мандриоли Д. Основы инженерии программного обеспечения. 2-е изд.: Пер. с англ. – СПб.: БХВ-Петербург, 2005. – 832 с.: ил.

◦ Орлов С. Технологии разработки программного обеспечения. Разработка сложных программных систем. Учебное пособие. СПб: Питер, 2003. 480 с, ил.

◦ Благодатских В.А. Стандартизация разработки программных средств: учеб. пособие /В.А. Благодатских, В.А. Волнин, К.Ф. Поскакалов; под ред. О.С. Разумова. - М. : Финансы и статистика, 2006. - 288 с : ил.

◦ Брукс Ф. Мифический человеко-месяц или как создаются программные системы. СПб: Символ-Плюс, 2006. – 304 с., ил.

◦ Д. Кознов. Введение в программную инженерию: Учебный курс. М.: Интуит, 2008.

◦ П. Дюваль, Э. Гловер. Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска. М.:Вильямс. 2008. 240с.

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 5

Page 6: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Жизненный цикл разработки ПО ◦ Бек К. Экстремальное программирование. – СПб.: Питер, 2002. –

224 с., ил.

◦ Якобсон А., Буч Г., Рамбо Дж. Унифицированный процесс разработки программного обеспечения. – СПб.: Питер, 2002. – 496 с.: ил.

Управление требованиями ◦ Вигерс К. Разработка требований к программному обеспечению /

Пер, с англ. — М.: Издательско-торговый дом «Русская Редакция», 2004. —576с.: ил.

◦ Коберн А. Современные методы описания функциональных требований к системам. М: Издательство «Лори», 2002. 263 с.: ил.

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 6

Page 7: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Качество ПО ◦ Фаулер М. Рефакторинг. Улучшение существующего кода. – Пер. с

англ. – СПб: Символ-Плюс, 2003. – 432 с., ил.

◦ Глухих М.И., Ицыксон В.М. Программная инженерия. Обеспечение качества программных средств методами статического анализа. Учебное пособие. СПб: Изд-во Политехн. ун-та. 2011, 150 с.

◦ Б.В. Черников. Управление качеством программного обеспечения. М:ИД «ФОРУМ», 2012. – 240 с.: ил.

Тестирование ◦ Бейзер. Б. Тестирование черного ящика. Технологии

функционального тестирования ПО и систем. СПб: Питер, 2004. – 318 с, ил.

◦ Калбертсон Р, Браун К., Кобб Г. Быстрое тестирование: Пер. с англ.. – М.: Издательский дом «Вильямс», 2002.– 384 с.: ил.

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 7

Page 8: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Введение Жизненный цикл ПО

Управление требованиями Управление программными проектами

◦ Управление ресурсами ◦ Управление проектами ◦ Управление версиями ◦ Непрерывная интеграция ◦ Сборка и выпуск ◦ Управление рисками

Обеспечение качества программного обеспечения ◦ Оценка качества программного обеспечения ◦ Методы обеспечения качества программного обеспечения

Документирование программного обеспечения

Качество процесса разработки

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 8

Page 9: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Фазы жизненного цикла ПО Стратегии конструирования ПО

◦ Однократные (водопадные) стратегии Классическая каскадная модель

◦ Инкрементные стратегии Инкрементная модель RAD

◦ Эволюционные стратегии Прототипирование Спиральная модель Экстремальное программирование Модель SCRUM

◦ Смешанные подходы Rational Unified Process (RUP)

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 9

Page 10: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Сбор требований

Анализ требований

Документирование требований

Изменение требований

Планирование и управление требованиями

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 10

Page 11: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Процесс проектирования программного продукта

◦ Управление ресурсами

Роли в программном проекте

◦ Управление задачами

◦ Этапы программного проекта

◦ Наблюдение за проектом

◦ Системы управления проектами и ресурсами

◦ Управление рисками

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 11

Page 12: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Версионирование проекта ◦ Ветки, теги ◦ Основные операции ◦ Системы контроля версий ◦ Поддержка нескольких версий ПО

Управление дефектами и изменениями ◦ Свойства дефекта ◦ Жизненный цикла дефекта ◦ Промышленные системы управления дефектами

Сборка и выпуск программных проектов ◦ Основные задачи и проблемы ◦ Управление зависимостями ◦ Автоматизация сборки программных проектов ◦ Альфа и бета-версии. Релиз программного продукта.

Дистрибутив ◦ Сопровождение программного продукта

Непрерывная интеграция

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 12

Page 13: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Атрибуты качества ПО

Стандарты качества ПО

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

Повышение качества программных систем ◦ Рефакторинг программных систем

Автоматизированный рефакторинг

◦ Анализ и модификация ПС

◦ Верификация ПО

◦ Тестирование ПО

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 13

Page 14: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Основные принципы тестирования ПО ◦ Структурное тестирование ◦ Функциональное тестирование

Организация процесса тестирования ◦ Модульное тестирование ◦ Регрессионное тестирование ◦ Тестирование интеграции ◦ Системное тестирование

Тестирование восстановления Тестирование безопасности Стресс-тестирование Тестирование производительности

Тестирование приложений с GUI Автоматизация тестирования ПО

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 14

Page 15: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Виды программных документов

Стандарты документирования

UML как средство документирования

Автоматизация документирования ◦ Документирование исходного кода ПО

◦ Системы DocBook, DITA и т.п.

Документирование больших программных проектов

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 15

Page 16: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Качество процесса разработки

Комплексные средства управления разработкой ПО

ИЦЫКСОН В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 16

Page 17: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

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

2012

Page 18: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Программное обеспечение

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

Фаза проектирования ПО

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

Программный продукт

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 18

Page 19: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 19

Анализ и планирование

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

Разработка

Тестирование Эксплуатация/

Сопровождение

Документирование

Page 20: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Качество ◦ Реализованы все возможности

◦ Эти возможности реализованы с надлежащим качеством

Время ◦ Проект реализован вовремя

◦ Этапы проекта реализованы вовремя

Бюджет ◦ Проект уложился в планируемый бюджет

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 20

Page 21: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

32

44

24 2009

Успех

Проблемы

Провал

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 21

28

49

23 2000

Успех

Проблемы

Провал

34

51

15 2004 Успех

Проблемы

Провал

Источник: The Standish Group International, Chaos reports

Page 22: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Программная индустрия существенно отличается от других областей производства: ◦ Очень высокая сложность системы

◦ Менее предсказуем результат

◦ Хуже поддается планированию

◦ До сих пор в большей степени творчество, чем ремесло

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 22

Page 23: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Решаемая задача

Заказчик

Со стороны разработчика ◦ Команда разработки

◦ Инфраструктура

◦ Выбранная методология проектирования ПО

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 23

Page 24: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Методологии определяются: ◦ Составом и последовательностью работ

◦ Ролью участников проекта

◦ Составом и шаблонами документов

◦ Организацией и управлением требованиями

◦ Порядком контроля и проверки качества

◦ Способами взаимодействия участников

◦ …

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 24

Page 25: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 25

Agile software development

Agile Unified Process (AUP)

Behavior Driven Development (BDD)

Big Design Up Front (BDUF)

Constructionist design methodology (CDM)

Design-driven development (D3)

Design Driven Testing (DDT)

Domain-Driven Design (DDD)

Dynamic Systems Development Method (DSDM)

Evolutionary Model

Extreme Programming (XP)

Feature Driven Development

Iterative and incremental development

Kaizen

Kanban Lean software development Microsoft Solutions Framework

(MSF) Model-driven architecture (MDA) Open Unified Process Rapid application development

(RAD) Rational Unified Process (RUP) Scrum Software Craftsmanship Spiral model Structured Systems Analysis and

Design Method (SSADM) Team Software Process (TSP) Test-driven development (TDD) Unified Process (UP) V-Model Waterfall model Wheel and spoke model

Page 26: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Стратегия конструирования

Адаптивность процесса

Этапы и связи между ними

Формулировка требований

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 26

Page 27: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Однократные

◦ Определены все требования

◦ Один цикл конструирования

◦ Промежуточных версий нет

Инкрементные

◦ Иногда - инкрементно-итеративные

◦ Определены все требования

◦ Множество циклов конструирования

◦ Промежуточные версии могут распространяться

Эволюционные

◦ Иногда - эволюционно-итеративные

◦ Определены не все требования

◦ Множество циклов конструирования

◦ Промежуточные версии могут распространяются

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 27

Page 28: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Тяжеловесные (прогнозирующие) ◦ Фиксированные требования

◦ Большая команда

◦ Разная квалификация разработчиков

Адаптивные (облегченные) ◦ Постоянно меняющиеся

требования

◦ Маленькая команда

◦ Высококвалифицированные разработчики

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 28

Page 29: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Классическая (водопадная) модель ◦ Общепринятая линейная модель ◦ Классическая итерационная ◦ Каскадная модель ◦ Строгая каскадная модель

Прототипирование (макетирование) Инкрементная модель Быстрая разработка приложений (RAD) Спиральная модель Rational Unified Process (RUP) Microsoft Solution Framework (MSF) Экстремальное программирование (XP) Scrum

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 29

Page 30: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 30

Стратегия Адаптивность Полнота

Классическая Однокр. Прогн. +

Прототипирование Эвол. Прогн. -

Спиральная Эвол. Прогн. +

Инкрементная Инкр. Прогн. +

RAD Инкр. Прогн. +

RUP Инкр. / Эвол. Прогн. +

MSF Однокр. / Эвол. Прогн./Адапт +

XP Эвол. Адапт. +

SCRUM Эвол. Адапт. +

Page 31: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Выбор зависит от:

◦ Решаемых задач

◦ Сроков реализации

◦ Команды разработчиков: Размер команды разработчиков

Опыт команды разработчиков

Сработанность команды разработчиков

Местонахождение разработчиков

Механизмы взаимодействия в команде разработчиков

◦ Заказчика: Требований заказчика

Механизмов взаимодействия с заказчиком

◦ и т.д.

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 31

Page 32: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Этапы ◦ Список этапов

◦ Последовательность этапов

◦ Связи между этапами

◦ Состав этапов

◦ Объемы (длительность) этапов

Требования ◦ Формулировка требований

◦ Корректировка требований

Команда ◦ Размер

◦ Роли участников проекта

◦ Способами взаимодействия участников

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 32

Page 33: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Артефакты ◦ Состав и содержание

◦ Время получения артефактов (например, версий)

◦ Объем и состав документации

Заказчик ◦ Квалификация заказчика

◦ Степень участия заказчика

Порядок контроля и проверки качества

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 33

Page 34: Слайд 1 · 2014-07-27 · Scrum Software Craftsmanship Spiral model Structured Systems Analysis and Design Method (SSADM) Team Software Process (TSP) Test-driven development

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012 34