Файл: Международные и отечественные стандарты языков программирования. Сходство и отличия стандартов.pdf
Добавлен: 28.06.2023
Просмотров: 162
Скачиваний: 3
Введение
Когда программист-разработчик получает в той или иной форме задание на программирование, перед ним, перед руководителем проекта и перед всей проектной группой встают вопросы: что должно быть сделано, кроме собственно программы? что и как должно быть оформлено в виде документации? что передавать пользователям, а что – службе сопровождения? как управлять всем этим процессом?
Кроме упомянутых вопросов есть и другие, например, что должно входить в само задание на программирование?
На эти и массу других вопросов когда-то отвечали государственные стандарты на программную документацию – комплекс стандартов 19-й серии ГОСТ ЕСПД. Но уже тогда у программистов была масса претензий к этим стандартам. Что-то требовалось дублировать в документации много раз (как, казалось — неоправданно), а многое не было предусмотрено, как, например, отражение специфики документирования программ, работающих с интегрированной базой данных.
Прошло много лет, программирование происходит в среде совершенно новых технологий, многие программисты, работая в стиле drag-and-drop, могут годами не видеть текст своих программ. Это не значит, что исчезла необходимость в их документировании. Более того, вопросы о наличии хоть какой-то системы, регламентирующей эту сторону создания программных средств (ПС), продолжают задавать постоянно. Спрашивают и о том, есть ли обязательные для применения стандарты (особенно остро стоит этот вопрос, когда разработка выполняется по заказу государственной организации или предприятия). Интересуются и тем, где можно купить имеющиеся стандарты.
В работе будут даны ответы на некоторые из этих вопросов и дано свое представление о том, как целесообразно использовать существующие стандарты и развивать систему стандартов. Будем говорить только о стандартах на документирование ПС, не касаясь стандартов на разработку автоматизированных систем в целом или более специфических стандартов, например, направленных на стандартизацию языков программирования.
Цель работы – обзор и анализ стандартов языков программирования.
Для достижения поставленной цели нужно выполнить следующие задачи:
- рассмотреть понятие стандартов и обосновать необходимость их разработки;
- рассмотреть существующие отечественные и международные стандарты;
- выявить сходство и различие стандартов.
Стандарты языков программирования: понятие, необходимость разработки
Концепция языка программирования неотрывно связана с его реализацией. Для того чтобы компиляция одной и той же программы различными компиляторами всегда давала одинаковый результат, разрабатываются стандарты языков программирования. Существует ряд организаций, целенаправленно занимающихся вопросами стандартизации. Это Американский национальный институт стандартов ANSI (American National Standards Institute), Институт инженеров по электротехнике и электронике IEEE (Institute of Electrical and Electronic Engineers), Организация международных стандартов ISO (International Organization for Standardization).
Как правило, при создании языка выпускается частный стандарт, определяемый разработчиками языка. Если язык получает широкое распространение, то со временем появляются различные версии компиляторов, которые не точно следуют частному стандарту. В большинстве случаев идет расширение зафиксированных первоначально возможностей языка. Для приведения наиболее популярных реализаций языка в соответствие друг с другом разрабатывается согласительный стандарт. Очень важным фактором стандартизации языка программирования является своевременность появления стандарта – до широкого распространения языка и создания множества несовместимых реализаций. В процессе развития языка могут появляться новые стандарты, отражающие современные нововведения. Так, язык FORTRAN первоначально был стандартизирован в 1966 году. В результате был издан стандарт FORTRAN 66. Далее этот стандарт несколько раз пересматривался (в 1977 году был выпущен FORTRAN 77, затем появился и FORTRAN 90).
Язык Java, ставший в последнее время весьма распространенным, постепенно был значительно расширен и модифицирован: новая спецификация получила название Java 2.
В процессе развития языка некоторые его конструкции и функции устаревают. Однако с целью обратной совместимости новые версии должны поддерживать и все устаревающие возможности. Это ведет к «разбуханию» компиляторов. В последнее время в реализациях введено понятие не рекомендуемой и устаревшей возможности. В первом случае следующий стандарт еще будет поддерживать не рекомендуемую возможность, но может перевести ее в категорию устаревшей. Во втором случае стандарт может исключить поддержку возможности, объявленной ранее как устаревшая. Введение не рекомендуемых и устаревших возможностей предоставляет разработчикам временной интервал, в течение которого они могут модифицировать код в соответствии с новыми требованиями стандарта.
Обзор стандартов, сходства и различия
Как было сказано в первой главе, разработкой международных стандартов занимаются многие организации. Это Американский национальный институт стандартов ANSI (American National Standards Institute), Институт инженеров по электротехнике и электронике IEEE (Institute of Electrical and Electronic Engineers), Организация международных стандартов ISO (International Organization for Standardization).
Ниже приведены примеры международных стандартов:
- ISO/IEC 1539-1:2010. Информационные технологии. Языки программирования. Фортран. Часть 1. Основные языки
- ISO/IEC 1539-1:2010/Cor 1:2012. Информационные технологии. Языки программирования. Фортран. Часть 1. Основные языки. Техническая поправка 1
- ISO 7185:1990. Информационные технологии. Языки программирования. Паскаль
- ISO 8485:1989. Языки программирования. APL
- ISO/IEC 9899:2011. Информационные технологии. Языки программирования. Си
- ISO/IEC 10279:1991. Информационные технологии. Языки программирования. Полный Бейсик
- ISO/IEC 13211-1:1995. Информационные технологии. Языки программирования. Пролог. Часть 1. Общее ядро
- ISO/IEC 13816:2007. Информационные технологии. Языки программирования, их среды и интерфейсы системного программного обеспечения. Язык программирования ISLISP
- ANSI/IEEE 1012 - 1986. Планирование проверки (оценки) (verification) и подтверждения достоверности (validation) программных средств.
- ANSI/IEEE 829 - 1983. Документация при тестировании программ.
- ANSI/IEEE 1008 - 1986. Тестирование программных модулей и компонентов ПС.
- ANSI/IEEE 983 - 1986. Руководство по планированию обеспечения качества программных средств.
- ANSI/IEEE 1042 - 1987. Руководство по планированию управления конфигурацией программного обеспечения.
- IEEE 1063-1987 (подтвержден 1993) - Пользовательская документация на программное обеспечение.
- IEEE 1074-1995 - Процессы жизненного цикла для развития программного обеспечения.
- ISO 12207:1995. Процессы жизненного цикла программных средств.
- ISO 9000-3:1991. Общее руководство качеством и стандарты по обеспечению качества. Ч.3: Руководящие указания по применению ISO 9001 при разработке, поставке и обслуживании программного обеспечения.
- ISO 9126:1991. ИТ. Оценка программного продукта. Характеристики качества и руководство по их применению.
- ISO 9646 - 1-6: 1991. ИТ. ВОС. Методология и основы аттестационного тестирования ВОС.
- ISO 12119:1994. ИТ. Требования к качеству и тестирование.
- ISO 687:1983. ИТ. Управление конфигурацией программного обеспечения.
- IEEE 1219-1993- Сопровождение программных средств.
- ISO 6592:1986. ОИ. Руководство по документации для вычислительных систем.
- ISO 9294-1990-TO. ИТ. Руководство по управлению документированием программного обеспечения (ГОСТ Р - 1993).
- ISO 9127:1987. ИТ. Пользовательская и рекламная документация на пакеты программ.
Рассмотрим подробнее стандарты языка Паскаль.
После начала использования Паскаля в 1970 году и появления реализаций, расходящихся не только в дополнениях, но и в синтаксисе, был поднят вопрос о стандартизации языка. Стандарт языка был разработан Никлаусом Виртом в 1974 году совместно с Кетлин Йенсен (Kathleen Jensen). В дальнейшем, были приняты международный стандарт от ISO и американский от ANSI. На данный момент, выделяют три принципиально разных стандарта: Unextended Pascal (исходный), Extended Pascal (расширенный), Object-Oriented Extensions to Pascal (объектно-ориентированное расширение Паскаля).
Стандарты языка Pascal: исходный, международные ISO и американские ANSI Название Вариант Кем/где разработан Год создания Pascal Standard исходный Н. Вирт, Кетлин Йенсен 1974 Pascal Standard исходный ISO 7185:1983, ANSI/IEEE 770X3.97:1983 1982 Unextended Pascal исходный ISO 7185:1990 1989 Extended Pascal расширенный ANSI/IEEE 770X3.160:1989 1989 ISO/IEC 10206 1991 Object-Oriented
Extensions to Pascal объектно-ориентированное расширение ANSI/X3-TR-13:1994 1993
Одним из главных дополнительных свойств объектно-ориентированного расширения Extended Pascal стала модульность и средства, облегчающие раздельную компиляцию.
Стандартизация языка была запаздывающей по отношению к реальному появлению в языке тех или иных возможностей. Коммерческие реализации расширяли стандартный Паскаль; так было сделано в UCSD Pascal, модификации Object Pascal фирмой Apple, Turbo Pascal от Borland (незначительно модифицированная версия Apple) и его ответвлений. Ни одна из распространённых коммерческих реализаций Паскаля не соответствует в точности ни одному из официальных стандартов языка.
Стандарт МЭК 61131-3 устанавливает пять языков программирования ПЛК, три графических и два текстовых. Первоначально стандарт назывался IEC 1131-3 и был опубликован в 1993 г. но в 1997 г. МЭК (IEC) перешел на новую систему обозначений и в названии стандарта добавилась цифра "6". Продвижением стандарта занимается организация PLCopen (http://www.plcopen.org).
Основной целью стандарта было повышение скорости и качества разработки программ для ПЛК, а также создание языков программирования, ориентированных на технологов, обеспечение соответствия ПЛК идеологии открытых систем, исключение этапа дополнительного обучения при смене типа ПЛК.
Системы программирования, основанные на МЭК 61131-3, характеризуются следующими показателями:
- надежностью создаваемого программного обеспечения. Надежность обеспечивается тем, что программы для ПЛК создаются с помощью специально предназначенной для этого среды разработки, которая содержит все необходимые средства для написания, тестирования и отладки программ с помощью эмуляторов и реальных ПЛК, а также множество готовых фрагментов программного кода;
- возможностью простой модификации программы и наращивания ее функциональности;
- переносимостью проекта с одного ПЛК на другой;
- возможностью повторного использования отработанных фрагментов программы;
- простотой языка и ограничением количества его элементов.
Языки МЭК 61131-3 появились не как теоретическая разработка, а как результат анализа множества языков, уже используемых на практике и предлагаемых рынку производителями ПЛК. Стандарт устанавливает пять языков программирования со следующими названиями:
- структурированный текст (ST - Structured Text);
- последовательные функциональные схемы (SFC - "Sequential Function Chart");
- диаграммы функциональных блоков (FBD - Function Block Diagram);
- релейно-контактные схемы, или релейные диаграммы (LD - Ladder Diagram);
- список инструкций (IL - Instruction List).
Графическими языками являются SFC, FBD, LD. Языки IL и ST являются текстовыми.
В стандарт были введены несколько языков (а не один) для того, чтобы каждый пользователь мог применить наиболее понятный ему язык. Программисты чаще выбирают язык IL (похожий на ассемблер) или ST, похожий на язык высокого уровня Паскаль; специалисты, имеющие опыт работы с релейной логикой, выбирают язык LD, специалисты по системам автоматического управления (САУ) и схемотехники выбирают привычный для них язык FBD.
Выбор одного из пяти языков определятся не только предпочтениями пользователя, но и смыслом решаемой задачи. Если исходная задача формулируется в терминах последовательной обработки и передачи сигналов, то для нее проще и нагляднее использовать язык FBD. Если задача описывается как последовательность срабатываний некоторых ключей и реле, то для нее нагляднее всего будет язык LD. Для задач, которые изначально формулируются в виде сложного разветвленного алгоритма, удобнее будет язык ST.
Языки МЭК 61131-3 базируются на следующих принципах [Lewis]:
- вся программа разбивается на множество функциональных элементов - Program Organization Units (POU), каждый из которых может состоять из функций, функциональных блоков и программ. Любой элемент МЭК-программы может быть сконструирован иерархически из более простых элементов;
- стандарт требует строгой типизации данных. Указание типов данных позволяет легко обнаруживать большинство ошибок в программе до ее исполнения;
- имеются средства для исполнения разных фрагментов программы в разное время, с разной скоростью, а также параллельно. Например, один фрагмент программы может сканировать концевой датчик с частотой 100 раз в секунду, в то время как второй фрагмент будет сканировать датчик температуры с частотой один раз в 10 сек;
- для выполнение операций в определенной последовательности, которая задается моментами времени или событиями, используется специальный язык последовательных функциональных схем ( SFC);
- стандарт поддерживает структуры для описания разнородных данных. Например, температуру подшипников насоса, давление и состояние "включено-выключено" можно описать с помощью единой структуры "Pomp" и передавать ее внутри программы как единый элемент данных;
- стандарт обеспечивает совместное использование всех пяти языков, поэтому для каждого фрагмента задачи может быть выбран любой, наиболее удобный, язык;
- программа, написанная для одного контроллера, может быть перенесена на любой контроллер, совместимый со стандартом МЭК 61131-3.