 Новая эпоха в электронном мире перевернула прежние предположения с ног на голову - прежние подходы к бизнесу и программному обеспечению более не смогут приносить успех. Электронный мир теперь распределен, параллелен и взаимосвязан. Распределен - поскольку информация размещена во многих различных местах по всему миру. Времена единых центральных компьютеров давно прошли. Параллелен - поскольку деятельность происходит децентрализовано и одновременно. Одного потока управления теперь недостаточно ни для принятия делового решения, ни для выполнения программ. Взаимосвязан - поскольку какое-либо действие в одном месте может значительно повлиять на окружающий мир. Простые компьютерные системы, языки и модели прошлого не могут соответствовать современным требованиям.
В этом новом мире существует множество движущих факторов. Возрастает число компаний, доверяющих критически значимые операции системам распределенных объектов предприятия. Эти объектно-ориентированные системы содержат распределенные серверы и базы данных, объединенные для поддержки параллельных операций. Все большее число отраслей для осуществления своей деятельности вынуждено взаимодействовать в режиме реального времени. Банки, авиалинии и телефонные компании не могут работать без интенсивного обмена информацией между всеми действующими лицами. Наконец, устройства реального времени встречаются теперь повсюду - в машинах, приборах, бытовой электронике, зданиях. Проблемы их работы перестали быть узкой специализированной областью и касаются теперь каждого из нас.
Значительное понижение цен на микропроцессоры и полупроводниковые микросхемы и приборы и столь же существенное увеличение производительности микропроцессоров, наблюдаемые на протяжении нескольких лет, сделали рентабельными распределенные системы и системы реального времени на базе микроконтроллерных устройств. Сегодня большинство коммерческих, промышленных, военных, медицинских и бытовых товаров снабжаются микропроцессорами и целиком либо в значительной части управляются программами. Такие системы встречаются в микроволновых печах и видеомагнитофонах, в телефонах и телевизорах, в автомобилях и самолетах, в подводных лодках и космических кораблях, в промышленных автоматах и банкоматах, в системах диагностики пациентов и системах управления производством, в системах управления практически всех видов транспорта и системах управления лифтами, в контроллерах роботов и в электронной почте, в коммерции и в системах мониторинга, в “интеллектуальных” транспортных и информационных магистралях… Список можно продолжать до бесконечности. Все это параллельные системы, а многие из них являются к тому же распределенными или системами реального времени ( Real - time system ).
Параллельные приложения
На заре развития вычислительной техники компьютерные приложения являлись в основном пакетными заданиями. Программы были последовательными и работали в автономном режиме. Все действия последовательной программы производятся строго поочередно. Теперь же, когда имеется огромное число интерактивных программ и отчетливо прослеживается тенденция перехода к распределенным микрокомпьютерным системам, видно, что многие приложения по природе своей параллельны, поскольку определенные виды деятельности в них происходят логически одновременно. Представление такого параллелизма в последовательной программе ведет к усложнению ее структуры, гораздо проще назначить каждому виду деятельности отдельную задачу. Несколько подобных задач выполняются одновременно, то есть параллельно, нередко они взаимодействуют, обмениваются информацией, синхронизируют свою работу.
Растет количество систем, в том числе распределенных и реального времени, в которых роль параллелизма очень велика. Для параллельного приложения характерно наличие многих задач, выполняемых одновременно. При этом порядок следования внешних событий часто непредсказуем, и периоды обработки таких событий могут перекрываться. Так, с многопользовательской интерактивной системой работают сразу несколько человек, и невозможно предсказать, от кого придет следующее событие ввода.
Последовательное приложение – это последовательная программа, которая состоит из пассивных объектов и имеет только один поток управления. Когда один объект вызывает операцию другого объекта, управление передается от вызвавшей операции к вызванной. После того как вызванная операция завершает выполнение, управление возвращается вызвавшей операции. В последовательном приложении существует только синхронная передача сообщений.
В параллельном приложении, как правило, есть несколько активных объектов – каждый со своим потоком управления. В этом случае поддерживается асинхронная передача сообщений: активный объект-отправитель может послать асинхронное сообщение активному объекту-получателю, а затем продолжить выполнение программы вне зависимости от того, дошла ли информация до адресата. Если объект-получатель в момент прихода сообщения занят выполнением другой работы, то сообщение ставится в очередь.
Концепция параллельной работы задач широко распространена при проектировании операционных систем, баз данных, систем реального времени, интерактивных и распределенных систем. Основная сложность заключается в том, чтобы разбить приложение на параллельно выполняемые задачи и предоставить средства обмена сообщениями и синхронизации этих задач между собой.
Системы реального времени
Системы реального времени – это параллельные системы с временными ограничениями. Они широко распространены в коммерческих, военных и промышленных приложениях. Термин “система реального времени” обычно относится к системе в целом, включающей приложение реального времени, операционную систему реального времени, подсистему ввода/вывода реального времени, а также драйверы специальных устройств, управляющие работой различных датчиков (входных устройств) и механизмов (выходных устройств).
Системы реального времени часто очень сложны, так как их работа связана с многочисленными независимыми потоками входных событий и продуцированием различной выходной информации. Частота поступлений событий обычно непредсказуема, однако реагировать необходимо достаточно быстро, чтобы соблюсти временные ограничения, сформулированные в требованиях к программе. Нередко нельзя предугадать и порядок поступления событий. Кроме того, входная нагрузка может значительно и неожиданно изменяться.

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

