Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I version software components in Sparx Enterprise Architect (EA)?

I am working at modelling a software system using Sparx Enterprise Architect 13. This system contains different versions of software components. We typically add services and/or APIs when we release a new version of a software component.

Currently, to reflect the fact that component ServiceV1 exposes an interface A and ServiceV2 exposes interfaces A (the same as ServiceV1) and B, I make ServiceV2 extend ServiceV1. But that is not straightforward:

  • the generalization link is not available in diagrams between components, so I have to use Advanced > Parent...
  • it lacks flexibility, because I cannot override interface A with a newer version of the interface

Is there a better way to do so? What is the standard way of maintaining several versions of the same component?

Thank you!

like image 991
François.CA Avatar asked Oct 23 '25 04:10

François.CA


1 Answers

I don't think this is standardized by some standards body, but I would recommend to introduce two levels of abstraction: the unversioned component level and the versioned component level.

  • On the unversioned component level, you have just a single element in the project repository for each component (not for each component version).
  • On the versioned component level, you have a single element in the project repository for each version of each component.

Each versioned component, e.g. MyComponentV2 has a ≪trace≫ dependency to the unversioned one, e.g. MyComponent.

To prevent unnecessary design work, you may decide to draw relationships between different components only between versioned component elements, not between unversioned component elements, or only vice versa. But this depends on the needs of your organization.

When you create a new version of a component, you copy the most recent version of the component (MyComponentV2) with all its connections, including the ≪trace≫-dependency to the unversioned component (MyComponent) and give it the right name (MyComponentV3).

I have applied this in a large project.

like image 67
www.admiraalit.nl Avatar answered Oct 26 '25 02:10

www.admiraalit.nl