
4 курс (заочка) / Учебное пособие / Tekhnologii_programmirovania
.pdfУчебное пособие «Технология программирования»
- 4 -
|
СОДЕРЖАНИЕ |
|
Введение........................................................................................................................... |
5 |
|
1. |
Программа. Процесс обработки данных. Программное средство ................... |
5 |
|
1.1. Понятие правильности программы............................................................... |
6 |
|
1.2. Понятие надёжности ПС................................................................................ |
7 |
|
1.3. Обзор технологических подходов к программированию........................... |
7 |
2. |
Природа ошибок ПС.................................................................................................. |
9 |
|
2.1. Неправильный перевод – основная причина ошибок в ПС..................... |
10 |
|
2.2. Механизм перевода...................................................................................... |
11 |
3. |
Основные подходы к разработке ПС.................................................................. |
12 |
|
3.1. Жизненный цикл ПС.................................................................................... |
13 |
|
3.2. Понятие качества ПС................................................................................... |
15 |
|
3.3. Обеспечение надёжности ПС – основная цель разработки..................... |
16 |
4. |
Определение внешнего описания ПС................................................................. |
18 |
|
4.1. Формирование требований к ПС................................................................ |
20 |
|
4.2. Формирование спецификации качества ПС (СК)..................................... |
20 |
|
4.3. Формирование функциональной спецификации ПС (ФС)...................... |
23 |
|
4.4. Контроль ВО ПС.......................................................................................... |
24 |
5. |
Разработка архитектуры ПС................................................................................ |
24 |
|
5.1. Классификация архитектур ПС (АПС) ...................................................... |
25 |
|
5.2. Архитектурные функции и контроль АПС............................................... |
27 |
6. |
Таблицы решений как основной подход к спецификации |
|
семантики функций.................................................................................................... |
27 |
|
7. |
Разработка структур программ. Модульное программирование................. |
29 |
|
7.1. Характеристики для оценки ПМ................................................................ |
30 |
|
7.2. Подходы к разработке структуры программы.......................................... |
32 |
|
7.3. Методы контроля структуры программы.................................................. |
35 |
8. |
Проектирование и разработка ПМ...................................................................... |
36 |
|
8.1. Структурное программирование................................................................ |
37 |
- 5 - |
|
8.2. Пошаговая детализация. Псевдокод.......................................................... |
39 |
8.3. Методы контроля ПМ.................................................................................. |
41 |
9. Подтверждение правильности программ........................................................... |
42 |
9.1. Свойства пустого оператора и оператора присваивания......................... |
43 |
9.2. Свойства базовых конструкций: |
|
следования, разветвления и повторения........................................................... |
44 |
10. Тестирование и отладка – важнейшие этапы разработки ПС..................... |
47 |
10.1. Стратегии разработки тестов и виды отладки ПС.................................. |
48 |
10.2. Автономная отладка ПС............................................................................ |
50 |
10.3. Комплексная отладка ПС.......................................................................... |
53 |
|
- 6 - |
|
11. |
Подходы к обеспечению основных критериев качества ПС........................ |
54 |
|
11.1. Меры по обеспечению завершённости ПС............................................. |
54 |
|
11.2. Меры по обеспечению точности ПС........................................................ |
55 |
|
11.3. Меры по обеспечению автономности ПС............................................... |
55 |
|
11.4. Меры по обеспечению устойчивости ПС................................................ |
55 |
|
11.5. Меры по обеспечению защищённости ПС.............................................. |
56 |
12. |
Подходы к обеспечению качества ПС .............................................................. |
60 |
|
12.1. Общие принципы, обеспечивающие качество ПС................................. |
60 |
|
12.2. Меры по обеспечению лёгкости применения ПС. |
|
|
Пользовательский интерфейс............................................................................ |
61 |
|
12.3. Меры по обеспечению эффективности ПС............................................. |
62 |
|
12.4. Меры по обеспечению сопровождаемости ПС....................................... |
63 |
|
12.5. Меры по обеспечению мобильности ....................................................... |
64 |
13. |
Управление процессом разработки ПС............................................................ |
65 |
14. |
Компьютеризация разработки и сопровождения ПС.................................... |
68 |
|
14.1. Инструменты и инструментальные среды разработки ПС.................... |
68 |
|
14.2. Компьютерные технологии разработки ПС (CASE-технологии)......... |
72 |
15. |
Документирование ПС – необходимый этап разработки............................. |
75 |
Заключение................................................................................................................... |
77 |
|
Библиографический список...................................................................................... |
78 |
- 7 -
Введение
Изучение языков программирования обеспечивает разработчика программных систем лишь средствами кодирования алгоритмов, представляемых в виде логических схем. Однако для разработки больших программных систем этого явно не достаточно. Необходимы и другие знания, обеспечиваемые дисциплиной технологии программирования (ТП). Но этот термин не вполне точен. Он охватывает только часть возникающих проблем. Решением этих проблем занимаются [1]:
–методология программирования или совокупность механизмов программирования, объединенных общим философским подходом (структурное, объектноориентированное программирование);
–технология программирования – это совокупность производственных процессов создания программных средств и их описания;
–инженерия программирования – совокупность методов и средств программирования.
1. Программа. Процесс обработки данных. Программное средство
Цель программирования – описание процесса обработки данных (ПОД). Данные – это представление фактов и идей в формализованном виде, пригод-
ном для передачи и переработки в некотором ПОД.
Информация – это смысл, который придаётся данным при их переработке. Обработка данных – систематическое выполнение некоторой последователь-
ности действий с данными. Данные представляются и хранятся на носителях. Совокупность носителей данных, используемых при некоторой обработке данных, называется информационной средой. Набор данных, содержащихся в какой-либо момент в информационной среде, называют состоянием этой среды. Следовательно,
ПОД можно описать как последовательность сменяющих друг друга состояний некоторой информационной среды. Чтобы описать ПОД, необходимо определить последовательность состояний заданной информационной среды. Для того, чтобы по заданному описанию ПОД порождался на ЭВМ автоматически, необходимо формализовать это описание. Такое описание называют программой. Программа
- 8 -
должна быть понятна и человеку, поэтому программы составляются на удобном, формализованном языке программирования.
Программа переводится на язык соответствующего компьютера с помощью другой программы – транслятора.
Подготовительная работа перед составлением программы:
–уточнение постановки;
–выбор метода решения;
–выяснение специфики области применения;
–выяснение общей организации программы и т.д.
Результаты подготовительной работы оформляются в виде некоторой документации. Это значительно упрощает понимание человеком программы.
Программное средство (ПС) – программа или логически связанная совокупность программ, размещённая на носителе и снабжённая документацией.
Документация ПС позволяет понять:
−какие функции выполняет та или иная программа ПС;
−как подготовить исходные данные;
−какие программы содержит ПС;
−как запустить на выполнение;
−что означают полученные результаты;
−как её можно модифицировать.
1.1. Понятие правильности программы
Считается, что продуктом ТП является ПС, содержащее программы, выполняющие требуемые функции. Под программой часто понимают правильную программу, т.е. программу, не содержащую ошибок. Однако понятие ошибки в программе трактуется многими программистами неоднозначно. По мнению Майерса
[6] в программе имеется ошибка, если она не выполняет того, что разумно ожидать от неё пользователю. При этом разумность определяет документация. Поэтому понятие ошибки не формализовано. А так как в программном средстве программа логически связана с программной документацией, поэтому правильно говорить не об ошибке в программе, а об ошибке в ПС. Частным случаем ошибки
- 9 -
может быть несогласованность документации с ПС. Так как задание на ПС неформально, то нельзя доказать правильность программы формальными методами. Тестирование не показывает правильность ПС, а лишь иллюстрирует наличие в нём ошибки.
1.2. Понятие надёжности ПС
Альтернативой правильности является надёжность. Надёжность ПС – спо-
собность ПС безотказно выполнять определённые функции при заданных условиях в течение заданного времени и с достаточно большой вероятностью.
Под отказом понимают наличие в ПС ошибки. Причём нужно отметить, что надёжное ПС не исключает наличия в нём ошибки. Важно отметить, чтобы при практическом применении ПС эти ошибки проявлялись достаточно редко. Убедиться, что ПС обладает следующими свойствами можно тестированием или практическим применением. Практически мы разрабатываем лишь надёжные, а не правильные ПС. Программные средства обладают различной степенью надёжности. Некоторые ошибки выражают лишь неудобства, а некоторые могут вызывать катастрофические последствия. Поэтому для оценки надёжности иногда используют дополнительный показатель, который учитывает стоимость или вред каждого отказа.
1.3. Обзор технологических подходов к программированию
ТП играла разную роль на различных этапах развития программирования. С развитием средств ВТ и методологий программирования вырастала сложность решаемых задач. Сформировалось достаточно глубокое понятие качества ПС. Причём предпочтение отдаётся не эффективности работы, а удобству работы и надёжности. Широкое использование компьютерных сетей привело к развитию распределённых вычислений, распределённому доступу. Постепенно компьютерная техника превращается в средство информационного моделирования реального и мыслимого мира.
Можно кратко представить этапы развития программирования с середины прошлого века.
-10 -
В50-е годы мощность компьютеров была невелика. Программирование велось в
машинных кодах. Решались научно-технические задачи. Задание для программиста содержало достаточно полную постановку задачи. При этом использовалась интуитивная ТП. Документация создавалась после разработки ПС. Родилась фундаментальная концепция – модульное программирование. Появились первые языки высокого уровня (Фортран).
В60-е годы наблюдалось бурное развитие и широкое использование языков высокого уровня. Надежда на то, что внедрение таких языков решит проблемы программирования, не оправдалась. Проявилась их ограниченность (за исключением Фортрана) в связи с отсутствием модульного программирования. Появление в компьютерах второго поколения механизма прерываний предвосхитило появление мультипрограммирования. Стали создаваться большие программные системы. Появились организации, включающие в себя программистские коллективы.
В70-е годы информационные системы и БД получили широкое распространение, т.е. произошло резкое удешевление цены хранения информации в компьютерах. Технологии программирования развивались по следующим направлениям:
1) обоснование и широкое внедрение нисходящей разработки (сверху вниз). Структурное программирование;
2) создание абстрактных типов данных и модульного программирования;
3) исследование проблем надёжности и мобильности ПС;
4) работа над методиками коллективной разработки ПС;
5) появление инструментальных средств поддержки ТП.
В80-е годы широкое внедрение ПК вызвало появление многочисленных пользователей. Усиленное внимание к разработке пользовательского интерфейса повысило требования к качеству ПС. Развиваются методы и языки спецификации ПС. Повышается роль к объектному подходу на проектирование ПС. Создаются инструментальные среды по разработке ПС.
В90-е годы укрепилась тенденция широкого охвата человеческого общества глобальной сетью. Возникли технические, юридические, этические проблемы ис-
- 11 -
пользования сетевых ресурсов. А также проблема защиты информации. Продолжается развитие формальных методов спецификации программ.
2. Природа ошибок ПС
Интеллектуальные возможности человека по разработке ПС:
–способность к перебору;
–способность к абстракции;
–способность к математической индукции.
Способность к перебору – это способность человека последовательно переключать внимание с одного предмета на другой, позволяя при этом узнавать искомый предмет. Эта способность ограничена. В среднем человек может перебирать до 1000 предметов (элементов) не путаясь. Человек должен учитывать свою ограниченность в этом плане. Средством преодоления этого недостатка является способность к абстракции. Это способность человека объединять предметы (элементы) в группы, в одно понятие или заменять множество элементов одним (другого рода). Способность человека к математической индукции (умозаключения от частных случаев к общему выводу, в отличие от дедукции или вывода – умозаключения от более общих суждений к менее общим) позволяет ему справляться с беско-
нечными последовательностями. Под системой будем понимать совокупность взаимосвязанных друг с другом элементов. Примеры систем: ПС, комплекс про-
грамм и программа. Понять систему – это значит осмысленно перебирать все пути взаимодействия элементов между собой. В силу ограниченности человека к пере-
бору различают простые и сложные системы. Под простой системой будем
понимать такую систему, в которой человек уверенно может перебрать все связи между её элементами, а под сложной – систему, в которой он этого сде-
лать не в состоянии. Граница между простыми и сложными системами размыта и не определена. Поэтому можно говорить и о промежуточном классе систем, к которым относятся программы, про которые говорят, что в каждой отлаженной программе есть хотя бы одна ошибка.

