Файл: Сходство и отличия международных и отечественных стандартов языков программирования.pdf
Добавлен: 16.05.2023
Просмотров: 248
Скачиваний: 3
СОДЕРЖАНИЕ
Глава 1. Общая характеристика стандартов языков программирования
1.1 Общие требования к стандартизации языков программирования
Глава 2. Характеристика стандартов языков программирования
2.1. Отечественные стандарты языков программирования
Глава 3. Сравнение отечественных и международных стандартов языков программирования
Терминология, установленная в данном стандарте, обязательна к применению в документах всех видов, научно-технических, учебных источниках, а также справочниках.
Каждому понятию ставится в соответствие единый стандартизованный термин. Использование терминов, являющихся синонимами стандартизованного термина запрещено [13].
Отдельным стандартизованным терминам в указанном стандарте приводятся в соответствие их краткие формы, которые разрешается использовать в случаях, исключающих их различное толкование. Для установленных определений возможно, при необходимости, проводить изменение по форме изложения, без нарушения границ понятий.
- ГОСТ 19781-90. Обеспечение систем обработки информации
Специализированные ГОСТы для языков программирования [9]:
ГОСТ 27975-88 Язык программирования АЛГОЛ 68 расширенный
Данный стандарт распространен на программы, разработанные на языке программирования «Алгол 68 расширенный», его варианты.
ГОСТ 23057-78 Язык программирования Базисный Фортран
ГОСТ 27787-88 Язык программирования БЕЙСИК
ГОСТ 22558-89 Язык программирования Кобол
ГОСТ 23056-78 Язык программирования Фортран
Указанные стандарты регламентируют разработку программного обеспечения с использованием соответствующих языков программирования, описывают возможные исключения, ошибочные ситуации.
2.2. Международные стандарты языков программирования
Для многих широко распространённых языков программирования созданы международные стандарты. Специальными организациями проводятся регулярные обновления и публикации спецификаций и формальные определения для соответствующих языков. В таких комитетах разрабатываются и модернизируются языки программирования и проводится решение вопросов, связанных с расширением или поддержкой уже существующих и новых языковых конструкций [8].
Основными стандартами языков программирования являются [3]:
- Частные стандарты, определяемые командами разработчиков языка программирования и имеющие на них авторские права.
- Согласительные стандарты, проводящие создание специальных организационных документов, которые основаны на соглашении всех заинтересованных участников. Данные стандарты являются способом по обеспечению единообразия различных языковых форм.
- Стандарты ANSI разработаны объединением американских промышленных и деловых групп, разрабатывающих торговые и коммуникационные стандарты.
- Стандарты IEEE разработаны международной некоммерческой ассоциацией специалистов в области техники, являющейся мировым лидером в области разработки стандартов в области радиоэлектроники и электротехники.
Одним из наиболее распространенных международных стандартов языков программирования является ANSI C.
Данный стандарт не относится непосредственно к UNIX. Но в силу того, что язык программирования C является базовым как для данного семейства, так и для других операционных систем, проведем анализ данного стандарта. Данный стандарт имеет название K&R.
Однако промышленный стандарт языка программирования С был выпущен в 1989 году ANSI и имел наименование X3. 159 – 1989.
Данный стандарт был разработан для совершенствования процесса переносимости разработанных на языке Си программ между различными типами операционных систем. Таким образом, в стандарте, кроме синтаксиса и семантики языка Си, имеются рекомендации по содержанию стандартной библиотеки. О наличии поддержки стандарта ANSI C говорит предопределенное символьное имя _STDC".
Основными версиями стандартов языка программирования Си являются: С89, С90, С99, С11, С++17.
Любые программы, написанные только с использованием данного стандарта и не допускающие специфических аппаратных допущений, гарантированно должны работать на любой из платформ с достаточно стандартной реализацией языка C.
Приведем краткое описание актуального стандарта программирования С++17.
- Реализованы новые методы вставки для операторов std::map и std::unordered_map;
- Реализована система унифицированного доступа к размеру контейнеров std::size();
- Реализован набор библиотек файловой системы, основанный на boost::filesystem;
- Разработаны параллельные версии алгоритмов типа STL;
- Введен набор некоторых математических функций;
- Проведено расширение большой части экспериментальной библиотеки TS I.
- Введены требования к новому синтаксису для распаковки пар, кортежей и прочих типов, проведена реализация команд std::get. Например: auto x = std::make_tuple(4,6,7); auto [a,b,c] = x;
- Разработаны алгоритмы инициализации переменных в конструкции в if и switch. Например: if(auto a = getA(); a.isValid()) {}
- Реализован сервис автоматического вывода аргументов шаблона класса; также введена поддержка ручного указания правил вывода.
Ранее язык Си рассматривался в качестве «переносимого ассемблера»: он позволял проводить быструю разработку программ, компилируемых на различных компьютерах, к тому же использовались ассемблерные утилиты (компоновщики, библиотекари). Термины типа «заголовочный файл» и «единицы трансляции» также существуют в данном стандарте. Си++ является языком очень высокого уровня, а компилятор часто оптимизирует лучше, чем программист вручную на ассемблере.
В стандарте введены запреты нескольких редких возможностей, имеющихся в стандартной библиотеке:
- allocator<void> — вследствие невостребованности;
- удаление части функций allocator — из-за дублирования allocator_traits;
- raw_storage_iterator — не производит вызов конструкторов и потому имеет ограничение по сфере использования;
- get_temporary_buffer — ввиду наличия ошибок реализации алгоритмов;
- is_literal_type — ввиду неэффективности использования в обобщённом коде, введен термин литерального типа;
- iterator — ввиду неэффективности использования при написании итераторов;
- codecvt — из-за ошибок в использовании, замещен специализированными библиотеками;
- shared_ptr::unique() — вследствие ненадёжности при работе многопоточной среде.
Таким образом, международные стандарты языков программирования позволяют регламентировать разработку программного обеспечения, при этом прослеживается эволюция, в которой прослеживается добавление нового функционала, соответствующего современным требованиям к разработке программного обеспечения с использованием языка Си и С++.
Выводы по разделу
В настоящее время разработан ряд стандартов, связанных с разработкой программного обеспечения, с использованием которых возможно упрощение процесса написание программного кода. Российские стандарты определяют общине требования к разработке программного обеспечения, порядок доступа к данным с использованием программного кода. Также разработаны стандарты пользовательских интерфейсов, определяющих основные требования к использованию разработанного программного продукта. Также имеются разработки стандартов для языков программирования российского и иностранного происхождения, в которых определён порядок кодирования алгоритмов, использования операторов. Существуют разработки как государственных, так и отраслевых стандартов.
Международные стандарты языков программирования регламентируют процесс разработки программного обеспечения с использованием определенных языков. Стандарты разрабатываются специалистами лабораторий ANSI и IEEE, также проводится их постоянная актуализация, связанная с появлением новых требований к разработке программного обеспечения.
Глава 3. Сравнение отечественных и международных стандартов языков программирования
Проведем анализ российских и международных стандартов языков программирования. На рисунке 1 приведена диаграмма стандартов разработки программного обеспечения.
Рисунок 1 - Перечень стандартов языков программирования
Международный стандарт ISO/IEC/IEEE 16326:2009 «Системы и разработка программного обеспечения. Процессы жизненного цикла. Управление проектом» уточняет и дополняет положения международного стандарта ISO/IEC 12207-99 в части технологии управления проектами. Перечень рекомендаций данного стандарта [19]:
- определение общих рекомендаций разработки ПО по использованию работ процесса разработки;
- возможность использования в процессе разработки для каждого из процессов;
- определение ключевых вопросов, относящихся к проекту в целом;
- описание инструкций в части определения и описания общепризнанных подмножеств языков программирования. Общее признание предполагает, что описанные знания и опыт использованы во многих проектах имеется единодушное признание их значимости и полезности;
- ISO 10006 в части рекомендаций по реализации основных концепций, элементов и опыта применения систем качества, влияющих на практику разработки программ [17].
ГОСТ 34.003-90 «Автоматизированные системы. Термины и определения» [16]. В данном стандарте установлены термины и определения в области проектирования автоматизированных систем (АС) и распространены на системы, используемые в различных областях деятельности (связанных с управлением, исследованием, проектированием и т.п., включая их сочетание), содержанием которых является обработка данных [18].
ГОСТ Р ИСО/МЭК 9126-93 «Характеристики качества и руководства по их применению» [2]. В настоящем стандарте определяются характеристики, которые с минимальным дублированием описывают качественные характеристики программного обеспечения. Указанные характеристики служат основой для дальнейшего уточнения и описания качественных характеристик программного обеспечения. Стандарт описывает использование качественных характеристик для оценки разработанного программного обеспечения. В данном стандарте не определяются подхарактеристики (комплексные показатели) и параметры, а также методы измерений, ранжирования и оценивания. Указанный стандарт определяет качественные характеристики по стандарту ИСО 8402. Определения характеристик и соответствующая модель процесса оценки качества, приведенные в настоящем стандарте, применимы тогда, когда определены требования для программной продукции и оценивается её качество в процессе жизненного цикла. Эти характеристики могут применяться к любому виду программного обеспечения, включая программы ЭВМ и данные, входящие в программно-технические средства (встроенные программы). Настоящий стандарт предназначен для характеристик, связанных с приобретением, разработкой, эксплуатацией, поддержкой, сопровождением или проверкой программного обеспечения.
Качественные характеристики программного обеспечения могут быть оценены с использованием следующих характеристик:
1. Наличие функциональных возможностей
2. Характеристики надежности.
3. Удобство пользовательского интерфейса
4. Параметры эффективности (Efficiences).
5. Возможности сопровождения.
6. Наличие сервисов мобильности.
В рамках данного стандарта оценка качества должна производиться применительно ко всем работам, связанным с использованием языков программирования в процессе планирования качественных показателей ПС, осуществлении контроля качества в процессе разработки, проведения проверки эффективности модификации ПС в рамках сопровождения. Стандартом ГОСТ 28195–99 рекомендован метод оценки обобщенного качества программного обеспечения, основанный на иерархической модели качества.
ГОСТ 28195–99 предлагается следующая терминология для показателей качества разработки с помощью языков программирования на уровнях [10]:
- уровень 1 – качественные факторы;
- уровень 2 – качественные критерии;
- уровень 3 - метрики;
- уровень 4 – описание оценочных элементов или единичных показателей.
Вывод по разделу
Рассмотрев российские и международные стандарты языков прогрммирования были сделны выводы:
- российские ГОСТ - стандарты, регламентирующие процесс разработки программ с использованием языков программирования, разработаны на основе стандартов IEEE, ISO;
- российские стандарты, регламентирующие процесс разработки с использованием сред программирования отечественной разработки, разработаны самостоятельно без ссылок на IEEE, ISO;
- международные стандарты языков программирования, над созданием которых работают международные лаборатории, используются россйскими разработчиками в процессе программирования.
Заключение
В рамках данной работы проведен анализ российских и международных стандартов использования языков программирования.
Далее проведена группировка стандартов на стандарты, регламентирующие процессы разработки программных продуктов и систем и стандарты, описывающие процессы использования языков программирования по отдельности.
Далее был проведен анализ методологий и методов проектирования программных средств и проведена их классификация, рассмотрены типы языков программирования, их структура С помощью классификации проведен анализ множества методов в процессе решения задач по выбору оптимального набора моделей, необходимых для анализа и проектирования систем с использованием соответствующих языков программирования. На основании классификации проведен анализ применимости языков программирования для групп технических и специальных процессов жизненного цикла программных средств.