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

Введение в методологию системо- и схемотехнического проектирования электронных и радиоэлектронных средств

..pdf
Скачиваний:
16
Добавлен:
05.02.2023
Размер:
5.54 Mб
Скачать

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

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

Автоматизация — это передача функций управления и контроля от человека машине. Интеллектуализация, цифровизация и компьютеризация означает расширение использования средств искусственного интеллекта для решения технических задач. Анализ этих тенденций показывает, что они непосредственно влияют на снижение доли физического и умственного труда, а также сокращение рабочего времени; связь с другими целями общества проявляется косвенно.

Связь тенденций развития техники с целями общества станет яснее, если обозначить важнейшие отрасли техники, которые определяют технический уровень развития:

а) информатика, электроника и вычислительная техника; б) ракетно-космическая техника; в) атомная энергетика; г) транспорт и связь;

д) охрана окружающей среды; е) медицинская техника;

ж) исследования новых пространств (включая космические, морские, океанические).

Достижения в этих областях должны повышать благосостояние людей и охранять их здоровье, удовлетворять их потребности и делать жизнь более полной.

181

4.4 Программные системы

Развитие информационных технологий (ИТ) — основной элемент явления, которое многие называют «информационной революцией» и которое до неузнаваемости меняет облик современной промышленности, торговли, финансов, образования, развлечений — в общем, самого образа жизни. В основе этих выдающихся достижений лежит возможность использования информационных технологий для автоматизации решения задач, раньше выполнявшихся людьми, а также для осуществления более сложных операций, чем было возможно до этого, — и притом быстрее и намного точнее. Мало того что эти возможности вызвали к жизни целое семейство новых сложных программноуправляемых систем, они еще и встраиваются во все виды транспортных средств, бытовых приборов и даже в детские игрушки.

Термины «программная инженерия» и «инженерия программных систем» — не синонимы. Первый относится к разработке и поставке программных продуктов, автономных или встроенных, а второй — к использованию определенных принципов применительно к программной инженерии как отрасли знания.

Необходимо рассмотреть, как программная инженерия соотносится с системами, т.е. как программное обеспечение используется для реализации требований, функциональных возможностей и поведения более крупной системы.

В программном обеспечении выделяют три основных компонента

[7, 62]:

команды: «компьютерная программа», или просто «код», состоит из списка команд, выполняемых различными аппаратными платформами для предоставления полезных функций и операций. Команды различаются по уровню детальности, синтаксису и языку;

структуры данных: наряду с набором команд имеются определения структур данных, которые должны содержать информацию, подлежащую обработке и преобразованию посредством команд;

документация: программное обеспечение включает обязательную документацию, в которой описывается, как оно работает и как им пользоваться.

182

В совокупности три этих компонента и называются «программным обеспечением» (ПО). Программная система — это программное обеспечение (в определенном выше смысле), которое к тому же удовлетворяет определению системы.

Преодоление сложности и абстрактности. Одно из наиболее существенных различий между разработкой ПО и разработкой оборудования заключается в абстрактной природе ПО. Поскольку выполнение многих критических функций в современных ТС зависит от ПО, будет уместно уделить внимание уникальным проблемам разработки программных компонентов сложных систем [7].

Один из возможных взглядов на программную инженерию состоит в том, что программный инженер — это просто еще один инженерпроектировщик, отвечающий за часть функциональных возможностей системы. После того как произведена привязка функций к ПО, программному инженеру поручают реализовать функции и поведение посредством программного кода. Играя такую роль, программный инженер работает вместе со своими коллегами в инженерных подразделениях и занимается разработкой подсистем и компонентов, только его инструментом является программный код, а не физические устройства и детали. На рисунке 34 показана принятая IEEE4- сообществом схема процесса инженерии программных систем, на которой этот взгляд представлен в виде традиционной V-образной диаграммы.

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

К сожалению, такой взгляд поощряет «независимость» групп разработки системы и ПО. Складывается впечатление, будто после завершения проектирования инженеры по оборудованию и по программному обеспечению приступают к своим собственным частям

4 IEEE – Institute of Electrical and Electronics Engineers (Институт инженеров электротехники и электроники).

183

