Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы разработки программ на языке С++ для систем информационной безопасности. Учебное пособие
.pdf
1.5. Защита
11
Показатель используемых ресурсов носит количественный характер
и задается списком, состоящим из наименования ресурса и ее значения.
Обычно для программы указывают некий минимальный объем ресурсов,
недостаток которых делает ее неработоспособной.
Рис. 3. Программа и используемые ресурсы
Оценивают используемые ресурсы нагрузочными тестами. Тест задает условия работы программы, в которых потребление ею ресурсов максимально.
В результате строят зависимости выбранных показателей качества
от объема выделенных ресурсов. Например, может потребоваться оценка
времени реакции программы от количества ядер процессора.
1.5. Защита
Программа считается защищенной, если она способна противостоять внешним разрушающим воздействиям. Оснащение программы системой защиты – это выбор компромисса между стоимостью защиты и величиной потенциального ущерба, возникающего при ее нарушении. Отметим, что использование системы защиты влияет на частные показатели качества программы. Может, например, потребоваться больший объем ресурсов, снизиться производительность, возрасти время реакции, понизиться
надежность, нагрузочная способность и т.д.

1. Качество программ
12
Кроме перечисленных, существует ряд других частных показателей
качества:
• удобство диалогового интерфейса;
• перестраиваемость (реконфигурирование);
• отказоустойчивость;
• возможность расширения функций;
• переносимость на другие аппаратные платформы и т.д.
Эти показатели могут играть второстепенную роль в глобальной
оценке качества. Однако их уровни также нуждаются в оценке, что реализуется тестированием.
Рис. 4. Эффективность системы защиты
Показатели защиты могут быть как качественными, так и количе-
ственными. Уровень защиты определяется тестированием.

1.5. Защита
13
2. ОСНОВНЫЕ ЭТАПЫ РАЗРАБОТКИ ПРОГРАММ
Ниже перечислены основные этапы разработки программ:
• Постановка задачи
• Моделирование
• Архитектурное проектирование
• Кодирование и отладка
• Тестирование
• Опытная эксплуатация
На сегодняшний день существует много программных технологий,
каждая из которых реализует перечисленные этапы некоторым специальным образом. Этапы могут разделяться на отдельные стадии, переходы
между этапами могут сопровождаться проведением особых процедур, однако общая логика разработки применима к программам любого масштаба.
Первый этап разработки – это выполнение постановки задачи. Результатом постановки задач является определение требований к разрабатываемой программе. Этот результат обычно фиксируется в техническом задании (спецификации).
На этапе постановки задачи изучают известные средства решения
поставленной задачи, оценивают существующие технологии. Правильность выбранного пути разработки программы во многом зависит от опыта
разработчика, его знаний и умений. Данный этап отличается нестандартностью принимаемых решений. Цена ошибки здесь максимальна, поскольку
ставит под угрозу выполнение всего проекта.
На этом этапе определяются требования к точности решения и возможные допущения.
В табл. 2 показано примерное содержание требований, формулируемых по окончании этапа.
Таблица 2
Содержание требований к программе
1
Что даст пользователю программа
2
Требования к входной информации
3
Требования к системной платформе (аппаратура и операционная система)
4
Требования к представлению результатов
5
Параметры качества конечного продукта с методикой их проверки

2. Основные этапы разработки программ
14
Второй этап разработки – моделирование – необходим для оценки
реализуемости выбранного пути. Виды моделей могут быть самыми разными: математические, информационные, экономические, имитационные
и т.д. Не исключено макетирование, т.е создание программы, реализующей
частично функции конечного варианта разработки.
Чаще всего задача, предназначенная для решения на персональном
компьютере, должна быть записана в математической формулировке, т.е.
выражена в терминах формально определённых в математике понятий с
четко определёнными свойствами. Условие задачи задается в виде уравнений, либо в виде последовательности формул или логических соотношений. Основным компонентом второго этапа является построение математической модели.
Моделирование снижает опасность ошибки выбора средств реализации проекта. По результатам моделирования может оказаться необходимым возвратиться на предыдущий этап и изменить постановку задачи.
Если одна и та же задача может быть решена с помощью различных
методов, выбирают подходящий по уровню точности решения, быстроте
получения результата, занимаемому объём памяти для выполнения программы и хранения результатов. Также учитывается сложность программной реализации метода.
Выделяют точные и численные методы. Сущность точных методов
состоит в последовательности выполнения арифметических и логических
действий, позволяющих получить точное решение (пример – возведение
числа в степень). Численные методы используются для большинства задач,
встречающихся в инженерной практике. Они обеспечивают отыскание результата с требуемой точностью.
Стоит учитывать, что в некоторых случаях пригодность избранного ме-
тода можно определить лишь на последующих этапах разработки программы.
Этап архитектурного проектирования состоит в построении логической структуры программы или системы, определении элементов и связей между ними. Трудоемкость дальнейшей разработки во многом зависит
от принятых архитектурных решений, поскольку они определяют перечень
уже готовых компонентов и новых, подлежащих созданию. Здесь большую
роль играет знание разработчиком особенностей существующих библиотек
программ и компонентов.

