Скачать презентацию Программная инженерия Макунин Алексей Анатольевич доц каф АОИ Скачать презентацию Программная инженерия Макунин Алексей Анатольевич доц каф АОИ

ПИ_01.ppt

  • Количество слайдов: 34

Программная инженерия Макунин Алексей Анатольевич доц. каф АОИ ФСУ ТУСУР Программная инженерия Макунин Алексей Анатольевич доц. каф АОИ ФСУ ТУСУР

Цели дисциплины Познакомиться с основами промышленной разработки программного обеспечения Получить представление о работе компаний-разработчиков Цели дисциплины Познакомиться с основами промышленной разработки программного обеспечения Получить представление о работе компаний-разработчиков ПО Помочь подготовиться к работе в таких компаниях 2

Место дисциплины теоретическая информатика SE CS IS CE аппаратное обеспечение индустриальная практика программное инженерия Место дисциплины теоретическая информатика SE CS IS CE аппаратное обеспечение индустриальная практика программное инженерия 3

Программная инженерия Computer Science (Информатика / Технологии) Управление производством (management) 4 Программная инженерия Computer Science (Информатика / Технологии) Управление производством (management) 4

Бизнес Computer Science и прочие науки …. . Маркетинг Управление персоналом Управление производством Программная Бизнес Computer Science и прочие науки …. . Маркетинг Управление персоналом Управление производством Программная инженерия – управление программистами 5

Computer Science (Информатика / Технологии) …. . Компиляторы Управление производством (management) Информационные системы Программная Computer Science (Информатика / Технологии) …. . Компиляторы Управление производством (management) Информационные системы Программная инженерия 6

Примерный план Введение в программную инженерию; Процесс разработки ПО Основы управления требованиями Основы планирования Примерный план Введение в программную инженерию; Процесс разработки ПО Основы управления требованиями Основы планирования и оценки Проектирование ПО Управление качеством ПО Тестирование ПО Качество кода Автоматизация процесса разработки ПО Разработка ПО в команде Современные методологии разработки ПО 7

Литература Хант Э. , Томас Д. , Программист-прагматик. Путь от подмастерья к мастеру. Макконнелл Литература Хант Э. , Томас Д. , Программист-прагматик. Путь от подмастерья к мастеру. Макконнелл С. , Совершенный код. Мастер-класс Фаулер М. , Рефакторинг: улучшение существующего кода. Буч Г. , Рамбо Дж. , Якобсон А. , Язык UML. Руководство пользователя Гамма Э. , Хелм Р. , Джонсон Р. , Влиссидес Дж. , Приемы объектно-ориентированного проектирования. Паттерны проектирования. Вигерс К. , Разработка требований к программному обеспечению Бек К. , Экстремальное программирование: разработка через тестирование Ройс Уокер, Управление процессом создания программного обеспечения. 8

Введение в программную инженерию Жизненный цикл и процесс разработки ПО Введение в программную инженерию Жизненный цикл и процесс разработки ПО

Программная инженерия «Применение систематического, дисциплинированного, поддающегося количественному определению подхода к разработке, эксплуатации и сопровождению Программная инженерия «Применение систематического, дисциплинированного, поддающегося количественному определению подхода к разработке, эксплуатации и сопровождению программного обеспечения» [IEEE 1990] 10

Программная инженерия – Нечто большее, чем просто написание программного кода (coding) и включает в Программная инженерия – Нечто большее, чем просто написание программного кода (coding) и включает в себя аспекты качества, управления и экономики, а также знание и применение на практике этих принципов и дисциплин 11

(Википедия: ) Программная инженерия — это интегрирование принципов математики, информатики и компьютерных наук с (Википедия: ) Программная инженерия — это интегрирование принципов математики, информатики и компьютерных наук с инженерными подходами, разработанными для производства осязаемых материальных артефактов. (Curricula Recommendations Software Engineering SE 2004: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering). 12

Миры программной инженерии Научная дисциплина n Общие закономерности, методы изучения, фундаментальные знания Инженерная дисциплина Миры программной инженерии Научная дисциплина n Общие закономерности, методы изучения, фундаментальные знания Инженерная дисциплина n Технологии, методы адаптации, внедрения общих подходов в практику, вопросы организации и управления Отрасль промышленности n Организация бизнеса (анализ рынка) Область профессиональной деятельности n Профессиональные союзы и общества, сертификация инженеров 13

Уточнение рамок рассмотрения Технические аспекты программной инженерии – методы и инструменты разработки и анализа Уточнение рамок рассмотрения Технические аспекты программной инженерии – методы и инструменты разработки и анализа программных систем Общецелевые и специализированные (domain specific) технологии программирования. Вне зоны рассмотрения: n компиляторы, интегрированные среды разработки, СУБД, операционные системы, ПО промежуточного слоя, машинная графика, разработка игр, системы распознавания изображений, вычислительная математика и проч. 14

Современные тенденции Унифицировать и механизировать процессы Отказ от однонаправленных моделей жизненного цикла ( «водопадная» Современные тенденции Унифицировать и механизировать процессы Отказ от однонаправленных моделей жизненного цикла ( «водопадная» модель) Средства интеграции разнородных инструментов поддержки ЖЦ «Три источника» разработки ПО n n n Требования Дизайн Тесты «Три составные части» ? 15

Области знаний SWEBOK, 2004 Software requirements – программные требования Software design – дизайн (архитектура) Области знаний 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 – качество программного обеспечения 16

Размер (тыс. строк кода) Размер проектов всё больше 10, 000 1, 000 100, 000 Размер (тыс. строк кода) Размер проектов всё больше 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 г. ] 17