разработки. Однако природа ПО такова, что стратегию его разработки необходимо определить на ранних стадиях, а именно на этапе формирования общесистемных решений, который на V-образной диаграмме является вторым из крупных шагов. Если на этом этапе (то есть тогда, когда функциональные возможности и компоненты подсистем привязываются к аппаратной или программной реализации) или в его конце оборудование и ПО «расщеплены», то различия в процессах разработки и реализации этих компонентов приведут к тому, что завершение разработки различных частей систем не состыкуется по времени.

Рисунок 34 — Процесс инженерии программных систем согласно IEEE

Поэтому разработку ПО необходимо интегрировать раньше, чем было принято по традиции, а именно на этапе анализа системы. Хотя на рисунке это и не показано, построение архитектуры системы теперь становится важной частью того, что этот процесс вносит в существо анализа системы. Именно в рамках построения архитектуры системы следует рассматривать инженерию программных систем.

184

Роль программного обеспечения в ТС. Разработка программно-

го обеспечения (вторая половина ХХ века) совпала по времени с развитием технологии цифровых вычислений, на которую в свою очередь оказал влияние прогресс в полупроводниковых технологиях. ПО — это управляющий и обрабатывающий элемент в системах сбора и обработки данных. Это именно то средство, с помощью которого компьютеру сообщается, как поступить с источником данных, чтобы преобразовать данные в полезную информацию или действие. На заре развития компьютеров программы применялись для расчета артиллерийских таблиц на очень примитивных машинах, результаты этих расчетов использовались при проведении боевых действий во время Второй мировой войны. В наши дни ПО применяется для управления самыми разными компьютерами (от одиночных систем на кристалле до невообразимо мощных суперкомпьютеров), выполняющими бесконечно разнообразные задачи. Такая гибкость и потенциальная мощь делает ПО незаменимой составной частью современных ТС — как простых, так и сложных.

Хотя ПО и оборудование компьютера неразрывно связаны, пути их развития сильно различаются. Компьютеры, состоящие преимущественно из полупроводниковых интегральных схем, обычно стандартизированы в плане конструкции и функционирования. А все требования конкретных приложений к обработке включены в ПО. Благодаря такому разделению функций стало возможно направить огромные ресурсы на повышение быстродействия и функциональных возможностей компьютеров, не отказываясь от стандартизации и сохраняя стоимость компьютеров низкой за счет массового производства и продажи. Тем временем для удовлетворения возрастающих потребностей росли размеры и сложность ПО, которое постепенно становится преобладающей частью большинства сложных систем.

Традиционный взгляд на роль ПО в компьютерной системе представлен на рисунке 35. Здесь показано разбиение ПО на уровни и его связи с пользователем и машиной, на которой оно исполняется. В роли пользователя может выступать как человек-оператор, так и другой компьютер. Видно, что пользователь взаимодействует со всеми уровнями через различные интерфейсы. На рисунке показано, что пользовательский интерфейс охватывает все уровни ПО и в минимальной

185

степени позволяет взаимодействовать напрямую с оборудованием. ПО на прикладном уровне составляет существо компьютерной системы, это именно то приложение, которое поддерживается остальными уровнями.

Рисунок 35 — Иерархия программного обеспечения

Современные программные системы редко размещаются на одиночном автономном компьютере, как это показано на рисунке. В наши дни ПО распределено по сложноустроенной сети, состоящей из маршрутизаторов, серверов и клиентов, образуя многоуровневую архитектуру систем. На рисунке 36 изображена упрощенная трехуровневая архитектура, в которой клиенты венчают последовательность сетей. Внутри каждого компонента этой архитектуры мы увидим иерархию, подобную показанной на рисунке 35.

Рисунок 36 — Примерная трехуровневая архитектура

186

Как нетрудно понять, сложность компьютерных систем (которые не следует называть вычислительными сетями) существенно возросла. ПО больше не привязано к какой-либо одной платформе или даже к одному типу платформ, а должно работать в гетерогенной среде, включающей различные аппаратные платформы. Более того, программы управляют сложными сетями, а не только отдельными платформами.

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

Типы программного обеспечения. За последние несколько деся-

