Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК по курсу ТРПС / ТРПС - Комплексное пособие.doc
Скачиваний:
198
Добавлен:
12.03.2015
Размер:
2.63 Mб
Скачать

© 2008+, Рахматуллин А.И.

Министерство образования и науки Российской Федерации

КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ им. А.Н. ТУПОЛЕВА

Кафедра прикладной математики и информатики им. Ю.В. Кожевникова

А.И. РАХМАТУЛЛИН, Д.С. ГУЩИНА

ТЕХНОЛОГИИ РАЗРАБОТКИ ПРОГРАММНЫХ СИСТЕМ

Комплексное учебное пособие

Казань 2008

Содержание

Введение 3

Раздел 1. Основы разработки по 4

Раздел 2. Методология разработки ПО 17

Раздел 3. Технология разработки ПО 31

Раздел 4. Подходы разработки ПО 70

Раздел 5. Инженерия и инструментарий ПО 146

Раздел 6. Методические указания 152

6.1. Лабораторные работы 152

6.2. Курсовая работа 225

6.3. Самостоятельная работа студентов 244

6.4. Примерные тестовые задания 255

Литература 261

Введение

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

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

Изложение материала дисциплины ведётся аналогично изложению, принятому в пособии [1] с учётом особенностей дисциплины. Для получения дополнительной информации по данной дисциплине рекомендуются пособия [2,3], а также словарь-справочник [4] и книга [5].

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

Поэтому в пособии используется системный подход к разработке ПО и систем и систематизированное изложение соответствующего материала, как это принято в пособии [1], с учётом современного состояния рассматриваемого вопроса, излагаемого в печатных и электронных публикациях.

Раздел1. Основы разработки по

В данном разделе рассматриваются основные понятия и определения, необходимые для ясного понимания всего материала дисциплины.

1.1. Основные понятия и определения

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

Система– совокупность взаимодействующих единиц – элементов, функционирующих совместно для достижения определённых целей.Элемент– относительно самостоятельная структурная «единица» системы.

Части системыпредставляют собой определённые группы элементов этой системы.Компонент– часть системы, выполняющая одну / несколько её функций.Модуль– отдельный компонент / группа компонентов, обеспечивающая одну / ряд функций для работы других модулей и, в свою очередь, использующая функции, обеспечиваемые иными модулями.Подсистема– часть системы, функции которой относительно независимы от функций остальных частей системы.Подсистема– это система, являющаяся частью рассматриваемой системы, анадсистема– это система, частью которой является рассматриваемая система.

Процессный подход является составной частью системного подхода.

Процесс– совокупность взаимосвязанных единиц – операций, преобразующих некоторые входы в выходы для достижения определённых результатов.Операция– относительно самостоятельная структурная «единица» процесса.

Части процессапредставляют собой определённые группы операций этого процесса.Задача– часть процесса, выполняющая одну / несколько его функций.Действие– отдельная задача / группа задач, обеспечивающая одну / ряд функций для выполнения других действий и, в свою очередь, использующая функции, обеспечиваемые иными действиями.Подпроцесс– часть процесса, функции которой относительно независимы от функций остальных частей процесса.Подпроцесс– это процесс, являющийся частью рассматриваемого процесса, анадпроцесс– это процесс, частью которого является рассматриваемый процесс.

Понятия «система» и «процесс» тесно связаны: система выполняет некоторый процесс, процесс представляет собой функционирование некоторой системы.

Для рассматриваемого объекта система задаёт структурную точку зрения на этот объект, а процесс – функциональную точку зрения. Приведённые определения системы и процесса соответствуют этим точкам зрения.

В разработке ПО оба понятия «система» и «процесс» играют существенную роль, позволяя рассматривать её с использованием системного подхода, а также грамотно осуществлять управление разработкой ПО.

Основными понятиями программирования являются алгоритм и программа.

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

Программа– формализованное описание алгоритма для его выполнения на компьютере. Из-за наличия других смыслов и значений понятия «программа» в настоящее время используют понятиекомпьютерная программа.

Программа может состоять из определённых частей и включаться в состав различных групп программ.

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

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

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

