• Главная
  • Об авторе
Blue Orange Green Pink Purple

Проверки проводимые по РД НДВ и их автоматизация.

Рубрики: Без рубрики. Опубликовано 04.06.2009 Теги: CodeHealer, CodeVisual2Flowchart, SOCK, НДВ, РД НДВ, ФИКС
Июн 04

Согласно РД НДВ для оценки программного обеспечение на наличие НДВ осуществляется ряд проверок (их число изменяется в зависимости от уровня классификации). Часть из них может быть выполнена только вручную – т.н. путем экспертного анализа. Многие же возможно автоматизировать – это серьезно ускоряет процесс проведения сертификационных испытаний.

Основные проверки, которые проводятся с помощью программных средств, следующие:

  • Контроль полноты и отсутствия избыточности исходных текстов
  • Контроль соответствия исходных текстов ПО его объектному (загрузочному) коду
  • Контроль связей функциональных объектов по управлению
  • Контроль связей функциональных объектов по информации
  • Контроль информационных объектов
  • Контроль наличия заданных конструкций в исходных текстах
  • Формирование перечня маршрутов выполнения функциональных объектов
  • Анализ критических маршрутов выполнения функциональных объектов
  • Анализ алгоритма работы функциональных объектов на основе блок-схем, диаграмм и т. п., построенных по исходным текстам контролируемого ПО
  • Контроль выполнения функциональных объектов
  • Сопоставление фактических маршрутов выполнения функциональных объектов и маршрутов, построенных в процессе проведения статического анализа

Остальные проверки осуществляются преимущественно путем экспертного анализа.

1.Контроль полноты и отсутствия избыточности исходных текстов
Данное требование подразумевает следующие проверки:
1.1.Контроль полноты исходных текстов на уровне файлов
Контроль осуществляется путем экспертного анализа – эксперт сравнивает список файлов, представленных в документации со списком файлов, предоставленных к проверке. В случае отсутствия хотя бы одного файла в предоставленных к проверке, данное требование считается не выполненным.

1.2.Контроль полноты исходных текстов на уровне функциональных объектов
Контроль осуществляется путем компиляции исходных текстов программ, в случае неудачной компиляции из-за отсутствующих функциональных объектов, данное требование считается не выполненным.

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

1.4.Контроль отсутствия избыточности на уровне функциональных объектов
Контроль осуществляется экспертом с помощью программных средств, которые выявляют возможно избыточные функциональные объекты (неиспользуемые функции, конструкторы, деструкторы и т.д.). Затем обнаруженные функциональных объекты исключаются из исходных кодов, и проводится компиляция. В случае успешной компиляции исходных текстов, данное требование считается невыполненным.

Данные проверки проводятся с помощью компиляторов и дополнительного программного средства для осуществления проверки по пункту 1.4. В качестве дополнительного программного средства используется в том числе SOCK CodeHealer, отдельный пост будет посвящен этому средству.

2.Контроль соответствия исходных текстов ПО его объектному (загрузочному) коду

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

3.Контроль связей функциональных объектов по управлению

Данная проверка заключается в построении графа взаимодействия функциональных объектов по управлению (граф вызова функций). Проверка может быть выполнена экспертом без привлечения дополнительных программных средств, однако объем исходных текстов и количество функциональных объектов в современных ПО достаточно велико. Существует ряд средств для разных языков программирования, в том числе мною будет рассмотрены средства для языков C++ и Delphi.

4.Контроль связей функциональных объектов по информации

Данная проверка заключается в построении графа взаимодействия функциональных объектов по информации (граф передачи переменных между функциями и использованию глобальных переменных внутри функций). Используются аналогичные п.3 программные средства.

5.Контроль информационных объектов

Данная проверка заключается в построении перечня информационных объектов (все переменные, кроме локальных, не передаваемых в другие функциональные объекты). Используются аналогичные п.3 программные средства.

6.Контроль наличия заданных конструкций в исходных текстах

Данная проверка заключается в поиске заданных конструкций в исходных текстах ПО.

7.Формирование перечня маршрутов выполнения функциональных объектов

Данная проверка заключается в построении графа маршрутов выполнения функциональных объектов, основываясь на графе связей функциональных объектов по управлению. Используются аналогичные п.3 программные средства.

8.Анализ критических маршрутов выполнения функциональных объектов

Данная проверка осуществляется с помощью экспертного анализа и заключается в статическом логическом анализе критических маршрутов выполнения функциональных объектов. Критическими считаются те части общего маршрута, в котором используются функциональные объекты с обнаруженными заданными конструкциями в ходе проверки по п. 6. Дополнительных программных средств эксперту не требуется.

9.Анализ алгоритма работы функциональных объектов на основе блок-схем, диаграмм и т. п., построенных по исходным текстам контролируемого ПО

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

10.Контроль выполнения функциональных объектов

Данная проверка относится к динамическому анализу и заключается во внедрении в исходные тексты контролируемого ПО специальных маркеров запуска функциональных объектов. После внедрения маркеров из исходных текстов собираются объектные (загрузочные) коды и проводится полное тестирование пользовательского интерфейса. Во время тестирования интерфейса информация от маркеров записывается в файл отчета и в дальнейшем используется в проверке по п. 11. В роли маркеров, чаще всего, выступает функция WinAPI OutputDebugString, её внедрение может производиться экспертом вручную, однако из-за больших объемов исходных кодов и количества функциональных объектов данная работа требует использования дополнительных программных средств. К сожалению, найти такие средства я не смог, поэтому в нашей лаборатории были разработаны скрипты для расставления OutputDebugString в исходные тексты на языках Delphi и C++, позднее я выложу эти скрипты.

11.Сопоставление фактических маршрутов выполнения функциональных объектов и маршрутов, построенных в процессе проведения статического анализа

Данная проверка заключается в сравнении маршрута выполнения функциональных объектов, построенных в процессе проведения статического анализа (п. 7), и маршрутов, выявленных с помощью маркеров при динамическом анализе (п. 10). В случае расхождения маршрутов, степень несоответствия и критичности определяется экспертом.

Похожие посты:

  • Программное средство для внедрения в исходные тексты программ маркеров выполнения функциональных объектов.

Поделись ссылкой:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

2 комментариев

  1. Денис 29.01.2010

    Здравствуйте. Интересуют программы для пунктов 3,4 и 7. Не могли бы вы подсказать?

  2. Magir 30.01.2010

    Для п. 7 – http://magir-blog.ru/archives/50
    Для п. 3, 4 – это АИСТ-С, Understanding for C++ – для c/c++, PascalAnalyzer – для Delphi



Оставить комментарий

Манускрипты IT-шника

  • Страницы
    • Об авторе
  • Метки
    НДВ ОК 012-93 ЕСКД РД НДВ СЕО монетизация ФИКС ЭДО парсер блог браузеры заработок в Интернете синонимизация синонимайзер хостинг Acronis C++ Cisco CodeHealer CodeVisual2Flowchart CSA DebugView Delphi GeoIP google translate IBM interzet ISS Mantis microsoft OutputDebugString PHP Proventia SEO SiteProtector SOCK VWWare ESX XPU
  • Комментарии
    • so к записи Простой синонимайзер на PHP
    • Magir к записи Парсер MirSovetov.ru
    • Андрей к записи Парсер MirSovetov.ru
    • Magir к записи Проверки проводимые по РД НДВ и их автоматизация.
    • Денис к записи Проверки проводимые по РД НДВ и их автоматизация.
  • Мета
    • Регистрация
    • Войти
    • RSS записей
  • Подписка по e-mail:





© 2009-2010 Magir Вверх