тилетий было много попыток предложить классификацию ПО, но согласно [7] почти все категории можно отнести к одному из трех общих типов:

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

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

прикладное ПО: эта категория ПО предоставляет службы (услуги) для удовлетворения конкретной потребности и рассматривается как «автономное». Обычно приложения взаимодействуют с системным и встроенным ПО, являясь потребителями их услуг. В качестве примеров можно назвать популярные офисные пакеты программ —

187

текстовые процессоры, электронные таблицы и программы для подготовки презентаций.

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

Таблица 13 — Типы программного обеспечения

Тип ПО

Краткое описание

Примеры

Системное

Предоставляет службы (услуги)

Операционная система,

 

другим программам

диспетчер сети

Встроенное

Является частью более крупной

Графический интерфейс

 

системы и реализует конкретные

пользователя,

 

функции или задачи

навигационное ПО

Прикладное

Автономная программа,

ПО для бизнеса, средства

 

удовлетворяющая конкретную

обработки данных, средст-

 

потребность

ва управления процессами

Научно-

Использует сложные алгоритмы

Имитационное моделиро-

инженерное

для решения трудных научных

вание, автоматизирован-

 

и инженерных задач

ное проектирование

Линейка

Предназначено для использования

Обработка текстов,

продуктов

различными категориями

электронные таблицы,

 

пользователей в разных средах

мультимедиа

Веб-

Предназначено специально для

Интернет-браузеры, ПО

приложения

использования в глобальных сетях

для создания веб-сайтов

Искусст-

Отличительной чертой является

Робототехника, эксперт-

венный

применение нечисленных алгорит-

ные системы, распознава-

интеллект

мов для решения трудных задач

ние образов, игры

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

188

встроенными программными средствами (software-embedded systems), программно насыщенными системами (software-intensive systems) и вычислительно-ориентированными системами (computing-intensive systems). Термин «преимущественно программная система» (softwaredominated system) употребляется для обозначения программных систем в целом.

Характеристики всех трех категорий преимущественно программных систем и известные примеры приведены в таблице 14.

Таблица 14 — Категории преимущественно программных систем

Характери-

Встроенные

Программно

Вычислительно-

стика

программные

насыщенные

ориентированные

 

системы

системы

системы

Цель

Автоматизация

Манипуляции

Решение трудных

 

сложных подсистем

большими масси-

задач, моделиро-

 

для достижения

вами информации

вание сложных

 

более высокого

для поддержки

систем путем

 

быстродействия

решений или при-

расчетов

 

и точности

обретения знаний

и имитации

Функции

Алгоритмические,

Транзакционные

Вычислительные

 

логические

 

 

Входы

Данные от датчи-

Информация,

Численные

 

ков, регуляторов

объекты

данные

Обработка

Вычисления

Манипуляция,

Вычисления

 

в реальном

графический

не в реальном

 

масштабе времени

интерфейс пользо-

масштабе времени

 

 

вателя, обмен

 

 

 

данными по сети

 

Выходы

Действия,

Информация,

Информация

 

продукция

объекты

 

Временные

Реальное время,

Нерегулярно

По расписанию

характери-

непрерывно

 

 

стики

 

 

 

Примеры

Управление

Банковские сети,

Прогноз погоды,

 

воздушным

системы

прогноз поражаю-

 

движением,

резервирования

щего действия

 

системы вооруже-

авиабилетов,

ядерного оружия,

 

ний, аэронавигация

веб-приложения

математическое

 

и управление

 

и имитационное

 

летательным

 

моделирование

 

аппаратом

 

 

189

Характери-

Встроенные

Программно

Вычислительно-

стика

программные

насыщенные

ориентированные

 

системы

системы

системы

Оборудова-

Мини-

N-уровневые

Суперкомпьютеры

ние

и микропроцессоры

архитектуры

 

Типичные

Операторы

Руководители

Научные работни-

пользователи

 

различных уровней

ки, аналитики

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

Примерами могут служить транспортные средства, радиолокационные системы, станки с автоматическим управлением и т. д.

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

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

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

В качестве примеров можно назвать системы автоматизированной обработки информации, в том числе систему резервирования авиабилетов, системы распределенной торговли, системы управления финансовой деятельностью и т. д.

190