- 12 -
При разработке ПС мы не всегда можем уверенно знать связи между элементами из-за возможных ошибок. Поэтому полезно уметь оценивать количество возможных связей в системе: если в системе n элементов, то количество связей n!. Система называется малой при n < 7 (6! = 720 < 1000) и большой при n > 7. При n = 7 система отно-
сится к промежуточному классу. Малая система всегда проста, а большая может быть как простой, так и сложной. Задача ТП – научиться делать большие сис-
темы простыми. Полученные оценки о количестве элементов системы справедливы не только в программе, но и в других областях жизни человека.
2.1. Неправильный перевод – основная причина ошибок в ПС
При разработке и использовании ПС человек сталкивается с многократным преобразованием информации из одной формы в другую.
|
Заказчик |
|
||||||
|
|
|
|
|
|
|
|
|
Спецификация |
|
|
|
Требования |
|
|
||
аппаратуры |
|
|
|
|
КПС |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Спецификация |
|
|
|
Внешнее |
|
Руководство по |
||
базового ПО |
|
|
|
Описание ПС |
|
применению ПС |
||
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Спецификация |
|
|
|
Текст |
|
|
||
|
|
|
|
|
||||
языка прогр-я |
|
|
|
программы |
|
|
||
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 1. Упрощённая схема разработки и применения ПС
Инициатор разработки ПС – заказчик. Он формирует свои требования к ПС. Исходя из требования заказчика, разработчик ПС создаёт внешнее описание ПС, используя при этом спецификацию (описание) аппаратуры и спецификацию базового ПО. На основании внешнего описания и спецификации языка программирования создаётся текст программы. По внешнему описанию создаётся пользовательская документация или руководство по применению. Тексты программы являются исходной информацией для любого преобразования. На основании документации пользователь выполняет действия по применению ПС, а также интерпретирует получаемые результаты. На всех этапах представленной на рис. 1 схемы существуют