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

Основы разработки программ на языке С++ для систем информационной безопасности. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
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 sys­tem flowcharts, program network charts and system resources charts".
Согласно ГОСТ 19.701-90 под схемой понимается графическое
представление определения, анализа или метода решения задачи. С помо­щью схем можно отобразить как статические, так и динамические аспекты системы. Символы, приведенные в государственном стандарте, могут ис­пользоваться в следующих типах схем:
‒ схемы данных определяют последовательность обработки данных
и их носители;
‒ схемы программ отображают последовательность операций в
программе (по сути, это и есть блок-схемы алгоритмов в традиционном понимании);
‒ схемы работы системы отображают управление операциями и по-
токи данных в системе;
‒ схемы взаимодействия программ отображают путь активации про-
грамм (модулей) и их взаимодействие с соответствующими данными;
‒ схемы ресурсов системы отображают конфигурацию блоков дан-
ных и обрабатывающих блоков.
Рис. 5. Элементы блок-схем
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]