Распределенная обработка имеет следующие преимущества:
- - повышенная доступность. Если некоторые узлы временно недоступны, то операция выполняется в редуцированной конфигурации. Отсутствует единая точка отказа;
- - гибкая конфигурация. Одно и то же приложение допустимо сконфигурировать различными способами, используя различное число узлов;
- - возможность расширения системы. При необходимости систему легко расширить за счет добавления новых узлов;
- - уменьшение затрат. Зачастую распределенное решение оказывается дешевле централизованного, особенно если принять во внимание стремительно уменьшающуюся стоимость и возрастающую производительность микропроцессоров.
CAN-интерфейс
В настоящее время успешное развитие любого современного предприятия невозможно без использования интегрированных компьютерных систем и технологий. Важнейшей частью таких систем являются сети для сбора данных, обмена информацией, управления технологическим оборудованием, контроля производственных процессов, организации быта и досуга и т.д. Требования к параметрам сетей разнятся в зависимости от их применения, однако, для любой сети важнейшими являются адаптивность, живучесть и открытость. Под адаптивностью понимают возможность настройки при изменении конфигурации сети или её элементов. Живучесть предполагает способность выполнять установленные функции в условиях воздействия внешней среды или отказов компонентов системы. Открытость сети означает возможность её модернизации без нарушения функционирования.
Значительная часть приложений сетевых технологий связана с обслуживанием бизнеса и производства, однако, уже сейчас они находят применение и в быту. Конвергенция компьютерной отрасли и индустрии бытовой электроники открывает перед производителями новые, небывалые перспективы.
В настоящее время существует множество различных сетевых технологий. Однако, широкое внедрение микропроцессоров и микроконтроллеров в самое различное оборудование, потребовало наличие сетей, объединяющих разнообразные электронные устройства. Одним из таких мощных и высокоэффективных решений организации сети является сетевой интерфейс CAN (Controller Area Network). Уже сегодня CAN-интерфейс можно считать стандартным последовательным интерфейсом микроконтроллеров, используемым в любых типах распределённых встроенных приложений, т.е. CAN представляет собой систему распределенных сообщений. Благодаря своим отличительным особенностям, доступности недорогих сетевых контроллеров от многих изготовителей, а также простоте осуществления разработки сетевого решения, CAN-протокол сегодня применяется:
- в любом типе мобильной системы (автомобили, автобусы, поезда, самолёты, корабли и т.п.);
- на производстве (от станков до систем управления роботами и телеметрии);
- в системах контроля и управления (контроль пожарной безопасности и управление системами пожаротушения, контроль и управление системами искусственного климата (температура, влажность, освещенность, кондиционирование воздуха), контроль и управление камерами слежения, управление устройствами освещения, охраны и сигнализации, сбор данных от различных устройств и датчиков, и прочее);
- в медицине;
- в быту (позволяет связать воедино аудио- и видеоустройства, телефон, компьютер и т.д.).
Приведём наиболее доступный пример. Каждый современный автомобиль оборудуется бортовой системой управления на основе CAN-интерфейса. Бортовая система автомобиля представляет собой определённое количество модулей. Каждый модуль отвечает за “свою” систему контроля или управления (например, антиблокировочная система, системы зажигания и управления двигателем, топливная система, блокировка дифференциала, управление светом, приводами зеркал, стеклоподъёмниками, системы безопасности и комфорта т.д.). Эти модули связаны между собой и с пультом управления в салоне автомобиля всего лишь двух(трёх)проводной шиной. Сейчас дешевле, надёжнее и удобнее в эксплуатации установить в каждый модуль микроконтроллер, чем “тянуть” огромное количество проводов к каждому блоку автомобиля. Кроме того, бортовая система позволяет проводить компьютерную диагностику автомобиля, управлять сигнализацией, аудио- и видеоустройствами.
Чем же так привлекает CAN-интерфейс разработчиков и пользователей? Вот некоторые достоинства и преимущества данной сети:
- простота в монтаже и наладке (физическая шина представляет собой витую пару (экранированную или неэкранированную) и общий провод, т.е. всего 3 провода);
- высокая надёжность (контроллер обеспечивает работу в сети, даже если любой из 3-х проводов в шине оборван или закорочен (на питание или на общий провод); даже при обрыве 2-х проводов часть функций основной системы может быть реализована в каждой из подсистем, созданных обрывом);
- сетевая гибкость и лёгкость расширения (новые устройства могут добавляться к сети без изменения уже существующих программных средств);
- приоритетность передачи сообщений (изначально каждому сообщению присваивается свой приоритет, и если одновременно появляются два сообщения, то вначале произойдет передача сообщения с более высоким приоритетом);
- возможность одновременной передачи сообщений сразу несколькими устройствами;
- наличие механизма обнаружения и ограничения ошибок при передаче информации (помехоустойчивость);
- высокая скорость передачи данных;
- обеспечение обмена данных в реальном времени;
- возможность создания полностью синхронной системы.
Это далеко не полный перечень параметров сетей с CAN-интерфейсом, но уже это позволяет отнести данную систему к наиболее перспективной и многообещающей. Например, применение в системе модулей, осуществляющих соединение CAN-сети с другими сетями, с модемом, терминалом, компьютером и т.д., позволяет реализовать систему удаленного (дистанционного) контроля и управления оборудованием и персоналом.

