1 |
%$Header$ |
2 |
% |
3 |
%------------------------------------------------------------------------------------------------------------------ |
4 |
%This file isn't used directly--instead, the Tcl script CP_SCRIPT.TCL inserts it into the the main .TEX volume. |
5 |
%In this process, the <mv> and <sv> tags on some lines are processed. <mv> lines go only to the multi-volume |
6 |
%work, and <sv> lines to only to the single-volume work. |
7 |
% |
8 |
%For the multi-volume work, the symbolic patchup is near perfect. But for the single-volume work, the parts |
9 |
%are numbered manually, which is a process open to human error. This preface must be checked when chapters |
10 |
%are moved, added, or deleted. |
11 |
%------------------------------------------------------------------------------------------------------------------ |
12 |
\chapter{Preface} |
13 |
|
14 |
In 1998, I began work on the |
15 |
interrupt latency compatibility problem. As I searched |
16 |
for prior work, I was |
17 |
surprised to discover the paucity |
18 |
of research available on practical embedded software |
19 |
problems. Textbooks were also not very helpful, |
20 |
as I found that almost none |
21 |
of the hard |
22 |
problems that occur in practice |
23 |
were addressed. |
24 |
|
25 |
In 1999, I decided to compose my own book, |
26 |
maintained on the Web, |
27 |
to collect useful |
28 |
research results, solutions to practical problems, |
29 |
unsolved problems, and directions for future |
30 |
research and refinement. |
31 |
\LaTeX{} was chosen as the text-processing |
32 |
tool, as it was |
33 |
recognized immediately |
34 |
that size could become an issue and that the book |
35 |
would have a substantial mathematical content. |
36 |
The freedom from any practical length |
37 |
limitation |
38 |
means that I am |
39 |
free to include as many topics |
40 |
in as much detail as I'd like.\footnote{My readers will |
41 |
be consuming \emph{their} toner cartridges, not mine.} |
42 |
|
43 |
In 2001, this book was moved to |
44 |
\index{SourceForge}\emph{SourceForge}\footnote{\emph{SourceForge} |
45 |
(\texttt{http://www.sourceforge.net}), to whom I am very grateful, |
46 |
is an organization that hosts open-source projects.} and |
47 |
combined with a tool |
48 |
set for microcontroller software work |
49 |
(\emph{The Iju Tool Set}). |
50 |
|
51 |
In 2002, the collective set of materials (the tool set and this book) |
52 |
was renamed \emph{The ESRG Tool Set}\footnote{\emph{ESRG} |
53 |
is an acronym for \emph{E}mbedded \emph{S}ystems \emph{R}esearch \emph{G}roup.}, |
54 |
and placed under a different |
55 |
project at \emph{SourceForge}. |
56 |
|
57 |
\emph{The ESRG Tool Set}, which is fully open-source and |
58 |
available for free from \emph{SourceForge} at the URL |
59 |
\texttt{http://esrg.sourceforge.net}, contains |
60 |
these materials: |
61 |
|
62 |
\begin{itemize} |
63 |
\item A \texttt{.PDF} copy of the most recent released |
64 |
version of this book. |
65 |
|
66 |
\item The packaged \LaTeX{} source code and graphics |
67 |
for the most recent released |
68 |
version of this book. |
69 |
|
70 |
\item The most recent (unreleased) source code for this book |
71 |
(available from the CVS version control archives). |
72 |
|
73 |
\item The most recent released version of |
74 |
\emph{The ESRG Tool Set}, packaged as an installation |
75 |
for Windows 95/98/ME/NT/2000/XP. This installation also |
76 |
contains web pages with helpful URLs, and supplemental |
77 |
materials (such as spreadsheets to demonstrate techniques, |
78 |
other documents and standards maintained as part of this |
79 |
effort, |
80 |
Java applets, etc.). |
81 |
|
82 |
\item The packaged source code for the most recent released |
83 |
version of \emph{The ESRG Tool Set}. |
84 |
|
85 |
\item The most recent (unreleased) source code of |
86 |
\emph{The ESRG Tool Set} (available from the CVS |
87 |
version control arvhives). |
88 |
|
89 |
\item The most recent (unreleased) versions of the non-tool |
90 |
materials maintained with \emph{The ESRG Tool Set}, including |
91 |
spreadsheets to demonstrate techniques, other |
92 |
documents and standards maintained as part of this |
93 |
effort, Java applets, etc. (available from the CVS version control |
94 |
archives). |
95 |
\end{itemize} |
96 |
|
97 |
|
98 |
I have produced this set of works with the following four goals. |
99 |
\marginpar{\textbf{Goals of This Work}} |
100 |
\begin{itemize} |
101 |
\item \textbf{To share results and coordinate work |
102 |
with researchers.} I have |
103 |
found that there is a disconnect between practitioners |
104 |
(those who have exposure to difficult problems) and |
105 |
researchers (those who often have the ability to solve these |
106 |
difficult problems). A large work is required to |
107 |
explain the design challenges present in practical embedded software |
108 |
work, and to place the most difficult unsolved problems in the hands |
109 |
of researchers. |
110 |
\item \textbf{To share results and coordinate work with practitioners.} |
111 |
Many of the problems and solutions presented in this work apply |
112 |
to almost all applications of embedded software, and in many cases |
113 |
are inherent to \emph{all} software. These problems and solutions |
114 |
will be useful to software practitioners. I also expect |
115 |
that practitioners have strong solutions to contribute to this |
116 |
work.\footnote{With less jubilation, I also expect that |
117 |
practitioners have new hard problems to contribute. |
118 |
With any luck, I will obtain more new solutions than new problems.} |
119 |
\item \textbf{To enrich the educational experience for students.} |
120 |
All of the material contained in this set of works is free\footnote{Subject |
121 |
to license restrictions. The license under which this book may be used |
122 |
is included later in this preface. Software tools are licensed under the GPL.} (which, |
123 |
from a student's point of view, is the best price). |
124 |
For example, this book can be used by instructors as |
125 |
free supplemental |
126 |
material for a course. |
127 |
\item \textbf{To guide tool vendors.} The design of tools |
128 |
is very much like the design of software, in that one must have |
129 |
a nearly complete understanding of the requirements |
130 |
in order to produce a useful product. I have often found that |
131 |
tool vendors are unaware of the actual needs of embedded |
132 |
software developers. By clearly enumerating requirements and |
133 |
lessons learned, I strive to give tool vendors the information |
134 |
and insight |
135 |
necessary to better support embedded software developers. |
136 |
\end{itemize} |
137 |
|
138 |
In \marginpar{\textbf{\emph{Small} Defined}} |
139 |
the title of this book, I've indicated that this book is |
140 |
about \index{small microcontroller system}\emph{small} microcontroller work. By |
141 |
\emph{small microcontroller work}, I mean the development |
142 |
and production of small |
143 |
embedded |
144 |
software/hardware |
145 |
systems such as are found |
146 |
in consumer electronics and the automobile industry. Although |
147 |
it is difficult to specify precisely what is and is not a |
148 |
\emph{small} microcontroller system, the systems |
149 |
I have in mind generally meet |
150 |
the following criteria. |
151 |
|
152 |
\begin{itemize} |
153 |
\item They |
154 |
involve a single-chip control solution (the address and data busses of |
155 |
the microcontroller are not extended outside the package). |
156 |
\item They |
157 |
involve ROM and RAM sizes of under 1M.\footnote{But usually much less--256K or less of ROM and 24K |
158 |
or less of RAM would be typical for my definition of \emph{small}.} |
159 |
\item They frequently involve non-preemptive scheduling. In the systems I would |
160 |
classify as \emph{small}, pre-emptive scheduling and/or commercial |
161 |
RTOSs are relatively uncommon. |
162 |
\item They involve a software |
163 |
program that cannot easily be changed (either because the program |
164 |
is lithographically masked into the microcontroller or because special |
165 |
equipment or special access to the microcontroller is required).\footnote{A consequence of the |
166 |
software unchangeability |
167 |
combined with high production volumes is |
168 |
that software mistakes are very, very expensive.} |
169 |
\item They exist in an unstable electrical environment, |
170 |
characterized by supply voltage fluctuations, |
171 |
electrical transients, and spurious resets. |
172 |
\end{itemize} |
173 |
|
174 |
I use the term \index{hard problem}\emph{hard problem} throughout this book. |
175 |
I define a |
176 |
\marginpar{\textbf{\emph{Hard Problem} Defined}} |
177 |
\emph{hard} problem as a problem that |
178 |
meets the following two criteria. |
179 |
\begin{itemize} |
180 |
\item \textbf{The problem is \emph{hard}.} |
181 |
The time to solve the problem is measured in |
182 |
months or years, rather than hours or days; and furthermore, |
183 |
the problem may be beyond the analytical ability of |
184 |
most practicing embedded software engineers. In practice, this means that |
185 |
an embedded software engineer cannot solve the problem in the time |
186 |
available during a product development cycle. |
187 |
\item \textbf{A solution to the problem is necessary for |
188 |
reliable software or for ease of software construction.} |
189 |
Generally, I would wish to exclude from consideration |
190 |
problems which are difficult but which have no practical implications |
191 |
for software reliability or ease of software construction |
192 |
if they are not solved. |
193 |
\end{itemize} |
194 |
|
195 |
Clearly, if an embedded software engineer is to be productive and |
196 |
produce a reliable embedded product, the number of unsolved |
197 |
\emph{hard} problems s/he encounters during a career must |
198 |
be fairly small. However, the reality is that a practicing |
199 |
embedded software engineer encounters unsolved hard problems |
200 |
on a daily basis. |
201 |
|
202 |
In this work I take a special but not exclusive interest in |
203 |
\emph{hard} problems---those that are relevant and necessary |
204 |
but |
205 |
so difficult and time-consuming that a software engineer cannot |
206 |
solve them in the time available during the product development |
207 |
cycle. I also have some interest in paradigms (ways of |
208 |
thinking about software systems and problems), and in |
209 |
best and worst practices (practices that are likely to to |
210 |
avert problems and practices that are nearly suicidal, |
211 |
respectively). It is noteworthy that I do not |
212 |
have much interest in established |
213 |
mathematical results that are available in |
214 |
textbooks my readers probably already own. |
215 |
For example, I have very limited interest in |
216 |
reprinting the mathematical results surrounding |
217 |
sampled control systems, but |
218 |
I might be very interested in results predicting what |
219 |
could and could not happen if such a |
220 |
sampled control system is implemented on |
221 |
a microcontroller using economical but lossy |
222 |
multiplication and integration (to the best of my |
223 |
knowledge, this insight does not exist anywhere). |
224 |
|
225 |
<mv>\textbf{Volume \vconzeroroman{}: \vconzerotitle{}} |
226 |
<sv>\textbf{Part I: Concepts} |
227 |
\marginpar{\textbf{Book Contents}} |
228 |
contains an introduction to the challenges of small microcontroller work. |
229 |
\begin{itemize} |
230 |
\item \textbf{Chapter\;\ref{cint0}, \cintzerotitle{}} explains the scope of the book |
231 |
and what is meant by \emph{small microcontroller work}. |
232 |
\item \textbf{Chapter\;\ref{chgr0}, \chgrzerotitle{}} provides my personal |
233 |
interpretation of the |
234 |
Holy Grail of embedded real-time software---that is, what is |
235 |
desirable and undesirable and what fundamental goals |
236 |
exist. In this chapter, I deal primarily in paradigms of |
237 |
thought and |
238 |
unattainable goals. |
239 |
\end{itemize} |
240 |
|
241 |
<mv>\textbf{Volume \vmfrzeroroman{}: \vmfrzerotitle{}} |
242 |
<sv>\textbf{Part II: Mathematical Frameworks} |
243 |
contains key mathematical frameworks and |
244 |
results that are divorced from any specific problem. |
245 |
\begin{itemize} |
246 |
\item \textbf{Chapter\;\ref{cpri0}, \cprizerotitle{}} presents results surrounding |
247 |
properties of integers and prime and composite numbers. |
248 |
\item \textbf{Chapter\;\ref{cfry0}, \cfryzerotitle{}} presents results surrounding |
249 |
the \index{Farey series}Farey series. The Farey series, which is the |
250 |
ordered set of rational numbers with a certain maximum denominator, |
251 |
forms the basis for some techniques of rational approximation. |
252 |
\item \textbf{Chapter\;\ref{ccfr0}, \ccfrzerotitle{}} presents results surrounding |
253 |
\index{continued fractions}continued fractions. The apparatus of continued |
254 |
fractions provides the best algorithm for finding Farey neighbors and hence |
255 |
best rational approximations. |
256 |
\item \textbf{Chapter\;\ref{cbal0}, \cbalzerotitle{}} presents results surrounding |
257 |
Boolean algebra. Traditionally, Boolean algebra and the study of Boolean |
258 |
functions is associated with digital hardware design, but results and |
259 |
algorithms involving the simplification of Boolean functions also have |
260 |
application to the simplification of software control flow constructs. |
261 |
\item \textbf{Chapter\;\ref{cqua0}, \cquazerotitle{}} presents results surrounding |
262 |
the analysis of calculation error introduced by \emph{quantization}, the |
263 |
unavoidable mapping from $\vworkrealset{}$ to $\vworkintset{}$ that must occur |
264 |
as signals from the external world, which are usually continuous in nature, |
265 |
are converted and processed by a microcontroller, which can inherently manipulate |
266 |
only integers. |
267 |
\item \textbf{Chapter\;\ref{cmtn0}, \cmtnzerotitle{}} presents miscellaneous results |
268 |
from number theory which are useful or interesting, but awkward to |
269 |
categorize. |
270 |
\end{itemize} |
271 |
|
272 |
|
273 |
<mv>\textbf{Volume \vcswzeroroman{}: \vcswzerotitle{}} |
274 |
<sv>\textbf{Part III: Construction Of Embedded Software} |
275 |
details the way embedded systems are (or should be) |
276 |
constructed in practice. |
277 |
\begin{itemize} |
278 |
\item \textbf{Chapter\;\ref{cpco0}, \cpcozerotitle{}} outlines many aspects of |
279 |
the way that embedded software is constructed (or should be constructed) |
280 |
in practice. |
281 |
|
282 |
\item \textbf{Chapter\;\ref{csoc0}, \csoczerotitle{}} treats issues specific to |
283 |
the support of peripherals that are usually located on the same silicon |
284 |
die as the microcontroller, such as hardware watchdogs or EEPROM. |
285 |
|
286 |
\item \textbf{Chapter\;\ref{csoc1}, \csoconetitle{}} treats issues specific to |
287 |
the support of peripherals that are usually separate from the microcontroller, |
288 |
such as transducers and actuators. |
289 |
|
290 |
\item \textbf{Chapter\;\ref{csnc0}, \csnczerotitle{}} discusses the support |
291 |
of communication protocols and networks. |
292 |
|
293 |
\item \textbf{Chapter\;\ref{csfo0}, \csfozerotitle{}} discusses requirements |
294 |
that tend to occur in many different types of embedded software, |
295 |
such as the need to calibrate an embedded product or diagnose it |
296 |
via a communication link. |
297 |
|
298 |
\item \textbf{Chapter\;\ref{crta0}, \crtazerotitle{}} discusses the real-time |
299 |
analysis of embedded software; that is, how embedded software can be |
300 |
analyzed to be sure that it will always meet its real-time constraints. |
301 |
\end{itemize} |
302 |
|
303 |
|
304 |
<mv>\textbf{Volume \valgzeroroman{}: \valgzerotitle{}} |
305 |
<sv>\textbf{Part IV: Embedded System Algorithms And Techniques} |
306 |
presents algorithms which are used in a target embedded system. |
307 |
|
308 |
\begin{itemize} |
309 |
\item \textbf{Chapter\;\ref{ccil0}, \ccilzerotitle{}} presents |
310 |
classical and simple\footnote{Here \emph{classical} is used |
311 |
in the same sense as Knuth uses it in \cite[p. 265]{bibref:b:knuthclassic2ndedvol2}.} |
312 |
integer algorithms and techniques which |
313 |
are used in embedded systems. Because integer and fixed point algorithms |
314 |
are the dominant paradigm of arithmetic in small microcontroller |
315 |
systems, this chapter is the backbone of most arithmetic in these systems. |
316 |
|
317 |
\item \textbf{Chapter\;\ref{crat0}, \cratzerotitle{}} develops techniques |
318 |
and results surrounding rational approximation; that is, arpproximating a real number |
319 |
$r_I$ by a rational number $h/k$. |
320 |
|
321 |
\item \textbf{Chapter\;\ref{cdta0}, \cdtazerotitle{}} presents algorithms |
322 |
for use in discrete time (such as integration and differentiation), |
323 |
and also more sophisticated integer algorithms. |
324 |
|
325 |
\item \textbf{Chapter\;\ref{cnnu0}, \cnnuzerotitle{}} presents miscellaneous |
326 |
non-numerical algorithms for use in target embedded systems. |
327 |
\end{itemize} |
328 |
|
329 |
|
330 |
<mv>\textbf{Volume \vpaczeroroman{}: \vpaczerotitle{}} |
331 |
<sv>\textbf{Part V: Practical, Administrative, Incidental, And Miscellaneous Topics} |
332 |
discusses topics that are non-technical, only peripherally related to embedded system |
333 |
software development, |
334 |
or difficult to categorize elsewhere. |
335 |
|
336 |
\begin{itemize} |
337 |
\item \textbf{Chapter\;\ref{cmpd0}, \cmpdzerotitle{}} discusses practical technqiues for |
338 |
the management of materials produced during the product development process. |
339 |
|
340 |
\item \textbf{Chapter\;\ref{cpit0}, \cpitzerotitle{}} provides designs and some |
341 |
analysis of circuits that are useful in microcontroller software |
342 |
development---either in microcontroller products themselves or in |
343 |
test fixtures. |
344 |
|
345 |
\item \textbf{Chapter\;\ref{cbma0}, \cbmazerotitle{}} discusses |
346 |
bad management and unpleasant work situations, provides paradigms |
347 |
and strategies for dealing with unpleasant work situations, and provides |
348 |
guidance in finding employment. |
349 |
|
350 |
\item \textbf{Chapter\;\ref{cpxf0}, \cpxfzerotitle{}} describes software and |
351 |
hardware products which are exceptionally useful in embedded product development. |
352 |
|
353 |
\item \textbf{Chapter\;\ref{corq0}, \corqzerotitle{}} describes open research |
354 |
questions, i.e. problems I am aware of but do not know how to solve. |
355 |
|
356 |
\item \textbf{Chapter\;\ref{cisk0}, \ciskzerotitle{}} contains reverse analyses of |
357 |
embedded product defects, and the lessons to be learned from these |
358 |
defects.\footnote{The word \emph{Insektengericht} (``insect court'', in German) |
359 |
comes from a page in a \emph{Beavis and Butthead} comic book purchsed in |
360 |
the M\"unchen Hauptbahnhoff around 1996. In this comic book, Beavis and |
361 |
Butthead sit in judgement of insects (bugs), always with the verdict |
362 |
\emph{schuldig} (guilty), and always with harsh sentences such as |
363 |
\emph{Tod durch explodieren} (death by explosion). I do much the same |
364 |
thing with embedded software bugs and embedded product defects.} |
365 |
Because it isn't possible in the product development process to address |
366 |
\emph{every} possible source of defect, I feel it is important to |
367 |
have a visceral feel for what is most likely to go wrong; and such |
368 |
intuition can only come from actively collecting product defects. I very much |
369 |
hope that airline pilots study transcripts and reports from airplane crashes, and I |
370 |
encourage embedded software developers to do the same. |
371 |
\end{itemize} |
372 |
|
373 |
|
374 |
<mv>\textbf{Volume \vijtzeroroman{}: \vijtzerotitle{}} |
375 |
<sv>\textbf{Part VI: ESRG Tool Set Reference Guide} |
376 |
is a reference for the research tool set for microcontroller |
377 |
work (based on Tcl/Tk from Scriptics/Ajuba/Interwoven), which is packaged |
378 |
with this book. |
379 |
|
380 |
\begin{itemize} |
381 |
\item \textbf{Chapter\;\ref{ctin0}, \ctinzerotitle{}} contains an overview |
382 |
of the tool set and its design goals and construction. |
383 |
|
384 |
\item \textbf{Chapter\;\ref{ctcm0}, \ctcmzerotitle{}} provides a reference |
385 |
for the Tcl scripting language, around which the tool set is constructed. |
386 |
|
387 |
\item \textbf{Chapter\;\ref{ctkm0}, \ctkmzerotitle{}} provides a reference |
388 |
for the Tk graphical extensions to Tcl. These graphical extensions, |
389 |
which are built into the tool set, are very useful for providing |
390 |
attractive GUI interfaces. |
391 |
|
392 |
\item \textbf{Chapter\;\ref{cfaq0}, \cfaqzerotitle{}} addresses frequently |
393 |
asked questions and ``gotchas'' in Tcl and Tk. |
394 |
|
395 |
\item \textbf{Chapter\;\ref{cxtn0}, \cxtnzerotitle{}} documents the Tcl |
396 |
extensions which have been added to the script interpreters |
397 |
(\emph{EsrgScripter} and \emph{EsrgConsole}). These extensions form the |
398 |
``meat'' of \emph{The ESRG Tool Set}, and represent the new ideas or |
399 |
new effort we are trying to convey. These new ideas and |
400 |
new effort are embedded into Tcl interpreters to grant |
401 |
greater flexibility in their application. |
402 |
|
403 |
\item \textbf{Chapter\;\ref{cdcm0}, \cdcmzerotitle{}} documents the DOS command-line |
404 |
utilities packaged with the tool set. In many cases, these utilities |
405 |
perform functions identical or similar to Tcl extensions, but there are advantages to |
406 |
packaging functionality as a DOS command-line utility. |
407 |
\end{itemize} |
408 |
|
409 |
|
410 |
<mv>\textbf{Volume \vsmazeroroman{}: \vsmazerotitle{}} |
411 |
<sv>\textbf{Part VIII: Solutions To Selected Exercises} |
412 |
contains solutions for selected exercises |
413 |
found throughout the work. |
414 |
|
415 |
Although \marginpar{\textbf{Features For Readers}} I |
416 |
know that all of my readers will be involved in some way |
417 |
with technical things---such as mathematics, computer science, |
418 |
control theory, software quality, or the design and development |
419 |
of embedded products---I realize that my readers will |
420 |
vary in what they are trying to obtain from the work. Some readers |
421 |
will be very research oriented, and may be trying to solve or pose |
422 |
a particular hard problem. |
423 |
Other readers may be looking for a specific practical |
424 |
solution. |
425 |
|
426 |
For the more practical reader, I have tried to be complete--that |
427 |
is, I have tried not to omit information that might be |
428 |
necessary in understanding my work without additional |
429 |
research effort. In addition, a rich set of helpful materials is |
430 |
packaged with \emph{The ESRG Tool Set} installation. |
431 |
|
432 |
For the more research-oriented reader, I have tried to allow the |
433 |
reader to rapidly find books, technical papers, Web sites, |
434 |
technical experts, |
435 |
and researchers. For this reason, books, papers, |
436 |
Web sites, and individuals |
437 |
are all cited and referenced using the same |
438 |
framework in the bibliography. This means the |
439 |
reader is directed not only to technical documents, |
440 |
but also to the authors of the |
441 |
documents. |
442 |
|
443 |
Since \marginpar{\textbf{Version Identification}} |
444 |
this book will be maintained on the Web, the issue arises of how |
445 |
a reader would know one version of this book from another. |
446 |
I have provided two mechanisms for this.\footnote{\TeX{} |
447 |
tradition would demand that I pick a transcendental number |
448 |
and with each successive version reveal another decimal place, |
449 |
but that is too much work for me, given that |
450 |
version control systems will handle the task automatically.} |
451 |
|
452 |
\begin{itemize} |
453 |
|
454 |
\item The title page indicates when the work was compiled from |
455 |
\LaTeX{} source code. Two copies of the work with the |
456 |
same compile date are almost certainly identical. |
457 |
|
458 |
\item The entire work is maintained under a version control |
459 |
system (CVS at \emph{SourceForge}), |
460 |
\index{CVS}\index{SourceForge} and I've included |
461 |
keyword expansions near the end of the \LaTeX{} source files so that version |
462 |
control information is included automatically in the document text (for example, |
463 |
a block of version control information is at the end of each chapter). |
464 |
Sections or chapters with the same version control information are almost certainly |
465 |
identical. |
466 |
|
467 |
\end{itemize} |
468 |
|
469 |
This \marginpar{\textbf{Book License}}\index{license} book is licensed under the |
470 |
\emph{Academic Free License v. 2.0}, reproduced below for convenience.\footnote{Please |
471 |
note that \emph{The ESRG Tool Set} and certain other materials are licensed under the GPL. At this time |
472 |
only this book is licensed under the \emph{Academic Free License}.} |
473 |
|
474 |
\begin{it} |
475 |
This Academic Free License (the ``License'') applies to any original work of authorship |
476 |
(the ``Original Work'') whose owner (the ``Licensor'') has placed the following |
477 |
notice immediately following the copyright notice for the Original Work:\\ |
478 |
\\ |
479 |
Licensed under the Academic Free License version 2.0 |
480 |
|
481 |
\begin{enumerate} |
482 |
\item \textbf{Grant of Copyright License.} Licensor hereby grants You a world-wide, royalty-free, |
483 |
non-exclusive, perpetual, sublicenseable license to do the following: |
484 |
|
485 |
\begin{enumerate} |
486 |
\item to reproduce the Original Work in copies; |
487 |
\item to prepare derivative works ("Derivative Works") based upon the Original Work; |
488 |
\item to distribute copies of the Original Work and Derivative Works to the public; |
489 |
\item to perform the Original Work publicly; and |
490 |
\item to display the Original Work publicly. |
491 |
\end{enumerate} |
492 |
|
493 |
\item \textbf{Grant of Patent License.} Licensor hereby grants You a world-wide, royalty-free, non-exclusive, |
494 |
perpetual, sublicenseable license, under patent claims owned or controlled by the Licensor that are embodied |
495 |
in the Original Work as furnished by the Licensor, to make, use, sell and offer for sale the |
496 |
Original Work and Derivative Works. |
497 |
|
498 |
\item \textbf{Grant of Source Code License.} The term ``Source Code'' means the preferred form of the |
499 |
Original Work for making modifications to it and all available documentation describing how to modify the |
500 |
Original Work. Licensor hereby agrees to provide a machine-readable copy of the Source Code of the |
501 |
Original Work along with each copy of the Original Work that Licensor distributes. |
502 |
Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of |
503 |
the Source Code in an information repository reasonably calculated to permit inexpensive and convenient |
504 |
access by You for as long as Licensor continues to distribute the Original Work, and by publishing the |
505 |
address of that information repository in a notice immediately following the copyright |
506 |
notice that applies to the Original Work. |
507 |
|
508 |
\item \textbf{Exclusions From License Grant.} Neither the names of Licensor, nor the names of any |
509 |
contributors to the Original Work, nor any of their trademarks or service marks, may |
510 |
be used to endorse or promote products derived from this Original Work without express prior |
511 |
written permission of the Licensor. Nothing in this License shall be deemed to grant any |
512 |
rights to trademarks, copyrights, patents, trade secrets or any other intellectual property |
513 |
of Licensor except as expressly stated herein. No patent license is granted to make, use, |
514 |
sell or offer to sell embodiments of any patent claims other than the licensed claims |
515 |
defined in Section 2. No right is granted to the trademarks of Licensor even if such marks |
516 |
are included in the Original Work. Nothing in this License shall be interpreted to prohibit |
517 |
Licensor from licensing under different terms from this License any Original Work that |
518 |
Licensor otherwise would have a right to license. |
519 |
|
520 |
\item This section intentionally omitted. |
521 |
|
522 |
\item \textbf{Attribution Rights.} You must retain, in the Source Code of any Derivative Works that |
523 |
You create, all copyright, patent or trademark notices from the Source Code of the Original Work, |
524 |
as well as any notices of licensing and any descriptive text identified therein as an |
525 |
``Attribution Notice.'' You must cause the Source Code for any Derivative Works that |
526 |
You create to carry a prominent Attribution Notice reasonably calculated to inform |
527 |
recipients that You have modified the Original Work. |
528 |
|
529 |
\item \textbf{Warranty of Provenance and Disclaimer of Warranty.} Licensor warrants that the copyright in |
530 |
and to the Original Work and the patent rights granted herein by Licensor are owned by the |
531 |
Licensor or are sublicensed to You under the terms of this License with the permission of |
532 |
the contributor(s) of those copyrights and patent rights. Except as expressly stated in the |
533 |
immediately proceeding sentence, the Original Work is provided under this License on an |
534 |
``AS IS'' BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, |
535 |
the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
536 |
THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY |
537 |
constitutes an essential part of this License. No license to Original Work is granted |
538 |
hereunder except under this disclaimer. |
539 |
|
540 |
\item \textbf{Limitation of Liability.} Under no circumstances and under no legal theory, whether in |
541 |
tort (including negligence), contract, or otherwise, shall the Licensor be liable to any person for |
542 |
any direct, indirect, special, incidental, or consequential damages of any character arising |
543 |
as a result of this License or the use of the Original Work including, without limitation, |
544 |
damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all |
545 |
other commercial damages or losses. This limitation of liability shall not apply to liability |
546 |
for death or personal injury resulting from Licensor's negligence to the extent applicable law |
547 |
prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of |
548 |
incidental or consequential damages, so this exclusion and limitation may not apply to You. |
549 |
|
550 |
\item \textbf{Acceptance and Termination.} If You distribute copies of the Original Work or a |
551 |
Derivative Work, You must make a reasonable effort under the circumstances to |
552 |
obtain the express assent of recipients to the terms of this License. Nothing |
553 |
else but this License (or another written agreement between Licensor and You) |
554 |
grants You permission to create Derivative Works based upon the Original Work |
555 |
or to exercise any of the rights granted in Section 1 herein, and any attempt |
556 |
to do so except under the terms of this License (or another written agreement |
557 |
between Licensor and You) is expressly prohibited by U.S. copyright law, the |
558 |
equivalent laws of other countries, and by international treaty. Therefore, |
559 |
by exercising any of the rights granted to You in Section 1 herein, You indicate |
560 |
Your acceptance of this License and all of its terms and conditions. |
561 |
|
562 |
\item \textbf{Termination for Patent Action.} This License shall terminate automatically |
563 |
and You may no longer exercise any of the rights granted to You by this License |
564 |
as of the date You commence an action, including a cross-claim or counterclaim, |
565 |
for patent infringement (i) against Licensor with respect to a patent applicable |
566 |
to software or (ii) against any entity with respect to a patent applicable to |
567 |
the Original Work (but excluding combinations of the Original Work with other |
568 |
software or hardware). |
569 |
|
570 |
\item \textbf{Jurisdiction, Venue and Governing Law.} Any action or suit relating to this |
571 |
License may be brought only in the courts of a jurisdiction wherein the Licensor |
572 |
resides or in which Licensor conducts its primary business, and under the laws |
573 |
of that jurisdiction excluding its conflict-of-law provisions. The application |
574 |
of the United Nations Convention on Contracts for the International Sale of Goods |
575 |
is expressly excluded. Any use of the Original Work outside the scope of this |
576 |
License or after its termination shall be subject to the requirements and |
577 |
penalties of the U.S. Copyright Act, 17 U.S.C. 101 et seq., the equivalent |
578 |
laws of other countries, and international treaty. This section shall |
579 |
survive the termination of this License. |
580 |
|
581 |
\item \textbf{Attorneys Fees.} In any action to enforce the terms of this License or |
582 |
seeking damages relating thereto, the prevailing party shall be entitled |
583 |
to recover its costs and expenses, including, without limitation, reasonable |
584 |
attorneys' fees and costs incurred in connection with such action, including |
585 |
any appeal of such action. This section shall survive the termination of |
586 |
this License. |
587 |
|
588 |
\item \textbf{Miscellaneous.} This License represents the complete agreement |
589 |
concerning the subject matter hereof. If any provision of this License |
590 |
is held to be unenforceable, such provision shall be reformed only to |
591 |
the extent necessary to make it enforceable. |
592 |
|
593 |
\item \textbf{Definition of ``You'' in This License.} ``You'' throughout this License, |
594 |
whether in upper or lower case, means an individual or a legal entity |
595 |
exercising rights under, and complying with all of the terms of, this |
596 |
License. For legal entities, ``You'' includes any entity that controls, |
597 |
is controlled by, or is under common control with you. For purposes of |
598 |
this definition, ``control'' means (i) the power, direct or indirect, |
599 |
to cause the direction or management of such entity, whether by |
600 |
contract or otherwise, or (ii) ownership of fifty percent (50%) |
601 |
or more of the outstanding shares, or (iii) beneficial ownership |
602 |
of such entity. |
603 |
|
604 |
\item \textbf{Right to Use.} You may use the Original Work in all ways not |
605 |
otherwise restricted or conditioned by this License or by law, |
606 |
and Licensor promises not to interfere with or be responsible |
607 |
for such uses by You. |
608 |
\end{enumerate} |
609 |
\end{it} |
610 |
|
611 |
|
612 |
I \marginpar{\textbf{Intellectual Property}} believe very |
613 |
strongly in the notion of intellectual property. I have endeavored |
614 |
in this book to cite all references and to identify all work and |
615 |
all ideas that are not my own.\footnote{I've actually gone a step |
616 |
further---I've tried to provide enough information to allow a |
617 |
motivated reader to get in touch with the originator of the work |
618 |
or ideas.} I would request the same courtesy in return (but will |
619 |
not enforce this courtesy, except by exposure of parties responsible |
620 |
for the theft of ideas without credit). Plagiarism and theft of intellectual property is a |
621 |
regrettable but common occurrence, and I can |
622 |
reliably predict that some student somewhere in the Webbed world |
623 |
will borrow my ideas or work without citation |
624 |
for a semester project---such events would earn my scorn |
625 |
but be relatively insignificant |
626 |
on my radar screen. However, if any of my work appears without |
627 |
credit in academic journals, I would take the matter less |
628 |
jovially and would very likely report the plagiarism to the journal |
629 |
involved. |
630 |
|
631 |
I \marginpar{\textbf{Contacting the Author}}\index{contacting the author} |
632 |
can be contacted at \texttt{dtashley@aol.com}. I invite readers |
633 |
to contact me about |
634 |
any material in this book, in \emph{The ESRG Tool Set}, or at |
635 |
the web site \texttt{http://esrg.sourceforge.net}. |
636 |
|
637 |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
638 |
|
639 |
\noindent\begin{figure}[!b] |
640 |
\noindent\rule[-0.25in]{\textwidth}{1pt} |
641 |
\begin{tiny} |
642 |
\begin{verbatim} |
643 |
$HeadURL$ |
644 |
$Revision$ |
645 |
$Date$ |
646 |
$Author$ |
647 |
\end{verbatim} |
648 |
\end{tiny} |
649 |
\noindent\rule[0.25in]{\textwidth}{1pt} |
650 |
\end{figure} |
651 |
% |
652 |
%End of file WORKPRFA.TEX |