Программная инженерия Андрей Дмитриев andrei-dmitriev@yandex.ru ©2009.

Презентация:



Advertisements
Похожие презентации
Программная инженерия Дмитриев Андрей Владиславович 2008.
Advertisements

Обзор методологий и паттернов разработки.. Процесс разработки ПО В разработке программного обеспечения важно наладить процесс Методология представляет.
Разработка программного обеспечения (Software Engineering) Часть 2. Создание ПО.
SOFTWARE DEVELOPMENT PODGOTOVIL TVOU ZHOPY K SDACHE.
Методология проектирования RAD МДК Раздел 1.
Жизненный цикл программного обеспечения Лекция 4.
Цикл жизни ПО Методологии разработки 8 октября 2008 г. 4 курс Технологии программирования.
Тестирование программных средств Сафронов Сергей, 2008 год.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
Этапы решения задач на компьютерах Постановка задачи Формальное построение модели задачи Формальное построение модели задачи Построение математической.
Разработка программного обеспечения (Software Engineering) Часть 1. Введение.
11. Процесс разработки программной системы Последовательный и итеративный процессы разработки Процесс разработки программной системы является бизнес.
МОДЕЛИ ЖИЗНЕННОГО ЦИКЛА ПРОГРАММНЫХ СРЕДСТВ Студент: Ермолович И.С. Группа: ИТ-33.
Положение об отделе В.Андреев, Д.Сатин. Штат отдела начальник отдела; бизнес-аналитик; проектировщик пользовательских интерфейсов; специалист по анализу.
Лекция 1 Учебные вопросы : Вопрос 1. История возникновения и понятие CASE- технологии. Вопрос 2. Особенности внедрения CASE- технологии. Вопрос 3. Основные.
Количественное Управление Надежность плана Выполнение процесса Завершенность поставок Сроки поставки Неисправленные дефекты ( на момент поставки Заказчику)
Жизненный цикл программного обеспечения Подготовил студент 1 курса Лось Павел.
2 Основным понятием программной инженерии является понятие жизненного цикла ПО. Жизненный цикл ПО (software lifecycle) – это период времени, который начинается.
Тел.: (+7 499) , интернет: © 2009 ООО«Баллистика» Технологический процесс создания сайта Путь успешного внедрения, минимизация.
(C) МЭИ (ТУ), ВМСС, Галь В.Ю., Окороков А.И., Управление проектами в сфере ИТ Лекция 3 «Жизненный цикл программного обеспечения»
Транксрипт:

Программная инженерия Андрей Дмитриев ©2009

Цикл разработки ПО

Как мы создаём программы?

План Номенклатура Стратегии разработки ПО Фазы проекта Требования (Requirements) Техническое задание Выводы Q&A

Определения Программное обеспечение – совокупность всей информации (данных и программ), которые обрабатываются компьютерными системами. Команда – совокупность людей, объединенных общими целями и подчиняющихся определенным правилам (политике). Проект – деятельность, выполняемая группой для достижения формализованных целей.

Разработка ПО Разработка ПО (software engineering, software development) - род деятельности и процесс, направленный на создание и поддержание работоспособности программного обеспечения, используя технологии и практики из информатики, управления проектами, математики, инженерии и других областей знания.

Процесс разработки ПО (software development process) - структура, согласно которой построена разработка ПО.

Одна компонента успешного проекта "Умение - это правильное выполнение работы. Эффективность - это выполнение правильной работы". Питер Друкер.

Составные процесса разработки ПО Процесс состоит из отдельных шагов. Последовательность шагов может варьироваться. Шаги могут повторяться.

Шаги процесса разработки ПО Бизнес-моделирование Анализ требований Разработка архитектуры Кодирование Тестирование Документирование Сопровождение Завершение проекта

Жизненный цикл разработки Project Life Cycle – последовательность фаз проекта, задаваемых, исходя из целей проекта.

Модели процессов разработки ПО Модель Института Управления Проектами «Водопадная» схема Итеративный процесс Спиральная модель Экстремальное программирование (Extreme Programming) Гибкая методология (Agile software development) OpenSource Rapid Application Development (RAD)

