IBM Rational / Telelogic SDL SuiteIBM Rational SDL Suite - это решение для разработки программного обеспечения в режиме реального времени, которое предоставляет возможности описания и разработки сложных коммуникационных систем, управляемых событиями.
• Гарантирует высокое качество приложений за счет непрерывной проверки моделей, совместного имитационного моделирования и отладки.
• Защищает инвестиции благодаря использованию существующего программного кода на C/C++ при разработке новых протоколов.
• Распознает поведение приложений на ранней стадии за счет имитационного моделирования архитектуры и функциональности без необходимости написания программного кода, даже в случае незавершенных и платформенно-независимых моделей.
• Повышает качество продуктов за счет прозрачной интеграции процессов проектирования и тестирования.
• Повышает производительность благодаря универсальному стандартизованному языку описания тестов, который поддерживает ручное и автоматическое генерирование и выполнение тестовых сценариев.
• Снижает затраты благодаря модульному процессу, структура которого позволяет создавать библиотеки с возможностью повторного использования в других версиях систем и на других аппаратных платформах.
• Поддерживаемые операционные системы: HP Unix, Sun Solaris, Windows.
Инструмент IBM Rational / Telelogic SDL Suite построен на базе международного стандартного языка SDL(Specification and Description Language), официально признан ITU-ETSI, используется ими и рекомендован этими организациями для дизайна систем и приложений для телекома, систем реального времени, встраиваемого программного обеспечения.
Следует заметить, что большинство телекоммуникационных протоколов помимо текстового описания уже специфицировано ITU-ETSI с помощью SDL-диаграмм, для построения которых эти организации также используют IBM Rational / Telelogic Tau SDL.
Tau SDL весьма напоминает описанный выше Tau, хотя ради исторической справедливости, следует отметить, что как раз Tau строился, исходя из зарекомендовавших себя с положительной стороны, возможностей Tau SDL:
- имеется опция Simulator, которая в режиме реального времени позволяет моделировать поведение всей системы или ее отдельных частей, с использованием MSС-диаграмм(диаграмм последовательностей).
- имеется опция Validator, предназначенная для дополнительного поиска ошибок, позволяя находить перекрестные ссылки, "мертвые петли", разрывы в графе, ссылки "в никуда", ошибки ввода-вывода и т.д.
- имеется кодогенератор, автоматически выдающий до 100% исходного кода на языке С. Нас часто спрашивают об основных преимуществах использования Tau SDL, который может автоматизировать труд разработчика, по сравнению с ручным написанием кода. Попытаемся ответить...
Большинство ошибок, которые имеются в коде, вносит сам человек. И какими бы профессионалами не были ваши специалисты, - это неизбежно!
И неважно - создаете ли вы новый протокол, глядя на рисунок (блок-схему), или пытаетесь что-то сделать с SDL-диаграммой, полученной в электронном формате от третьей стороны (причем никто не гарантирует, что вы получите абсолютно отработанную и без ошибок диаграмму).
Ошибки всегда есть.... Но дело в том, что те ошибки, - а мы пока говорим только об ошибках кода - которые вносит человек при "ручном" способе програмирования, в большинстве своем могут быть найдены только в самом конце работ - на фазе тестирования, а то и эксплуатации.
А значит потребуется время на их исправление, повторное тестирование и т.д. При этом ошибки создаваемого дизайна (функционал) в вашем случае могут быть найдены только на фазе завершающего тестирования - при реальных испытаниях...
А то, и зачастую, - только на стороне клиента - когда потребуется совпадение во времени многих условий, чтобы выскочил, так называемый, "глюк", и когда повторить эти условия, чтобы найти ошибку, не всегда бывает возможно.
И если не задумываться более ни о чем, то возникает вопрос - а что вам даст замена одного языка программирования (который вы сейчас используете) на другой, если предлагать, что это будет SDL?
Однако, вся тонкость в том, что предлагается не просто язык SDL, а инструмент, построенный на базе этого языка-стандарта, а именно - Tau SDL. А вот в нем-то и заложена вся сила и немалые возможности, которые будут экономит вам время и деньги...
Tau SDL состоит из нескольких опций, которые разработчик проходит в обязательном порядке с тем, чтобы получить правильный, проверенный, на 100% автоматически сгенерированный код. Ниже приводится краткое описание каждой из основных опций Tau SDL:
1. SDL-Editor + SDL AnalyzerИспользуя эти опции, пользователь строит SDL-диаграммы системы в соответствии с нотацией языка SDL.
При этом инструмент - в зависимости от того, с чем работает пользователь - предлагает ему соответствующий набор возможных к использованию составляющих - блоки, функции, процедуры, вставки с комментариями и т.д.
Работа пользователя сводится к дизайну системы, который он строит из составляющих как из кубиков, детализируя систему "сверху-вниз".
В процессе работы первая опция Tau SDL - Analyzer - проверяет все ваши диаграммы пока только на правильность и соответствие нотациям языка SDL (отметим - функционал ПОКА не проверяется).
Показывает обнаруженные ошибки, сообщает (описывает) с чем они связаны и указывает на конкретный символ SDL-диаграммы, в котором эта ошибка присутствует.
Согласитесь, в таких условиях намного легче искать ошибки (попробуйте представить для сравнения, что легче - писать по-английски ручкой на бумаге или воспользоваться Word, в котором включен speller английского языка).
Дальше у вас два пути:- или, глядя на эту диаграмму (поскольку в ней уже нет расхождений с языком) писать код вручную (это ж сколько времени может понадобиться для написания какого-нибудь современного протокола???!!!), как многие это сейчас и делают (рисуя диаграммы или блок-схемы в Visio), а значит по-прежнему вносить ошибки, связанные с человеческим фактором,
- или задействовать следующую опцию Tau SDL.
2. SimulatorПосле приведения диаграмм в полное соответствие с нотацией языка (иначе дальше система вас просто не пустит), вы можете воспользоваться опцией Simulator, которая поможет вам отработать систему уже с точки зрения создаваемого функционала (дизайна).
Сразу оговоримся, что проверяется либо вся все то, что составляет SDL-диаграмму или к ней относится (на ваш выбор):
а) или только SDL-диаграмма системы, блока, подсистемы, модуля... т.е. любой части системы (вот еще один "плюс" - не надо ждать сборки всей модели\системы)
б) или совокупность SDL-диаграмм и\или ее частей и вставок с вашим кодом (непосредственно прописывание кода в символах диаграмм или референс на headers. Использование функций языка C, Assembler, например).
При запуске Simulator'а инструмент автоматически переводит вашу SDL-диаграмму в диаграмму последовательностей MSC (Message Sequence Chart), иницализирует ее и готовится к приему сообщений-сигналов.
Вот теперь вы можете посылать в систему любые сообщения, соответствующие внешним воздейстиям и условиям - с любыми параметрами и значениями, в любой вход (порт) вашей системы.
Можете посылать сигналы по одному, можете в паралель, можете пачками или по спец-графику с разнесением во времени - все, что вам угодно.
Можете исполнять пошагово, а может от начала и до конца, можете ставить break-points в любом месте SDL- или MSC-диаграммы, поскольку онизавязаны между собой.
Можете выводить log-файлы, можете ставить watch-окна на выбранные переменные и многое-многое другое.
При приходе сигнала в MSC-диаграмму вы увидите, что присходит в системе - как работают таймеры, как создаются объекты, куда и в какой последовательности поступают сигналы, т.е - как система отрабатывает входное воздействие в соответствии с тем функционалом, который вы в нее заложили.
И на диаграммах вы будете видеть картину поведения всей вашей системы или отрабатываемого блока.
Более того, система выдаст вам статистику покрытия и вы будете знать насколько полно вы проверили вашу систему посылаемыми сообщениями.
Обратите внимание - поверяя функционал - вы фактически тестируете систему еще в процессе ее разработки. Вы можете проверять все, что вам угодно, посылать любые сигналы илюбыми способами.
Ваша задача - только лишь наблюдать за реакцией системы и делать выводы - нужен вам такой функционал или что-то надо переделать.
Мы еще раз утверждаем, что проверяется все то, что вам необходимо - в том числе и совместное поведение диаграмм, созданных в Tau SDL, и ваших кодовых вставок в них, если таковые будут делаться.
(Этим же путем можно пойти, если вы проверяете на функционал или соответствие нотации даже чужие диаграммы - ведь существуют много компаний, которые или продают свои SDL-диаграммы или отдают их).
Закончили и с этим, потому как теперь у вас на руках имеется диаграмма (или набор диаграмм) системы с проверенным функционалом.
После этого у разработчика тоже два пути:- или, глядя на эту отработанную диаграмму (поскольку функционал уже обеспечен и проблем с этим нет) писать код вручную, как некоторые продолжают делать, а значит по-прежнему вносить ошибки, связанные с человеческим фактором,
- или задействовать следующую опцию Tau SDL.
3. ValidatorМы рекомендуем второй путь... Включается в работу опция Validator. На основании SDL-диаграммы системы или ее любой, выбранной вами части, Validator строит дерево поведения системы.
Т.е. анализирует все возможные состояния сигналов и их параметров, настройки таймеров, интерфейсы и т.д., и "за кадром" строит дерево всех возможных переходов в системе, "глядя" на дизайн вашей системы.
Для чего в систему автоматически засылаются любые случайные наборы вышеперечисленных сообщений и оценивается реакция системы.
Опять же "за кадром", анализируя реакцию системы, Validator ищет ошибки, которые могут возникнуть в системе, например, при сбое, и выводит вам этот результат, группируя ошибки в однотипные группы.
Правила, по которым опция ищет ошибки, зашиты в ней, но у вас есть возможность их корректировать или добавлять свои.
Здесь ищутся, например, посылка сообщений "в никуда", перекрестные ссылки, мертвые петли, ошибки ввода-вывода и многое другое.
(Кликните мышкой на символ ошибки и опция выведет вас на символ диаграммы, с которым эта ошибка связана - огромная экономия времени).
Именно здесь вы получите информацию - а что будет, если такой-то сигнал придет раньше, чем закончит работу таймер... хотя в соответствии с вашим дизайном это сообщение должно придти позже, - но вот что будет если такое случится?).
Другими словами, если в опции Simulator вы проверяете и отрабатывате поведение системы на "правильность", то в Validator - на неправильность,т.е. как будет реагировать система, если в нее посыпятся сигналы с не теми параметрами, не в то время и не в том порядке, если таймеры закончат свою работу позже-раньше против ожидаемого и т.д.
Попробуйте смоделировать такое на реальном стенде - да вам несколько лет только сам стенд создавать придется.. А мы предлагаем делать все это - сидя за компьютером, без специальных стендов, в режиме времени (пока не пишу "реального" времени).
Все это нужно лишь для того, чтобы на выходе вы получили систему, в которой нет ошибок, потому как еще на стадии ее создания, вы их все убрали, трижды все перепроверив.
После этого у разработчика тоже два пути:- или, глядя на полностью отработанную диаграмму писать код вручную, как некоторые иногда делают, а значит по-прежнему вносить ошибки, связанные с человеческим фактором,
- или задействовать одну из самых мощных и важных опций Tau SDL.
4. Code GeneratorЕсли вы выбираете второй путь, то дальнейшие шаги просты - открываете окно, задаете опции кодогенератора, нажимаете клавишу и получаете исходный код на ANSI.C (на базе созданных диаграмм и всех и любых кодовых вставок, заметьте), который можете потом омпилировать любым вашим родным компилятором.
Настроечных опций здесь великое множество. Перечислим лишь некоторые из них (пользователь должен пометить их):
- должен ли сгенерированный код содержать специальные вставки, сообщающие вам о тех или иных ошибках (error checking);
- если ДА, то отмечаете какие именно ошибки вас интересуют;
- каким образом будет полученный код "заливаться" в исходное железо;
- делать ли "закладки", чтобы выводить служебную информацию на какой-либо порт, используемый для отладки;
- предполагается ли наличие или отсутствие операционной системы в вашем устройстве;
- если операционка будет, то какая именно ОС (мы уже поддерживаем массу известных ОС, готовы интегрироваться с вашей собственной, или разработатьтакую интеграцию для вас);
- можете собственноручно определять работу с очередями или воспользоваться критериями ОС и т.д.
Причем каждый раз меняя эти настройки, вы тут же будете получать новый код с учетом ваших пожеланий, - не занимаясь "ручной" орректировкой кода...
Сколь угодно часто, сколь угодно долго - хоть 24 часа в сутки и 30 дней в месяц. Но после того как код получен - вот тут уже мы категорически не рекомендуем "трогать" полученный код - во избежание внесения ошибок.
Разумеется, поскольку код генерит машина, он хоть и получается без ошибок, но имеет некоторую переизбыточность - очевидцы называют цифру в 3-5%.
Поэтому если - в силу специфических причин - вам требуется оптимизировать полученный код на все требуемые 100%, то у вас есть возможность "вырезать" кусок SDL-диаграмм и написать этот кусок хоть на Ассемблере.
После этого можно смело "заливать" этот код в ваше железо - все будет работать.. будьте уверены... Но и тут мы не останавливаемся на достигнутом..
Tau SDL имеет два кодогенератора: - C-micro для систем критичных к "размерам" (например, 8-битовый процессор, без ОС) и C-advanced для 64-битовых процессоров, многопоточных задач, многопроцессорных систем. Все остальное - лежит между ними.
Последняя опция - Code Generator - отрабатывается нашей компанией уже десяток лет и не может генерить ошибок по сути, поскольку просто использует отработанные конструкции языка и модули - макросы, например. При этом никакой отсебятины кодо-генератор не пишет.
Следует помнить, кодогенератор может использоваться на всем протяжении работ, а значит у вас есть возможность искать недоразумения - если они будут - с самого начала. А не искать проблемные места в готовом результате, если писать что-то вручную.
Т.е. на этом можно считать процесс создания кода (не пишу "написания" кода) завершенным.
Вы получили то, к чему шли. Но намного быстрей и качественней. Однако и тут мы можем предложить вам продолжение..