ПИ_01.ppt
- Количество слайдов: 34
Программная инженерия Макунин Алексей Анатольевич доц. каф АОИ ФСУ ТУСУР
Цели дисциплины Познакомиться с основами промышленной разработки программного обеспечения Получить представление о работе компаний-разработчиков ПО Помочь подготовиться к работе в таких компаниях 2
Место дисциплины теоретическая информатика SE CS IS CE аппаратное обеспечение индустриальная практика программное инженерия 3
Программная инженерия Computer Science (Информатика / Технологии) Управление производством (management) 4
Бизнес Computer Science и прочие науки …. . Маркетинг Управление персоналом Управление производством Программная инженерия – управление программистами 5
Computer Science (Информатика / Технологии) …. . Компиляторы Управление производством (management) Информационные системы Программная инженерия 6
Примерный план Введение в программную инженерию; Процесс разработки ПО Основы управления требованиями Основы планирования и оценки Проектирование ПО Управление качеством ПО Тестирование ПО Качество кода Автоматизация процесса разработки ПО Разработка ПО в команде Современные методологии разработки ПО 7
Литература Хант Э. , Томас Д. , Программист-прагматик. Путь от подмастерья к мастеру. Макконнелл С. , Совершенный код. Мастер-класс Фаулер М. , Рефакторинг: улучшение существующего кода. Буч Г. , Рамбо Дж. , Якобсон А. , Язык UML. Руководство пользователя Гамма Э. , Хелм Р. , Джонсон Р. , Влиссидес Дж. , Приемы объектно-ориентированного проектирования. Паттерны проектирования. Вигерс К. , Разработка требований к программному обеспечению Бек К. , Экстремальное программирование: разработка через тестирование Ройс Уокер, Управление процессом создания программного обеспечения. 8
Введение в программную инженерию Жизненный цикл и процесс разработки ПО
Программная инженерия «Применение систематического, дисциплинированного, поддающегося количественному определению подхода к разработке, эксплуатации и сопровождению программного обеспечения» [IEEE 1990] 10
Программная инженерия – Нечто большее, чем просто написание программного кода (coding) и включает в себя аспекты качества, управления и экономики, а также знание и применение на практике этих принципов и дисциплин 11
(Википедия: ) Программная инженерия — это интегрирование принципов математики, информатики и компьютерных наук с инженерными подходами, разработанными для производства осязаемых материальных артефактов. (Curricula Recommendations Software Engineering SE 2004: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering). 12
Миры программной инженерии Научная дисциплина n Общие закономерности, методы изучения, фундаментальные знания Инженерная дисциплина n Технологии, методы адаптации, внедрения общих подходов в практику, вопросы организации и управления Отрасль промышленности n Организация бизнеса (анализ рынка) Область профессиональной деятельности n Профессиональные союзы и общества, сертификация инженеров 13
Уточнение рамок рассмотрения Технические аспекты программной инженерии – методы и инструменты разработки и анализа программных систем Общецелевые и специализированные (domain specific) технологии программирования. Вне зоны рассмотрения: n компиляторы, интегрированные среды разработки, СУБД, операционные системы, ПО промежуточного слоя, машинная графика, разработка игр, системы распознавания изображений, вычислительная математика и проч. 14
Современные тенденции Унифицировать и механизировать процессы Отказ от однонаправленных моделей жизненного цикла ( «водопадная» модель) Средства интеграции разнородных инструментов поддержки ЖЦ «Три источника» разработки ПО n n n Требования Дизайн Тесты «Три составные части» ? 15
Области знаний 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 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 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% всех проектов по разработке ПО завершаются с перерасходом бюджета в среднем на 56% и превышением сроков на 84% только 29% проектов укладываются в срок и бюджет [данные исследований Standish Group, 2004] 19
Некоторые факты - 2 Министерство по налогам и сборам США провалило $8 млрд проект модернизации информационной системы, что стоило $50 млрд несобранных налогов Ракета Ariane 5 в 1996 взорвалась через 37 секунд после старта из-за бага в ПО В аэропорту Хитроу в марте-апреле 2008 воцарился хаос из-за сбоя в работе компьютерных систем при открытии нового 5 го терминала 20
Сложность программных продуктов Программные продукты относятся к самым сложным системам, которые создаются человеком, и программное обеспечение по самой своей природе обладает рядом существенных и неотъемлемых свойств (таких как сложность, незримость и изменяемость), которые затрудняют работу. Ф. Брукс, 1995 21
Причины провалов проектов Проектные планы нереалистичны Низкое качество разработанного продукта Плохо разработанные требования 22
Пути к успеху Google самоуправляемые небольшие команды, лёгкие ориентированные на людей Agile процессы. NASA высоко-формализованные процессы, постоянное совершенствование процессов. Microsoft Solution Framework, в некоторых подразделениях – Software Enguneering Insttitute Perosnal Software Process. Boeing, Northrop-Grumman, Lockheed-Martin SEI PSP/TSP 23
Ключ к успеху Дисциплинированное использование процессного подхода при разработке ПО 24
Процесс разработки ПО – Это набор правил и стандартов, согласно которым разрабатывается программный продукт Определяет то, как мы работаем 25
Процесс описывает: Действия (активности) – какие шаги необходимы и их последовательность Люди – исполнители, кто выполняют эти действия Артефакты – производимые результаты действий Другие ресурсы 26
Характеристики процесса Повторяемость Эффективность Стабильность Предсказуемость Качество Контролируемость Гибкость Усовершенствование 27
Жизненный цикл разработки ПО Последовательность этапов, приводящих от идеи создания продукта к его выпуску Идея Разработка ПО Продукт 28
Водопадный жизненный цикл [Уинстон Ройс, 1970] идея Разработка требований Проектирование Кодирование Тестирование продукт 29
Итерационный жизненный цикл Проектирование идея Разработка требований Кодирование Тестирование продукт 30
Мидификации: Водопадный Итерационный Классический водопад Водопад с возвратами V-образная модель Спиральная модель Модель RAD Инкрементная модель Модель эволюционного прототипирования 31
Capability Maturity Model Модель зрелости процесса разработки ПО в компании Разработана в Software Engineering Institute (Carnegie Mellon University) по заказу Министерства обороны США Используется для оценки качества процесса разработки ПО Ориентирована на крупные компании и проекты 32
Уровни CMM Уровень Фокус 5 Оптимизирующий Постоянное улучшение процесса Ключевые области процесса Управление изменением технологий Управление изменением процесса Измерение и анализ процесса Управление качеством Предотвращение дефектов 4 Управляемый Качество продукта и процесса 3 Определённый Целостность процесса Внимание процессу организации Определение процесса организации Программа обучения Интегрированное управление созданием ПО Инженерия программных продуктов Координация между группами Обзоры и проверки 2 Повторяемый Управление проектами Управление требованиями Планирование проекта Отслеживание проекта Обеспечение качества ПО Управление конфигурацией 1 Начальный 33
Что следует запомнить Разработка ПО – сложное дело с высоким риском неудачи При разработке ПО необходимо применять процессный подход Процесс – это «программа» для людей Основные виды жизненных циклов ПО – водопадный и итерационный 34


