<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki.apidesign.org/skins/common/feed.css?116"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.apidesign.org/index.php?action=history&amp;feed=atom&amp;title=TypesOfDependencies</id>
		<title>TypesOfDependencies - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.apidesign.org/index.php?action=history&amp;feed=atom&amp;title=TypesOfDependencies"/>
		<link rel="alternate" type="text/html" href="http://wiki.apidesign.org/index.php?title=TypesOfDependencies&amp;action=history"/>
		<updated>2026-04-10T22:58:20Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.12.0rc1</generator>

	<entry>
		<id>http://wiki.apidesign.org/index.php?title=TypesOfDependencies&amp;diff=2142&amp;oldid=prev</id>
		<title>JaroslavTulach at 08:50, 23 March 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.apidesign.org/index.php?title=TypesOfDependencies&amp;diff=2142&amp;oldid=prev"/>
				<updated>2009-03-23T08:50:53Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 08:50, 23 March 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 90:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 90:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;tests to access package private classes.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;tests to access package private classes.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:APITypes]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;comments/&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	<entry>
		<id>http://wiki.apidesign.org/index.php?title=TypesOfDependencies&amp;diff=2085&amp;oldid=prev</id>
		<title>JaroslavTulach: /* Test Dependencies */</title>
		<link rel="alternate" type="text/html" href="http://wiki.apidesign.org/index.php?title=TypesOfDependencies&amp;diff=2085&amp;oldid=prev"/>
				<updated>2009-02-23T16:51:30Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Test Dependencies&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 16:51, 23 February 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 89:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 89:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;by placing the tests and the tested code into the same package and allowing the&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;by placing the tests and the tested code into the same package and allowing the&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;tests to access package private classes.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;tests to access package private classes.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;comments/&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	<entry>
		<id>http://wiki.apidesign.org/index.php?title=TypesOfDependencies&amp;diff=2082&amp;oldid=prev</id>
		<title>JaroslavTulach: /* Test Dependencies */</title>
		<link rel="alternate" type="text/html" href="http://wiki.apidesign.org/index.php?title=TypesOfDependencies&amp;diff=2082&amp;oldid=prev"/>
				<updated>2009-02-23T16:38:56Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Test Dependencies&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 16:38, 23 February 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 69:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 69:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Test Dependencies ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Test Dependencies ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Independent, yet important, category of dependencies are dependencies of tests.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Independent, yet important, category of &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;dependencies&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;are &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;dependencies&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;of tests.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If we accept the [[XP]] approach that tests shall accompany each code, it might seem&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If we accept the [[XP]] approach that tests shall accompany each code, it might seem&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;that the tests are so closely related to the code, that they shall have the&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;that the tests are so closely related to the code, that they shall have the&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;same dependencies as the code. But surprisingly, this is not usually true.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;same &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;dependencies&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;as the code. But surprisingly, this is not usually true.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If an API wants to support its own testability, and I argued in Chapter 9,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If an API wants to support its own testability, and I argued in Chapter 9,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Keep Testability &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;in &lt;/del&gt;Mind]] why it should, then the most common approach is&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Keep Testability &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;In &lt;/ins&gt;Mind]] why it should, then the most common approach is&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;to provide a support for creation of [[Mock Object]]s. However this extra classes&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;to provide a support for creation of [[Mock Object]]s. However this extra classes&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;or utility methods are unlikely to be in the [[API]] itself, they need to be&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;or utility methods are unlikely to be in the [[API]] itself, they need to be&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	<entry>
		<id>http://wiki.apidesign.org/index.php?title=TypesOfDependencies&amp;diff=2081&amp;oldid=prev</id>
		<title>JaroslavTulach: /* Linkage Dependencies */</title>
		<link rel="alternate" type="text/html" href="http://wiki.apidesign.org/index.php?title=TypesOfDependencies&amp;diff=2081&amp;oldid=prev"/>
				<updated>2009-02-23T16:37:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Linkage Dependencies&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 16:37, 23 February 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 43:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 43:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This includes loading the system in and resolving all external symbols during linkage&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This includes loading the system in and resolving all external symbols during linkage&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;time. This usually implies that all libraries needed during compilation are also&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;time. This usually implies that all libraries needed during compilation are also&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;needed during the linkage. Yet, this is not necessarily true. Many systems support&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;needed during the linkage. Yet, this is not necessarily true. Many systems support ''optional'' dependencies. E.g. dependencies that may be satisfied, but does&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;''optional'' dependencies. E.g. dependencies that may be satisfied, but does&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;not need to be. In such case there can be a library needed during compile time,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;not need to be. In such case there can be a library needed during compile time,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;yet if it is missing the system can run without it. If this is the case the&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;yet if it is missing the system can run without it. If this is the case the&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	<entry>
		<id>http://wiki.apidesign.org/index.php?title=TypesOfDependencies&amp;diff=2079&amp;oldid=prev</id>
		<title>JaroslavTulach: New page: When someone depends on someone else, it means that there is an action, activity which one can only do with help of that other person. This does not mean one relies on the other person in ...</title>
		<link rel="alternate" type="text/html" href="http://wiki.apidesign.org/index.php?title=TypesOfDependencies&amp;diff=2079&amp;oldid=prev"/>
				<updated>2009-02-23T16:35:17Z</updated>
		
		<summary type="html">&lt;p&gt;New page: When someone depends on someone else, it means that there is an action, activity which one can only do with help of that other person. This does not mean one relies on the other person in ...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;When someone depends on someone else, it means that there is an&lt;br /&gt;