2. Основные этапы разработки программ
15
На этапе кодирования и отладки создается программный код си-
стемы или программы. Работа на этом этапе ведется в выбранной системе
(среде) программирования. Система программирования – это программный комплекс, автоматизирующий все процессы создания программ. В
данном учебном пособии предполагается использование среды программирования Microsoft Visual Studio. Современные системы программирования позволяют:
• создавать и вести проекты программ. Проект программы – это ин-
формационная структура, включающая как исходный код на выбранном
языке программирования (текст программы), так и служебные данные, необходимые для управления процессом создания программы;
• работать с исходным кодом программ. Эти функции охватывают
действия от простого редактирования до отслеживания версий кода;
• осуществлять отладку программы – выполнять по шагам, останав-
ливать в нужных точках, контролировать значения переменных, вызовов
подпрограмм;
• создавать тесты отдельных компонентов;
• использовать специализированные программные инструменты.
Например, подключаться к базам данных, Интернет-серверам, другим проектам, вести совместную работу над проектом несколькими разработчиками.
Этап тестирования направлен на оценку качества разработанной
программы. Не протестированный программный продукт является чрезвычайно опасным: не известно, насколько соответствует он спецификации и
каков реальный уровень ошибок имеет место в его работе.
Основными источниками ошибок являются поверхностная прора-
ботка математической модели или алгоритма решения задачи; нарушение
соответствия между блок-схемой или записью алгоритма на алгоритмическом языке и программой, записанной на языке программирования; неверное представление исходных данных; невнимательность при наборе программы и исходных данных на устройства ввода.
Нарушение соответствия между детально разработанной записью
алгоритма в процессе кодирования программы относится к ошибкам, проходящим вследствие невнимательности программиста.
Потенциальные ошибки делятся на два вида:

2. Основные этапы разработки программ
16
‒ синтаксические (ошибки в записи конструкций языка программи-
рования: чисел, переменных, функций, выражений, операторов, меток, подпрограмм). Пример: пропуск точки с запятой в конце строки;
‒ семантические (ошибки, связанные с неправильным содержанием
действий и использованием недопустимых значений величин). Пример: неверно выбранный тип данных, приведший к потере знаков.
На этапе опытной эксплуатации изучают поведение разработанной программы в реальных условиях эксплуатации. По сути, данный этап
следует отнести к тестированию. Могут применяться два варианта тестирования:
• альфа-тестирование, когда реальные условия воспроизводятся со-
трудниками организации-разработчика;
• бета-тестирование, когда программа передается сторонним экспер-
там для использования с условием фиксации выявленных ошибок.

Алгоритмизация
17
3. АЛГОРИТМИЗАЦИЯ
Программирование на алгоритмическом языке предполагает, что
разработчик программы представляет себе последовательность действий,
которую должна выполнять программа. Последовательность действий, которая приводит к получению результата, называют алгоритмом. Заметим,
что существуют языки программирования, использование которых не
предусматривает формулировку алгоритма. Однако без концепции алгоритма при программировании на С++ обойтись невозможно.
Разрабатывая алгоритм, необходимо соблюдать следующие требования к нему:
1. Однозначность описания. Выбранный разработчиком способ описа-
ния не должен допускать многозначности толкования отдельных действий
алгоритма. На практике избежать неоднозначности достаточно трудно и в
этом кроется опасность появления ошибок при разработке программы.
2. Результативность (конечность). Предполагается, что созданный
алгоритм должен давать результат за конечное число шагов. Несоблюдение
данного требования порождает опасность «зависания» программы.
3. Детерминированность. Требование состоит в том, что одни и те же
входные данные должны давать один и тот же результат по окончании алгоритма. Если это не так, то невозможно отличить правильный результат
от ошибочного.
Построение алгоритмов относится к области интеллектуальной деятельности и трудно формализуется. Поэтому точных рекомендаций о том,
как строить алгоритмы, не существуют. Ниже приведены некоторые стратегии поиска решений, которые применяют при алгоритмизации:
• Описание примеров и их обобщение.
• Сопоставление с известным образцом.
• Упростить, затем усложнить.
• От частного к общему.
• Выбор структуры данных.
Стратегия Описание примеров и их обобщение заключается в том,
чтобы поставленную задачу попробовать решить на нескольких примерах

