Author Topic: Proper way of modeling artifact manifestation and deployment of its instances  (Read 952 times)

Damir

  • EA User
  • **
  • Posts: 77
  • Karma: +0/-0
    • View Profile
Hi all,

I'm not finding good guidance on best practice how to properly model this:

Let's say I have a component named "Windows Service X". It is deployed on Node1 as the production environment, and on Node2 as the test environment.
It seems to me that proper way to model this deployment would be
  • to have an artifact "Windows Service X" which manifests component with that same name
  • to have first instance of that artifact with the name of that instance, and with deployment relation to Node1
  • to have second instance of that artifact with the name of that instance, and with deployment relation to Node2

now all this looks pretty straightforward until you try to show it on a deployment diagram. For the sake of the end users and usage of Traceability window, and future validations that should rely on connectors, I would like to be able to show some connectors based on which you can follow from the component to the node where it is deployed via artifact instance. But, you can't do that "out of the box" AFAIK?. So if I have component and nodes on the deployment diagram and
  • if I add the artifact and the instances of the artifact: I have a mess because of the amount of artifacts and their instances, the artifact is connected to the component, the instances to the nodes, but artifact and its instances are not related
  • if I remove artifact or instance from a diagram, I further loose visually what is deployed where
  • if I add relationship between instance of the artifact and the artifact - it is a dummy relationship and it is not clean. I don't want to do that
  • if I forget about instances (delete them) and deploy artifact to nodes (with using source role name in the relationship as the name of the executable deployed on the node), it may be complete, but it is not proper
  • if I just remove artifact from a diagram, and add manifestation relationships from artifact nodes to the component, I get cleanest looking diagrams, AFAIK it is proper to have artifact instance manifest a component (not it's instance), but the manifestation relationships are duplicated since they are already inherited, and it is a duplicate work. Not clean, don't like it...*, and you can't delete the artifact since it's instances then silently become... ARTIFACTS! automatically by EA without telling it to you (and you need to refresh diagram/reload package to see it)
  • it feels too stupid to have single artifact for everything, and make only instances of it and have them only directly manifest components and be deployed

* AFAIK EA can't show inherited relationships on diagrams in this case, which would be solution to my suffering.

any suggestions?
many thanks
Damir

Damir

  • EA User
  • **
  • Posts: 77
  • Karma: +0/-0
    • View Profile
BTW, if you convert an artifact into instance AFTER you add manifestation connector to a component, then EA duplicates that connector between component and the artifact instance - so again you have superfluous information in the model (but at least it is seen on the diagram with just instances, and some mess in the project browser and relationships....hm...
and of course, if you have to update wrong relationship, you are going to forget to do it on the artifact since it is not shown on any diagrams etc..., so the model shall become incorrect...

Richard Freggi

  • EA User
  • **
  • Posts: 302
  • Karma: +11/-5
    • View Profile

qwerty

  • EA Guru
  • *****
  • Posts: 11390
  • Karma: +295/-263
  • I'm no guru at all
    • View Profile
I use a class to model the service. This is the blueprint. When I instantiate it, it becomes an object. And this object represent the real world object (so an instance running on a specific machine). I use artifacts only for representing files and the like (something a bit more hard than pure software). Regarding artifacts: Sparx likes feature creep. Some day they came with dozens of different artifacts. I use none of them but just the plain one. Whenever I have the need for some speciality I add that to a profile.

q.

Damir

  • EA User
  • **
  • Posts: 77
  • Karma: +0/-0
    • View Profile
Richard thank you,

well, in that article, at the end under section "Instance Level Deployment Diagram" they are actually modeling with instance artifacts which do not have classifier. That was my original idea, but I wasn't able to create an artifact instance without classifier (artifact) in EA. Is it possible? How? I tried some tricks, but could not trick EA into allowing it to me.

thanks!

Damir

  • EA User
  • **
  • Posts: 77
  • Karma: +0/-0
    • View Profile
Q thank you, unfortunately that won't work in my case, I'm modelling quite large enterprise architecture "up to the business level" and avoiding official Archimate as it is too complex for the final user profiles. The distinction between component instance (object) and the artifact being deployed actually might come in handy...

Damir

  • EA User
  • **
  • Posts: 77
  • Karma: +0/-0
    • View Profile
So I guess, my final question is then how to create an artifact instance without classifier (artifact) in EA. Is it possible?

qwerty

  • EA Guru
  • *****
  • Posts: 11390
  • Karma: +295/-263
  • I'm no guru at all
    • View Profile
You can create an instance of an arbitrary artifact and remove the classifier by using Ctrl-L and selecting None.

But then (LOL)  you end up with a plain Artifact again.

P.S. UML 2.5 says about artifacts:
Quote
Artifacts elaborate and reify the abstract notion of DeployedArtifact. They represent concrete elements in the physical world, may have Properties representing their features and Operations that can be performed their instances, and may be multiply-instantiated so that different instances may be deployed to various DeploymentTargets, each with separate property values.

q.
« Last Edit: June 09, 2020, 08:55:55 pm by qwerty »

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 7290
  • Karma: +84/-12
    • View Profile
So I guess, my final question is then how to create an artifact instance without classifier (artifact) in EA. Is it possible?
I don't think it's possible in UML.

An InstanceSpecification is only an Artifact instance if its classifier is an Artifact.
Eve

support@sparxsystems.com