I thought import and access are types of dependency, but there was a site saying that they're not. It says that the dependency is a little it different with the import/access relationship. What are the differences? Thanks in advance.
Dependency
A Dependency implies that the semantics of the clients are not complete without the suppliers. The presence of Dependency relationships in a model does not have any runtime semantic implications. The semantics are all given in terms of the NamedElements that participate in the relationship, not in terms of their instances.
PackageImport
A PackageImport is a DirectedRelationship between an importing Namespace and a Package, indicating that the importing Namespace adds the names of the members of the Package to its own Namespace.
PackageMerge
A PackageMerge is a directed relationship between two Packages that indicates that the contents of the target mergedPackage are combined into the source receivingPackage according to a set of rules defined below. It is very similar to Generalization in the sense that the source element conceptually adds the characteristics of the target element to its own characteristics resulting in an element that combines the characteristics of both.
Dependency states that it doesn't have any runtime semantic implications; that must remain true for all subclasses (subclass cannot relax constraints). So if the PackageImport was a subclass of Dependency, then it wouldn't be able to import anything.
To oversimplify: Dependency captures an idea (e.g. this package «use»s this other package, but we don't care how), whilst PackageImport captures an action (e.g. this package «import»s this other package with these precise mechanics).
As a sidenote, they do share a common ancestor in the form of DirectedRelationship