architectureumlarchimate

What's is the best diagram to show technologies used to develop a solution?


When a fairly complex application is developed, it'll involved a number of different components.

E.g.: An multi-tier application with;

We can show there components clearly in component diagrams or deployment diagrams.

But, all above components will be implemented with different technologies such as MySQL, Tomcat, Java, JSP, Angular etc...

Is there a standard diagram that we can show the technologies used for the overall solution (in UML/ Archimate etc...)? Such a diagram can help to plan a software development project as well as to build the technology landscape of an organization.


Solution

  • It is a bit beyond what I typically do but I would say the deployment and component diagrams are all you need.

    The deployment diagram allows you to show the components of the system on the deployment level, indicating specific artifacts and environments on which those are deployed. It doesn't have a direct indicator of technology used, but you could easily use e.g. stereotypes for that. If you want a visual representation, combine it with profiles.

    Note that environment can be any executable environment so for example a FE component deployed on TomCat run under Solaris server will have the Solaris as environment with TomCat deployed on it also as environment and eventually the component itself shown as component with artifact representing actual implementation (and language). The diagram below, taken from uml-diagrams.org may be a bit simplified view (for instance doesn't show specific technologies) but overall shows how detailed the listing of elements can be. Just add stereotypes and you have what you need.

    Deployment diagram example from uml-diagrams.org

    The component diagram obviously doesn't show deployment level so no environments are there. But again, using stereotypes (and with profiles - those can again be represented in a visual way) you can show the technology (programming language and frameworks) used to create specific components. It is more system logic architecture level.

    The choice of diagrams will depend on what specifically you want to show.