Author Topic: Representing relationships between application and technology components  (Read 408 times)

Modesto Vega

  • EA User
  • **
  • Posts: 528
  • Karma: +14/-7
    • View Profile
Apologies for the prolonged absence, these are strange times.

Just a quick question I hope, using UML what would be the most appropriate relationship to represent the relationship between application and technology components, and technology components and environments?

For example a database (application component) hosted on SQL Server 2019 or Postgre SQL 12.3 or a website hosted on IIS or Apache.

For example, a development environment hosting both Postgre SQL and Apache on a singe or a production environment consisting of 2 servers one for Postgre SQL and another for Apache.
« Last Edit: June 26, 2020, 12:58:03 am by Modesto Vega »

philchudley

  • EA User
  • **
  • Posts: 609
  • Karma: +13/-0
  • UML/EA Principal Consultant / Trainer
    • View Profile
You could consider ArchiMate 3.1 where an Application Component can be related to a Technology Node, or a System Software or a Technology Device via a Serving relationship.

Caveat

Some versions of EA may not allow these connectors, but in EA version 15.2 it certainly works.

All the best

Phil

follow me on Twitter

@SparxEAGuru

Modesto Vega

  • EA User
  • **
  • Posts: 528
  • Karma: +14/-7
    • View Profile
Thanks Phil, if possible I would rather stay away from ArchiMate. But since Sparx maps ArchimaMate to UML it will be good to note what base elements Sparx uses for what you describe.

philchudley

  • EA User
  • **
  • Posts: 609
  • Karma: +13/-0
  • UML/EA Principal Consultant / Trainer
    • View Profile
ArchiMate_ApplicationComponent has UML::Component as its meta-class

The others Device, Node and System software all have UML::Class as the meta-class

I would guess that the ArchiMate_Serving relationship is based upon an UML::Association meta class

Should be fairly straightfoward to create an MDG based on UML to model the relationships in exactly a form you want

All the best

Phil
follow me on Twitter

@SparxEAGuru

Modesto Vega

  • EA User
  • **
  • Posts: 528
  • Karma: +14/-7
    • View Profile
This is the progress so far:
  • Use realisations to break down an application component into sub-components
  • Use dependencies to relate application components to technology components
  • Use nodes to represent environments
Just 2 additional comments:
  • A server, virtual or physical, where components are deployed is not the same as the OS of the server. In this case, it seems as if the best way to approach this is to use a "component" for the OS and node for the server, what could also use a device. Any thoughts?
  • The Cloud makes life a bit more interesting. Both in AWS and Azure I could deploy a database or a website/web based application without using a server. What would be the best way to represent the database or website/web based application as 2 separate things? Would both be "components"? How to represent the relationship between the database or website/web based application and the cloud "service/product" (Azure SQL Database, AWS RDS, AWS Fargate or Amazon EC2) used to host them?