3. Алгоритмизация
18
с тем, чтобы выработать затем общий алгоритм решения. Здесь важна визуализация примеров: можно использовать рисунки и схемы. Они могут
натолкнуть на идею алгоритма.
Сопоставление с известным образцом предполагает, что разработ-
чик знает ряд алгоритмов и пытается найти среди них аналогичный тому,
который требуется построить.
Стратегия Упростить, затем усложнить основана на том, чтобы ис-
ходную задачу представить в некотором упрощенном виде, позволяющем
составить алгоритм. Затем пытаются усовершенствовать алгоритм так,
чтобы он учитывал первоначально сделанные упрощения.
Стратегия От частного к общему состоит в следующем: текущий
результат пытаются получить, комбинируя более простые предыдущие результаты работы алгоритма.
Стратегия Выбор структуры данных состоит в том, чтобы решить
задачу выбором такой структуры данных, которая, по сути, заменяет алгоритм поиска решения выбором из памяти готового результата.
Всегда ли нужно описывать алгоритмы перед разработкой программы? Категоричного утвердительного ответа здесь дать нельзя. Описание алгоритма полезно разработчику ровно настолько, насколько позволяет справиться с сложной задачей. «Простые» задачи обдумываются и реализуются непосредственно написанием программного кода. Простота
оценивается в 5–10 строк кода. Если речь идет о сложных задачах, то описание алгоритма необходимо по нескольким причинам:
• на этапе постановки задачи для фиксации и обдумывания разных
вариантов решения;
• на этапе моделирования для уточнения и детализации действий,
выполняемых программой;
• при архитектурном проектировании алгоритмами описывают
связи между элементами системы;
• при кодировании и отладке коллективной работы.
Варианты описания алгоритмов приведены ниже: Естественный код;
Псевдокод; Блок-схемы.
Описание алгоритмов на естественном языке выглядит как нумерованный список действий. Пример алгоритма работы калькулятора:

3. Алгоритмизация
19
1. Определить операцию, соответствующую нажатой кнопке клавиа-
туры.
2. Если операция соответствует вводу данных, отобразить эти данные
на экране калькулятора.
3. Если операция соответствует вычислению, выполнить его и отоб-
разить результат на экране. Затем перейти к п.1.
4. Если операция является выключением калькулятора, то очистить
экран и отключить электропитание.
Описание алгоритма на естественном языке – наиболее универсаль-
ный вариант представления алгоритма.
Таблица 3
Пример псевдокода
While (НЕ КонецФайла())
{
СчитатьСтроку()
ВыделитьВтороеПоле()
НомерКонтракта[i]=ВтороеПоле
I=i+1
}
Использование псевдокода характерно для профессиональных
групп программистов. Пример такого описания приведен в табл. 3.
Псевдокод представляет собой компактный, как правило, неформальный язык описания алгоритмов. В псевдокоде используются ключевые
слова императивных языков программирования (C, C++, Java), но опускаются несущественные для понимания алгоритма подробности, а также специфический синтаксис. Отличительной особенностью псевдокода является
использование языковых конструкций языков программирования.
Блок-схемы относятся к способам графического изображения алгоритмов. На рис. 5 показаны элементы блок-схем, соответствующие стандарту. Надписи внутри блоков не стандартизованы, рекомендуется делать
их на естественном языке.
При описании алгоритмов давно и успешно используются блоксхемы (Basic Flowchart). Построение блок-схем алгоритмов регламентируется ГОСТом 19.701-90 (ИСО 5807-85) "Единая система программной документации. Схемы алгоритмов программ, данных и систем. Условные

3. Алгоритмизация
20
обозначения и правила выполнения". Данный государственный стандарт
составлен на основе международного стандарта "ISO 5807-85. Information
processing – Documentation symbols and conventions for data, program and system flowcharts, program network charts and system resources charts".
Согласно ГОСТ 19.701-90 под схемой понимается графическое
представление определения, анализа или метода решения задачи. С помощью схем можно отобразить как статические, так и динамические аспекты
системы. Символы, приведенные в государственном стандарте, могут использоваться в следующих типах схем:
‒ схемы данных определяют последовательность обработки данных
и их носители;
‒ схемы программ отображают последовательность операций в
программе (по сути, это и есть блок-схемы алгоритмов в традиционном
понимании);
‒ схемы работы системы отображают управление операциями и по-
токи данных в системе;
‒ схемы взаимодействия программ отображают путь активации про-
грамм (модулей) и их взаимодействие с соответствующими данными;
‒ схемы ресурсов системы отображают конфигурацию блоков дан-
ных и обрабатывающих блоков.
Рис. 5. Элементы блок-схем
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
