Component diagram dependency vs assembly
Asked Answered
E

1

12

I'm having a hard time understanding the difference between dependency and assembly(ball and socket) in UML component diagram.

I googled a lot and only found this relative question : uml component diagram difference between assembly and interfaces with dependency

But I don't really understand the answer to that question, I specifically want to ask :

  1. What does he mean by "definition level" and "instance level" ? I understand that there is only one diagram, are there two ?
  2. Whether there are two or not, can you give me a valid example which has "dependency" and "assembly" and explain why the first was "dependency" and the second was "assembly" ?

Note that I'm not asking about any particular image I found on web, I'm asking here in general, Also I want Uml 2 :) .

I prefer examples because I don't understand all the words in UML, also I prefer these examples to be somewhat realistic , that is not "A and B" but for example "Order and Person".

My goal of the question is to draw the Component diagram for our graduation project that we'll give to the professor :) .

Evelunn answered 19/10, 2016 at 6:44 Comment(0)
H
21

A component is a piece of software. This is the class level (definition level). This piece of software may be installed on multiple machines, or maybe multiple instances may be running on the same machine. This is the instance level. If, in your case, each component is instantiated only once, then you only need one diagram, showing the instances. Otherwise, it would be good to have one diagram show the class level and one diagram show the instance level.

For example, there is a component called EmployeeProvider, which provides services to access an employee database. Suppose there is an instance running in the USA and one instance running in Europe. Suppose also that there is a report generator component, which only has one instance, which reads information from both employee databases. Below you can see two diagrams, one showing the class level (top) and one showing the instance level (bottom).

components

Hafler answered 19/10, 2016 at 8:21 Comment(2)
Actually you are right (e.g. figure 11.8 on p 187 of the UML 2.5 spec). However, in the past I also used this for conceptual design since the assemble connector is easier to draw than two interfaces and a dependency. During design the conceptual assemblies were replaced by interfaces and dependencies.Gypsum
@ThomasKilian, thanks for mentioning the reference to the UML spec. And I agree it's good to be pragmatic sometimes, as long as you explain what you're doing.Hafler

© 2022 - 2024 — McMap. All rights reserved.