В узком смысле программное обеспечение(ПО) – совокупность программ (программный комплекс / ПС) на носителях данных. В широком смыслеПО– совокупность всех программ и данных (процедур, правил и документации на ПО), входящие в состав компьютера. Здеськомпьютериливычислительная машина– это совокупность взаимосвязанного и взаимодействующего аппаратного, микропрограммного и программного обеспечения, используемая для решения поставленных задач. В этом смысле к компьютерам относят ивычислительные системы.

Программное средство– это ПО, снабжённое программной документацией.Документация на ПО– совокупность документов, содержащих сведения, необходимые для разработки и использования ПО.Программная документация– совокупность документов, содержащих сведения, необходимые для использования ПО.

Наиболее общим рассматриваемым понятием является система. С точки зрения разработки система включает в себя вычислительные системы, персонал и т.д. Таким образом, система является более ёмким понятием, чем ПО: оно включает в себя ещё и окружение, в котором функционирует ПО, как таковое.

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

С организационной и экономической точек зрения наиболее часто используют понятия «прототип» и «программный продукт».

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

Кроме продукта (результата человеческого труда) интерес представляет и услуга (участие по оказанию помощи в деятельности). Услуга(тж. сервис) – деятельность по оказанию помощи в эксплуатации продукта.

Для удобства продукт и услуга именуются кратко – решение. Решение– результат в виде предоставляемого набора продуктов и/или услуг, необходимый для удовлетворения определённой потребности. Данное понятие чаще всего используется в области информационных технологий.

Прототип(букв. опытный образец, макет) – частичная, предварительная или возможная реализация решения. Прототип является пробным или промежуточным результатом разработки, по которому оценивается решение в целом.

С решением тесно связаны два важнейших понятия – «проект» и «команда».

Проект– это комплекс действий временного характера, направленных на получение конкретного решения; суть результата – его содержание.Команда– группа лиц, сформированная для выполнения проекта или его части. Проект реализуется командами, а команда работает над проектами.

В проекте могут принимать участие разные лица. Под лицом здесь понимается физическое или юридическое лицо, т.е. один человек, группа людей или некоторая организация в целом.

Заинтересованное лицо– лицо, чьи интересы могут быть затронуты процессами и результатами проекта. Среди заинтересованных лиц выделяют участников проекта и, в частности, исполнителей.Участник проектаиличлен проекта– лицо, принимающее непосредственное участие в проекте.Исполнитель– участник проекта, выполняющий поставленную перед ним работу в рамках этого проекта и несущий ответственность за её выполнение.

В проекте каждый участник играет некоторую роль (или набор ролей). Роль– характер поведения и области ответственности участника.

Выделяют следующие основные роли: пользователь – лицо, которое непосредственно участвует в эксплуатации продукта для получения результатов и/или использует эти результаты; оператор – лицо, которое занимается эксплуатацией продукта; заказчик – лицо, которое заказывает разработку продукта и приобретает его; поставщик – лицо, которое предоставляет разработанный продукт; разработчик – лицо, которое выполняет разработку продукта, т.е. все действия по разработке в рамках проекта. Часто для различных разработчиков выделяют отдельные роли – (системный) аналитик, проектировщик, программист, тестировщик и т.п.

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

Если конкретный результат не указан, обычно говорят о процессе разработки.

Процесс разработки– совокупность взаимосвязанных действий по получению некоторого результата. Процесс разработки в этом смысле представляет абстракцию проекта и фактически оказывается синонимом подхода к разработке ПО или системы. Это проявляется и в названии некоторых технологических подходов.

Продукт можно рассматривать аналогично живому организму: он имеет жизненный цикл(ЖЦ), который начинается с «зарождения» (возможно, с зарождения замысла / идеи) и заканчивается его «смертью» (изъятием из употребления). Концепция ЖЦ оказывается чрезвычайно полезной при управлении проектом.

Целью программного проекта является решение – программный продукт или услуга. Для проекта и соответствующего ему решения также принято выделять ЖЦ проекта. В зависимости от того, что включается в решение (ПО, вычислительная система и т.п.) и что входит в проект (только разработка или ещё и эксплуатация), выделяют соответствующие ЖЦ.

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

Рис.1.1. Взаимосвязь жизненных циклов

В настоящее время наибольший интерес представляет автоматизация поддержки системы и её разработки на всём протяжении ЖЦ, именно поэтому ведётся работа над общими стандартами на ЖЦ системы и ЖЦ её разработки и их согласование с имеющимися стандартами на ЖЦ ПО и ЖЦ его разработки.