Модель Института Управления Проектами В рамках этой методологии жизненный цикл проекта имеет фазы: Инициация. Планирование. Выполнение. Контроль и мониторинг. Завершение.

«Водопадная» модель 1. Определение требований/исследование среды. 2. Проектирование. 3. Реализация/кодирование. 4. Интеграция. 5. Тестирование и отладка. 6. Инсталляция/развертывание. 7. Поддержка. Работа над проектом движется линейно через фазы:

«Водопадная» модель (cont.) Проект разделен на несколько последовательно проходящих стадий Акцент на планирование, расписания, контрольные точки, бюджет и реализацию системы в целом Все стадии проекта проходят под жестким контролем и полностью документируются Недостатки: Накопление ошибок на ранних этапах Возрастание риска провала проекта Увеличение стоимости проекта

Создание прототипа (prototyping) Не отдельная методология, а полезная практика Разрабатывается небольшой прототип системы, который можно показать заказчику/пользователям Позволяет уменьшить риски упустить что-то важное сделать что-то ненужное Прототипы обычно выкидываются. Но при желании их можно разрабатывать так, чтоб потом превратить в работающую систему

Итеративный подход (incremental) Процесс разработки разбивается на сегменты, представляющие собой мини-водопады Другой вариант: планирование и дизайн в начале, далее создание прототипа Акцент на гибкость и возможность в любой момент внести серьезные изменения в систему Выполнение работ параллельно с непрерывным анализом полученных результатов и корректировкой предыдущих этапов работы Проект при этом подходе в каждой фазе развития проходит повторяющийся цикл: Планирование Реализация Проверка Оценка

Преимущества итеративного подхода Снижение воздействия рисков. Организация эффективной обратной связи. Акцент усилий на наиболее приоритетные направления. Непрерывное тестирование. Раннее обнаружение конфликтов. Равномерная загрузка участников проекта. Использование накопленного опыта. Оценка текущего состояния проекта.

Спиральная модель (Spiral) Сочетает принципы водопадной модели и прототипирования Проект разбивается на циклы (итерации). Составляющие каждого цикла: Определение целей, альтернативных путей и ограничений итерации Оценка альтернатив. Определение рисков. Стадии разработки (дизайн, кодирование, интеграция, тестирование). Планирование следующей итерации.

Спиральная модель (Spiral)

Гибкая методология Разбиение на небольшие законченные этапы - итерации. Итерация представляет собой небольшой проект с соответствующей последовательностью шагов. Завершение итерации означает возобновление обсуждения основного проекта. Ориентирование на минимизацию рисков. Может применяться при полной или частичной переделке проекта. См. презентацию Agile.

Rapid Application Development (RAD) Акцент на быструю разработку качественного продукта с минимальными затратами. Вовлечение пользователей в процесс. Использование инструментов и технологий: CASE, GUI builders, DBMS, и т.п. Результат итерации – работающий продукт (не прототип на выброс). Во главе – требования бизнеса, а не конкретные технологии.

Упражнение – сравнение походов Подход ДостоинстваНедостатки Водопадная модель Создание прототипа Спиральная модель RAD

Требования к продукту Анализ требований это процесс, включающий в себя: сбор требований к системе систематизацию документирование анализ выявление противоречий выявление неполноты разрешения конфликтов

Общие требования (к программе) Следующие свойства должны быть присущи любой программе: Работоспособность. Простота использования. Надежность. Эффективность. Переносимость. Модульность. Возможность использовать систему вновь. Простота чтения кода. Простота поддержки.

Значение требований к ПО Полнота и качество анализа требований играют ключевую роль в успехе всего проекта. В англоязычной среде используется термин «Инженерия требований» (Requirements Engineering) Сложность формулировки требований

Виды требований к ПО Бизнес-требования (бюджет, состав и размер групп, сроки) Пользовательские требования Системные требования (ограничения)

Техническое задание Это исходный документ для проектирования и разработки информационных систем либо проведения научно-исследовательских работ. В точной формулировке заинтересованы две стороны: Разработчик Заказчик