action, activity which one can only do with help of that other person.&lt;br /&gt;
This does not mean one relies on the other person in all situations.&lt;br /&gt;
I can depend on help when walking, but I may be able to sit myself&lt;br /&gt;
without any assistance. This thought makes me think that there are no simple,&lt;br /&gt;
general&lt;br /&gt;
dependencies. There are various kinds of them, each kind useful for&lt;br /&gt;
a particular type of action. At least it seems so in real life. However,&lt;br /&gt;
as following sections show, it seems true also&lt;br /&gt;
in the world of software development.&lt;br /&gt;
&lt;br /&gt;
== Compile Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Why you need dependencies at all? Just having a source code for&lt;br /&gt;
your application is the first reason why you need&lt;br /&gt;
some external tools to compile your code. Without proper compiler your&lt;br /&gt;
source code is just a prose, in non way it is an algorithm.&lt;br /&gt;
This means you have to define dependencies&lt;br /&gt;
on the compiler and similar tools to properly&lt;br /&gt;
handle your source files. This includes a dependency on&lt;br /&gt;
your build system (for example ant or maven, or whatever will appear in the future).&lt;br /&gt;
Also, and not less&lt;br /&gt;
importantly, to express dependencies on the&lt;br /&gt;
libraries that export symbols your source code references.&lt;br /&gt;
&lt;br /&gt;
Some of these dependencies are useful only for the compilation phase,&lt;br /&gt;
some of them will be necessary at later stages as well. Usually the libraries&lt;br /&gt;
needed during the compilation are also necessary during execution. On the other&lt;br /&gt;
hand the build system, compiler and for example annotation processors&lt;br /&gt;
may not be needed later at all.&lt;br /&gt;
&lt;br /&gt;
This can lead to strange situations. During compilation a library may need&lt;br /&gt;
richer environment than during execution. Imagine that you want to create a&lt;br /&gt;
@java.util.ServiceProvider annotation to generate META-INF/services/something&lt;br /&gt;
files needed for java.util.ServiceLoader. This means that for compilation of&lt;br /&gt;
java.util module (and anything that compiles against it) you&lt;br /&gt;
need the javac compiler, libraries in javax.lang.model, and even more.&lt;br /&gt;
However the execution still needs just java.util.&lt;br /&gt;
&lt;br /&gt;
== Linkage Dependencies ==&lt;br /&gt;
&lt;br /&gt;
After the system is compiled the next stage is to prepare it for execution.&lt;br /&gt;
This includes loading the system in and resolving all external symbols during linkage&lt;br /&gt;
time. This usually implies that all libraries needed during compilation are also&lt;br /&gt;
needed during the linkage. Yet, this is not necessarily true. Many systems support&lt;br /&gt;
 ''optional'' dependencies. E.g. dependencies that may be satisfied, but does&lt;br /&gt;
not need to be. In such case there can be a library needed during compile time,&lt;br /&gt;
yet if it is missing the system can run without it. If this is the case the&lt;br /&gt;
linkage dependencies can be a subset of compile time ones.&lt;br /&gt;
&lt;br /&gt;
== Runtime Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Linkage is definitely the first action during execution. Yet, it is not the only&lt;br /&gt;
one and there can be additional requirements on the execution environment&lt;br /&gt;
beyond the linkage one. For example if you need a database populated with&lt;br /&gt;
data, then you do not need to depend on the database classes,&lt;br /&gt;
you just need the&lt;br /&gt;
database to be around. As such the runtime dependencies can be a clear&lt;br /&gt;
super set of linkage ones.&lt;br /&gt;
&lt;br /&gt;
Here is yet another example that relates to java.util.ServiceLoader: an [[API]]&lt;br /&gt;
may contain no implementation, but in order to function properly it may need&lt;br /&gt;
the implementation to be present. Such implementation is&lt;br /&gt;
then to be located with use of&lt;br /&gt;
java.util.ServiceLoader. This clearly means that the linkage dependencies of&lt;br /&gt;
the [[API]] need no reference to the implementation, yet the implementation is&lt;br /&gt;
part of the necessary execution environment. Good modular system allow such&lt;br /&gt;
dependency to be declaratively expressed.&lt;br /&gt;
&lt;br /&gt;
== Test Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Independent, yet important, category of dependencies are dependencies of tests.&lt;br /&gt;
If we accept the [[XP]] approach that tests shall accompany each code, it might seem&lt;br /&gt;
that the tests are so closely related to the code, that they shall have the&lt;br /&gt;
same dependencies as the code. But surprisingly, this is not usually true.&lt;br /&gt;
&lt;br /&gt;
If an API wants to support its own testability, and I argued in Chapter 9,&lt;br /&gt;
[[Keep Testability in Mind]] why it should, then the most common approach is&lt;br /&gt;
to provide a support for creation of [[Mock Object]]s. However this extra classes&lt;br /&gt;
or utility methods are unlikely to be in the [[API]] itself, they need to be&lt;br /&gt;
in separate distribution unit. This implies that whoever uses such [[API]] and&lt;br /&gt;
wants to cover own code with tests, needs extra test dependency on the&lt;br /&gt;
separate distribution unit. Test dependencies are different to regular runtime&lt;br /&gt;
ones.&lt;br /&gt;
&lt;br /&gt;
One may argue that the tests shall be packaged as just another module&lt;br /&gt;
and shall have regular dependency on the [[API]] module and the tests of the [[API]]&lt;br /&gt;
module. This is an option, yet one needs to keep in mind the relationship&lt;br /&gt;
between an [[API]] itself and its test is above standard. This is usually done&lt;br /&gt;
by placing the tests and the tested code into the same package and allowing the&lt;br /&gt;
tests to access package private classes.&lt;/div&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	</feed>