Файл публикации (формат Adobe PDF, размер 122 Кб)

advertisement
РАЗДЕЛЕНИЕ СИСТЕМНЫХ И ПРИКЛАДНЫХ ЗАДАЧ
ПРИ РАЗРАБОТКЕ ИНФОРМАЦИОННО-УПРАВЛЯЮЩИХ
СИСТЕМ
В.В. Окулевич
Повышение эффективности разработки информационно-управляющих систем
является актуальной задачей. Одним из способов повышения эффективности
производства является разделение труда.
В ИУС можно условно выделить системную и прикладную части. Системная
часть ИУС – эта та часть, которая непосредственно не относится к главной
функциональности системы. Прикладная часть системы как раз и обеспечивает
выполнение пользовательских процессов. Можно сказать, что системная часть является
базисом для прикладной части. Такая точка зрения часто выражается в графических
представлениях самых разных систем.
Поэтому первым признаком, по которому следует определять принадлежность
решаемой задач к тому или иному уровню системы, является ответ на вопрос, понятна
и важна ли она для конечного пользователя системы.
Правильное разделение задач, решаемых в системе, на пользовательские и
прикладные весьма важно при распределении работ по проектированию и разработке
ИУС. Специфика задач системного уровня состоит в том, что они предоставляют
платформу для решения прикладных задач. Таким образом, невозможно обеспечить
решение прикладных задач, не решив ряд системных вопросов. С другой стороны,
решение даже самых интересных системных задач должно быть востребованным. Без
этого они не принесут никакой пользы, и дальнейшее их решение будет вряд ли
возможным по материальным соображениям. Таким образом, очевидно, что существует
неразрывная взаимосвязь между задачами системного и прикладного уровней.
Разделив системную и прикладную части архитектуры ИУС, далее можно
проводить разделение системы на более простые функциональные блоки с явно (и, по
возможности, точно) определенными связями между блоками (интерфейсами). За счет
этого будет возможно добиться удачного распределения работы по созданию частей
системы между группами разработчиков и, далее, между разработчиками в группах для
максимально эффективного использования их способностей.
Кроме того, это должно улучшить процесс производства ИУС, поскольку каждый
из разработчиков будет заниматься разработкой своей части системы в соответствии со
своей специализацией.
Важно заметить, что подобное деление создает условия для повторного
использования элементов предыдущих разработок. Процесс подразумевает фиксацию
интерфейсов между элементами системы (в первую очередь, за счет явного выделения
и фиксации языков в системе). Таким образом, создаются условия для выделения
независимых компонент и удачных решений, которые могут накапливаться и
применяться в последующих разработках.
Использование разделения труда в разработке ИУС относительно ново из-за
специфики разрабатываемых систем. В настоящее время многие специалисты данной
области не могут погружаться в современные технологии и инструменты. Один и тот
же специалист вынужден заниматься очень большим количеством задач.
Одновременно приходится заниматься и прикладной, и системной составляющей.
Такая технология разработки ведет к тому, что использование современных средств
или совсем отсутствует, или неэффективно, или попросту наивно и даже неуместно.
Решение системных и прикладных задач в общем случае требует различных
знаний, умений и навыков. Скажем, для организации обмена данными
пользовательских задач между собой в распределенной сетевой системе требуется
95
использование сервисов системного уровня. При этом приходится решать вопросы
организации взаимодействия асинхронных задач, отслеживать целостность и
непротиворечивость пользовательских данных, организовывать обработку ошибок
передачи, предоставлять удобный (т.е., как правило, достаточно простой) интерфейс
обмена данными для пользовательских задач. При этом даже для систем, решающих
разные классы задач, оказывается много общих элементов в системных уровнях.
Поэтому существует значительных потенциал для организации повторного
использования удачных решений в системном уровне.
Пользовательские задачи решают проблемы прикладного уровня. Для систем,
применяющихся в различных областях, характерно значительное различие в типах
используемых алгоритмов. Важно отметить, что в каждой предметной области
существуют свои приемы для обмена информацией (языки) и решения специфичных
для данной области задач.
Специалисты в той или иной прикладной области общаются между собой и
размышляют, как правило, на специальном языке. Для химика – это язык химических
реакций и формул, для математика – математический язык, для специалиста в области
железнодорожной автоматике – язык релейно-контактных схем и логико-временных
зависимостей. Для эффективного решения данными специалистами прикладных задач
предпочтительно предоставить им возможность выражать решения именно на нем.
С другой стороны, тот вычислительный базис, который предоставляется
современной вычислительной техникой, плохо подходит или вообще не подходит для
формализации прикладных задач. В самом деле, самыми подходящими средствами для
создания программ с минимальной избыточностью являются компиляторы и
интерпретаторы различных языков программирования. Эти современные инструменты
являются обычно мощными и универсальными средствами. Однако оборотной
стороной универсальности является сложность, влекущая за собой потребность в
специальных знаниях и умениях для эффективного использования. Таким образом,
возникает разрыв между языком предметной области и языком вычислительной
платформы.
Под
языком предметной области здесь понимается язык, используемый
специалистами в данной области для описания типовых задач и их решения.
При разработке используется некоторое множество языков вычислительной
платформы. Это те языки, на которых осуществляется реализация алгоритмов
предметной области в виде, пригодном для подготовки к исполнению. Для множества
современных универсальных вычислительных платформ языками исполнительной
платформы являются языки программирования низкого и высокого уровней. Кроме
того, в их качестве могут использоваться различные языки описания аппаратуры
(Verilog, HDL, AHDL и др.).
Очевидно, что в общем случае язык исполнительной платформы не совпадает с
языком предметной области. Устранение данного разрыва обеспечивает операционная
среда. Операционная среда – это набор механизмов, обеспечивающих выполнение
прикладных задач на данной вычислительной платформе. При этом считается, что
решение прикладной задачи реализовано в терминах языка описания решения
прикладной задачи. Операционная среда основывается на языке исполнительной
платформы. Можно говорить о том, что верхняя граница операционной среды – это тот
базис, который предоставлен разработчикам прикладных алгоритмов. Ясно, что в
зависимости от особенностей решаемой прикладной задачи операционная среда будет
сильно изменяться.
Эффективность устранения разрыва при помощи операционной среды зависит от:
• масштаба системы,
• типа производства – штучное, мелкосерийное, крупносерийное,
96
•
•
•
•
•
особенностей разрабатываемой системы,
характеристик прикладных задач,
характеристик вычислительной платформы,
квалификации и количества разработчиков,
сроков разработки.
Операционная среда должна удовлетворять ряду требований:
1. соответствовать предметной области;
2. удовлетворять требованиям, предъявляемым к целевой системе (требованиям к
ИУС);
3. использовать эффективный и удобный язык для описания задачи;
4. быть эффективной на этапе исполнения;
5. позволять пользователю операционной среды абстрагироваться от особенностей
конкретной используемой вычислительной платформы;
6. быть переносима на различные вычислительные платформы;
7. позволять строить масштабируемые конфигурации;
8. быть достаточно универсальной и гибкой для внесения новых возможностей.
Рассмотрим перечисленные требования подробнее. Соответствие предметной
области подразумевает предоставление полного базиса для решения данного класса
прикладных задач. Полнота базиса предполагает возможности для описания всех
необходимых элементов предметной области и требуемых операций над ними.
Под удовлетворением требований, предъявляемым к целевой системе, понимается
способность данной операционной среды выполнять ограничения, наложенные на
систему на допустимом наборе прикладных задач. Перечислим типичные требования
для информационно-управляющих систем:
• безопасность,
• надежность,
• функционирование в реальном масштабе времени,
• непрерывность функционирования,
• учет возможных типов использования системы с точки зрения присутствия
оператора в контуре управления (автоматическая/автоматизированная система),
• специфические способы разработки ИУС и ее отладки.
Использование эффективного и удобного языка для описания прикладных задач
означает, что разработчики прикладного уровня могут с достаточной степенью
эффективности и не испытывая неудобств применить его для решения целевых задач.
Невыполнение данного требования создает трудности и взаимное непонимание
прикладных и системных разработчиков. Кроме того, создаются дополнительные
сложности при анализе элементов системы с помощью специалистов в области
прикладных задач, что влечет за собой трудность верификации системы и поиск
ошибок в прикладных задачах.
Эффективность на этапе исполнения означает, что при функционировании
системы на обеспечение работы механизмов операционной среды затрачиваются
приемлемое количество ресурсов.
Под абстрагированием от особенностей вычислительной платформы
подразумевается сокрытие деталей реализации того программно-аппаратного
комплекса, который используется в целевой системе. Несоблюдение данного
требования опасно сосредоточением внимания прикладных разработчиков и экспертов
на несущественных деталях системного уровня. Кроме того, оно и ведет к созданию
решений, использующих уникальные особенности той или иной вычислительной
платформы. Это может затруднить выполнение требования переносимости, которое
актуально при работе в современном мире с динамично изменяющейся
вычислительной базой. Невозможность переноса существующих наработок на другую
97
платформу может стать причиной затруднения или даже отказа от их использования.
Перенос потребует переработки и последующей проверки, а, значит, и материальных
затрат.
Требование масштабируемости в применении к операционной среде означает
возможность решать на ее основе задачи различной размерности. При увеличении
размерности решаемой прикладной задачи должна существовать возможность
эффективно дополнить операционную среду необходимыми особенностями.
И, наконец, требование универсальности и гибкости для внесения новых
возможностей подразумевает возможность простого изменения операционной среды
при необходимости реализации новых свойств системы. Данное требование можно
трактовать как открытость операционной среды для модификации.
Разумеется, удовлетворение всем этим требованиям сразу является невозможным
делом. Большинство заявленных требований противоречат друг другу. Поэтому
разработчикам приходится всегда искать некоторый разумный компромисс,
основываясь на своем видении проблемы. Кроме того, степень соответствия
заявленным требованиям может меняться и, как правило, меняется, в ходе более-менее
крупного проекта. Часто необходимость удовлетворить одно, более приоритетное
требование заставляет разработчиков делать это за счет других параметров системы. К
примеру, обнаруженная невозможность обеспечить функционирование системы в
реальном масштабе времени может быть разрешена с использованием низкоуровневых,
специфичных для данной вычислительной платформы механизмов. Таким образом,
следует говорить о наличии в каждой конкретной разработке собственных приоритетов
в отношении требований к операционной среде.
Литература
1. Фаулер М., Скотт К. UML в кратком изложении. Применение стандартного языка
объектного моделирования: Пер. с англ. М.: Мир, 1999. 191 с., ил.
2. Страуструп Б. Язык программирования C++. 3-е изд. / Пер. с англ. СПб-М.: Невский
Диалект - Издательство БИНОМ, 1999. 911 с., ил.
98
Download