Но в Capella все по другому. Основной моделью является именно модель экземпляров. А определения могут создаваться на основе экземпляров, при необходимости. А могут и вообще не создаваться. Элементы модели Capella это часто именно экземпляры и это имеет место на всех уровнях абстракции и для всех аспектов системы.
На всякий случай напомню структуру модели в Capella. В модели Capella присутствуют разделы для описания системы на каждом уровне абстракции и для каждого аспекта. Так, присутствуют разделы в модели, которые описывают системы на разных уровнях абстракции:
- операционная архитектура
- системный анализ
- логическая архитектура
- физическая архитектура
- архитектура закупки
На каждом уровне абстракции в модели Capella присутствуют разделы для описания различных архитектурных аспектов: назначения, возможностей, функционала, структуры, данных, интерфейсов, окружения, .... На нижнем уровне в модели присутствуют элементы различных типов: функции, компоненты, связи разного типа и т.д.
И большинство из перечисленных выше элементов являются "экземплярами", а не определениями.
Модели систем в Capella предназначены для описания РЕАЛЬНЫХ систем. Реальных не в смысле механических и т.п. Реальныеми могут быть и программные системы. Реальных в смысле не абстрактных, а тех которые существуют в мире, либо должны быть созданы.
Реальные системы состоят из реальных экземпляров, "конкретных" элементов. В системе присутствуют конкретные экземпляры насосов, розеток, программ, программных модулей, они выполняют конкретные функции, обмениваются конкретными данными. Они связаны друг с другом конкретными связями.
Модель физической архитектуры системы, также как и сама система состоит из конкретных экземпляров. Каждому элементу модели Capellaa в реальном мире существует или будет создан конкретный объект. Например в модели экземпляров для дома, будут включены элементы всех 100 розеток, элементы портов для всех 100 розеток, отдельные функции для всех 100 розеток, отдельные порты для всех 100 розеток, отдельные связи, которые свяжут эти 100 розеток с конкретными коммутаторами и т.д.
С физической архитектурой более менее понятно. Но и описания более высокого уровня в Capella являются моделями экземпляров. Моделями экземпляров в Capella также являются операционная архитектура, модель системного анализа, логическая архитектура. Логическая архитектура содержит конкретные экземпляры логических подсистем. Если таких подсистем несколько, то модель логической архитектуры будет содержать несколько ЭКЗЕМПЛЯРОВ подсистем и связанных с ними элементов модели (вложенных экземпляров, функций экземпляров, портов экземпляров, связей экземпляров).
Осознав, что практически вся модель в Capella является моделью экземпляров, возникает вопрос насчет наличия концепции определений и как их можно использовать. С определениями в Capella все в порядке. Немного непривычен именно порядок их использования. Определения в Capella создаются на примере конкретных экземпляров, а не обычным способом, принятым в инструментах моделирования: сначала создал определение, а потом его применил.
Определения элементов в Capella выступают в роли шаблонов, которые позволяют упростить создание моделей экземпляров. Определения элементов позволяют создавать повторяющиеся экземпляры в модели на основе одного определения. Определения позволяют заменить Copy-Paste в модели экземпляров на создание экземпляров на основе определений (инстанциирование экземпляров). На основе одного определения можно создать произвольное количество экземпляров. При изменении определения можно обновить все экземпляры одним действием.
Способов работать с определениями\экземплярами в Capella много. Можно начать с создания конкретного экземпляра, потом создать на основе него определение и создать другие экземпляры на основе определения. Можно обновить экземпляр и обновить на основе него определение. Можно обновить определение на основе одного измененного экземпляра, а потом обновить все остальные экземпляры. Причем, определение элемента может описывать одну розетку или целый дом. Определение в Capella может содержать только структурное описание, а может включать и отдельное функциональное (с привязкой к структуре). Определение может описывать не отдельный элемент, а некоторую взаимодейсвующую группу элементов, описывать некоторый паттерн их взаимодействия. Экземпляры могут отличаться от определений, а могут им точно соответствовать.
Всегда ли нужно разделять определения элементов и экземпляры в модели? Нет, не всегда, а только тогда, когда предполагается наличие нескольких экземпляров данного элемента. Если в модели экземпляров квартиры все шкафы уникальны, то можно сразу создавать в модели экземпляров описания экземпляров. А вот для одинаковых стульев лучше создать определение и в модели экземпляров создавать элементы на основе определений.
Если с понятиями определение - экземпляр все более менее понятно, то чуть сложнее с понятиями класс\объект\экземпляр. Когда мы определяем абстрактную табуретку (класс) мы говорим, что табуретка включает абстрактные ножки (объекты). Ножки - объекты внутри описания класса - это не экземпляры. В описании класса всего 4 объекта ножки. А в 10 табуретках 40 экземпляров. При описании классы мы определяем для него свойства такие как цвет, текстура. Для объекта можно задать некоторые конкретные значения свойств класса. Например для объектов ножек табуретки можно задать цвет. Но при изготовлении табуреток цвет конкретных экземпляров будет отличаться.
Подход к работе с определениями\экземплярами в Capella отличается от других инструментов. Большинство элементов модели -это конкретные экземпляры. Необходимо сразу понимать это и тогда сложностей с определениями и экземплярами в модели не будет.
В теме форума объясняется пример почему нужно создавать несколько одинаковых функций/компонентов и аллоцировать каждую функцию на отдельный компонент
ОтветитьУдалитьhttps://polarsys.org/forums/index.php/t/508/