Обьектно-событийная модель программирования
Недавние успехи в области разработки аппаратного обеспечения и средств связи привели к лавинообразному росту числа параллельных и распределенных систем, а также систем реального времени. Это, в свою очередь, способствовало изменению требований, предъявляемых к программному обеспечению.
В последнее время наблюдаются тенденции к сближению двух крупнейших областей разработки программного обеспечения (ПО) - информационных систем и управляющих систем реального времени. В крупных информационных системах возникает проблема адекватности реакций ПО при обслуживании большого числа клиентов. Управляющие системы реального времени, как правило, не только управляют каким-то специфическим оборудованием, но и работают с базами данных. Для создания такого рода приложений нужно объединить объектно-ориентированные концепции с методами параллельной обработки.
Основной структурной единицей системы реального времени является объект. Объекты взаимодействуют друг с другом. Объекты распределены - каждый поддерживает свое собственное состояние, отличное от других. Объекты параллельны - каждый из них потенциально может действовать параллельно с другими. Объекты связаны - каждый из них может отправлять другим сообщения через сеть соединений. (Опытные разработчики знают, какие трудности стоят за каждым из этих терминов по отдельности, а создание систем, обладающих всеми тремя характеристиками, – одна из наиболее сложных инженерных задач.)
Компьютерная инженерия
Новый электронный мир несет с собой большие возможности, но они даются ценой высоких затрат на разработку. В чрезвычайно сложных взаимодействиях параллельных распределенных систем очень трудно разобраться, не говоря уже о предсказании. С распределенной системы нельзя снять резервную копию и ее нельзя перезапустить, если в какой-либо части обнаружится сбой. Система в целом должна работать, несмотря на сбои, ошибки или порчу данных в некоторых ее частях. Большинство современных систем являются системами реального времени. Большое значение имеет согласованность по времени. И в завершение всего, производительность сложных систем часто бывает нелинейной и не может быть предсказана путем простой экстраполяции.
Как же справиться со всеми этими проблемами? Для этого можно использовать те же методы, которые применяются инженерами любой области: моделирование до построения, создание архитектуры на основе прежнего опыта, процесс, основанный на оптимальных методиках, повторное использование компонентов, а также инструменты, позволяющие повысить эффективность использования времени и навыков разработчика.
Возрастающая сложность современного программного обеспечения привела к созданию специальной научной дисциплины - компьютерной инженерии (Software Engineering), основной задачей которой является создание эффективных методов разработки сложного ПО (инженерное проектирование программного обеспечения).
В традиционных инженерных дисциплинах всегда использовались последние достижения прикладной математики, гарантирующие, что проект будет отвечать поставленным требованиям при приемлемых затратах. Основываясь на оценках, полученных с помощью математической модели, можно достаточно уверенно приступать, например, к конструированию моста. Однако применительно к программному обеспечению проектирование оказывается преимущественно неформальным процессом, для которого зачастую нет моделей и методов прогнозирования результата. С этой точки зрения весьма поучительно было бы сравнить эволюцию программного и аппаратного обеспечения на протяжении нескольких последних десятилетий. Если аппаратные устройства со временем становились миниатюрнее, быстрее и дешевле, то программы, напротив, оказывались все более объемными, медленными, дорогими и менее надежными. Одна из основных причин такого положения состоит в том, что в основе проектирования современной аппаратуры лежит использование прогностических моделей.
Отсутствие фундаментальных инженерных принципов в практике разработки ПО можно отчасти объяснить изменчивой, в чем-то даже хаотичной, природой программ, что сильно затрудняет математическое моделирование. У большинства практикующих программистов создается впечатление, что важен только сам код, а потому они не разделяют процессы проектирования и кодирования. Как это ни странно, те же самые люди прекрасно понимают разницу между проектированием и сборкой, например, авиалайнера. Дополнительным препятствием служит то, что некоторые из них ориентированы на традиционное процедурное программирование. Хотя никаких фундаментальных зависимостей от такой модели не имеется, проблема привязки к более современной, объектно-ориентированной модели все же существует.
На этапе проектного моделирования продумывается архитектура системы. Аналитическая модель, в которой основное внимание уделялось предметной области, соотносится со средой, где будет эксплуатироваться программа, и с проектной моделью, где акцент ставится на область решения. Формулируются критерии разбиения системы на подсистемы. В случае распределенной системы наиболее важным является разделение ответственности между узлами системы, в том числе с точки зрения централизации и распределения данных и управления. Кроме того, проектируются интерфейсы для обмена сообщениями, рассматриваются синхронные, асинхронные, групповые коммуникации и сервисы. Затем наступает черед проектирования отдельных подсистем. Проектирование параллельных приложений, в том числе и систем реального времени, сводится в основном к выделению параллельно выполняемых объектно-ориентированных задач. Также создаются интерфейсы для синхронизации и обмена данными между задачами.
Заключение
Рыночная глобализация становится всеобъемлющей, и это означает, что для того, чтобы остаться в бизнесе и быть конкурентоспособными, производственные отрасли промышленности должны обращать большее внимание на проблемы качества и эффективности. В свою очередь, это сосредотачивает внимание на развитии усовершенствованных систем управления, чтобы процессы протекали наилучшим образом. В частности, современные системы управления — ключ для совершенствования технологии, обеспечивающей:
- улучшенное качество изделия;
- минимизацию потерь;
- увеличение производительности для установленных мощностей;
- более высокий уровень безопасности;
- и т.д. и т.п.
Хассан Гома. Проектирование систем реального времени, распределенных и параллельных приложений.
С.А.Третьяков. Controller Area Network ( CAN ) – локальная сеть контроллеров.
Г.К.Гудвин, С.Ф.Гребе, М.Э.Сальгадо. Проектирование систем управления.
Вернуться к списку статей
|