Методические указания по дисциплине Программная инженерия
.pdf
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования
Московский технический университет связи и информатики
Кафедра Информационные технологии в экономике и управлении
Фролова Е.А.
Методические указания по дисциплине
ПРОГРАММНАЯ ИНЖЕНЕРИЯ
Москва 2013
План УМД на 2013/2014 уч.г.
Методические указания по дисциплине
ПРОГРАММНАЯ ИНЖЕНЕРИЯ
Составитель Е.А.Фролова, доцент
Издание утверждено советом ФЭУ. Протокол № 8 от 16.05.2013г.
Рецензент А.Г.Ерохин, к.т.н., доцент
Программная инженерия
Программная инженерия – это интегрирование принципов математики, информатики и компьютерных наук с инженерными подходами, разработанными для производства. ПИ определяется как системный подход к анализу, проектированию, оценке, реализации, тестированию, обслуживанию и модернизации программного обеспечения, т.е. применение инженерии к разработке ПО.
Математическое обеспечение ЭВМ и его структура
Математическое обеспечение – совокупность математических методов, алгоритмов, языков программирования и программного обеспечения, предназначенных для подготовки задач к решению на вычислительной технике.
Математическое обеспечение:
1)Общее.
2)Специальное.
Общее математическое обеспечение используется для подготовки к решению задачи. Специальное математическое обеспечение обеспечивает решение конкретной задачи.
Основной частью математического обеспечения является программное обеспечение.
Программное обеспечение – совокупность программ и документации на них. Независимо от конфигурации машины программное обеспечение делится на три класса:
1.Системное программное обеспечение состоит из:
1.1.Операционной системы.
1.2.Обслуживающих программ.
1.3.Тестов контроля устройств в ЭВМ.
2.Система программирования (алгоритмическими и машиноориентированными языками программирования).
3.Пакеты прикладных программ делятся на:
3.1.Методоориентированные пакеты.
3.2.Проблемно-ориентированные пакеты.
3
Методоориентированные пакеты несут в себе метод (математический) для решения поставленной задачи (пакеты линейного программирования, симплексметод и т.д.).
Проблемно-ориентированные пакеты созданы для решения задач, различных по постановке и методам (NC, текстовые редакторы (упрощают работу по подготовке документов), пакеты для работы с БД, электронные таблицы, бизнес-пакеты, пакеты экспертных систем, АСУ для предприятий).
Особенности организации пакетов
Пакет должен обладать набором следующих возможностей.
1.Возможность настройки пакета на работу определенного пользователя.
2.Учитывать методы обработки данных (как данные представлять в компьютере).
3.Формы представления данных.
4.Учитывать полноту диагностики (сообщения об ошибке).
5.Снижение образовательного уровня пользователя.
Классификация пакетов прикладных программ
1.По функциям, реализованным самим пакетом:
a.Пакеты, обеспечивающие решение задач пользователя.
Программы для запуска Windows, NC, Word, Access, … .
b.Пакеты, обеспечивающие заданный режим обработки задания.
2.По типу операционной системы, под управлением которой работают:
Под DOS, Windows, OS/2, … .
3.По способу управления пакетом:
a.Пакеты простой структуры.
b.Пакеты сложной структуры.
Пакеты можно создавать :
Языком самого пакета.
Языком обработки заданий в MS DOS’e.
Пакеты сложной структуры имеют возможность фиксированной и произвольной последовательности выбора пунктов меню. Они создаются, как и пакеты простой структуры, двумя способами.
4
Этапы жизненного цикла программного обеспечения
I.Анализ требований, предъявляемых к программному продукту:
1.Целесообразность решения задачи на ЭВМ.
2.Уточнение ресурсов ЭВМ.
3.Формирование требований к задаче.
4.Формулирование ограничений на программное обеспечение.
5.Маркетинговые исследования.
6.Определение количественного и качественного состава разработчиков.
7.Определение формы взаимодействия разработчиков.
8.Уточнение сроков разработки.
9.Переход со старого программного продукта на новый.
II.Определение спецификации:
1.Определяется структура входных и выходных данных.
2.Определяется доступ к данным.
3.Составляется перечень функций, которые должны выполняться программным продуктом.
4.Разработка тестов контроля.
Результатом работы этого этапа является документ, который называется спецификацией. В документ тесты не входят.
III.Проектирование:
1.Разработка алгоритмов программного обеспечения.
2.ПО разбивается на модули или функции.
3.Определяются требования и ограничения на разработку каждого модуля (функции).
4.Определяются связи между модулями. Строится схема иерархии.
5.Закрепляется за исполнителем.
6.Выбирается язык программирования и другие программные инструментальные средства.
5
IV. Программирование или кодирование:
Непосредственное программирование модулей и функций с использованием языков и методов структурного и объектное– ориентированного программирования.
V.Тестирование:
3 уровня тестирования:
1.Автономное - тестирование исполнителем своих модулей.
2.Комплексное - тестирование нескольких модулей вместе.
3.Системное - тестирование вcего программного продукта в целом. Используются тесты второго этапа жизненного цикла.
VI. Внедрение, эксплуатация и сопровождение:
1.Программный продукт тестируется заказчиком на реальных данных (опытная эксплуатация, бета-версия). Если есть ошибки, то о них сообщается разработчику и идет доработка программного продукта.
2.Разработка сопроводительной документации (описание программы, инструкции программисту, инструкции пользователю (оператору)).
Типы жизненного цикла
1.Каскадная модель . Принцип работы – переход на следующий этап жизненного цикла после полного окончания работы по предыдущему этапу.
Преимущества:
на каждом этапе формируется законченный набор проектной документации, отвечающий критериям полноты и согласованности;
выполняемые в логической последовательности этапы работ позволяют планировать сроки завершения всех работ и соответствующие затраты.
2.Поэтапная модель с промежуточным контролем (80-85гг.): разрабатывается программное обеспечение с циклами обратной связи (возврат к любому этапу жизненного цикла).
6
Преимущества:
Межэтапная корректировка.
Меньшая трудоемкость в разработке на каждом этапе.
Недостатки:
Большие сроки разработки программных продуктов.
Каждый этап жизненного цикла растягивался на весь период разработки продукта.
3.Спиральная модель (начало 90-х) делает упор на начальные этапы жизненного цикла. Каждый виток спирали соответствует каскадной модели. Таким образом, на одной спирали создается фрагмент (версия) программного продукта (Microsoft Office). На каждой спирали уточняются версии, определяется качество программного продукта, проводятся исследования и планируется работа следующего витка спирали.
Преимущества:
Накопление и повторное использование программных средств.
Ориентация на развитие и модернизацию программного продукта.
Анализ риска и издержек в процессе проектирования.
Позволяет уточнить требования, цели и характеристики проекта, определить качество разработки, спланировать работы следующего витка спирали.
Недостатки:
Концентрация сложности разработки на начальном этапе жизненного цикла и относительно легкие последующие этапы.
Нерешенные вопросы и ошибки на ранних этапах порождают трудности на последующих этапах или приводят к появлению новых спиралей.
Определение момента перехода на следующий этап. Для решения вводятся временные ограничения на каждый из этапов жизненного цикла, и переход осуществляется в соответствии с планом, даже если не вся запланированная работа закончена. Планирование производится на основе статистических данных, полученных в предыдущих проектах, и личного опыта разработчиков.
7
Критерии тестирования
Тесты для системного тестирования создаются обычно заказчиками программного продукта при участии разработчиков. Это дает возможность создать наиболее полный и правильный набор тестов.
Цель тестирования – выявление максимально возможных ошибок.
Существует 3 критерия тестирования:
1.Каждый оператор должен быть исполнен хотя бы один раз и должен дать положительный результат.
2.Каждая ветвь программы должна быть опробована и должна дать положительный результат.
3.Каждый путь в программе должен быть опробован хотя бы 1 раз и должен дать положительный результат.
Эти критерии учитываются при написании тестов и должны быть отслежены по функциям программного продукта (2 этап жизненного цикла).
Показатели качества пакетов прикладных программ
Качество программного продукта — «степень соответствия присущих характеристик или требований».
2 группы:
1.Показатели, отражающие функциональные возможности пакета (ориентированы на пользователей).
2.Показатели, характеризующие структурные свойства пакета (ориентированы на разработчиков).
Кпервой группе относят:
Точность результатов.
Время работы программы.
Дружественный интерфейс.
o Возможность обработки аварийных ситуаций (неправильный ввод данных), контроль ввода данных и пример правильного ввода данных).
oВсе аварийные ситуации должны быть описаны в документации.
Гарантии разработчика (будут выполнены все функции, которые описаны в спецификации).
Должна учитываться квалификация пользователя (удобство пользования диалоговым режимом).
8
Ко второй группе относят:
Стандарт на разработку с использованием языковых конструкций (структурированное программирование, объектно – ориентированное программирование, правильное использование типов данных, правильное использование констант и разрядной сетки машины, правильное использование оперативной памяти, правильно использование операторов ввода-вывода, правильное использование внешних программ и их компоновка, правильная обработка аварийных ситуаций).
Стандарт на документацию (документация включает все разделы программного обеспечения). В случае модернизации ПО должна быть скорректирована документация. Документация упрощает тестирование, уменьшает количество ошибок, упрощает модификацию программного продукта и самой документации.
Методики оценки затрат на разработку программного продукта
Два вида методик:
1.Инженерно-технические методики.
2.Математические методики.
Инженерно-технические методики
1.Метод экспертных оценок – оценка стоимости разработки экспертом из личного опыта (оценивает сложность разработки, учитывает субъективные и объективные факторы разработки, задает приблизительную оценочную стоимость, которая в процессе разработки может варьироваться).
2.Метод алгоритмического анализа – используется алгоритм, по которому производится расчет стоимости. Алгоритм составляется по спецификации на ПО. Если спецификация четкая и правильная, метод дает хорошие оценочные результаты.
3.Пошаговый метод – полуалгоритмический метод, делается оценка стоимости
по уровням разработки. Оценка по уровням идет с помощью метода ЭО (1 уровень – главное меню, 2 – подменю, …). Складывая стоимость, получаем стоимостную оценку (хорошие результаты).
9
4.Закон Паркинсона – временная характеристика (договариваются о сроках на разработку, а затем рассчитывают стоимость всей разработки (субъективные и объективные факторы)). Метод часто используется, но из-за ограниченного времени качество программного продукта низкое.
5.Затраты на завершение разработки – по спецификации (алгоритмический метод) заключается договор: со стороны исполнителя существует недоработка в спецификации, заказчик и исполнитель договариваются о доработке программного продукта.
6.Психологический метод – объявляется конкурс на исполнителя. Заказчик формирует задачу и ждет предложения от фирм.
Математические методы
Математические методы оценивают:
общую стоимость разработки.
срок завершения разработки.
Используются математические методы из теории надежности. Экспериментально установлено, что зависимость суммарных затрат на разработку больших программных продуктов от времени отображается соотношением:
,
где E(t) – суммарные затраты на момент времени t;
k – общая стоимость системы;
a – максимальные затраты за единицу времени.
Ежегодные затраты на систему:
Зависимость Рэлея:
a – максимальные затраты за единицу времени.
От 0 до Tmax – период создания системы.
От Tmax – период сопровождения системы.
10
