Слайд 1Технология разработки программного обеспечения
Савкин Вадим Сергеевич vadim.savkin@gmail.com
Слайд 2Технология разработки ПО
О себе
Савкин Вадим Сергеевич
Окончил МИЭМ в 1999
Стаж работы
разработчиком ПО с 1997
Основная специализация – прикладное и системное программирование
на C++
Последние 5 лет работаю в CQG
Последние 3 года в CQG занимаюсь поддержкой процессов разработки и тренингами для программистов
Слайд 3Технология разработки ПО
Цели дисциплины
Познакомиться с основами промышленной разработки программного обеспечения
Получить
представление о работе компаний-разработчиков ПО
Помочь подготовиться к работе в таких
компаниях
Слайд 4Технология разработки ПО
Содержание
Введение в программную инженерию; Процесс разработки ПО
Основы управления
требованиями
Основы планирования и оценки
Проектирование ПО
Управление качеством ПО
Тестирование ПО
Качество
кода
Автоматизация процесса разработки ПО
Разработка ПО в команде
Современные методологии разработки ПО
Слайд 5Технология разработки ПО
Формат курса
Лекции
Семинары
9 практических заданий
6 – в аудитории на
семинарах
3 – частично в аудитории на семинарах, частично дома в
качестве самостоятельной работы
Контрольный тест в середине семестра
Экзамен
Слайд 6Технология разработки ПО
Практические задания
Слайд 7Технология разработки ПО
Баллы
Посещение – 10
Задания 2 и 3 (требования и
план) – 5
Задания 4 и 6 (дизайн и тест-план) –
5
Задания 5 (кодирование) – 10
Задания 7,8,9 (UT, инспекции, отчёт) – 5
Контрольный тест – 5
Экзамен – 60
Слайд 8Технология разработки ПО
Литература
Хант Э., Томас Д., Программист-прагматик. Путь от подмастерья
к мастеру.
Макконнелл С., Совершенный код. Мастер-класс
Фаулер М., Рефакторинг: улучшение существующего
кода.
Буч Г., Рамбо Дж., Якобсон А., Язык UML. Руководство пользователя
Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж., Приемы объектно-ориентированного проектирования. Паттерны проектирования.
Вигерс К., Разработка требований к программному обеспечению
Бек К., Экстремальное программирование: разработка через тестирование
Ройс Уокер, Управление процессом создания программного обеспечения.
Слайд 9Введение в программную инженерию
Жизненный цикл и процесс разработки ПО
Слайд 10Технология разработки ПО
Программная инженерия
«Применение систематического, дисциплинированного, поддающегося количественному определению подхода
к разработке, эксплуатации и сопровождению программного обеспечения»
[IEEE 1990]
Слайд 11Технология разработки ПО
Программная инженерия –
Нечто большее, чем просто написание
программного кода (coding) и включает в себя аспекты качества, управления
и экономики, а также знание и применение на практике этих принципов и дисциплин
Слайд 12Технология разработки ПО
Области знаний SWEBOK, 2004
Software requirements – программные требования
Software
design – дизайн (архитектура)
Software construction – конструирование программного обеспечения
Software testing
- тестирование
Software maintenance – эксплуатация (поддержка) программного обеспечения
Software configuration management – конфигурационное управление
Software engineering management – управление в программной инженерии
Software engineering process – процессы программной инженерии
Software engineering tools and methods – инструменты и методы
Software quality – качество программного обеспечения
Слайд 13Технология разработки ПО
Размер проектов всё больше
0
1
10
100
1,000
10,000
100,000
1,000,000
10,000,000
1960
1965
1970
1975
1980
1985
1990
1995
2000
Размер (тыс. строк кода)
Закон Мура:
производительность
удваивается
каждые 18 мес
[данные SEI, 2000 г.]
Слайд 14Технология разработки ПО
Больше проект –
больше проблем
[данные SEI, 2000 г.]
Слайд 15Технология разработки ПО
Некоторые факты - 1
18% всех проектов по разработке
ПО никогда не завершаются
53% всех проектов по разработке ПО
завершаются с перерасходом бюджета в среднем на 56% и превышением сроков на 84%
только 29% проектов укладываются в срок и бюджет
[данные исследований Standish Group, 2004]
Слайд 16Технология разработки ПО
Некоторые факты - 2
Министерство по налогам и сборам
США провалило $8 млрд проект модернизации информационной системы, что стоило
$50 млрд несобранных налогов
Ракета Ariane 5 в 1996 взорвалась через 37 секунд после старта из-за бага в ПО
В аэропорту Хитроу в марте-апреле 2008 воцарился хаос из-за сбоя в работе компьютерных систем при открытии нового 5-го терминала
Слайд 17Технология разработки ПО
Сложность программных продуктов
Программные продукты относятся к самым сложным
системам, которые создаются человеком, и программное обеспечение по самой своей
природе обладает рядом существенных и неотъемлемых свойств (таких как сложность, незримость и изменяемость), которые затрудняют работу.
Ф. Брукс, 1995
Слайд 18Технология разработки ПО
Причины провалов проектов
Проектные планы нереалистичны
Низкое качество разработанного продукта
Плохо
разработанные требования
Слайд 19Технология разработки ПО
Пути к успеху
Google
самоуправляемые небольшие команды, лёгкие ориентированные
на людей Agile процессы.
NASA
высоко-формализованные процессы, постоянное совершенствование процессов.
Microsoft
MSF,
в некоторых подразделениях – SEI PSP.
Boeing, Northrop-Grumman, Lockheed-Martin
SEI PSP/TSP, «зрелые» процессы CMM 5 level.
Слайд 20Технология разработки ПО
Ключ к успеху
Дисциплинированное использование процессного подхода при разработке
ПО
Слайд 21Технология разработки ПО
Процесс разработки ПО –
Это набор правил и стандартов,
согласно которым разрабатывается программный продукт
Определяет то, как мы работаем
Слайд 22Технология разработки ПО
Процесс описывает:
Действия (активности) – какие шаги необходимы и
их последовательность
Люди – исполнители, кто выполняют эти действия
Артефакты – производимые
результаты действий
Другие ресурсы
Слайд 23Технология разработки ПО
Характеристики процесса
Повторяемость
Эффективность
Стабильность
Предсказуемость
Качество
Контролируемость
Гибкость
Усовершенствование
Слайд 24Технология разработки ПО
Пример блок-схемы процесса (CQG)
Слайд 25Технология разработки ПО
Жизненный цикл разработки ПО
Последовательность этапов, приводящих от идеи
создания продукта к его выпуску
Разработка ПО
Идея
Продукт
Слайд 26Технология разработки ПО
Водопадный жизненный цикл
[Уинстон Ройс,1970]
Разработка требований
Проектирование
Кодирование
Тестирование
продукт
идея
Слайд 27Технология разработки ПО
Итерационный жизненный цикл
Разработка требований
Проектирование
Кодирование
Тестирование
идея
продукт
Слайд 28Технология разработки ПО
Водопадный Итерационный
Классический водопад
Водопад с возвратами
V-образная модель
Спиральная модель
Модель
RAD
Инкрементная модель
Модель эволюционного прототипирования
Слайд 29Технология разработки ПО
Пример жизненного цикла (CQG)
Слайд 30Технология разработки ПО
Capability Maturity Model
Модель зрелости процесса разработки ПО в
компании
Разработана в Software Engineering Institute (Carnegie Mellon University) по заказу
Министерства обороны США
Используется для оценки качества процесса разработки ПО
Ориентирована на крупные компании и проекты
Слайд 31Технология разработки ПО
Уровни CMM
5 Оптимизирующий
4 Управляемый
3 Определённый
2 Повторяемый
Постоянное улучшение
процесса
Качество продукта и процесса
Целостность процесса
Управление проектами
Управление изменением технологий
Управление изменением процесса
Измерение
и анализ процесса
Управление качеством
Предотвращение дефектов
Управление требованиями
Планирование проекта
Отслеживание проекта
Обеспечение качества ПО
Управление конфигурацией
Уровень
Фокус
Ключевые области процесса
Внимание процессу организации
Определение процесса организации
Программа обучения
Интегрированное управление созданием ПО
Инженерия программных продуктов
Координация между группами
Обзоры и проверки
1 Начальный
Слайд 32Технология разработки ПО
Что следует запомнить
Разработка ПО – сложное дело с
высоким риском неудачи
При разработке ПО необходимо применять процессный подход
Процесс –
это «программа» для людей
Основные виды жизненных циклов ПО – водопадный и итерационный