Введение. Процесс разработки ПО(лекция 3).ppt
- Количество слайдов: 32
Технология разработки программного обеспечения Савкин Вадим Сергеевич vadim. savkin@gmail. com Технология разработки ПО
О себе Савкин Вадим Сергеевич Окончил МИЭМ в 1999 Стаж работы разработчиком ПО с 1997 Основная специализация – прикладное и системное программирование на C++ Последние 5 лет работаю в CQG Последние 3 года в CQG занимаюсь поддержкой процессов разработки и тренингами для программистов Технология разработки ПО 2
Цели дисциплины Познакомиться с основами промышленной разработки программного обеспечения Получить представление о работе компаний-разработчиков ПО Помочь подготовиться к работе в таких компаниях Технология разработки ПО 3
Содержание Введение в программную инженерию; Процесс разработки ПО Основы управления требованиями Основы планирования и оценки Проектирование ПО Управление качеством ПО Тестирование ПО Качество кода Автоматизация процесса разработки ПО Разработка ПО в команде Современные методологии разработки ПО Технология разработки ПО 4
Формат курса Лекции Семинары 9 практических заданий n n 6 – в аудитории на семинарах 3 – частично в аудитории на семинарах, частично дома в качестве самостоятельной работы Контрольный тест в середине семестра Экзамен Технология разработки ПО 5
Практические задания № задани я Название практического задания Срок выдачи задания Срок сдачи задания Форма отчетности 1 Упражнение на тему процессов 1 -я неделя 2 Разработка формальных требований (функциональных и нефункциональных) и диаграммы вариантов использования. 2 -я неделя Спецификация требований 3 Разработка плана выполнения задания 3 -я неделя План выполнения задания 4 Проектирование программы (сценарии вариантов использования, UML диаграмма классов, диаграмма взаимодействия) 4 -я неделя 5 -я неделя Технический проект (дизайн) 5 Разработка кода 5 -я неделя 8 -я неделя Листинг программы 6 Разработка тест-плана 7 -я неделя Тест-план 7 Разработка юнит-тестов. Тестирование (с подсчётом кол-ва дефектов) 7 -я неделя 8 -я неделя Листинг юнит-тестов 8 Проведение инспекций кода 8 -я неделя Отчёт о инспекции 9 Анализ метрик и написание отчёта 9 -я неделя 10 -я неделя Технология разработки ПО Отчёт о проделанной работе. Включает все вышеобозначенные документы плюс анализ метрик. 6
Баллы Посещение – 10 Задания 2 и 3 (требования и план) – 5 Задания 4 и 6 (дизайн и тест-план) – 5 Задания 5 (кодирование) – 10 Задания 7, 8, 9 (UT, инспекции, отчёт) – 5 Контрольный тест – 5 Экзамен – 60 Технология разработки ПО 7
Литература Хант Э. , Томас Д. , Программист-прагматик. Путь от подмастерья к мастеру. Макконнелл С. , Совершенный код. Мастер-класс Фаулер М. , Рефакторинг: улучшение существующего кода. Буч Г. , Рамбо Дж. , Якобсон А. , Язык UML. Руководство пользователя Гамма Э. , Хелм Р. , Джонсон Р. , Влиссидес Дж. , Приемы объектно-ориентированного проектирования. Паттерны проектирования. Вигерс К. , Разработка требований к программному обеспечению Бек К. , Экстремальное программирование: разработка через тестирование Ройс Уокер, Управление процессом создания программного обеспечения. Технология разработки ПО 8
Введение в программную инженерию Жизненный цикл и процесс разработки ПО Технология разработки ПО
Программная инженерия «Применение систематического, дисциплинированного, поддающегося количественному определению подхода к разработке, эксплуатации и сопровождению программного обеспечения» [IEEE 1990] Технология разработки ПО 10
Программная инженерия – Нечто большее, чем просто написание программного кода (coding) и включает в себя аспекты качества, управления и экономики, а также знание и применение на практике этих принципов и дисциплин Технология разработки ПО 11
Области знаний 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 – качество программного обеспечения Технология разработки ПО 12
Размер (тыс. строк кода) Размер проектов всё больше 10, 000 1, 000 100, 000 1, 000 10 1 Закон Мура: производительность 0 удваивается 60 965 970 975 980 985 990 995 000 каждые 18 мес 1 1 1 2 19 1 [данные SEI, 2000 г. ] Технология разработки ПО 13
Больше проект – больше проблем Размер Разработчики проекта Менее $750 K 6 От $750 K до 12 $1. 5 M От $1. 5 M до 25 $3 M От $3 M до 40 $6 M От $6 M до +250 $10 M Более $10 M +500 Время (месяцы) 6 % успеха 55% 9 33% 12 25% 18 15% +24 8% +36 0% [данные SEI, 2000 г. ] Технология разработки ПО 14
Некоторые факты - 1 18% всех проектов по разработке ПО никогда не завершаются 53% всех проектов по разработке ПО завершаются с перерасходом бюджета в среднем на 56% и превышением сроков на 84% только 29% проектов укладываются в срок и бюджет [данные исследований Standish Group, 2004] Технология разработки ПО 15
Некоторые факты - 2 Министерство по налогам и сборам США провалило $8 млрд проект модернизации информационной системы, что стоило $50 млрд несобранных налогов Ракета Ariane 5 в 1996 взорвалась через 37 секунд после старта из-за бага в ПО В аэропорту Хитроу в марте-апреле 2008 воцарился хаос из-за сбоя в работе компьютерных систем при открытии нового 5 го терминала Технология разработки ПО 16
Сложность программных продуктов Программные продукты относятся к самым сложным системам, которые создаются человеком, и программное обеспечение по самой своей природе обладает рядом существенных и неотъемлемых свойств (таких как сложность, незримость и изменяемость), которые затрудняют работу. Ф. Брукс, 1995 Технология разработки ПО 17
Причины провалов проектов Проектные планы нереалистичны Низкое качество разработанного продукта Плохо разработанные требования Технология разработки ПО 18
Пути к успеху Google самоуправляемые небольшие команды, лёгкие ориентированные на людей Agile процессы. NASA высоко-формализованные процессы, постоянное совершенствование процессов. Microsoft MSF, в некоторых подразделениях – SEI PSP. Boeing, Northrop-Grumman, Lockheed-Martin SEI PSP/TSP, «зрелые» процессы CMM 5 level. Технология разработки ПО 19
Ключ к успеху Дисциплинированное использование процессного подхода при разработке ПО Технология разработки ПО 20
Процесс разработки ПО – Это набор правил и стандартов, согласно которым разрабатывается программный продукт Определяет то, как мы работаем Технология разработки ПО 21
Процесс описывает: Действия (активности) – какие шаги необходимы и их последовательность Люди – исполнители, кто выполняют эти действия Артефакты – производимые результаты действий Другие ресурсы Технология разработки ПО 22
Характеристики процесса Повторяемость Эффективность Стабильность Предсказуемость Качество Контролируемость Гибкость Усовершенствование Технология разработки ПО 23
Пример блок-схемы процесса (CQG) Технология разработки ПО 24
Жизненный цикл разработки ПО Последовательность этапов, приводящих от идеи создания продукта к его выпуску Идея Разработка ПО Технология разработки ПО Продукт 25
Водопадный жизненный цикл [Уинстон Ройс, 1970] идея Разработка требований Проектирование Кодирование Тестирование продукт Технология разработки ПО 26
Итерационный жизненный цикл Проектирование идея Разработка требований Кодирование Тестирование продукт Технология разработки ПО 27
Водопадный Классический водопад Водопад с возвратами V-образная модель Итерационный Спиральная модель Модель RAD Инкрементная модель Модель эволюционного прототипирования Технология разработки ПО 28
Пример жизненного цикла (CQG) Технология разработки ПО 29
Capability Maturity Model Модель зрелости процесса разработки ПО в компании Разработана в Software Engineering Institute (Carnegie Mellon University) по заказу Министерства обороны США Используется для оценки качества процесса разработки ПО Ориентирована на крупные компании и проекты Технология разработки ПО 30
Уровни CMM Уровень Фокус Ключевые области процесса 5 Оптимизирующий Постоянное 4 Управляемый Качество продукта и процесса 3 Определённый Целостность процесса 2 Повторяемый Управление проектами 1 Начальный улучшение процесса Управление изменением технологий Управление изменением процесса Измерение и анализ процесса Управление качеством Предотвращение дефектов Внимание процессу организации Определение процесса организации Программа обучения Интегрированное управление созданием ПО Инженерия программных продуктов Координация между группами Обзоры и проверки Управление требованиями Планирование проекта Отслеживание проекта Обеспечение качества ПО Управление конфигурацией Технология разработки ПО 31
Что следует запомнить Разработка ПО – сложное дело с высоким риском неудачи При разработке ПО необходимо применять процессный подход Процесс – это «программа» для людей Основные виды жизненных циклов ПО – водопадный и итерационный Технология разработки ПО 32
Введение. Процесс разработки ПО(лекция 3).ppt