Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Проектирование и реализация прикладного программного обеспечения. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
Министерство образования и науки Российской федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Оренбургский государственный университет»
Кафедра компьютерной безопасности и математического обеспечения
информационных систем
И.В. Влацкая, Н.А. Заельская, Н.С. Надточий
ПРОЕКТИРОВАНИЕ И
РЕАЛИЗАЦИЯ ПРИКЛАДНОГО
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Рекомендовано Ученым советом
федерального государственного бюджетного образовательного учреждения
высшего профессионального образования
«Оренбургский государственный университет»
в качестве учебного пособия для студентов,
обучающихся по программам высшего образования
по специальности 090301.65 Компьютерная безопасность и
10.05.01 Компьютерная безопасность,
направлению подготовки 010500.62 Математическое обеспечение и
администрирование информационных систем
Оренбург
2015
2
ISBN 978-5-7410-1238-3
© Влацкая И.В.,
Заельская Н.А., Надточий Н.С., 2015
© ОГУ, 2015
УДК 004.413(076.5) ББК 32.973-018.297
В 58
Рецензент – доктор технических наук, профессор Н.А. Соловьев
Влацкая И.В.
В 58 Проектирование и реализация прикладного программного
обеспечения: учебное пособие/ И.В. Влацкая, Н.А. Заельская, Н.С. Надточий; Оренбургский гос. ун-т. – Оренбург: ОГУ, 2015. – 118 с.
ISBN 978-5-7410-1238-3
В учебном пособии рассмотрены основные характеристики качества
и надежности программного продукта, жизненный цикл и этапы разработки программного обеспечения. Представлены вопросы структурного и модульного подхода к проектированию, а также модульного программирования. Приведены методы тестирования программного продукта.
Учебное пособие предназначено при изучении дисциплин
«Технология создания прикладного программного обеспечения» и «Технология разработки программного обеспечения» и может быть использовано в самостоятельной работе студентов специальности 090301.65 Компьютерная безопасность и 10.05.01 Компьютерная безопасность, направления подготовки 010500.62 Математическое обеспечение и администрирование информационных систем.
УДК 004.413(076.5) ББК 32.973-018.297
3
Введение…………………………………………………………………..................
5
1 Введение в технологии разработки программных средств…………………….
7
1.1 Основные понятия и определения……………………………………………..
7
1.2 Технология программирования и основные этапы ее развития……………..
9
2 Основные характеристики качества и надежности программного
продукта…………………………………...................................................................
13
2.1 Качество………………………………………………………….........................
13
2.2 Схема угроз качеству программных средств и методы их
предотвращения…………………………………………..........................................
14
2.3 Надежность…………………………………………………………....................
15
3 Жизненный цикл и этапы разработки программного обеспечения………………………………………………………………………….
18
3.1 Понятие жизненного цикла…………………………………………..................
18
3.2 Каскадная модель ……………………………………………………………….
19
3.3 V-образная модель………………………………………………………………
22
3.4 Спиральная модель ……………………………………………….……….……
24
3.4.1 Эволюционная стратегия разработки программных средств и систем.………………………………………………………………………….…….
24
3.4.2 Спиральная модель Боэма…………………………………………………….
25
3.5 Методология разработки ПО RAD………………………………..……….......
30
3.6 Модели жизненного цикла, реализующие инкрементную стратегию разработки программных средств и систем……………………………………….
32
3.6.1 Инкрементная стратегия разработки программных средств и систем………………………………………………………………………………...
32
3.6.2 Инкрементные модели ………………….……………………………………
34
3.7 Проблемы межу пользователем и программистом и способы их
преодоления…………………………………………………………........................
35
4 Декомпозиция задачи. структурный и модульный подход к
проектированию…………………………………......................................................
37
4.1 Архитектуры программного средства…………………………........................
37
4.2 Методы проектирования………………………………………………….........
37
4.3 Декомпозиция программы по SADT технологии. Иерархия диаграмм……
43
4.4 Порядок разработки и описание программного модуля……..........................
50
5 Характеристика программного модуля. потоки данных и
процессы………………………………………………………………………….....
52
5.1 Характеристики программного модуля……………………………………….
52
5.2 Характеристики программного модуля по Майерсу…………………............
53
5.3 Характеристики программного модуля по SADT……………………………
54
5.4 Потоки данных и процессы…………………………………………….............
57
6 Тестирование и отладка………………………………………..…………………
65
6.1 Виды ошибок……………………………………………………………............
65
6.2 Тестирование и отладка …………………………………………………….....
65
Содержание
4
6.2.1 Тестирование………………….........................................................................
66
6.2.2 Методы тестирования…………………………………………………………
69
6.2.3 Отладка………………………………………………………………………...
70
7 Лабораторные работы
74
7.1 Лабораторная работа № 1………………………………………………………
74
7.2 Лабораторная работа № 2…………………………………………………...….
74
7.3 Лабораторная работа № 3……………………………………………………….
76
7.4 Лабораторная работа № 4……………………………………………………….
76
7.5 Лабораторная работа № 5……………………………………………………….
77
7.6 Вопросы к защите лабораторных работ……………………………………….
78
8 Тестовые задания………………………………………………………………….
79
8.1 Организация процесса конструирования. Технологический цикл разработки программного обеспечения……………………………………………
79
8.2 Технология проектирования ПО. Основы проектирования программных систем………………………………………………………………………………..
91
8.3 Технология тестирования ПО………………………………………………….
102
8.4 Унифицированный процесс разработки программных средств. Бизнес- моделирование………………………………………………………………………
107
8.5 Ответы к тестам…………………………………………………………………
115
Список использованных источников…………………………………………..…..
117
5
Введение
Современная индустрия программного обеспечения характеризуется очень высокой степенью конкуренции. Создание программного обеспечения для персональных компьютеров за последние годы превратилось в важную и мощную сферу промышленности. Развитие программного обеспечения, предназначенного для широкого круга пользователей, происходит уже не в состязании индивидуальных программистов, а в процессе ожесточенной кон­курентной борьбы между фирмами-производителями программного обеспе­чения.
При разработке программ основной задачей является обеспечение их успеха, т.е. необходимо, чтобы программы обладали следующими качества­ми:
функциональность программы, т.е. полнота удовлетворения ею
потребностей пользователя;
наглядный, удобный, интуитивно понятный и привычный
пользователю интерфейс (т.е. способ взаимодействия программы с пользователем);
простота освоения программы даже начинающими пользователями,
для чего используются информативные подсказки, встроенные справочники и подробная документация;
надежность программы, т.е. устойчивость ее к ошибкам
пользователя,
отказам оборудования и т.д., и разумные ее действия в этих
ситуациях.
В учебном пособии излагаются современные технологии разработки программного обеспечения. Предлагаемое вниманию учебное пособие может рассматриваться в качестве основного источника для выполнения лаборатор­ных работ по курсу Технология разработки программного обеспечения для студентов, обучающихся по направлению подготовки 010500.65 Математи­ческое обеспечение и администрирование информационных систем, специ­альности 090301.65 Компьютерная безопасность и 10.05.01 Компьютерная безопасность.
Учебное пособие может быть рекомендовано также более широкому кругу читателей, интересующихся вопросами качества и надежности при со­здании программных продуктов, методами и организацией процесса проек­тирования, современным уровнем решения этих задач.
В учебном пособии содержатся основные теоретические положения по курсу Технология разработки программного обеспечения:
Характеристики качества и надежности программного продукта.
Этапы жизненного цикла программного обеспечения.
Декомпозиция задачи. Структурный и модульный подход к проек-
тированию.
Характеристика программного модуля. Потоки данных и процессы.
6
Методы тестирования и виды отладки программного средства. По каждой из рассмотренных глав студентами выполняется лабора-
торная работа и проводиться тестирование. Целью выполнения лаборатор­ных работ является изучение теоретической части материала и приобретение практических навыков в рассматриваемой области.
7
1 Введение в технологии разработки программных средств
1.1 Основные понятия и определения
Существуют различные определения технологии разработки ПО. Технология разработки программного обеспечения – это совокупность
процессов и методов создания программного продукта.
Технология разработки программного обеспечения – это система ин-
женерных принципов для создания экономичного ПО, которое надежно и эффективно работает в реальных компьютерах. Данное определение имеет частный характер, поскольку учитывает только две из шести характеристик качества ПО – надежность и эффективность. С учетом этого можно сформу­лировать более общее и точное определение.
Технология разработки программного обеспечения – это система ин-
женерных принципов для создания экономичного ПО с заданными характе­ристиками качества.
Близким по смыслу к термину технология разработки ПО является ши-
роко используемый в настоящее время термин программная инженерия
(software engineering).
Технологией программирования называют совокупность методов и
средств, используемых в процессе разработки программного обеспечения.
Как любая другая технология, технология программирования пред-
ставляет собой набор технологических инструкций, включающих:
- указание последовательности выполнения технологических операций;
- перечисление условий, при которых выполняется та или иная опера-
ция;
- описания самих операций, где для каждой операции определены ис-
ходные данные, результаты, а также инструкции, нормативы, стандарты, критерии, методы оценки и т. п. (см. рисунок. 1.1).
Рисунок 1.1 – Структура описания технологической операции
8
Кроме набора операций и их последовательности, технология также
определяет способ описания проектируемой системы, точнее модели, ис­пользуемой на конкретном этапе разработки.
Различают технологии, используемые на конкретных этапах разработки
или для решения отдельных задач этих этапов, и технологии, охватывающие несколько этапов или весь процесс разработки. В основе первых, как прави­ло, лежит ограниченно применимый метод, позволяющий решить конкрет­ную задачу. В основе вторых – базовый метод или подход, определяющий совокупность методов, используемых на разных этапах разработки, или про­ектируемой системы, точнее модели, используемой на конкретном этапе раз­работки.
Под методологией понимается система принципов и способов органи-
зации процесса разработки программных средств. Цель методологии разра­ботки ПО – внедрение методов разработки ПС, обеспечивающих достижение соответствующих характеристик качества.
В настоящее время широкую известность приобрели два базовых
принципа разработки ПС: модульный и объектно-ориентированный.
Разработка модульных ПС основывается на использовании структур-
ных методов проектирования, целью которых является разбиение по некото­рым правилам проектируемого программного средства на структурные ком­поненты. К структурным методам проектирования относятся такие классические мето­ды, как структурное программирование, нисходящее проектирование, рас­ширение ядра, восходящее проектирование и их комбинации, а также ряд со­временных методов и методологий разработки ПО.
Объектно-ориентированная разработка базируется на применении объ­ектных методов, к которым относятся методологии объектно­ориентированного анализа, проектирования и программирования.
Рассмотрим еще ряд терминов, которые используются в технологии программирования.
Программные средства, программное обеспечение (software) – полный набор (программное обеспечение) или часть (программные средства) про­грамм, процедур, правил и связанной с ними документации системы обра­ботки информации. Программное средство – ограниченная часть программ­ного обеспечения системы обработки информации, имеющая определенное функциональное назначение.
Программный модуль (software unit) – отдельно компилируемая часть программного кода (программы).
Программный продукт (software product) – набор компьютерных про­грамм, процедур, а также связанных с ними документации и данных. Про­дукты включают промежуточные продукты и продукты, предназначенные для пользователей типа разработчиков и персонала сопровождения.
Система (system) – комплекс, состоящий из процессов, технических и программных средств, устройств и персонала, обладающий возможностью удовлетворять установленным потребностям или целям.
9
Нотация (notation) – система графических обозначений для записи про-
межуточных и конечного результатов разработки ПС (в том числе предмет­ной области, требований, результатов проектирования и т.п.).
Базовыми понятиями технологии разработки ПС являются понятия
жизненного цикла, стратегии разработки и модели жизненного цикла, реали­зующей данную стратегию.
Чтобы разобраться в существующих технологиях программирования и определить основные тенденции их развития, целесообразно рассматривать эти технологии в историческом контексте, выделяя основные этапы развития программирования как науки.
1.2 Технология программирования и основные этапы ее развития
Первый этап развития программирования в первую очередь был связан с накоплением опыта в приобретении технических (стандартных) навыков написания программ.
Этот этап охватывает период от момента появления первых вычисли­тельных машин до середины 60-х гг. XX в. В это время практически отсут­ствовали технологии разработки программного обеспечения и программиро­вание фактически было искусством. Первые программы имели простейшую структуру. Они состояли из собственно программы на машинном языке и об­рабатываемых ею данных.
Революционным было появление в языках средств, позволяющих опе­рировать подпрограммами. (Идея написания подпрограмм появилась гораздо раньше, но отсутствие средств поддержки в первых языковых средствах су­щественно снижало эффективность их применения.) Подпрограммы можно было сохранять и использовать в других программах. В результате были со­зданы огромные библиотеки расчетных и служебных подпрограмм, которые по мере надобности вызывались из разрабатываемой программы.
В начале 60-х гг. XX в. разразился «кризис программирования». Он выражался в том, что фирмы, взявшиеся за разработку сложного программ­ного обеспечения такого, как операционные системы, срывали все сроки за­вершения проектов. Проект устаревал раньше, чем был готов к внедрению, увеличивалась его стоимость, и в результате многие проекты так никогда и не были завершены.
Объективно все это было вызвано несовершенством технологии про­граммирования. Прежде всего, стихийно использовалась разработка «снизу­вверх» – подход, при котором вначале проектировали и реализовывали срав­нительно простые подпрограммы, из которых затем пытались построить сложную программу. В отсутствии четких моделей описания подпрограмм и методов их проектирования создание каждой подпрограммы превращалось в непростую задачу, интерфейсы подпрограмм получались сложными, и при
10
сборке программного продукта выявлялось большое количество ошибок со­гласования.
Анализ причин возникновения большинства ошибок позволил сформу-
лировать новый подход к программированию, который был назван «струк­турным».
Структурный подход (60–70-е гг. ХХ в.) к программированию пред-
ставляет собой совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки программного обеспече­ния. В основе структурного подхода лежит декомпозиция (разбиение на ча­сти) сложных систем с целью последующей реализации в виде отдельных небольших подпрограмм. С появлением других принципов декомпозиции (объектного, логического и т. д.) данный способ получил название «проце­дурной декомпозиции».
В отличие от используемого ранее процедурного подхода к декомпози-
ции структурный подход требовал представления задачи в виде иерархии подзадач простейшей структуры. Проектирование, таким образом, осуществ­лялось «сверху-вниз» и подразумевало реализацию общей идеи, обеспечивая проработку интерфейсов подпрограмм. Одновременно вводились ограниче­ния на конструкции алгоритмов, рекомендовались формальные модели их описания, а также специальный метод проектирования алгоритмов – метод пошаговой детализации.
Дальнейший рост сложности и размеров разрабатываемого программ-
ного обеспечения потребовал развития структурирования данных. Как след­ствие этого в языках появляется возможность определения пользовательских типов данных. Одновременно усилилось стремление разграничить доступ к глобальным данным программы, чтобы уменьшить количество ошибок, воз­никающих при работе с глобальными данными. В результате появилась и начала развиваться технология модульного программирования.
Модульное программирование предполагает выделение групп подпро-
грамм, использующих одни и те же глобальные данные в отдельно компили­руемые модули (библиотеки подпрограмм), например, модуль графических ресурсов, модуль подпрограмм вывода на принтер.
Использование модульного программирования существенно упростило разработку программного обеспечения несколькими программистами. Теперь каждый из них мог разрабатывать свои модули независимо, обеспечивая вза­имодействие модулей через специально оговоренные межмодульные интер­фейсы. Кроме того, модули в дальнейшем без изменений можно было ис­пользовать в других разработках, что повысило производительность труда программистов.
При увеличении размера программы обычно возрастает сложность межмодульных интерфейсов, и с некоторого момента предусмотреть взаимо­влияние отдельных частей программы становится практически невозможно. Для разработки программного обеспечения большого объема было предло­жено использовать объектный подход (с середины 1980-х гг. до нашего вре­мени).
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]