Больше проект – больше проблем Размер Разработчики проекта Менее $750 K 6 От $750 Больше проект – больше проблем Размер Разработчики проекта Менее $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 г. ] 18

Некоторые факты - 1 18% всех проектов по разработке ПО никогда не завершаются 53% Некоторые факты - 1 18% всех проектов по разработке ПО никогда не завершаются 53% всех проектов по разработке ПО завершаются с перерасходом бюджета в среднем на 56% и превышением сроков на 84% только 29% проектов укладываются в срок и бюджет [данные исследований Standish Group, 2004] 19

Некоторые факты - 2 Министерство по налогам и сборам США провалило $8 млрд проект Некоторые факты - 2 Министерство по налогам и сборам США провалило $8 млрд проект модернизации информационной системы, что стоило $50 млрд несобранных налогов Ракета Ariane 5 в 1996 взорвалась через 37 секунд после старта из-за бага в ПО В аэропорту Хитроу в марте-апреле 2008 воцарился хаос из-за сбоя в работе компьютерных систем при открытии нового 5 го терминала 20

Сложность программных продуктов Программные продукты относятся к самым сложным системам, которые создаются человеком, и Сложность программных продуктов Программные продукты относятся к самым сложным системам, которые создаются человеком, и программное обеспечение по самой своей природе обладает рядом существенных и неотъемлемых свойств (таких как сложность, незримость и изменяемость), которые затрудняют работу. Ф. Брукс, 1995 21

Причины провалов проектов Проектные планы нереалистичны Низкое качество разработанного продукта Плохо разработанные требования 22 Причины провалов проектов Проектные планы нереалистичны Низкое качество разработанного продукта Плохо разработанные требования 22

Пути к успеху Google самоуправляемые небольшие команды, лёгкие ориентированные на людей Agile процессы. NASA Пути к успеху Google самоуправляемые небольшие команды, лёгкие ориентированные на людей Agile процессы. NASA высоко-формализованные процессы, постоянное совершенствование процессов. Microsoft Solution Framework, в некоторых подразделениях – Software Enguneering Insttitute Perosnal Software Process. Boeing, Northrop-Grumman, Lockheed-Martin SEI PSP/TSP 23

Ключ к успеху Дисциплинированное использование процессного подхода при разработке ПО 24 Ключ к успеху Дисциплинированное использование процессного подхода при разработке ПО 24

Процесс разработки ПО – Это набор правил и стандартов, согласно которым разрабатывается программный продукт Процесс разработки ПО – Это набор правил и стандартов, согласно которым разрабатывается программный продукт Определяет то, как мы работаем 25

Процесс описывает: Действия (активности) – какие шаги необходимы и их последовательность Люди – исполнители, Процесс описывает: Действия (активности) – какие шаги необходимы и их последовательность Люди – исполнители, кто выполняют эти действия Артефакты – производимые результаты действий Другие ресурсы 26

Характеристики процесса Повторяемость Эффективность Стабильность Предсказуемость Качество Контролируемость Гибкость Усовершенствование 27 Характеристики процесса Повторяемость Эффективность Стабильность Предсказуемость Качество Контролируемость Гибкость Усовершенствование 27

Жизненный цикл разработки ПО Последовательность этапов, приводящих от идеи создания продукта к его выпуску Жизненный цикл разработки ПО Последовательность этапов, приводящих от идеи создания продукта к его выпуску Идея Разработка ПО Продукт 28

Водопадный жизненный цикл [Уинстон Ройс, 1970] идея Разработка требований Проектирование Кодирование Тестирование продукт 29 Водопадный жизненный цикл [Уинстон Ройс, 1970] идея Разработка требований Проектирование Кодирование Тестирование продукт 29

Итерационный жизненный цикл Проектирование идея Разработка требований Кодирование Тестирование продукт 30 Итерационный жизненный цикл Проектирование идея Разработка требований Кодирование Тестирование продукт 30

Мидификации: Водопадный Итерационный Классический водопад Водопад с возвратами V-образная модель Спиральная модель Модель RAD Мидификации: Водопадный Итерационный Классический водопад Водопад с возвратами V-образная модель Спиральная модель Модель RAD Инкрементная модель Модель эволюционного прототипирования 31

Capability Maturity Model Модель зрелости процесса разработки ПО в компании Разработана в Software Engineering Capability Maturity Model Модель зрелости процесса разработки ПО в компании Разработана в Software Engineering Institute (Carnegie Mellon University) по заказу Министерства обороны США Используется для оценки качества процесса разработки ПО Ориентирована на крупные компании и проекты 32

Уровни CMM Уровень Фокус 5 Оптимизирующий Постоянное улучшение процесса Ключевые области процесса Управление изменением Уровни CMM Уровень Фокус 5 Оптимизирующий Постоянное улучшение процесса Ключевые области процесса Управление изменением технологий Управление изменением процесса Измерение и анализ процесса Управление качеством Предотвращение дефектов 4 Управляемый Качество продукта и процесса 3 Определённый Целостность процесса Внимание процессу организации Определение процесса организации Программа обучения Интегрированное управление созданием ПО Инженерия программных продуктов Координация между группами Обзоры и проверки 2 Повторяемый Управление проектами Управление требованиями Планирование проекта Отслеживание проекта Обеспечение качества ПО Управление конфигурацией 1 Начальный 33

Что следует запомнить Разработка ПО – сложное дело с высоким риском неудачи При разработке Что следует запомнить Разработка ПО – сложное дело с высоким риском неудачи При разработке ПО необходимо применять процессный подход Процесс – это «программа» для людей Основные виды жизненных циклов ПО – водопадный и итерационный 34