Значение ТЗ ТЗ обеим сторонам позволяет: представить готовый продукт выполнить попунктную проверку готового продукта (приёмочное тестирование проведение испытаний) уменьшить число ошибок, связанных с изменением требований в результате их неполноты или ошибочности (на всех стадиях и этапах создания, за исключением испытаний)

Значение ТЗ (cont.) Заказчику позволяет: осознать, что именно ему нужно требовать от исполнителя соответствия продукта всем условиям, оговорённым в ТЗ

Значение ТЗ (cont.) Исполнителю позволяет: Понять суть задачи, показать заказчику «технический облик» будущего продукта Спланировать выполнение проекта и работать по намеченному плану Отказаться от выполнения работ, не указанных в ТЗ

Требования и техническое задание Требования – формализованные пожелания относительно будущего проекта Техническое задание – руководство к началу исполнения проекта

Спецификация Должна содержать описание будущей программы в формате «что», а не «как» Спецификация должна быть: Точной Полной Ясной Недвусмысленной На практике чаще используется словесная спецификация

Проектирование На данном этапе закладывается архитектура будущей программы: Парадигма Модули, их связь и иерархия Алгоритмы реализации Структуры данных И т.д.

Направление проектирования Иерархию будущих объектов можно представить как дерево подчиненных сущностей Вверху находятся более сложные, а внизу – более простые (базовые) объекты Выделяют два направления: Проектирование снизу вверх Проектирование сверху вниз

Направление проектирования(cont.) Сверху вниз: легче применять при моделировании структур данных и объектов Снизу вверх: Легче применять при организации стека программ Каждый новый уровень разрабатывается на основе предыдущего Сетевая модель OSI

Реализация Часто становится первым пунктом в плане разработки Метод реализации зависит от метода проектирования Рекомендуется придерживаться установленных стандартов оформления программного кода Снабжение кода комментариями улучшает его удобочитаемость

Тестирование Software quality engineering и Software quality assurance Тестирование можно выполнять в течение всего цикла разработки Что делает тестировщик при проектировании системы?

Виды тестирования Модульное Регрессивное Нагрузочное На совместимость Черного/белого ящика На выносливость Свободного поиска И др.

Оценка качества тестирования Не нашли ни одной ошибки ? Лавина ошибок ?

Оценка качества тестирования Не нашли ни одной ошибки Хороший продукт Плохо искали Лавина ошибок Неправильно тестировали Проблема в программистах/архитекторах Формальные метрики Широта покрытия кода Покрытие блоков Покрытие условий Объем кода тестовой базы

Поддержка Длительность этапа сопровождения прямо пропорциональна живучести продукта Срок поддержки может быть частью контракта Прибыль может быть получена при сопровождении проекта

Типы поддержки Исправление ошибок. Реализация запросов. Тестирование. Установка/поставка обновлений. Обучение пользователей. Консультирование. Техническая поддержка.

Сообщение об ошибке Каждая жалоба пользователя должна быть обработана: Принята на рассмотрение. Принята к исполнению. Отложена. Оценена. Исправлена. Доставлена пользователю. Закрыта.

Запрос пользователя Может иметь формальные части: Номер. Категория. Краткое описание. Приоритет и серьезность. Ответственный инженер. Заключение. Предлагаемое решение. Дата поставки решения. Способы обойти ошибку.

Выводы Выбор схемы развития имеет решающую роль для проекта. Требований к продукту как правило недостаточно для эффективной реализации. Разработчик работает с ТЗ. Тестирование продукта рекомендуется проводить постоянно. Критически важно для длительного проекта ведение базы данных ошибок.

Ссылки Фредерик Брукс «Мифический человеко- месяц» Эдвард Йордон «Путь камикадзе» С. Макконнелл «Совершенный код» Jolyon Hallows Information Systems Project Management Dr. Winston W. Rovce «MANAGING THE DEVELOPMENT OF LARGE SOFTWARE SYSTEMS»

Q&A

Спасибо! Андрей Дмитриев ©2009