Актерское моделирование
В информатике актерное моделирование — это форма моделирования программного обеспечения , в которой основное внимание уделяется программным акторам . Моделирование актеров чаще всего используется для раннего моделирования требований; Благодаря этому становится возможным понять, кто является пользователями и заинтересованными сторонами системы и каковы их интересы и потребности в отношении этой системы . Растущая сложность современных систем делает более целесообразным использовать этот подход вместо традиционного, более механически ориентированного подхода. Если подумать о пользователях и их потребностях, легче понять, для чего предназначена система. Кроме того, этот подход помогает пользователям определить требования к системе. Подход моделирования актеров обычно сочетается с моделированием целей и задач, чтобы лучше понять ситуацию, в которой находится пользователь. Существуют различные языки моделирования , которые поддерживают моделирование актеров; примеры включают i* и EEML .
Актер
[ редактировать ]Центральный объект моделирования Актера — сам актер — может быть объектом любого типа, выполняющим действие(я). Например, это может быть человек, отдел или организация. Цель моделирования актера — лучше понять актера. Для этого важно понять актера, кто он и почему он делает то, что делает. У актера есть атрибуты, которые его определяют:
- У актера есть цели, навыки и обязанности.
- Актер выполняет задачи с определенной целью.
- Актор зависит от других акторов, ресурсов или задач.
Концепция актера изначально была разработана на платформе нескольких независимых процессоров в сети. Реализация на многопроцессорной машине обеспечивает несколько основных функций параллелизма, включая инкапсуляцию параллельной синхронизации и сериализованную обработку сообщений, которые обеспечивают параллельные функции более высокого уровня, такие как разветвление/объединение, асинхронность/ожидание, конвейерная обработка и другие. Код актера инкапсулирует управление потоками и синхронизацией, так что производный от него класс может использовать методы потоковой обработки без необходимости реализации деталей низкоуровневой сантехники.
Отношения
[ редактировать ]Различные участники модели, как правило, не являются взаимозависимыми. Поэтому необходимо уметь поместить действующих лиц в контекст. Это можно сделать через различные виды отношений:
- Связи между акторами (каковы отношения между акторами)
- Отношения к задачам (что делает пользователь)
- Связь с целями (какова цель пользователя)
- Зависимости (пользователь зависит от других сущностей: пользователей, задач, целей)
Роли
[ редактировать ]Роли позволяют обезличенное представление актера. Можно смоделировать роль и связать эту роль с актером, исполняющим эту роль. Если актер, исполняющий роль, по какой-либо причине перестает это делать, его можно легко заменить другим актером, который с этого момента исполняет эту роль; это может быть временная замена или долгосрочная договоренность. Кроме того, можно назначить новые и/или другие роли уже существующему актеру. Преимущество этого состоит в том, что саму модель не нужно менять; только связи между актерами и ролями надо переделать.
Ограничения модели актера
[ редактировать ]Использование актеров уменьшает количество механизмов возникновения условий гонки, но не устраняет их. Условия гонки данных возможны, если сообщения или базовая логика, затрагиваемая объектами-актёрами, включают изменяемые общие объекты. Реализация действительно параллельных структур данных нетривиальна. Модель актера улучшает некоторые из этих проблем, но не решает всех проблем. Взаимоблокировки возможны в ряде ситуаций. Модель Actor реализует передачу сообщений в направлении актера, но не способствует отправке запроса и получению определенного статуса или ответа на запрос. Синхронные ответы требуют какой-то логики блокировки. Информацию об объектах, которые могут обеспечивать такое поведение, смотрите в разделе «фьючерсы».