ГОСТ Р МЭК 61508-7—2007
Цель: проектирование и реализация программы с использованием практического анализа программы без
ее выполнения. Программа может содержать только абсолютный минимум статистически нетестируемого пове
дения.
Описание: для минимизации структурной сложности программы следует применять следующие принципы:
- разделять программу на подходящие небольшие минимально связанные программные модули, все вза
имодействия между которыми точно специфицированы;
- составлять поток управления программными модулями с использованием таких структурированных конст
рукций. как последовательности, итерации и выбор:
- обеспечивать небольшое число возможных путей через программные модули и возможно более простыв
отношения между входными и выходными параметрами:
- исключать сложные ветвления и. в частности, безусловные переходы (goto) при использовании языков
высокого уровня;
- по возможности, связывать ограничения цикла и ветвление с входными параметрами;
- исключать использование сложных вычислений в ветвлении и цикле.
Свойства языков программирования, которые способствуют указанному выше методу, следует использо
вать. предпочитая их другим свойствам, которые (как утверждают) более эффективны, за исключением случаев,
когда эффективность приобретает абсолютный приоритет (например некоторые критичные к безопасности сис
темы).
Литература:
Notes on stuctured programming. E. W. Dijkstra, Stuctured Programming. Academic Press. London, 1972. ISBN
0-12-200550-3.
A Discipline of Programming. E. W. Dijkstra. Englewood Cliffs NJ. Prentice-Hall. 1976.
A Software Tool for Top-down Programming. D. C Ince. Software — Practice and Experience. Vol. 13. No. 8. August
1983.
Verification — The Practical Problems. J. T. Webb and D. J. Mannering, SARSS 87. Nov. 1987. Altrincham. England.
Elsevier Applied Science. 1987. ISBN 1-85166-167-0.
Ал Experience in Design and Validation of Software for a Reactor Protection System. S. Bologna, E. de Agostino
et al. IFAC Workshop, SAFECOMP. 1979. Stuttgart. 16—18 May 1979. Pergamon Press. 1979.
C.2.8Ограничение доступа/инкалсуляция информации
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица В.9).
Цель: предотвращение непреднамеренного доступа к данным или процедурам и обеспечение Text самым
качественной структуры программных средств.
Описание: общедоступные для всех программных компонентов данные могут быть случайно или некоррек
тно модифицированы любым из этих компонентов. Любые изменения этих структур данных могут потребовать
подробной проверки программного кода и серьезных исправлений.
Ограничение доступа представляет собой общий метод к минимизации указанных выше проблем. Ключе
вые структуры данных «скрыты», и с ними можно работать только через конкретный набор процедур доступа, это
позволяет модифицировать внутренние структуры данных или добавлять новые процедуры и при этом не оказы
вать влияния на функциональное поведение остальных программных средств. Например, имя директории может
иметь процедуры доступа «вставить», «удалить» и «найти». Процедуры доступа и структуры внутренних данных
могут быть изменены (например, при использовании различных методов просмотра или запоминании имен на
жестком диске), не оказывая влияния на логическое поведение остальных программных средств,
использующих эти процедуры.
В данном случав следует использовать концепцию абстрактных типов данных. Если непосредственная про
верка не предусмотрена, может оказаться необходимым проверить, не было ли абстрагирование случайно разру
шено.
Литература:
Software Engineering. Planning for Change. D. A. Lamb. Prentice-Hall. 1988.
On Design and Development of Program Families. D. L. Pamas. IEEE Trans SE-2. March 1976.
C.2.9 Модульный подход
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблицы А.4 и В.9).
Цель: декомпозирование программной системы на небольшие законченные модули с целью сокращения
сложности системы.
Описание: модульный подход или модуляризация включает в себя несколько различных правил для этапов
проектирования, кодирования и эксплуатации проекта программных средств. Эти правила меняются в соответ
ствии с реализуемым методом проектирования. Большинство методов подчиняются следующим правилам:
- программный модуль должен выполнять одну четко сформулированную задачу или функцию;
- связи между программными модулями должны быть ограничены и строго определены, уровень связности
каждого программного модуля должен быть высоким:
41