автоматическая генерация кода моделирования схемы обмена сообщениями
Классы МПК: | G06F11/36 Предотвращение ошибок с помощью тестирования или отладки программного обеспечения H04L29/02 управление передачей данных; обработка данных, поступающих с линий связи G06N1/00 Компьютерные системы, не отнесенные к группам 3/00 |
Автор(ы): | КОУПЛЭНД Джордж П. (US), АЛЛЕН Джейсон (US), КАБРЕРА Луис Фелипе (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2004-12-20 публикация патента:
20.11.2009 |
Изобретение относится к механизмам автоматической генерации кода, который тестирует возможности тестовой вычислительной системы в отношении моделирования схемы обмена сообщениями. Техническим результатом является обеспечение механизма автоматического генерирования кода, который тестирует возможности тестовой вычислительной системы в отношении моделирования схемы обмена сообщениями. Вычислительная система генерации кода использует определение схемы обмена сообщениями для генерации кода моделирования. Для каждого состояния, в котором определение схемы обмена сообщениями позволяет передачу допустимых сообщений, генерируется код для этого состояния, который, по меньшей мере, моделирует передачу допустимого сообщения передачи. Для каждого состояния, в котором определение схемы обмена сообщениями позволяет прием допустимых сообщений, генерируется код для этого состояния, который моделирует прием допустимого сообщения приема. Если передача или прием сообщения приводит к переходу между состояниями, генерируется код, который вызывает соответствующий переход между состояниями в схеме обмена сообщениями. 2 н. и 28 з.п. ф-лы, 6 ил.
Формула изобретения
1. Способ, реализуемый в компьютерной системе генерации кода, которая содержит один или более процессоров, выполненных с возможностью исполнения машиноисполняемых команд в системной памяти, и предназначенный для автоматической генерации исполняемого кода, приспособленного для моделирования схемы обмена сообщениями, при этом способ содержит этапы, на которых
осуществляют доступ к определению схемы обмена сообщениями для схемы обмена сообщениями, которое задает:
какое из первого приложения схемы обмена сообщениями и второго приложения схемы обмена сообщениями должно посылать какое сообщение в любой заданный момент в схеме обмена сообщениями,
совокупность состояний схемы обмена сообщениями,
один или более переходов между состояниями среди упомянутой совокупности состояний и
для каждого из упомянутой совокупности состояний: допустимые типы сообщений для этого состояния, один или более допустимых типов сообщений, которые могут быть переданы, когда схема обмена сообщениями находится в этом состоянии, и один или более допустимых типов сообщений, которые могут быть приняты, когда схема обмена сообщениями находится в этом состоянии, и
указание того, какие переходы между состояниями имеют место при конкретном допустимом типе сообщений;
осуществляют автоматическую генерацию исполняемого кода моделирования схемы обмена сообщениями на основе определения схемы обмена сообщениями для моделирования переходов между состояниями схемы обмена сообщениями, при этом сгенерированный исполняемый код моделирования схемы обмена сообщениями представляет собой отдельную компьютерную программу, которая может исполняться в компьютерной системе для тестирования определения схемы обмена сообщениями без осуществления связи с какими-либо приложениями схемы обмена сообщениями, при этом:
для каждого из упомянутой совокупности состояний, в котором разрешена передача допустимых сообщений, осуществляют автоматическую генерацию исполняемого кода для моделирования передачи допустимого сообщения между первым приложением схемы обмена сообщениями и вторым приложением схемы обмена сообщениями и осуществляют автоматическую генерацию исполняемого кода для моделирования соответствующего перехода между состояниями в качестве реакции на моделированную передачу допустимого сообщения, и
для каждого из упомянутой совокупности состояний, в котором разрешен прием допустимых сообщений, осуществляют автоматическую генерацию исполняемого кода для моделирования приема допустимого сообщения между первым приложением схемы обмена сообщениями и вторым приложением схемы обмена сообщениями и осуществляют автоматическую генерацию исполняемого кода для моделирования соответствующего перехода между состояниями в качестве реакции на моделированный прием допустимого сообщения.
2. Способ по п.1, в котором определение схемы обмена сообщениями указывает на то, что в конкретном состоянии может быть передано любое из совокупности допустимых сообщений передачи.
3. Способ по п.2, в котором определение схемы обмена сообщениями указывает, для каждого из упомянутой совокупности допустимых сообщений передачи для конкретного состояния, процентное выражение вероятности того, что каждое из упомянутой совокупности допустимых сообщений передачи будет передано в данном конкретном состоянии, причем способ дополнительно содержит этап, на котором автоматически генерируют код для, по меньшей мере, моделирования каждого из упомянутой совокупности допустимых сообщений передачи и осуществления соответствующих переходов между состояниями для данной передачи.
4. Способ по п.3, дополнительно содержащий этап, на котором осуществляют генерацию кода, который генерирует псевдослучайное значение и выбирает одно из упомянутой совокупности допустимых сообщений передачи для передачи на основании псевдослучайного значения и процентного выражения вероятности.
5. Способ по п.1, дополнительно содержащий, для, по меньшей мере, одного состояния, этап, на котором осуществляют генерацию кода, который, по меньшей мере, моделирует передачу недопустимого сообщения передачи.
6. Способ по п.5, в котором также указывают процентное выражение вероятности того, что недопустимые сообщения передачи будут переданы в данном конкретном состоянии, причем способ дополнительно содержит этап, на котором осуществляют генерацию кода, который генерирует псевдослучайное значение и выбирает одно из недопустимых сообщений передачи для передачи на основании псевдослучайного значения и процентного выражения вероятности.
7. Способ по п.1, в котором определение схемы обмена сообщениями указывает, что в конкретном состоянии может быть принято любое из совокупности допустимых сообщений приема.
8. Способ по п.7, в котором определение схемы обмена сообщениями указывает, для каждого из упомянутой совокупности допустимых сообщений приема для конкретного состояния, процентное выражение вероятности того, что каждое из упомянутой совокупности допустимых сообщений приема будет принято в конкретном состоянии, причем способ дополнительно содержит этап, на котором автоматически генерируют код для моделирования каждого из упомянутой совокупности допустимых сообщений приема и осуществления соответствующих переходов между состояниями для данной передачи.
9. Способ по п.8, дополнительно содержащий этап, на котором осуществляют генерацию кода, который генерирует псевдослучайное значение и выбирает одно из упомянутой совокупности допустимых сообщений приема для моделированного приема на основании псевдослучайного значения и процентного выражения вероятности.
10. Способ по п.1, дополнительно содержащий, для, по меньшей мере, одного состояния, этап, на котором осуществляют генерацию кода, который моделирует прием недопустимого сообщения передачи.
11. Способ по п.10, в котором также указывают процентное выражение вероятности того, что недопустимые сообщения приема будут приняты в данном конкретном состоянии, причем способ дополнительно содержит этап, на котором осуществляют генерацию кода, который генерирует псевдослучайное значение и выбирает одно из недопустимых принятых сообщений в качестве моделированного приема на основании псевдослучайного значения и процентного выражения вероятности.
12. Способ по п.1, в котором определение схемы обмена сообщениями задают с использованием стандарта языка описания Web-служб (WSDL).
13. Способ по п.1, в котором определение схемы обмена сообщениями дополнительно задает политики хронирования, подлежащие применению в конкретном состоянии.
14. Машиночитаемый носитель для использования в компьютерной системе генерации кода, которая содержит один или более процессоров, выполненных с возможностью исполнения машиноисполняемых команд в системной памяти, при этом машиночитаемый носитель содержит машиноисполняемые команды, которые при их исполнении этими одним или более процессорами компьютерной системы генерации кода предписывают компьютерной системе генерации кода осуществлять способ автоматической генерации исполняемого кода, приспособленного для моделирования схемы обмена сообщениями, содержащего этапы, на которых
осуществляют доступ к определению схемы обмена сообщениями для схемы обмена сообщениями, которое задает:
какое из первого приложения схемы обмена сообщениями и второго приложения схемы обмена сообщениями должно посылать какое сообщение в любой заданный момент в схеме обмена сообщениями,
совокупность состояний схемы обмена сообщениями,
один или более переходов между состояниями среди упомянутой совокупности состояний и
для каждого из упомянутой совокупности состояний: допустимые типы сообщений для этого состояния, один или более допустимых типов сообщений, которые могут быть переданы, когда схема обмена сообщениями находится в этом состоянии, и один или более допустимых типов сообщений, которые могут быть приняты, когда схема обмена сообщениями находится в этом состоянии, и
указание того, какие переходы между состояниями имеют место при конкретном допустимом типе сообщений;
осуществляют автоматическую генерацию исполняемого кода моделирования схемы обмена сообщениями на основе определения схемы обмена сообщениями для моделирования переходов между состояниями схемы обмена сообщениями, при этом сгенерированный исполняемый код моделирования схемы обмена сообщениями представляет собой отдельную компьютерную программу, которая может исполняться в компьютерной системе для тестирования определения схемы обмена сообщениями без осуществления связи с какими-либо приложениями схемы обмена сообщениями, при этом:
для каждого из упомянутой совокупности состояний, в котором разрешена передача допустимых сообщений, осуществляют автоматическую генерацию исполняемого кода для моделирования передачи допустимого сообщения между первым приложением схемы обмена сообщениями и вторым приложением схемы обмена сообщениями и осуществляют автоматическую генерацию исполняемого кода для моделирования соответствующего перехода между состояниями в качестве реакции на моделированную передачу допустимого сообщения, и
для каждого из упомянутой совокупности состояний, в котором разрешен прием допустимых сообщений, осуществляют автоматическую генерацию исполняемого кода для моделирования приема допустимого сообщения между первым приложением схемы обмена сообщениями и вторым приложением схемы обмена сообщениями и осуществляют автоматическую генерацию исполняемого кода для моделирования соответствующего перехода между состояниями в качестве реакции на моделированный прием допустимого сообщения.
15. Машиночитаемый носитель по п.14, в котором определение схемы обмена сообщениями указывает, что в конкретном состоянии может быть передано любое из совокупности допустимых сообщений передачи.
16. Машиночитаемый носитель по п.15, в котором определение схемы обмена сообщениями указывает, для каждого из упомянутой совокупности допустимых сообщений передачи для конкретного состояния, процентное выражение вероятности того, что каждое из упомянутой совокупности допустимых сообщений передачи будет передано в данном конкретном состоянии, причем способ дополнительно содержит автоматическую генерацию кода для, по меньшей мере, моделирования каждого из упомянутой совокупности допустимых сообщений передачи и осуществления соответствующих переходов между состояниями для данной передачи.
17. Машиночитаемый носитель по п.16, дополнительно содержащий осуществление генерации кода, который генерирует псевдослучайное значение и выбирает одно из упомянутой совокупности допустимых сообщений передачи для передачи на основании псевдослучайного значения и процентного выражения вероятности.
18. Машиночитаемый носитель по п.14, дополнительно содержащий для, по меньшей мере, одного состояния осуществление генерации кода, который, по меньшей мере, моделирует передачу недопустимого сообщения передачи.
19. Машиночитаемый носитель по п.18, в котором также указывается процентное выражение вероятности того, что недопустимые сообщения передачи будут переданы в данном конкретном состоянии, причем способ дополнительно содержит осуществление генерации кода, который генерирует псевдослучайное значение и выбирает одно из недопустимых сообщений передачи для передачи на основании псевдослучайного значения и процентного выражения вероятности.
20. Машиночитаемый носитель по п.14, в котором определение схемы обмена сообщениями указывает, что в конкретном состоянии может быть принято любое из совокупности допустимых сообщений приема.
21. Машиночитаемый носитель по п.20, в котором определение схемы обмена сообщениями указывает, для каждого из упомянутой совокупности допустимых сообщений приема для конкретного состояния, процентное выражение вероятности того, что каждое из упомянутой совокупности допустимых сообщений приема будет принято в конкретном состоянии, причем способ дополнительно содержит автоматическую генерацию кода для моделирования каждого из упомянутой совокупности допустимых сообщений приема и осуществления соответствующих переходов между состояниями для данной передачи.
22. Машиночитаемый носитель по п.21, дополнительно содержащий осуществление генерации кода, который генерирует псевдослучайное значение и выбирает одно из упомянутой совокупности допустимых сообщений приема для моделированного приема на основании псевдослучайного значения и процентного выражения вероятности.
23. Машиночитаемый носитель по п.14, дополнительно содержащий для, по меньшей мере, одного состояния осуществление генерации кода, который моделирует прием недопустимого сообщения передачи.
24. Машиночитаемый носитель по п.23, в котором также указывается процентное выражение вероятности того, что недопустимые сообщения приема будут приняты в данном конкретном состоянии, причем способ дополнительно содержит осуществление генерации кода, который генерирует псевдослучайное значение и выбирает одно из недопустимых принятых сообщений в качестве моделированного приема на основании псевдослучайного значения и процентного выражения вероятности.
25. Машиночитаемый носитель по п.14, в котором определение схемы обмена сообщениями задано с использованием стандарта языка описания Web-служб (WSDL).
26. Машиночитаемый носитель по п.14, в котором определение схемы обмена сообщениями дополнительно задает политики хронирования, подлежащие применению в конкретном состоянии.
27. Машиночитаемый носитель по п.14, который является физическим носителем.
28. Машиночитаемый носитель по п.27, который включает в себя системную память.
29. Машиночитаемый носитель по п.27, который включает в себя постоянную память.
30. Машиночитаемый носитель по п.29, в котором постоянная память является магнитным диском.
Описание изобретения к патенту
1. Область техники, к которой относится изобретение
Настоящее изобретение относится к сетевым технологиям, в частности к автоматической генерации кода, моделирующего схему обмена сообщениями.
2. Предшествующий уровень техники
Компьютерные технологии изменили характер нашей работы и игры. Современные вычислительные системы принимают различные формы, в том числе настольных компьютеров, портативных компьютеров, планшетных ПК, карманных персональных компьютеров (КПК) и т.п. Даже бытовые приборы (например, холодильники, печи, швейные машинки, охранные системы и т.п.) имеют те или иные уровни способности обработки данных и потому могут рассматриваться как вычислительные системы.
Многие функции, обеспечиваемые вычислительными системами, опираются на вычислительную систему, связанную посредством сети с другими вычислительными системами (и способную обмениваться сообщениями с ними). Чтобы две вычислительные системы, между которыми установлена связь, выполняли конкретную задачу, может потребоваться транзакция сообщений с применением схемы обмена сообщениями. Каждая вычислительная система, участвующая в транзакции сообщений, имеет приложение (далее именуемое также «приложением схемы обмена сообщениями»), которое помогает обрабатывать сообщения, принятые как часть транзакции, которая отвечает схеме обмена сообщениями, и передавать другие сообщения, согласующиеся со схемой обмена сообщениями.
Чтобы протестировать приложение схемы обмена сообщениями, приложение схемы обмена сообщениями можно установить на разных вычислительных системах и затем протестировать.
Однако, во многих случаях, приложение схемы обмена сообщениями на одной вычислительной системе может значительно отличаться от приложения схемы обмена сообщениями на другой вычислительной системе, несмотря на то, что два приложения схемы обмена сообщениями способны взаимодействовать друг с другом с использованием схемы обмена сообщениями. Программа тестирования может иметь доступ только к одному из приложений схемы обмена сообщениями. Соответственно, не всегда возможно протестировать приложение схемы обмена сообщениями в реальной сетевой среде, в которой оно будет реализовано и установлено.
Требуется механизм тестирования приложений схемы обмена сообщениями без необходимости тестировать приложение в реальной сетевой среде, в которой оно, в конечном итоге, будет установлено. Кроме того, требуется, чтобы тестирование можно было осуществлять без необходимости создания дополнительного программного обеспечения тестирования всякий раз, когда нужно протестировать приложение схемы обмена сообщениями.
Сущность изобретения
Решение вышеозначенных проблем предшествующего уровня техники заключается в принципах настоящего изобретения, которые предусматривают механизмы автоматического генерирования кода, который тестирует возможности тестовой вычислительной системы в отношении моделирования схемы обмена сообщениями.
Вычислительная система генерации кода использует определение схемы обмена сообщениями для генерации кода моделирования. Определение схемы обмена сообщениями содержит следующее для каждого из переходных состояний в схеме обмена сообщениями: 1) указание на то, какая вычислительная система может передавать (и/или принимать) каждое допустимое сообщение для данного состояния и 2) описание перехода между состояниями, обусловленное передачей или приемом допустимого сообщения.
Для каждого состояния, в котором определение схемы обмена сообщениями позволяет передавать допустимые сообщения, генерируется код для этого состояния, который, по меньшей мере, моделирует передачу допустимого сообщения передачи. Для каждого состояния, в котором определение схемы обмена сообщениями позволяет принимать допустимые сообщения, генерируется код для этого состояния, который, по меньшей мере, моделирует прием допустимого сообщения приема. Если передача или прием сообщения вызывает переход между состояниями, генерируется код, вызывающий соответствующий переход между состояниями в схеме обмена сообщениями. Вычислительная система генерации кода может также генерировать код, который моделирует передачу или прием недопустимых сообщений также для данного конкретного состояния. Определенному(ым) сообщению(ям) (допустимым или недопустимым), передаваемым или принимаемым, можно присвоить вероятности. Схему обмена сообщениями можно моделировать несколько раз, чтобы моделировать многие или все возможные пути перехода между состояниями посредством схемы обмена сообщениями. Это позволяет моделированию охватывать практически все возможные случаи, с которыми можно столкнуться при реальной установке.
Соответственно, код моделирования автоматически генерируется с использованием определения схемы обмена сообщениями, что облегчает генерацию кода моделирования. Кроме того, моделирование может быть внутренним по отношению к отдельной вычислительной системе, поскольку передачу и прием сообщений можно моделировать без связи с другой вычислительной системой. Соответственно, нет необходимости использовать сетевые ресурсы. Альтернативно, даже если моделирование не является внутренним по отношению к отдельной вычислительной системе, моделирование допускает связь в сети отдельной организации. Соответственно, нет необходимости опираться на взаимодействие с другой организацией для тестирования приложения схемы обмена сообщениями.
Дополнительные признаки и преимущества изобретения изложены в нижеследующем описания и отчасти явствуют из описания или могут быть изучены в ходе практического применения изобретения. Признаки и преимущества изобретения можно реализовать и получить посредством инструментальных средств и комбинаций, конкретно указанных в прилагаемой формуле изобретения. Эти и другие признаки настоящего изобретения полностью явствуют из нижеприведенного описания и прилагаемой формулы изобретения или могут быть изучены в ходе практического применения изобретения, описанного ниже.
Перечень фигур чертежей
Чтобы описать, каким образом можно получить вышеупомянутые и другие преимущества и признаки изобретения, ниже приведено более подробное описание изобретения, кратко описанного выше, со ссылкой на конкретные варианты его осуществления, которые проиллюстрированы в прилагаемых чертежах. С учетом того, что эти чертежи иллюстрируют только типичные варианты осуществления изобретения, вследствие чего их не следует рассматривать в порядке ограничения его объема, изобретение будет описано и объяснено с дополнительной конкретизацией и подробностями с использованием прилагаемых чертежей, на которых:
фиг.1 - подходящая вычислительная система, в которой могут быть реализованы признаки настоящего изобретения;
фиг.2 - сетевая среда, в которой схема обмена сообщениями реализована в двух вычислительных системах, каждая из которых использует приложение схемы обмена сообщениями;
фиг.3 - вычислительная система генерации кода, которая автоматически генерирует код, внутренне моделирующий схему обмена сообщениями на тестовой вычислительной системе;
фиг.4 - тестовая вычислительная система, внутренне моделирующая схему обмена сообщениями с использованием кода моделирования, сгенерированного вычислительной системой генерации кода;
фиг.5 - дерево перехода между состояниями, которое можно использовать для отслеживания прогресса в произвольной схеме обмена сообщениями; и
фиг.6 - логическая блок-схема способа, применяемого вычислительной системой генерации кода для автоматической генерации кода моделирования, который внутренне моделирует схему обмена сообщениями.
Подробное описание предпочтительных вариантов осуществления
Принципы настоящего изобретения относятся к механизмам автоматической генерации кода, который тестирует возможности тестовой вычислительной системы моделировать схему обмена сообщениями. Вычислительная система генерации кода использует определение схемы обмена сообщениями как основу для автоматической генерации кода моделирования. Для каждого состояния, в котором определение схемы обмена сообщениями позволяет передачу допустимых сообщений, генерируется код для этого состояния, который моделирует прием допустимых сообщений приема. Если передача или прием сообщения приводит к переходу между состояниями, генерируется код, вызывающий соответствующий переход между состояниями в схеме обмена сообщениями.
На чертежах, где идентичные элементы обозначены одинаковыми ссылочными позициями, изобретение проиллюстрировано как реализованное в подходящей вычислительной среде. Нижеследующее описание базируется на иллюстрируемых вариантах осуществления изобретения и его не следует рассматривать в порядке ограничения изобретения в отношении альтернативных вариантов осуществления, которые в явном виде здесь не описаны.
В нижеследующем описании, изобретение описано со ссылкой на действия и символические представления операций, осуществляемых одним или несколькими компьютерами, если не указано обратное. Поэтому, следует понимать, что такие действия и операции, которые иногда называются машиноисполняемыми, подразумевают, что процессор компьютера манипулирует электрическими сигналами, представляющими данные в структурированном виде. Это манипулирование преобразует данные или поддерживает их в ячейках системы памяти компьютера, каковые данные переконфигурируют или иным образом изменяют работу компьютера способом, известным специалистам в данной области. Структуры данных, в которых поддерживаются данные, являются физическими ячейками памяти, которые имеют конкретные свойства, определенные форматом данных. Однако, хотя изобретение описано в вышеуказанном контексте, это не предполагает ограничение, поскольку специалистам в данной области известно, что некоторые действия и операции, описанные ниже, можно также реализовать аппаратными средствами. На фиг.1 показана схема иллюстративной архитектуры компьютера, пригодная для этих устройств.
В целях описания, представленная архитектура является лишь одним примером подходящей среды и не призвана накладывать какие-либо ограничения на объем использования или функциональных возможностей изобретения. Кроме того, вычислительные системы не следует рассматривать как имеющие какую-либо зависимость или какое-либо требование в отношении какого-либо из компонентов или комбинации компонентов, показанных на фиг.1.
Изобретение применимо ко многим другим вычислительным или коммуникационным средам или конфигурациям общего или специального назначения. Примеры общеизвестных вычислительных систем, сред и конфигураций, допустимых для использования согласно изобретению, включают в себя, но не в ограничительном смысле, мобильные телефоны, карманные компьютеры, персональные компьютеры, серверы, многопроцессорные системы, системы на основе микропроцессора, мини-компьютеры, универсальные компьютеры (мейнфреймы) и распределенные вычислительные среды, которые могут включать в себя любые из вышеописанных систем или устройств.
В самой общей конфигурации, вычислительная система 100 обычно содержит, по меньшей мере, один процессор 102 и память 104. Память 104 может представлять собой энергозависимую память (например, ОЗУ), энергонезависимую память (например, ПЗУ, флэш-память и т.д.) или некоторую их комбинацию. Эта наиболее общая конфигурация проиллюстрирована на фиг.1 пунктирной линией 106.
Запоминающие устройства могут иметь дополнительные особенности и функциональные возможности. Например, они могут включать в себя дополнительный носитель данных (сменный или стационарный), в том числе, но не в ограничительном смысле, карты PCMCIA, магнитные и оптические диски и магнитную ленту. Такие дополнительные носители данных показаны на фиг.1 в виде сменного носителя 108 данных и стационарного носителя 110 данных. Компьютерные носители данных включают в себя энергозависимые и энергонезависимые носители, сменные и стационарные носители, реализованные посредством любого способа или любой технологии, для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Память 104, сменный носитель 108 данных и стационарный носитель 110 данных являются примерами компьютерных носителей данных. Компьютерные носители данных включают в себя, но не в ограничительном смысле, ОЗУ, ПЗУ, электрически стираемое программируемое ПЗУ (ЭСППЗУ), флэш-память, память другой технологии, CD-ROM, цифровые универсальные диски, другие оптические носители данных, магнитные кассеты, магнитную ленту, магнитный дисковый накопитель, другие магнитные запоминающие устройства и любые другие носители, которые можно использовать для хранения нужной информации и к которым может обращаться вычислительная система.
Используемый здесь термин «модуль» или «компонент» может относиться к программным объектам или процедурам, которые выполняются в вычислительной системе. Различные описанные здесь компоненты, модули, программные средства и службы могут быть реализованы в виде объектов или процессов, выполняющихся в вычислительной системе (например, как отдельные потоки). Хотя описанные здесь системы и способы предпочтительно реализуются программными средствами, возможны и подлежат рассмотрению также программно-аппаратные или аппаратные реализации.
Вычислительная система 100 также может содержать каналы 112 связи, которые позволяют главному компьютеру осуществлять связь с другими системами и устройству по сети 120. Каналы 120 связи являются примерами сред передачи данных. Среды передачи данных обычно воплощают машиночитаемые команды, структуры данных, программные модули или другие данные в виде модулированного информационного сигнала, например несущей волны или другого транспортного механизма, и включают в себя любые среды передачи данных. В порядке примера, но не ограничения, среды передачи данных включают в себя проводные среды, например проводные сети и прямые проводные соединения, и беспроводные среды, например акустические, радиочастотные, инфракрасные и другие беспроводные среды. Используемый здесь термин «машиночитаемый носитель» включает в себя как носители данных, так и среды передачи данных.
Вычислительная система 100 может также содержать компоненты 114 ввода, например клавиатуру, мышь, перо, компонент голосового ввода, сенсорное устройство ввода и т.д. Компоненты 116 вывода включают в себя экранные дисплеи, громкоговорители, принтер и т.д., а также модули воспроизведения (часто именуемые адаптерами) для приведения их в действие. Вычислительная система 100 содержит источник питания 118. Все эти компоненты общеизвестны в технике и далее не рассматриваются.
На фиг.2 показана сетевая среда 200, в которой две вычислительные системы (обозначенные на фиг.2 как «вычислительные системы реализации») осуществляют связь для выполнения конкретной задачи. В частности, вычислительная система 201 реализации осуществляет связь с вычислительной системой 202 реализации. Для выполнения конкретной задачи, вычислительные системы 201 и 202 обмениваются сообщениями согласно конкретной схеме 230 обмена. Конкретная схема обмена сообщениями задает, какая вычислительная система должна отправить какое сообщение в любой заданный момент в процессе обмена сообщениями. Схема обмена сообщениями зависит от выполняемой задачи и протоколов, используемых для обмена сообщениями. Принципы настоящего изобретения не ограничиваются никакой конкретной структурой для схемы обмена сообщениями.
Каждая вычислительная система реализации имеет приложение схемы обмена сообщениями, которое используется в схеме обмена сообщениями. Например, вычислительная система 201 реализации выполняет приложение 210 схемы обмена сообщениями, а вычислительная система 202 реализации выполняет приложение 220 схемы обмена сообщениями. Вычислительные системы 201 и 202 реализации могут быть структурированы, как описано выше для вычислительной системы, хотя это не обязательно. В этом описании и в формуле изобретения «вычислительная система» определяется как любое(ая) устройство или система, способное(ая) обрабатывать электронные сообщения.
Не обязательно, чтобы все сообщения в схеме обмена сообщениями генерировались и потреблялись одними и теми же компонентами в вычислительной системе. Например, некоторые сообщения могут являться сообщениями уровня протоколов, обеспечивающими надлежащую координацию на уровне протоколов между двумя вычислительными системами. Другие сообщения могут являться сообщениями уровня приложений, обеспечивающими обмен данными, необходимый для выполнения нужной задачи. Согласно одному варианту осуществления сообщения уровня протоколов в схеме обмена сообщениями подчиняются спецификациям координации Web-служб (WS-Coorination) и транзакции Web-служб (WS-Transaction), которые также известны специалистам в данной области.
На фиг.2 показана среда, в которой, в конечном итоге, действуют приложения схемы обмена сообщениями. Однако желательно тестировать приложение схемы обмена сообщениями, чтобы гарантировать правильную работу до поставки приложения. Тестирование приложений часто занимает существенное время, поскольку, для правильного моделирования, часто требуется проектировать новые коды. Кроме того, тестирование приложений схемы обмена сообщениями особенно трудно, поскольку операции, по природе своей, являются распределенными и часто распределены через границы доверия. Например, те, кто создает приложение 210 схемы обмена сообщениями, могут не иметь доступ к приложению 220 схемы обмена сообщениями, которое должно действовать в другой вычислительной системе. Кроме того, может быть трудно добиться сотрудничества владельца приложения 220 схемы обмена сообщениями для целей тестирования.
Соответственно, принципы настоящего изобретения обеспечивают механизм автоматической генерации кода, что позволяет тестовой вычислительной системе моделировать проведение схемы обмена сообщениями без необходимости значительного участия человека в создании кода и без необходимости тестирования во взаимодействии с другой организацией или даже, возможно, в каком бы то ни было сетевом окружении. На фиг.3 показана среда, в которой может происходить такая автоматическая генерация кода.
Согласно фиг.3, вычислительная система 301 генерации кода обращается к определению 302 схемы обмена сообщениями. Модуль 303 генерации кода моделирования использует определение 302 схемы обмена сообщениями для генерации кода 304 моделирования. Согласно фиг.4, тестовая вычислительная система 401 может затем использовать этот код 304 моделирования посредством блока 402 моделирования для тестирования определения схемы обмена сообщениями. Дополнительные детали этой операции будут описаны ниже после того, как мы более подробно рассмотрим определение 302 схемы обмена сообщениями.
В схеме обмена сообщениями предусмотрен ряд состояний. Эти состояния заданы в определении схемы обмена сообщениями. Для каждого состояния имеется нуль или более допустимых типов сообщений, которые можно передавать, и нуль или более допустимых типов сообщений, которые можно принимать. При приеме или передаче допустимого типа сообщения, схема обмена сообщениями может переходить в другое состояние. Схема обмена сообщениями указывает допустимые типы сообщения для каждого состояния и указывает, какие переходы между состояниями должны происходить для данного определенного допустимого типа сообщения. Определение схемы обмена сообщениями может иметь любой формат. Однако, чтобы интерпретировать схему обмена сообщениями для автоматической генерации кода, предпочтительно, чтобы определение схемы обмена сообщениями было в формате, который легче анализировать. Пример такого формата задан в стандарте языка описания Web-служб (WSDL).
Определение схемы обмена сообщениями может также включать в себя, например, вероятность того, что определенное допустимое сообщение будет принято или передано в определенном состоянии. Определение схемы обмена сообщениями может также задавать политики хронирования, которые следует применять в определенном состоянии. Например, политики хронирования могут указывать, что предыдущий запрос должен быть отменен, если в определенный период времени не принято ни одного ответа.
Определение схемы обмена сообщениями можно лучше понять, сузив определение схемы обмена сообщениями до дерева переходов между состояниями. Дерево переходов между состояниями может быть построено в памяти в процессе генерации кода, хотя это не обязательно. Дерево переходов между состояниями схемы обмена сообщениями содержит узлы для каждого состояния в схеме обмена сообщениями. Для каждого узла предусмотрено перечисление допустимых типов сообщения и то, какая вычислительная система может отправлять какие типы сообщений. Для каждого допустимого типа сообщения также предусмотрено указание, в какое состояние переходить при приеме (или передаче, если такое может быть) конкретного сообщения.
Структура дерева целиком зависит от схемы обмена сообщениями, которая, в свою очередь, зависит от выполняемой задачи. Проиллюстрировать все возможные деревья переходов между состояниями невозможно по причине бесконечного многообразия схем обмена сообщениями. Перечисление большого их количества затенило бы принципы настоящего изобретения. Однако, исключительно в иллюстративных целях, здесь описана одна схема обмена сообщениями. Специалисты в данной области техники поймут (прочтя это описание), что принципы настоящего изобретения применимы к любой схеме обмена сообщениями.
На фиг.5 показан пример дерева 500 переходов между состояниями схемы обмена сообщениями. Дерево 500 переходов между состояниями содержит ряд состояний от 501 до 507. Передача сообщений от одной из вычислительных систем приводит к переходам между состояниями, обозначенным сплошными стрелками. С другой стороны, передача сообщений от другой вычислительной системы приводит к переходам между состояниями, обозначенным пунктирными стрелками. Пока мы не будем обращать внимание на стрелки 541 и 542, а также пометки с процентами, каковые элементы будут объяснены позже со ссылкой на фиг.6. Согласно фиг.5, одна вычислительная система передает сообщения, которые приводят к переходам 511-514 между состояниями, а другая вычислительная система передает сообщения, которые приводят к переходам 521-527 между состояниями. Каждая стрелка связана с конкретным типом сообщения или группой типов сообщений, допустимых для этого перехода.
В случае использования координации Web-служб, вычислительная система 201 реализации может сначала отправить на вычислительную систему 202 реализации сообщение контекста координации. Затем, вычислительная система 202 реализации может отправить на вычислительную систему 201 реализации сообщение регистрации. Затем вычислительная система 201 реализации отправляет на вычислительную систему 202 реализации сообщение приема регистрации. На этом этапе, вычислительная система 201 реализации берет на себя роль «координатора», и вычислительная система 202 реализации берет на себя роль «участника», и обмен сообщениями находится в состоянии 501 «активное». Сплошные линии на фиг.5 обозначают переходы между состояниями, обусловленные координатором (т.е. вычислительной системой 201 реализации), передающим сообщения, а пунктирные линии на фиг.5 обозначают переходы между состояниями, обусловленные участником (т.е. вычислительной системой 202 реализации), передающим сообщения.
Будучи в состоянии 501 «активное», вычислительная система 201 реализации может передать вычислительной системе 202 реализации сообщение отмены. Это означает, что вычислительная система 201 реализации выбрала отмену ранее запрошенных операций, в результате чего происходит переход из состояния 501 «активное» в состояние 502 «отмена», обозначенный сплошной стрелкой 511. В общем случае, передающая вычислительная система распознает переходы между состояниями, как только передано сообщение, связанное с переходом. Принимающая вычислительная система распознает переходы между состояниями, как только принято сообщение, связанное с переходом. Соответственно, могут существовать некоторые переходные различия между отслеживаемым прогрессом карты переходов между состояниями, распознаваемым вычислительной системой 201 реализации, и отслеживаемым прогрессом карты переходов между состояниями, распознаваемым вычислительной системой 202 реализации. В этом конкретном переходе 511 вычислительная система 201 реализации распознает этот переход 511, как только передает сообщение отмены. Вычислительная система 202 реализации распознает переход 511, как только принимает сообщение отмены.
Альтернативно, будучи в состоянии 501 «активное», вычислительная система 201 реализации может принять от вычислительной системы 202 реализации сообщение выхода. Это информирует вычислительную систему 201 реализации о том, что вычислительная система 202 реализации больше не участвует в схеме обмена сообщениями. Соответственно, передача сообщения выхода от вычислительной системы 202 реализации на вычислительную систему 201 реализации приводит к переходу 522 из состояния 501 «активное» в состояние 505 «окончание».
Альтернативно, будучи в состоянии 501 «активное», вычислительная система 201 реализации может принять от вычислительной системы 202 реализации сообщение завершения. Это информирует вычислительную систему 201 реализации о том, что вычислительная система 202 реализации завершила обработку, относящуюся к предыдущему запросу. Соответственно, передача сообщения завершения от вычислительной системы 202 реализации на вычислительную систему 201 реализации приводит к переходу 523 из состояния 501 «активное» в состояние 503 «завершение».
Альтернативно, будучи в состоянии 501 «активное», вычислительная система 201 реализации может принять от вычислительной системы 202 реализации сообщение об ошибке. Это информирует вычислительную систему 201 реализации о том, что вычислительной системе 202 не удалось выполнить операцию в состоянии 501 «активное». Соответственно, передача сообщения об ошибке от вычислительной системы 202 реализации на вычислительную систему 201 реализации приводит к переходу 526 из состояния 501 «активное» в состояние 507 «ошибка».
Будучи в состоянии 502 «отмена», вычислительная система 201 реализации может принять от вычислительной системы 202 реализации сообщения подтверждение отмены. Это информирует вычислительную систему 201 реализации о том, что вычислительная система 202 реализации подтверждает, что ранее запрошенная операция была отменена по запросу вычислительной системы 201 реализации. Соответственно, передача сообщения подтверждение отмены от вычислительной системы 202 реализации на вычислительную систему 201 реализации приводит к переходу 521 из состояния 502 «отмена» в состояние 505 «окончание».
Будучи в состоянии 503 «завершение», вычислительная система 201 реализации может передать на вычислительную систему 202 реализации сообщения закрытия. Это информирует вычислительную систему 202 реализации о том, что предыдущий запрос был успешным. Соответственно, передача сообщения закрытия от вычислительной системы 201 реализации на вычислительную систему 202 реализации приводит к переходу 512 из состояния 503 «завершение» в состояние 504 «закрытия».
Будучи в состоянии 504 «закрытия», вычислительная система 201 реализации может принять от вычислительной системы 202 реализации сообщения подтверждение закрытия. Это информирует вычислительную систему 201 реализации о том, что вычислительная система 202 реализации успешно завершила операцию. Соответственно, передача сообщения подтверждение закрытия от вычислительной системы 202 реализации на вычислительную систему 201 реализации приводит к переходу 524 из состояния 504 «закрытие» в состояние 505 «окончание».
Также, будучи в состоянии 503 «завершение», вычислительная система 201 реализации может передать на вычислительную систему 202 реализации сообщение компенсации. Это информирует вычислительную систему 202 реализации о том, что проделанную работу нужно отменить до разумного предела. Соответственно, передача сообщения компенсации от вычислительной системы 201 реализации на вычислительную систему 202 реализации приводит к переходу 513 из состояния 503 «завершение» в состояние 506 «компенсация».
Будучи в состоянии 506 «компенсация», вычислительная система 201 реализации может принять от вычислительной системы 202 реализации сообщение подтверждения компенсации. Это информирует вычислительную систему 201 реализации о том, что действие компенсации было успешным. Соответственно, передача сообщения подтверждения компенсации от вычислительной системы 202 реализации на вычислительную систему 201 реализации приводит к переходу 525 из состояния 506 «компенсация» в состояние 505 «окончание».
Альтернативно, будучи в состоянии 506 «компенсация», вычислительная система 201 реализации может принять от вычислительной системы 202 реализации сообщение об ошибке. Это информирует вычислительную систему 201 реализации о том, что вычислительной системе 202 реализации не удалось выполнить операцию в состоянии 506 «компенсация». Соответственно, передача сообщения об ошибке от вычислительной системы 202 реализации на вычислительную систему 201 реализации приводит к переходу 527 из состояния 506 «компенсация» в состояние 507 «ошибка».
Будучи в состоянии 507 «ошибка», вычислительная система 201 реализации может передать на вычислительную систему 202 реализации сообщение игнорирования. Это информирует вычислительную систему 202 реализации о том, что вычислительная система 201 реализации осведомлена об ошибке. Соответственно, передача сообщения игнорирования от вычислительной системы 201 реализации на вычислительную систему 202 реализации приводит к переходу 514 из состояния 507 «ошибка» в состояние 505 «окончание».
На фиг.6 показана логическая блок-схема способа 600, применяемого вычислительной системой 301 генерации кода для автоматической генерации кода, который тестирует возможности тестовой вычислительной системы 401 в отношении использования приложения схемы обмена сообщениями для применения в транзакциях сообщений согласно схеме обмена сообщениями. Код допускает моделирование без необходимости того, чтобы тестовая вычислительная система 401 участвовала в транзакции сообщений с другими организациями, или даже, в некоторых случаях, без необходимости связи с другими вычислительными системами. Описывая способ 600, мы будем часто обращаться к конкретному примеру схемы обмена сообщениями, показанному на фиг.5.
Вычислительная система генерации кода обращается к определению схемы обмена сообщениями (действие 601), например к определению схемы обмена сообщениями, описанному выше. Затем вычислительная система генерации кода осуществляет функциональный, ориентированный на результат этап автоматической генерации кода моделирования схемы обмена сообщениями с использованием определения схемы обмена сообщениями (этап 610). Этап 610 также может включать в себя любые соответствующие конкретные действия для достижения этого результата. Однако в иллюстрируемом варианте осуществления этап 610 включает в себя соответствующие действия 611 и 612.
В частности, для каждого состояния, в котором определение схемы обмена сообщениями позволяет передачу допустимого сообщения передачи тестовой вычислительной системой, вычислительная система генерации кода автоматически генерирует код, который, по меньшей мере, моделирует передачу допустимого сообщения передачи (действие 611). Например, рассмотрим состояние 501 «активное» на фиг.5. Состояние 501 «активное» допускает передачу одного допустимого сообщения, а именно сообщения отмены. Указано, что имеется равная 3% вероятность того, что сообщение отмены будет передано. Этот процент может быть задан в определении схемы обмена сообщениями и/или может быть задан пользователем или вычислительной системой генерации кода. Процент, связанный с этой передачей, может динамически изменяться со временем в ходе процесса тестирования. Чтобы смоделировать условную передачу сообщения отмены, вычислительная система генерации кода может генерировать код, отвечающий следующему псевдокодовому документу, в котором нумерация строк добавлена для дальнейшего объяснения:
1. | Main |
2. | { |
3. | DoStatt501() |
4. | { |
5. | Подбросить монетку |
6. | if (если) монетка находится в 3%-ном диапазоне |
7. | Отправить (сообщение отмены) |
8. | Go to (перейти к) DoState502 |
9. | end if |
10. | } |
11. | · |
12. | · |
13. | · |
14. | } |
В этом псевдокоде главная программа (main) создана со своим заголовком в строке 1, открывающей скобкой в строке 2 и закрывающей скобкой в строке 14. Затем генерируется подпроцедура, именуемая DoState501. Строка 3 идентифицирует подпроцедуру, заключенную в скобки с использованием открывающей скобки в строке 4 и закрывающей скобки в строке 10. Затем генерируется код для генерации псевдослучайного значения (см. строку 5). Затем генерируется условный код, так что, если условие выполняется при этом случайном значении (см. строку 6), то передача сообщения отмены, по меньшей мере, моделируется (см. строку 7), и код генерируется для выполнения до перехода в следующее состояние (см. строку 8), чтобы, таким образом, перейти в следующее надлежащее состояние.
Согласно фиг.6 для каждого состояния, в котором определение схемы обмена сообщениями позволяет прием допустимого сообщения приема, вычислительная система генерации кода генерирует код, который моделирует прием допустимого сообщения приема и который переходит к другому коду, который представляет состояние для перехода. Например, состояние 501 «активное» позволяет прием трех допустимых сообщений: сообщения подтверждения выхода, имеющего 10%-ную вероятность появления, сообщения завершения, имеющего 75%-ную вероятность появления, и сообщения об ошибке, имеющего 2% вероятность появления. Это моделируется в иллюстративном псевдокоде добавлением дополнительных условных операторов в ту же подпроцедуру DoState501 следующим образом:
1. | Main |
2. | { |
3. | DoState501() |
4. | { |
5. | Подбросить монетку |
6. | if монетка находится в соответствующем 3%-ном диапазоне |
7. | Отправить (сообщение отмены) |
8. | Go to DoState502 |
9. | end if |
10. | if монетка находится в соответствующем 10%-ном диапазоне |
11. | Принять (сообщение подтверждения выхода) |
12. | Go to DoState505 |
13. | end if |
14. | if монетка находится в соответствующем 75%-ном диапазоне |
15. | Принять (сообщение завершения) |
16. | Go to DoState503 |
17. | end if |
18. | if монетка находится в соответствующем 2%-ном диапазоне |
19. | Принять (сообщение об ошибке) |
20. | Go to DoState507 |
21. | end if |
22. | } |
23. | · |
24. | · |
25. | · |
26. | } |
Обратите внимание на добавление условно выполняемого псевдокода для моделирования приема сообщения подтверждение выхода с соответствующим переходом между состояниями в состояние 505 (смотри строки 10-13) моделирования приема сообщения завершения с соответствующим переходом между состояниями в состояние 503 (смотри строки 14-17) и моделирования приема сообщения об ошибке с соответствующим переходом между состояниями в состояние 507 (смотри строки 18-21).
Кроме того, передачу или прием недопустимых сообщений можно моделировать, присваивая положительную вероятность появления передаче или приему определенных недопустимых сообщений. Эти недопустимые сообщения могут не быть заданы определением схемы обмена сообщениями, поскольку они не отвечают схеме обмена сообщениями. Вместо этого, они могут быть введены пользователем или вычислительной системой генерации кода. Например, в состоянии 501 «активное» недопустимое сообщение может быть передано, что обозначено стрелкой 541 (с вероятностью появления 7%). Также, недопустимое сообщение может быть принято, что обозначено стрелкой 542 (с вероятностью появления 3%). Моделирование приема и передачи недопустимого сообщения позволяет при моделировании тестировать весьма реальную возможность столкнуться с несогласованностью со схемой обмена сообщениями. Для этих недопустимых сообщений также может автоматически генерироваться подобный код. Например, следующий псевдокод расширяет предыдущий пример для генерации кода, который условно моделирует передачу (смотри строки 25-27) и прием (смотри строки 22-24) недопустимых сообщений.
1. | Main |
2. | { |
3. | DoState501() |
4. | { |
5. | Подбросить монетку |
6. | if монетка находится в соответствующем 3%-ном диапазоне |
7. | Отправить (Сообщение отмены) |
8. | Go to DoState502 |
9. | end if |
10. | if монетка находится в соответствующем 10%-ном диапазоне |
11. | Принять (сообщение подтверждения выхода) |
12. | Go to DoState505 |
13. | end if |
14. | if монетка находится в соответствующем 75%-ном диапазоне |
15. | Принять (сообщение завершения) |
16. | Go to DoState503 |
17. | end if |
18. | if монетка находится в соответствующем 2%-ном диапазоне |
19. | Принять (сообщение об ошибке) |
20. | Go to DoState507 |
21. | end if |
22. | if монетка находится в соответствующем 2%-ном диапазоне |
23. | Принять (недопустимое сообщение) |
24. | end if |
25. | if монетка находится в соответствующем 7%-ном диапазоне |
26. | Отправить (недопустимое сообщение) |
27. | end if |
28. | } |
29. | · |
30. | · |
31. | · |
32. | } |
Этот процесс генерации также можно осуществлять для генерации подпроцедур для других состояний (например, состояний 502-507), которые также могут иметь свои собственные вероятности условных переходов. Процесс генерации кодов предусматривает генерацию главной программы (например, программы "main"), генерацию подпроцедуры для каждого состояния, генерацию случайного числа для каждого состояния, в котором может происходить множество событий, и, затем, условное осуществление события на основании случайного числа. Поскольку это высокопроцедурный процесс, предусматривающий малый объем внешнего вмешательства, процесс генерации кода может быть в значительной степени автоматизирован. Любое вмешательство пользователя, если таковое будет, будет тривиальным. Например, пользователю может понадобиться оценить вероятности появления каждого допустимого типа сообщения и указать, может ли происходить прием или передача недопустимых сообщений (совместно с соответствующими вероятностями). Однако пользователю в действительности не требуется самому проектировать код. Соответственно, код значительно проще генерировать.
Кроме того, функции «отправить» и «принять» можно создать таким образом, чтобы просто моделировать передачу или прием сообщений, которые происходили бы при реальной установке. Соответственно, нет необходимости опираться на сотрудничество с другой организацией, которая, в итоге, будет привлечена посредством схемы обмена сообщениями, чтобы тестировать приложение схемы обмена сообщениями. Согласно одному варианту осуществления, сами по себе передачу и прием можно моделировать так, что моделирование не обуславливает никакой реальный сетевой трафик, тем самым, экономя сетевые ресурсы.
Настоящее изобретение можно реализовать в других конкретных формах, не выходя за рамки его сущности или существенных характеристик. Описанные варианты осуществления следует рассматривать во всех отношениях только как иллюстративные, но не ограничительные. Таким образом, объем изобретения задается прилагаемой формулой изобретения, а не вышеприведенным описанием. Все изменения, согласующиеся со смыслом и диапазоном эквивалентности формулы изобретения, охватываются ее объемом.
Класс G06F11/36 Предотвращение ошибок с помощью тестирования или отладки программного обеспечения
Класс H04L29/02 управление передачей данных; обработка данных, поступающих с линий связи
Класс G06N1/00 Компьютерные системы, не отнесенные к группам 3/00