Imported from archive

This commit is contained in:
Eiffel operator
2026-03-25 07:12:09 -08:00
commit b929708190
75 changed files with 7823 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="author" content="Kim Walden">
<script type="text/javascript">
<!--
var dest_page = location.search
if (document.layers)
location.href = "index_nn4.htm" + dest_page;
else
location.href = "index_normal.htm" + dest_page;
//-->
</script>
<meta http-equiv="refresh" content="0;url=index_javascript_off.htm">
<title>BON method: startup selection</title>
</head>
</html>

28
www/about.htm Normal file
View File

@@ -0,0 +1,28 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="author" content="Kim Walden">
<title>BON method: about</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
</head>
<frameset framespacing="0" border="0" frameborder="0" rows="6,*">
<frame name="dot" src="about_dot.htm" scrolling="no" noresize>
<frameset framespacing="0" border="0" frameborder="0" cols="180,*">
<frame name="sidebar" src="about_nav.htm" scrolling="auto" noresize target="_self">
<frame name="main" scrolling="auto" src="about_main.htm" target="_self">
<noframes>
<body>
<p>This page uses frames which are not supported by your browser.</p>
</body>
</noframes>
</frameset>
</frameset>
</html>

37
www/about_dot.htm Normal file
View File

@@ -0,0 +1,37 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: about dot</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class="dot" bgcolor="#cccccc">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse">
<tr valign="top">
<td width=60></td>
<td width=100></td>
<td width=105></td>
<td width=100></td>
<td width=60></td>
<td width=115></td>
<td width=80 align="center" valign="top"><img border="0" src="images/dot.gif" width="7" height="7"></td>
</tr>
</table>
</body>
</html>

93
www/about_main.htm Normal file
View File

@@ -0,0 +1,93 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: about main</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
if (navigator.userAgent.indexOf("MSIE")!=-1)
document.write('<link rel="stylesheet" type="text/css" href="ie.css">')
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm?about";
}
//-->
</script>
</head>
<body onload="check()" bgcolor="#ffffff" alink="#33cc00" link="#0000ff" vlink="#0000ff">
<h1>Kim Waldén</h1>
<p>My background is 30 years of experience with industrial software systems
development.&nbsp; I was on the team that produced the Simula complier for the
DEC-10 in 1973-74.&nbsp; This is in fact the most successful project I have ever
worked in—eight people doing state-of-the-art development for nearly two years
without so much as a temporary slip on the fixed budget and time schedule. </p>
<p>It was great fun, and gave me a totally unrealistic view regarding the
standard of the typical industrial software project.&nbsp; Over the years to
come reality would force me to revise that view with a vengeance, and I became
interested in general principles of software engineering that could perhaps help
industrial projects approach the standards that I knew was possible.&nbsp; </p>
<p>After working mostly with embedded real-time systems, I participated 1981-86
in a joint project between Enea and the computer science department of Stockhom
University to do research in the area of software engineering.&nbsp; As part of
the venture, we acquired the first commercial Unix system in Sweden to be used
for trying out our research ideas in real industrial projects at Enea.&nbsp; The
work resulted 1986 in Ph D theses for myself and my colleague on the project, Bo
Steinholtz.</p>
<p>While heading a methods department at Enea for a couple of years, I came
across articles in 1987 by Bertrand Meyer about Eiffel and Design by
Contract, and was immediately hooked.&nbsp; I attended his first European
seminar in Paris that same year and gave a two hour talk at Enea, which was
received with great interest by the consultants.&nbsp;&nbsp; We managed to obtain company funding,
Enea became official Eiffel distributor in Sweden, and I assumed the technical
responsibility for introducing the ideas to Swedish industry and for building a
group of object-oriented experts at Enea. </p>
<p>During this period, I acted as reviewer for several of Bertrand Meyer's books
and also got to know him and his family personally.&nbsp; When Jean-Marc Nerson,
then head of the Eiffel compiler development at ISE, presented early ideas on
BON, I was immediately interested in collaboration.&nbsp; The literature so far
on the emerging subject of methods for object-oriented analysis and design had
been less than convincing, to put it mildly.</p>
<p>This lead to the publication of the book &quot;Seamless Object-Oriented Software
Architecture&quot; in 1994.&nbsp; During the period 1992-98 I presented nine BON-tutorials
at TOOLS Conferences around the world, as well as tutorials on the database
framework MRF whose design is described in the last case study of the book.</p>
<p>I have been fortunate enough to be able to work with Eiffel in industrial
projects for the past ten years, and I am currently a member of the ECMA
TC39-TG4 working group on standardization of the Eiffel language.</p>
<p>Publications:</p>
<ol>
<li><p class="number">&quot;Automatic Generation of Make Dependencies&quot;,&nbsp; Software Practice &amp;
Experience, vol. 14, no. 6, pp. 575-585, June 1984</p></li>
<li><p class="number">&quot;Control of Evolving Software Systems: a Language-Independent Database
Approach&quot;, Ph D dissertation, Royal Institute of Technology, Stockholm, May
1986 (jointly with Bo Steinholtz)</p></li>
<li><p class="number">&quot;Automatic Identification of Software System Differences&quot;, IEEE Trans.
Softw. Eng., vol 13, no. 4, pp. 493-497, April 1987, (co-authored with Bo Steinholtz)</p></li>
<li><p class="number">&quot;Automating the Development of Syntax Tree Generators for an Evolving
Language&quot;, Proc. Technology of Object-Oriented Languages and Systems (TOOLS 8,
Santa Barbara, Aug. 1992), Prentice Hall, pp. 185-195 (co-authored with Per
Grape)</p></li>
<li><p class="number">&quot;Seamless Object-Oriented Software Architecture&quot;, Prentice Hall, 1994 (co-authored
with Jean-Marc Nerson)</p></li>
<li><p class="number">&quot;Reversibility in Software Engineering&quot;, IEEE Computer, vol. 29, no. 9,
September 1996, pp. 93-95</p></li>
<li><p class="number">&quot;Business Object Notation (BON)&quot;, chapter 10 in &quot;Handbook of Object
Technology&quot;, Zaba Zamir (ed.), CRC Press 1998, pp. 10.1-10.12</p></li>
</ol>
</body>
</html>

37
www/about_nav.htm Normal file
View File

@@ -0,0 +1,37 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: about navigation</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class=sidebar bgcolor="#99ccff">
<div align="center">
<br><br>
<a href="mailto:kim@bon-method.com">
<img border="0" src="images/kim_nikon_h160.jpg" width="111" height="160">
<br>
<p class="sidebar_small">kim@bon-method.com</p></a>
</div>
</body>
</html>

BIN
www/animated_favicon1.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

28
www/banner.htm Normal file
View File

@@ -0,0 +1,28 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="Microsoft Theme" content="none, default">
<meta name="author" content="Kim Walden">
<title>BON method: banner</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
body {margin: 0em 0% 0em 0%; background-color: #000080}
</style>
<script type="text/javascript">
<!--
var goto_bookmark
var bookmark
//-->
</script>
</head>
<body bgcolor="#000080">
<div id="archive-message">This site is an archive of the now-defunct http://bon-method.org .</div>
<img border="0" src="images/lunnefaaglar.jpg" width="1968" height="148"><br>
</body>
</html>

BIN
www/bonsai-1.4.zip Normal file

Binary file not shown.

22
www/bonsai_acronym.htm Normal file
View File

@@ -0,0 +1,22 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: BONsai acronym</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
</head>
<body class="popup_text">
<p style="margin: 0.5em 0.5em 0.5em 0.5em">The bonsai metaphor is meant to
suggest a carefully trimmed and nourished structure of minimal size, yet with
all the features necessary to capture the essential properties of
object-oriented software.
</body>
</html>

5359
www/bonsai_manual.pdf Normal file

File diff suppressed because one or more lines are too long

37
www/book.htm Normal file
View File

@@ -0,0 +1,37 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="author" content="Kim Walden">
<title>BON method: Seamless Object-oriented Software Architecture</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check_bookmark() {
var goto_bm = parent.parent.banner.goto_bookmark;
var bm = parent.banner.bookmark;
if (goto_bm) {main.location.href = bm};
parent.banner.goto_bookmark = false;
}
//-->
</script>
</head>
<frameset framespacing="0" border="0" frameborder="0" rows="6,*">
<frame name="dot" src="book_dot.htm" scrolling="no" noresize>
<frameset framespacing="0" border="0" frameborder="0" cols="180,*" onload="check_bookmark()">
<frame name="sidebar" src="book_nav.htm" scrolling="auto" target="_self">
<frame name="main" scrolling="auto" src="book_main.htm" target="_self">
<noframes>
<body>
<p>This page uses frames which are not supported by your browser.</p>
</body>
</noframes>
</frameset>
</frameset>
</html>

35
www/book_dot.htm Normal file
View File

@@ -0,0 +1,35 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: Seamless Object-oriented Software Architecture dot</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class="dot" bgcolor="#cccccc">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse">
<tr>
<td width=60></td>
<td width=100></td>
<td width=105></td>
<td width=100></td>
<td width=60 align="center" valign="top"><img border="0" src="images/dot.gif" width="7" height="7"></td>
</tr>
</table>
</body>
</html>

30
www/book_eng_back.htm Normal file
View File

@@ -0,0 +1,30 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON book: back cover, English ed.</title>
<script type="text/javascript">
<!--
window.focus();
//-->
</script>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
</head>
<body class="popup">
<p style="margin: 0"><img border="0" src="images/book_eng_150_back_h600.jpg" width="450" height="600"></p>
<p style="margin: 0"><b><a href="book_eng_front.htm">front cover</a></b></p>
<p>&nbsp;</p>
</body>
</html>

28
www/book_eng_front.htm Normal file
View File

@@ -0,0 +1,28 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON book: front cover, English ed.</title>
<script type="text/javascript">
<!--
window.focus();
//-->
</script>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
</head>
<body class="popup">
<p style="margin: 0"><img border="0" src="images/book_eng_150_h600.jpg" width="442" height="600"></p>
<p style="margin: 0"><b><a href="book_eng_back.htm">back cover</a></b></p>
</body>
</html>

BIN
www/book_example.pdf Normal file

Binary file not shown.

28
www/book_jap_back.htm Normal file
View File

@@ -0,0 +1,28 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON book: front cover, Japanese ed.</title>
<script type="text/javascript">
<!--
window.focus();
//-->
</script>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
</head>
<body class="popup">
<p style="margin: 0"><img border="0" src="images/book_jap_150_back_h600.jpg" width="468" height="600"></p>
<p style="margin: 0"><b><a href="book_jap_front.htm">front cover</a></b></p>
</body>
</html>

28
www/book_jap_front.htm Normal file
View File

@@ -0,0 +1,28 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON book: front cover, Japanes ed.</title>
<script type="text/javascript">
<!--
window.focus();
//-->
</script>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
</head>
<body class="popup">
<p style="margin: 0"><img border="0" src="images/book_jap_150_h600.jpg" width="467" height="600"></p>
<p style="margin: 0"><b><a href="book_jap_back.htm">back cover</a></b></p>
</body>
</html>

90
www/book_main.htm Normal file
View File

@@ -0,0 +1,90 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: Seamless Object-oriented Software Architecture main</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm?book";
}
//-->
</script>
</head>
<body onload="check()" bgcolor="#ffffff" alink="#33cc00" link="#0000ff" vlink="#0000ff">
<h1>Seamless Object-Oriented<br>
Software Architecture</h1>
<p class=h1>&#8212;&nbsp;Analysis and Design of Reliable Systems</p>
<h2><font size="4">History</font></h2>
<p class="first">The BON method was initiated by Jean-Marc Nerson in 1989, who
presented early ideas in a tutorial at the second&nbsp;TOOLS conference held in
Paris 1990.&nbsp; I became interested immediately because, in my view, all
ongoing work about methods and notations for object-oriented analysis and design
that I had seen presented in articles and conference tutorials so far, were all
going in completely wrong directions.&nbsp; More or less all of them building
heavily on some kind of entity-relationsship&nbsp;and/or use case modeling, all
derived from traditional data modeling and functional decomposition.</p>
<p>I could not find a single article exploring the true power of
the object-oriented abstraction, its unique ability to be used as a seamless
modeling concept all the way from domain-level analysis down to executable code,
and its perfect match with what was most lacking in software products (and still
is), precise specification of each of its software components.&nbsp; BON was the first
(and to my knowledge still the only) attempt in this direction , so I started to collaborate with Jean-Marc and
teach BON courses at Enea to Swedish industry.</p>
<p>The BON technique was applied in several industrial
developments over the next few years, and Jean-Marc published three articles in
1991-92.&nbsp; However, it soon became clear that more detailed documentation on
the subject was needed if the ideas were to reach a wider audience, and in 1993
we decided to write a book about BON.&nbsp; The notation was cleaned up
considerably, and a process model with standard activities building on our
industrial experience was developed.&nbsp; We also put together a substantial
section with carefully worked out case studies, and a complete grammar for a
textual form of the BON notation. </p>
<p>The book was published in 1994 (with a Japanese translation
following in 1996).&nbsp; Shortly after its publication, I was fortunate enough
to be able to verify the design I had put together in the third case study of
the book, concerning a transparent bridge between object oriented business
models and an underlying relational database.&nbsp; A colleague of mine, Per
Grape, and myself implemented this design as a general framework for a Swedish
customer in 1995-96.&nbsp; </p>
<p>The framework, which is called MRF, has been successfully used by the
customer for more than six years now, and I hope to write up a case history for
publication on this site as soon as I get the time.</p>
<h2><a name="book text"></a>Book text now available</h2>
<p class="first">Unfortunately the book went out of print&nbsp;by the end of
1999, and I have had constant requests for it since then by developers who
have experienced the inadequacy of the omnipresent RUP/UML approach and are
seeking an alternative.&nbsp; So it is with great pleasure that I can now at
last (March 2003) give a positive response to all interested parties.&nbsp; The
copyright has been transferred back to the authors by Prentice Hall, and we have
decided to make the text freely avalaible.</p>
<p>The <a target="_blank" href="book_print_a4.pdf">full book text </a>(2 Mb) in pdf format can be
accessed here.&nbsp; Some people have been asking for an electronic version of the BON textual grammar (see
Appendix A, pp.
349-363 in the book) in order to build parsers for it.&nbsp; Here is a version
of the <a href="grammar.txt">grammar</a> in plain Ascii format.</p>
</body>
</html>

51
www/book_nav.htm Normal file
View File

@@ -0,0 +1,51 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: Seamless Object-oriented Software Architecture navigation</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function popup(mylink, windowname, wid, ht) {
if (! window.focus) return true;
var href;
if (typeof(mylink) == 'string')
href=mylink;
else
href=mylink.href;
eval('window.open(href,windowname,"resizable,width=' + wid + ',height=' + ht + '");');
return false;
}
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body class=sidebar bgcolor="#99ccff">
<div align="center">
<p class="sidebar">Book covers</p>
<br>
<a href="book_eng_front.htm" onClick="return popup(this, '', 465, 640)">
<img border="0" src="images/book_eng_150_h140.jpg" width="103" height="140"></a>
<br><p class="sidebar_small">English edition</p><br>
<br><br>
<a href="book_jap_front.htm" onClick="return popup(this, '', 485, 640)">
<img border="0" src="images/book_jap_150_h140.jpg" width="109" height="140"></a>
<br><p class="sidebar_small">Japanese translation</p>
</div>
</body>
</html>

BIN
www/book_print_a4.pdf Normal file

Binary file not shown.

BIN
www/computer_annotated.pdf Normal file

Binary file not shown.

29
www/contracts.htm Normal file
View File

@@ -0,0 +1,29 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="author" content="Kim Walden">
<title>BON method: Design by Contract</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
</head>
<frameset framespacing="0" border="0" frameborder="0" rows="6,*">
<frame name="dot" src="contracts_dot.htm" scrolling="no" noresize>
<frameset framespacing="0" border="0" frameborder="0" cols="180,*">
<frame name="sidebar" src="contracts_nav.htm" scrolling="auto" noresize target="_self">
<frame name="main" scrolling="auto" src="contracts_main.htm" target="_self">
<noframes>
<body>
<p>This page uses frames which are not supported by your browser.</p>
</body>
</noframes>
</frameset>
</frameset>
</html>

34
www/contracts_dot.htm Normal file
View File

@@ -0,0 +1,34 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: Design by Contract dot</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class="dot" bgcolor="#cccccc">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse">
<tr>
<td width=60></td>
<td width=100></td>
<td width=105></td>
<td width=100 align="center" valign="top"><img border="0" src="images/dot.gif" width="7" height="7"></td>
</tr>
</table>
</body>
</html>

80
www/contracts_main.htm Normal file
View File

@@ -0,0 +1,80 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: Design by Contract main</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
if (navigator.userAgent.indexOf("MSIE")!=-1)
document.write('<link rel="stylesheet" type="text/css" href="ie.css">')
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm?contracts";
}
//-->
</script>
</head>
<body onload="check()" bgcolor="#ffffff" alink="#33cc00" link="#0000ff" vlink="#0000ff">
<h1>Design by Contract</h1>
<p>Software components whose behavior is not completely specified cannot be
trusted.&nbsp; This should be obvious to anyone in the software industry.&nbsp;
And yet the majority of systems out there are made up of parts most of which are
only (at best) partially specified, usually by natural language comments.&nbsp;
This is not enough.&nbsp; We need to be more complete, and we need to be more
precise.&nbsp; </p>
<p>Components based on object-oriented abstraction lend themselves perfectly to
a successful marriage with elements coming from the research on formal
specifikation.&nbsp; Objects offer their services through operations that can be
furnished with pre- and postconditions expressed as simple boolean expressions
involving the supplied arguments, if any, and the current state of the object.&nbsp;
The precondition stipulates what must be fulfilled before a client is allowed to
invoke the operation, and the postcondition specifies what is guaranteed to be
fulfilled directly after the call, provided that the precondition was true at
the time of invocation.&nbsp; </p>
<p>If a precondition is false at the time of the call, this constitutes an error
on behalf of the client, and the call is invalid.&nbsp; If the corresponding
postcondition is false directly after a valid call, the error is on the supplier
side.&nbsp; Besides pre- and postconditions, which specify the behavior of
individual operations, a class invariant can be added which specifies general
conditions that must always be true before and after a call to any operation.&nbsp;
Invariants tell you something about the inherent properties of the whole
abstraction, as opposed to the behaviors of individual operations.</p>
<p>Using formal specification in this way gives us double advantages:</p>
<ul>
<li class=bullet><p class="bullet">contrary to human language, the assertions are precise, leaving no doubt
about what is really meant </p></li>
<li class=bullet><p class="bullet">the specifications can be used as basis for a disciplined exception
handling mechansim and for automatic assertion checking at run-time, yielding
a very powerful debugging aid </p></li>
</ul>
<p>Design by contract was invented by Bertrand Meyer, see his article
<a target="_blank" href="http://archive.eiffel.com/doc/manuals/technology/contract/">
&quot;Building bug-free O-O Software&quot;</a> for an overview, and
chapter eleven of his standard reference book on object-oriented concepts, &quot;Object-Oriented
Software Construction&quot;, 2nd ed., Prentice Hall 1997, for a thorough explanation.&nbsp; For an
introductory book, see &quot;Design by Contract by Example&quot; by James McKim and Richard
Mitchell, Addison Wesley 2001.</p>
<p>See also <a target="_blank" href="pages%20205-212%20from%20book_print_a4.pdf">pp. 205-212
</a>in &quot;Seamless Object-Oriented Software Architecture&quot; and a presentation
at the web site of Eiffel Software,
<a href="http://www.eiffel.com/developers/presentations/dbc/partone/player.html?slide=">
part 1</a> and
<a href="http://www.eiffel.com/developers/presentations/dbc/parttwo/player.html?slide=">
part 2</a>.</p>
</body>
</html>

43
www/contracts_nav.htm Normal file
View File

@@ -0,0 +1,43 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: Design by Contract navigation</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class=sidebar bgcolor="#99ccff">
<div align="center">
<p class="sidebar">Object-Oriented<br>
Software<br>
Construction<br>
2nd ed.</p>
<br>
<img border="0" src="images/oosc2_cov_150_h140.jpg" width="108" height="140">
<br><br>
<p class="sidebar">Design by Contract<br>
by Example</p>
<br>
<img border="0" src="images/mckim_mitchell_cov_150_h140.jpg" width="113" height="140">
</div>
</body>
</html>

BIN
www/example.pdf Normal file

Binary file not shown.

BIN
www/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

292
www/grammar.txt Normal file
View File

@@ -0,0 +1,292 @@
-- This grammar for the BON textual notation was extracted from the
-- text of the book "Seamless Object-Oriented Software Architecture"
-- and turned into plain Ascii format for easy use by anyone
-- interested in building a parser for the language.
--
-- For a general description of this notation and examples of its use,
-- see appendix A and B of the book, pp. 349-380.
--
-- The book text is freely available at http://www.bon-method.com.
-- BON SPECIFICATION
Bon_specification ::= {Specification_element ...}+
Specification_element ::= Informal_chart | Class_dictionary | Static_diagram |
Dynamic_diagram | Notational_tuning
-- INFORMAL CHARTS
Informal_chart ::= System_chart | Cluster_chart | Class_chart |
Event_chart | Scenario_chart | Creation_chart
Class_dictionary ::= 'dictionary' System_name
{Dictionary_entry ...}+
'end'
Dictionary_entry ::= 'class' Class_name 'cluster' Cluster_name
'description' Manifest_textblock
--
System_chart ::= 'system_chart' System_name
['indexing' Index_list]
['explanation' Manifest_string]
['part' Manifest_string]
[Cluster_entries]
'end'
Cluster_entries ::= {Cluster_entry ...}+
Cluster_entry ::= 'cluster' Cluster_name
'description' Manifest_textblock
System_name ::= Identifier
--
Index_list ::= {Index_clause ";" ...}+
Index_clause ::= Identifier ":" Index_term_list
Index_term_list ::= {Index_string "," ...}+
Index_string ::= Manifest_string
--
Cluster_chart ::= 'cluster_chart' Cluster_name
['indexing' Index_list]
['explanation' Manifest_string]
['part' Manifest_string]
[Class_entries]
[Cluster_entries]
'end'
Class_entries ::= {Class_entry ...}+
Class_entry ::= 'class' Class_name
'description' Manifest_textblock
Cluster_name ::= Identifier
--
Class_chart ::= 'class_chart' Class_name
['indexing' Index_list]
['explanation' Manifest_string]
['part' Manifest_string]
['inherit' Class_name_list]
['query' Query_list]
['command' Command_list]
['constraint' Constraint_list]
'end'
Query_list ::= {Manifest_string "," ...}+
Command_list ::= {Manifest_string "," ...}+
Constraint_list ::= {Manifest_string "," ...}+
Class_name_list ::= {Class_name "," ...}+
Class_name ::= Identifier
--
Event_chart ::= 'event_chart' System_name
['incoming' | 'outgoing']
['indexing' Index_list]
['explanation' Manifest_string]
['part' Manifest_string]
[Event_entries]
'end'
Event_entries ::= {Event_entry ...}+
Event_entry ::= 'event' Manifest_string 'involves' Class_name_list
--
Scenario_chart ::= 'scenario_chart' System_name
['indexing' Index_list]
['explanation' Manifest_string]
['part' Manifest_string]
[Scenario_entries]
'end'
Scenario_entries ::= {Scenario_entry ...}+
Scenario_entry ::= 'scenario' Manifest_string
'description' Manifest_textblock
--
Creation_chart ::= 'creation_chart' System_name
['indexing' Index_list]
['explanation' Manifest_string]
['part' Manifest_string]
[Creation_entries]
'end'
Creation_entries ::= {Creation_entry ...}+
Creation_entry ::= 'creator' Class_name 'creates' Class_name_list
-- STATIC DIAGRAMS
Static_diagram ::= 'static_diagram' [Extended_id] [Comment]
'component' Static_block 'end'
Extended_id ::= Identifier | Integer
Comment ::= {Line_comment New_line ...}+
Line_comment ::= "--" Simple_string
Static_block ::= {Static_component ...}
Static_component ::= Cluster | Class | Static_relation
--
Cluster ::= 'cluster' Cluster_name
['reused'] [Comment]
[Cluster_components]
Cluster_components ::= 'component' Static_block 'end'
Class ::= ['root' | 'deferred' | 'effective']
'class' Class_name [Formal_generics]
['reused'] ['persistent'] ['interfaced'] [Comment]
[Class_interface]
Static_relation ::= Inheritance_relation | Client_relation
--
Inheritance_relation ::= Child 'inherit' ["{" Multiplicity "}"]
Parent [Semantic_label]
Client_relation ::= Client 'client' [Client_entities] [Type_mark]
Supplier [Semantic_label]
Client_entities ::= "{" Client_entity_expression "}"
Client_entity_expression ::= Client_entity_list | Multiplicity
Client_entity_list ::= {Client_entity "," ...}+
Client_entity ::= Feature_name | Supplier_indirection |
Parent_indirection
Supplier_indirection ::= [Indirection_feature_part ":"] Generic_indirection
Indirection_feature_part ::= Feature_name | Indirection_feature_list
Indirection_feature_list ::= "(" Feature_name_list ")"
Parent_indirection ::= "->" Generic_indirection
--
Generic_indirection ::= Formal_generic_name | Named_indirection
Named_indirection ::= Class_name "[" Indirection_list "]"
Indirection_list ::= {Indirection_element "," ...}+
Indirection_element ::= "..." | Named_indirection
Type_mark ::= ":" | ":{" | Shared_mark
Shared_mark ::= ":" "(" Multiplicity ")"
--
Child ::= Static_ref
Parent ::= Static_ref
Client ::= Static_ref
Supplier ::= Static_ref
Static_ref ::= {Cluster_prefix ...} Static_component_name
Cluster_prefix ::= Cluster_name "."
Static_component_name ::= Class_name | Cluster_name
Multiplicity ::= Integer
Semantic_label ::= Manifest_string
-- CLASS INTERFACE DESCRIPTION
Class_interface ::= ['indexing' Index_list]
['inherit' Parent_class_list]
Features
['invariant' Class_invariant]
'end'
Class_invariant ::= Assertion
Parent_class_list ::= {Class_type ";" ...}+
Features ::= {Feature_clause ...}+
--
Feature_clause ::= 'feature' [Selective_export]
[Comment]
Feature_specifications
Feature_specifications ::= {Feature_specification ...}+
Feature_specification ::= ['deferred' | 'effective' | 'redefined']
Feature_name_list [Type_mark Type]
[Rename_clause]
[Comment]
[Feature_arguments]
[Contract_clause]
--
Contract_clause ::= Contracting_conditions 'end'
Contracting_conditions ::= Precondition | Postcondition | Pre_and_post
Precondition ::= 'require' Assertion
Postcondition ::= 'ensure' Assertion
Pre_and_post ::= Precondition Postcondition
--
Selective_export ::= "{" Class_name_list "}"
Feature_name_list ::= {Feature_name "," ...}+
Feature_name ::= Identifier | Prefix | Infix
Rename_clause ::= "{" Renaming "}"
Renaming ::= "^" Class_name "." Feature_name
Feature_arguments ::= {Feature_argument ...}+
Feature_argument ::= "->" [Identifier_list ":"] Type
Identifier_list ::= {Identifier "," ...}+
Prefix ::= 'prefix' '"' Prefix_operator '"'
Infix ::= 'infix' '"' Infix_operator '"'
Prefix_operator ::= Unary | Free_operator
Infix_operator ::= Binary | Free_operator
--
Formal_generics ::= "[" Formal_generic_list "]"
Formal_generic_list ::= {Formal_generic "," ...}+
Formal_generic ::= Formal_generic_name ["->" Class_type]
Formal_generic_name ::= Identifier
Class_type ::= Class_name [Actual_generics]
Actual_generics ::= "[" Type_list "]"
Type_list ::= {Type "," ...}+
Type ::= Class_type | Formal_generic_name
--
Unary ::= 'delta' | 'old' | 'not' | "+" | "-"
Binary ::= "+" | "-" | "*" | "/" |
"<" | ">" | "<=" | ">=" |
"\(eq" | "/=" | "/" | "\\" | "^" |
'or' | 'xor' | 'and' | '"->"' | '"<->"' |
'member_of' | ":"
-- FORMAL ASSERTIONS
Assertion ::= {Assertion_clause ";" ...}+
Assertion_clause ::= Boolean_expression | Comment
Boolean_expression ::= Expression
Expression ::= Quantification | Call |
Operator_expression | Constant
Quantification ::= Quantifier Range_expression
[Restriction] Proposition
Quantifier ::= 'for_all' | 'exists'
Range_expression ::= {Variable_range ";" ...}+
Restriction ::= 'such_that' Boolean_expression
Proposition ::= 'it_holds' Boolean_expression
Variable_range ::= Member_range | Type_range
Member_range ::= Identifier_list 'member_of' Set_expression
Type_range ::= Identifier_list ":" Type
--
Call ::= [Parenthesized_qualifier] Call_chain
Parenthesized_qualifier ::= Parenthesized "."
Call_chain ::= {Unqualified_call "." ...}+
Unqualified_call ::= Identifier [Actual_arguments]
Actual_arguments ::= "(" Expression_list ")"
Expression_list ::= {Expression "," ...}+
Operator_expression ::= Parenthesized | Unary_expression | Binary_expression
Parenthesized ::= "(" Expression ")"
--
Unary_expression ::= Prefix_operator Expression
Binary_expression ::= Expression Infix_operator Expression
Set_expression ::= Enumerated_set | Call | Operator_expression
Enumerated_set ::= "{" Enumeration_list "}"
Enumeration_list ::= {Enumeration_element "," ...}+
Enumeration_element ::= Expression | Interval
Interval ::= Integer_interval | Character_interval
Integer_interval ::= Integer_constant ".." Integer_constant
Character_interval ::= Character_constant ".." Character_constant
--
Constant ::= Manifest_constant | 'Current' | 'Void'
Manifest_constant ::= Boolean_constant | Character_constant |
Integer_constant | Real_constant |
´ Manifest_string
Sign ::= "+" | "-"
Boolean_constant ::= 'true' | 'false'
Character_constant ::= "'" Character "'"
Integer_constant ::= [Sign] Integer
Real_constant ::= [Sign] Real
Manifest_textblock ::= String_begin String String_end
String ::= {Simple_string New_line ...}+
Manifest_string ::= String_begin Simple_string String_end
--
--DYNAMIC DIAGRAMS
Dynamic_diagram ::= 'dynamic_diagram' [Extended_id] [Comment]
'component' Dynamic_block 'end'
Dynamic_block ::= {Dynamic_component ...}
Dynamic_component ::= Scenario_description |
Object_group |
Object_stack |
Object |
Message_relation
--
Scenario_description ::= 'scenario' Scenario_name [Comment]
'action' Labeled_actions 'end'
Labeled_actions ::= {Labeled_action ...}+
Labeled_action ::= Action_label Action_description
Action_label ::= Manifest_string
Action_description ::= Manifest_textblock
Scenario_name ::= Manifest_string
--
Object_group ::= ['nameless'] 'object_group' Group_name [Comment]
[Group_components]
Group_components ::= 'component' Dynamic_block 'end'
Object_stack ::= 'object_stack' Object_name [Comment]
Object ::= 'object' Object_name [Comment]
--
Message_relation ::= Caller 'calls' Receiver [Message_label]
Caller ::= Dynamic_ref
Receiver ::= Dynamic_ref
Dynamic_ref ::= {Group_prefix ...} Dynamic_component_name
Group_prefix ::= Group_name "."
Dynamic_component_name ::= Object_name | Group_name
Object_nam ::= Class_name ["." Extended_id]
Group_name ::= Extended_id
Message_label ::= Manifest_string
-- NOTAIONAL TUNING
Notational_tuning ::= Change_string_marks |
Change_concatenator |
Change_prefix
Change_string_marks ::= 'string_marks' Manifest_string Manifest_string
Change_concatenator ::= 'concatenator' Manifest_string
Change_prefix ::= 'keyword_prefix' Manifest_string

BIN
www/handbook_bon.pdf Normal file

Binary file not shown.

29
www/home.htm Normal file
View File

@@ -0,0 +1,29 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="author" content="Kim Walden">
<title>BON method: home</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
</head>
<frameset framespacing="0" border="0" frameborder="0" rows="6,*">
<frame name="dot" src="home_dot.htm" scrolling="no" noresize>
<frameset framespacing="0" border="0" frameborder="0" cols="180,*">
<frame name="sidebar" src="home_nav.htm" scrolling="auto" noresize target="_self">
<frame name="main" scrolling="auto" src="home_main.htm" target="_self">
<noframes>
<body>
<p>This page uses frames which are not supported by your browser.</p>
</body>
</noframes>
</frameset>
</frameset>
</html>

31
www/home_dot.htm Normal file
View File

@@ -0,0 +1,31 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: home dot</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class="dot" bgcolor="#cccccc">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse">
<tr>
<td width=60 align="center" valign="top"><img border="0" src="images/dot.gif" width="7" height="7"></td>
</tr>
</table>
</body>
</html>

121
www/home_main.htm Normal file
View File

@@ -0,0 +1,121 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: home main</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function navigate_to_label(page, label) {
parent.parent.banner.goto_bookmark = true;
parent.parent.banner.bookmark = page + "_main.htm#" + label;
parent.location.href = page + ".htm";
}
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
var dp = parent.parent.dest_page
if (dp) {
parent.parent.dest_page = "";
parent.location.href = dp.slice(1) + ".htm";
}
}
//-->
</script>
</head>
<body onload="check()" bgcolor="#ffffff" alink="#33cc00" link="#0000ff" vlink="#0000ff">
<h1>Welcome to BON</h1>
<p class=h1>(the Business Object Notation)</p>
<h2>Background</h2>
<p class=first>The BON method for analysis and design of object-oriented software was developed 1989-93 by
Jean-Marc Nerson and Kim Waldén as a means of extending the higher-level concepts of the
Eiffel programming language into the realm of analysis and design aided by a
graphical notation.</p>
<p>The core idea is simplicity
and well-defined semantics, since from our industrial experience we know that
anything complex and/or ambiguous becomes useless in practice, and tends to be a
hindrance rather than an aid to successful completion of software projects.&nbsp;
In this respect, BON could be viewed as the direct opposite of the widely
publicized UML/RUP approach.</p>
<p>The method builds on three principles, fundamental to the construction of
industrial strength quality software:&nbsp; seamlessness, reversibility and
software contracts.&nbsp;
A ten-page overview can be found in &quot;<a target="_parent" href="overview.htm">Handbook
of Object Technology</a>&quot;, CRC Press 1998.</p>
<p>BON is described in depth in
the book &quot;<a target="_parent" href="book.htm">Seamless Object-Oriented Software
Architecture</a>&quot;, Prentice Hall 1994, by Kim Waldén and Jean-Marc Nerson.&nbsp;
Unfortunately, the book has been out of print for three years and is only
obtainable from second-hand book stores.&nbsp; But the good news is that it is
<a target="_self" href="javascript:navigate_to_label('book','book text')">now available in pdf-format</a>.</p>
<h2>The BON site</h2>
<p class=first>This web site is maintained by one of the authors, Kim Waldén.
Over the years, I have had many requests both for the book and for a
BON drawing tool.&nbsp; However, since the bound book is hard to come by, and because until recently there has not been
any widely available drawing support by which to produce BON diagrams, setting up a web site
for BON has seemed rather pointless.</p>
<p>Fortunately, this has now changed.&nbsp; We have had the
copyright to the book reversed back from Prentice Hall to the authors and I have managed to create <a target="_parent" href="tool.htm">BONsai</a>,
a Visio Solution for BON, which makes it possible to draw even fairly complex
diagrams quickly and easily using the well-known general Visio tool as drawing engine.</p>
<p>My primary intent is to make
the book text as well as the Visio Solution for drawing BON diagrams freely available to anyone
interested in learning more about BON, and to use it as aid in their software
projects.&nbsp; Questions and general comments can be directed to
<a href="mailto:kim@bon-method.com">kim@bon-method.com</a>.&nbsp; </p>
<p>If you are experiencing trouble with these pages, please let me know,
preferably with an attached screendump if the layout is scrambled.</p>
<p><font color="#008000">Seems to work ok with the following browsers</font>:</p>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
<tr>
<td width="20">&nbsp;</td>
<td width="135">Internet Explorer</td>
<td width="432">4.72, 5.0, 5.50, 6.0</td>
</tr>
<tr>
<td width="20">&nbsp;</td>
<td width="135">Netscape Navigator</td>
<td width="432">4.76, 4.77, 4.79, 4.8, 7.0, 7.01, 7.02, 7.1</td>
</tr>
<tr>
<td width="20">&nbsp;</td>
<td width="135">Opera</td>
<td width="432">7 (frame cursor displaced and barely legible)</td>
</tr>
<tr>
<td width="20">&nbsp;</td>
<td width="135">Mozilla</td>
<td width="432">1.2.1, 1.3, 1.4, 1.6</td>
</tr>
<tr>
<td width="20">&nbsp;</td>
<td width="135">Mozilla Firefox</td>
<td width="432">1.4, 1.5</td>
</tr>
</table>
<p>&nbsp;</p>
</body>
</html>

55
www/home_nav.htm Normal file
View File

@@ -0,0 +1,55 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: home navigation</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function popup(mylink, windowname, wid, ht) {
if (! window.focus) return true;
var href;
if (typeof(mylink) == 'string')
href=mylink;
else
href=mylink.href;
eval('window.open(href,windowname,"resizable,width=' + wid + ',height=' + ht + '");');
return false;
}
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class=sidebar bgcolor="#99ccff">
<div align="center">
<p class="sidebar">Seamless<br>
Object-Oriented<br>
Software<br>
Architecture</p>
<br><br>
<a href="book_eng_front.htm" onClick="return popup(this, '', 465, 640)">
<img border="0" src="images/book_eng_150_h120.jpg" width="89" height="120"></a>
</div>
<p>&nbsp;</p>
<p style="text-align: center">
<a target="_blank" href="temp/VTS_01_1.VOB">
<img border="0" src="images/new.gif" width="62" height="24"></a><br>
<a target="_parent" href="tool.htm">BONsai</a> now supports <br>graphical class interfaces</p>
</body>
</html>

7
www/ie.css Normal file
View File

@@ -0,0 +1,7 @@
li {margin: 0.8em 0% 0.2em 0em} /*margin: 0.8em 0% 0.2em -0.5em;*/
li.bullet {margin: 0.5em 0% 0.5em 0em;} /*margin: 0.5em 0% 0.5em -1em;*/
ol {margin: 0em 0% 0em 3em} /*margin: 0.5em 0% 0em 0em;*/
ul {margin: 0em 0% 0em 2em} /*margin: 0em 0% 0em 0em;*/

BIN
www/images/bonsai_h140.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
www/images/dot.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
www/images/lunnefaaglar.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
www/images/new.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

28
www/index.htm Normal file
View File

@@ -0,0 +1,28 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="author" content="Kim Walden">
<script type="text/javascript">
<!--
var dest_page = location.search
if (document.layers)
location.href = "index_nn4.htm" + dest_page;
else
location.href = "index_normal.htm" + dest_page;
//-->
</script>
<meta http-equiv="refresh" content="0;url=index_javascript_off.htm">
<title>BON method: startup selection</title>
</head>
</html>

28
www/index.html Normal file
View File

@@ -0,0 +1,28 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="author" content="Kim Walden">
<script type="text/javascript">
<!--
var dest_page = location.search
if (document.layers)
location.href = "index_nn4.htm" + dest_page;
else
location.href = "index_normal.htm" + dest_page;
//-->
</script>
<meta http-equiv="refresh" content="0;url=index_javascript_off.htm">
<title>BON method: startup selection</title>
</head>
</html>

View File

@@ -0,0 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="author" content="Kim Walden">
<script type="text/javascript">
<!--
var dest_page = location.search
if (document.layers)
location.href = "index_nn4.htm" + dest_page;
else
location.href = "index_normal.htm" + dest_page;
//-->
</script>
<meta http-equiv="refresh" content="0;url=index_javascript_off.htm">
<title>BON method: startup selection</title>
</head>
</html>

View File

@@ -0,0 +1,22 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: index Javascript off</title>
</head>
<frameset framespacing="0" border="0" frameborder="0" rows="148,22,*">
<frame name="banner" marginwidth="0" marginheight="0" scrolling="no" noresize src="banner.htm">
<frame name="navigation" marginwidth="0" marginheight="0" scrolling="no" noresize src="navigation.htm">
<frame name="page" src="home.htm" scrolling="auto" target="_self">
<noframes>
<body>
<p>This page uses frames which are not supported by your browser.</p>
</body>
</noframes>
</frameset>
</html>

30
www/index_nn4.htm Normal file
View File

@@ -0,0 +1,30 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<script type="text/javascript">
<!--
var dest_page = location.search
if (!(document.layers))
location.href = "index_normal.htm" + dest_page;
//-->
</script>
<title>BON method: index Netscape 4</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
</head>
<frameset framespacing="0" border="0" frameborder="0" rows="148,28,*">
<frame name="banner" marginwidth="0" marginheight="0" scrolling="no" noresize src="banner.htm">
<frame name="navigation" marginwidth="0" marginheight="0" scrolling="no" noresize src="navigation.htm">
<frame name="page" src="home.htm" scrolling="auto" target="_self">
<noframes>
<body>
<p>This page uses frames which are not supported by your browser.</p>
</body>
</noframes>
</frameset>
</html>

34
www/index_normal.htm Normal file
View File

@@ -0,0 +1,34 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<script type="text/javascript">
<!--
var dest_page = location.search
if (document.layers) {
location.href = "index_nn4.htm" + dest_page;
alert("Changing to Netscape 4 browser mode.")
}
//-->
</script>
<title>BON method: index normal</title>
<link rel="stylesheet" type="text/css" href="normal.css">
<link rel="shortcut icon" href="favicon.ico">
<link rel="icon" type="image/gif" href="animated_favicon1.gif">
</head>
<frameset framespacing="0" border="0" frameborder="0" rows="148,22,*">
<frame name="banner" marginwidth="0" marginheight="0" scrolling="no" noresize src="banner.htm">
<frame name="navigation" marginwidth="0" marginheight="0" scrolling="no" noresize src="navigation.htm">
<frame name="page" src="home.htm" scrolling="auto" target="_self">
<noframes>
<body>
<p>This page uses frames which are not supported by your browser.</p>
</body>
</noframes>
</frameset>
</html>

View File

@@ -0,0 +1,35 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<script type="text/javascript">
<!--
var dest_page = location.search
if (document.layers) {
location.href = "index_nn4.htm" + dest_page;
alert("Changing to Netscape 4 browser mode.")
}
//-->
</script>
<title>BON method: index normal</title>
<link rel="stylesheet" type="text/css" href="normal.css">
<link rel="shortcut icon" href="favicon.ico">
<link rel="icon" type="image/gif" href="animated_favicon1.gif">
</head>
<frameset framespacing="0" border="0" frameborder="0" rows="148,22,*">
<frame name="banner" marginwidth="0" marginheight="0" scrolling="no" noresize src="banner.htm">
<frame name="navigation" marginwidth="0" marginheight="0" scrolling="no" noresize src="navigation.htm">
<frame name="page" src="home.htm" scrolling="auto" target="_self">
<noframes>
<body>
<p>This page uses frames which are not supported by your browser.</p>
</body>
</noframes>
</frameset>
</html>

45
www/navigation.htm Normal file
View File

@@ -0,0 +1,45 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="Microsoft Theme" content="none, default">
<title>BON method: navigation panel</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
body {margin: 0em 0% 0em 0%; background-color: #000080}
</style>
</head>
<body bgcolor="#000080">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; margin: 2 0 0 0">
<tr valign="bottom" style="background-color: #000080">
<td width=60 align="center" style="font-family: Arial">
<a class="button" target="page" href="home.htm"><font face="Arial" color="#ffffff">Home</font></a></td>
<td width=100 align="center" style="font-family: Arial">
<a class="button" target="page" href="overview.htm"><font face="Arial" color="#ffffff">Overview</font></a></td>
<td width=105 align="center" style="font-family: Arial">
<a class="button" target="page" href="reversibility.htm"><font face="Arial" color="#ffffff">Reversibility</font></a></td>
<td width=100 align="center" style="font-family: Arial">
<a class="button" target="page" href="contracts.htm"><font face="Arial" color="#ffffff">Contracts</font></a></td>
<td width=60 align="center" style="font-family: Arial">
<a class="button" target="page" href="book.htm"><font face="Arial" color="#ffffff">Book</font></a></td>
<td width=115 align="center" style="font-family: Arial">
<a class="button" target="page" href="tool.htm"><font face="Arial" color="#ffffff">Diagram&nbsp;tool</font></a></td>
<td width=80 align="center" style="font-family: Arial">
<a class="button" target="page" href="about.htm"><font face="Arial" color="#ffffff">About&nbsp;me</font></a></td>
</tr>
</table>
</body>
</html>

197
www/nn4.css Normal file
View File

@@ -0,0 +1,197 @@
address, blockquote, body, caption, center, dd, dir, div, dl, dt, form,
h1, h2, h3, h4, h5, h6, menu, ol, p, td, th, ul {font-size: 13px;
font-family: Trebuchet MS, Arial, MS Sans Serif, Helvetica, Verdana, Sans-serif}
a {cursor: auto}
a:link {color: #00f;
background: transparent;
text-decoration: none}
a:visited {color: #00f;
background:transparent;
text-decoration: none}
a:active {color: #3c0;
background: transparent;
text-decoration: none}
a:hover {text-decoration: underline}
a.button {cursor: pointer;
font-size: 15px}
a.button:link {color: #fff}
a.button:visited {color: #fff}
a.button:active {color: #fff}
a.button:hover {background-color: #00f;
text-decoration: none}
address {margin: 0em 0% 0em 0%;
font: italic}
BIG {font-size: 110%}
blockquote {margin: 0em 0% 0em 0%;
line-height: normal}
body {margin: 1em 3% 0.9em 5%; /*1em 4% 1.8em 5%*/
text-align: left;
background-color: #fff;
color: #2a2a2a;
cursor: default}
body.dot {margin: -2em 0em 0em 0em; /*0em 0em 0em 0em*/
background-color: #ccc}
body.popup {margin: 0em 0em 0em 0em; /*8px 0em 0em 8px*/
background-color: #ccc}
body.popup_text {margin: 2px 0px 0px 0px; /*20px 8px 0px 10px*/
font-size: 13px;
color: #000080;
background-color: #ffc}
body.sidebar {margin: 0em 0em 0em 1em; /*1em 0em 0em 0em*/
text-align: left;
background-color: #9cf;
color: #2a2a2a;
cursor: default}
button {cursor: auto}
caption {margin: 0em 0% 0em 0%;
line-height: normal}
code {font-size: 1em;
font-family: monospace}
div {margin: 0em 0% 0em 0%;
line-height: normal}
dd {margin: 0em 0% 0em 0%;
line-height: normal}
dl {margin: 0em 0% 0em 0%}
dt {margin: 0em 0% 0em 0%;
line-height: normal}
/* margin: top, right, bottom, left */
h1 {margin: 0.6em 5% 0em 0%; /*1.2em 5% 0em 0%;*/
color: #388c00;
font-size: 160%; /*220%*/
font-weight: bold;
padding-bottom: 0px}
h2 {margin: 0.6em 5% 0em 0%; /*1.1em 5% 0em 0%;*/
color: #388c00;
font-size: 120%; /*160%*/
font-weight: normal;
padding-bottom: 0px}
h3 {margin: 0.6em 5% 0em 0%; /*1.1em 5% 0em 0%;*/
color: #388c00;
font-size: 110%; /*130%*/
font-weight: normal;
padding-bottom: 0px}
hr {margin: 0em 0% 0em 0%}
html {margin: 0;
background-color: transparent}
input {cursor: auto}
kbd {font: 1em monospace}
li { /*margin: 0.8em 0% 0.2em -0.5; (annars försvinner numret)*/
line-height: normal;
font-size: 80%; /*font-size: 100%;*/
font-weight: normal;
padding-bottom: 0px}
li.bullet {margin: 0.5em 0% 0em -0.5em; /*margin: 0.5em 0% 0.5em -1em;*/
line-height: normal;
list-style: disc;
font-size: 80%; /* font-size: 100%;*/
font-weight: normal;
padding-bottom: 0px}
ol {margin: 0.5em 0% 0em 0em;
line-height: normal;
list-style: decimal;
font-size: 80%; /*font-size: 100%;*/
font-weight: normal;
padding-bottom: 0px}
ul ul ol ol, ul ol ul ol, ol ul ol ol, ol ol ul ol, ol ul ol, ol ol {list-style: lower-alpha}
ol ul ol ol, ol ol ul ol, ul ol ol ol, ol ol ol {list-style: lower-roman}
ol ol ol ol {list-style: decimal}
p {margin: 0.8em 0% 0em 0em; /*1.2em 0% 0em 0em*/
line-height: normal;
font-size: 80%; /*100%*/
padding-bottom: 0px}
p.h1 {margin: -1em 0% 0em 0em; /*0.2em 0% 0em 0em*/
color: #388c00;
font-size: 130%; /*170%*/
padding-bottom: 0px}
p.first {margin: -0.7em 5% 0em 0em; /*0em 5% 0em 0em*/
padding-bottom: 0px}
p.bullet {margin: 0px 3% 0em -0.5em; /*0em 3% 0em 0em*/
padding-bottom: 0px}
p.number {margin: 0px 3% 0em 0em; /*0em 3% 0em 0em*/
padding-bottom: 0px}
p.sidebar {margin: 1.2em 0% 0em 0em;
color: #388c00;
line-height: normal; /*140%*/
font-size: 90%; /*120%*/
font-weight: bold; /*bolder*/
padding-bottom: 0px}
p.sidebar_small {margin: 0em 0% 0em 0em;
font-size:80%} /*110%*/
pre {margin: 0em 0% 0em 0em;
font-family: monospace}
samp {font-family: monospace}
small {font-size: 80%}
sub {font-size: 80%}
sup {font-size: 80%}
td {line-height: normal}
textarea {cursor: text}
th {font-weight: bold}
tt {font: 100% monospace}
ul { /*margin: 0.4em 5% 0em 3%;*/
list-style: disc
line-height: normal;
/*font-size: 100%;*/
font-weight: normal;
padding-bottom: 0px}
ul ul, ol ol ul ul, ol ul ol ul, ul ol ol ul, ol ul ul, ul ol ul {list-style: circle}
ol ul ul ul, ul ol ul ul, ul ul ol ul, ul ul ul {list-style: square}
ul ul ul ul {list-style: disc}

207
www/normal.css Normal file
View File

@@ -0,0 +1,207 @@
address, blockquote, body, caption, center, dd, dir, div, dl, dt, form,
h1, h2, h3, h4, h5, h6, menu, ol, p, td, th, ul {font-size: 13px;
font-family: Trebuchet MS, Arial, MS Sans Serif, Helvetica, Verdana, Sans-serif}
a {cursor: auto}
a:link {color: #00f;
background: transparent;
text-decoration: none}
a:visited {color: #00f;
background:transparent;
text-decoration: none}
a:active {color: #3c0;
background: transparent;
text-decoration: none}
a:hover {text-decoration: underline;
cursor: pointer}
a.button {cursor: pointer;
font-size: 14px}
a.button:link {color: #fff}
a.button:visited {color: #fff}
a.button:active {color: #fff}
a.button:hover {background-color: #00f;
text-decoration: none}
address {margin: 0em 0% 0em 0%;
font: italic}
BIG {font-size: 110%}
blockquote {margin: 0em 0% 0em 0%;
line-height: normal}
body {margin: 1em 4% 1.8em 5%;
text-align: left;
background-color: #fff;
color: #2a2a2a;
cursor: default}
body.dot {margin: 0em 0em 0em 0em;
background-color: #ccc}
body.popup {margin: 8px 0em 0em 8px;
background-color: #ccc}
body.popup_text {margin: 20px 8px 0px 10px;
font-size: 13px;
color: #000080;
background-color: #ffc}
body.sidebar {margin: 1em 0em 0em 0em;
text-align: left;
background-color: #9cf;
color: #2a2a2a;
cursor: default}
button {cursor: auto}
caption {margin: 0em 0% 0em 0%;
line-height: normal}
code {font-size: 1em;
font-family: monospace}
div {margin: 0em 0% 0em 0%;
line-height: normal}
dd {margin: 0em 0% 0em 0%;
line-height: normal}
dl {margin: 0em 0% 0em 0%}
dt {margin: 0em 0% 0em 0%;
line-height: normal}
/* margin: top, right, bottom, left */
h1 {margin: 1.2em 5% 0em 0%;
color: #388c00;
font-size: 220%;
font-weight: bold;
padding-bottom: 0px}
h2 {margin: 1.1em 5% 0em 0%;
color: #388c00;
font-size: 160%;
font-weight: normal;
padding-bottom: 0px}
h3 {margin: 1.1em 5% 0em 0%;
color: #388c00;
font-size: 130%;
font-weight: normal;
padding-bottom: 0px}
hr {margin: 0em 0% 0em 0%}
html {margin: 0;
background-color: transparent}
input {cursor: auto}
kbd {font: 1em monospace}
li {margin: 0.8em 0% 0.2em -0.5em;
line-height: normal;
font-size: 100%;
font-weight: normal;
padding-bottom: 0px}
li.bullet {margin: 0.5em 0% 0.5em -1em;
line-height: normal;
list-style: disc;
font-size: 100%;
font-weight: normal;
padding-bottom: 0px}
ol {margin: 0.5em 0% 0em 0em;
line-height: normal;
list-style: decimal;
font-size: 100%;
font-weight: normal;
padding-bottom: 0px}
ul ul ol ol, ul ol ul ol, ol ul ol ol, ol ol ul ol, ol ul ol, ol ol {list-style: lower-alpha}
ol ul ol ol, ol ol ul ol, ul ol ol ol, ol ol ol {list-style: lower-roman}
ol ol ol ol {list-style: decimal}
p {margin: 1.2em 0% 0em 0em;
line-height: normal;
font-size: 100%;
padding-bottom: 0px}
p.h1 {margin: 0.2em 0% 0em 0em;
color: #388c00;
font-size: 170%;
padding-bottom: 0px}
p.first {margin: 0em 5% 0em 0em;
padding-bottom: 0px}
p.bullet {margin: 0em 3% 0em 0em;
padding-bottom: 0px}
p.number {margin: 0em 3% 0em 0em;
padding-bottom: 0px}
p.sidebar {margin: 1.2em 0% 0em 0em;
color: #388c00;
line-height: 140%;
font-size: 120%;
font-weight: bolder;
padding-bottom: 0px}
p.sidebar_small {margin: 0em 0% 0em 0em;
font-size:110%}
pre {margin: 0em 0% 0em 0em;
font-family: monospace}
samp {font-family: monospace}
small {font-size: 80%}
sub {font-size: 80%}
sup {font-size: 80%}
td {line-height: normal}
textarea {cursor: text}
th {font-weight: bold}
tt {font: 100% monospace}
ul {margin: 0em 0% 0em 0em;
list-style: disc
line-height: normal;
font-size: 100%;
font-weight: normal;
padding-bottom: 0px}
ul ul, ol ol ul ul, ol ul ol ul, ul ol ol ul, ol ul ul, ul ol ul {list-style: circle}
ol ul ul ul, ul ol ul ul, ul ul ol ul, ul ul ul {list-style: square}
ul ul ul ul {list-style: disc}
*|*:-moz-list-bullet, *|*:-moz-list-number {font-size: 1em}
div#archive-message {
padding: 0 1rem;
color: yellow;
background-color: black;
text-align: right;
}

28
www/overview.htm Normal file
View File

@@ -0,0 +1,28 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="author" content="Kim Walden">
<title>BON method: overview</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
</head>
<frameset framespacing="0" border="0" frameborder="0" rows="6,*">
<frame name="dot" src="overview_dot.htm" scrolling="no" noresize>
<frameset framespacing="0" border="0" frameborder="0" cols="180,*">
<frame name="sidebar" src="overview_nav.htm" scrolling="auto" noresize target="_self">
<frame name="main" scrolling="auto" src="overview_main.htm" target="_self">
<noframes>
<body>
<p>This page uses frames which are not supported by your browser.</p>
</body>
</noframes>
</frameset>
</frameset>
</html>

32
www/overview_dot.htm Normal file
View File

@@ -0,0 +1,32 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: overview dot</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class="dot" bgcolor="#cccccc">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse">
<tr>
<td width=60></td>
<td width=100 align="center" valign="top"><img border="0" src="images/dot.gif" width="7" height="7"></td>
</tr>
</table>
</body>
</html>

34
www/overview_main.htm Normal file
View File

@@ -0,0 +1,34 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: overview main</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm?overview";
}
//-->
</script>
</head>
<body onload="check()" bgcolor="#ffffff" alink="#33cc00" link="#0000ff" vlink="#0000ff">
<h1>BON overview</h1>
<p>A ten page overview of the principles of BON can be found in <a target="_blank" href="handbook_bon.pdf">chapter 10</a> of the &quot;Handbook
of Object Technology&quot;, CRC Press 1998.</p>
</body>
</html>

37
www/overview_nav.htm Normal file
View File

@@ -0,0 +1,37 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: overview navigation</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class=sidebar bgcolor="#99ccff">
<div align="center">
<p class="sidebar">Handbook of<br>
Object<br>
Technology</p>
<br><br>
<img border="0" src="images/handbook_oo_cov_150_h140.jpg" width="99" height="140">
</div>
</body>
</html>

Binary file not shown.

28
www/reversibility.htm Normal file
View File

@@ -0,0 +1,28 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="author" content="Kim Walden">
<title>BON method: reversibility</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
</head>
<frameset framespacing="0" border="0" frameborder="0" rows="6,*">
<frame name="dot" src="reversibility_dot.htm" scrolling="no" noresize>
<frameset framespacing="0" border="0" frameborder="0" cols="180,*">
<frame name="sidebar" src="reversibility_nav.htm" scrolling="auto" noresize target="_self">
<frame name="main" scrolling="auto" src="reversibility_main.htm" target="_self">
<noframes>
<body>
<p>This page uses frames which are not supported by your browser.</p>
</body>
</noframes>
</frameset>
</frameset>
</html>

33
www/reversibility_dot.htm Normal file
View File

@@ -0,0 +1,33 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: reversibility dot</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class="dot" bgcolor="#cccccc">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse">
<tr>
<td width=60></td>
<td width=100></td>
<td width=105 align="center" valign="top"><img border="0" src="images/dot.gif" width="7" height="7"></td>
</tr>
</table>
</body>
</html>

View File

@@ -0,0 +1,63 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: reversibilty main</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm?reversibility";
}
//-->
</script>
</head>
<body onload="check()" bgcolor="#ffffff" alink="#33cc00" link="#0000ff" vlink="#0000ff">
<h1>Reversibility</h1>
<p>The term reversibility in the context of software development means the
possibility of propagating independent changes made to the resulting source code back
into the design and analysis models of earlier phases, so these can be kept up
to date with what is actually executed.&nbsp; </p>
<p>As any experienced developer knows, going full circle everytime a change is
to be made: first modify the higher level models, then translate these changes
into the corresponding code changes, is totally unfeasible in practice.&nbsp;
And yet, most books and papers on analysis and design of software systems
continue (at best) to pay lip service to the issue of reversibility, before
proceeding to methods and concepts that are completely non-reversible, as if the
world consisted of the toy examples elborated in the texts.</p>
<p>Since maintenance of software systems involve continuous modification of
source code, any method based on concepts that are not unambiguously
translatable to <b>and from </b>the programming constructs used in the code,
will produce high-level models that immediately start to deviate from the real
system.&nbsp; Therefore, the developers will stop trusting the models almost
from day one, and the binders containing the bubble diagrams will stay on the
shelves.&nbsp;&nbsp;&nbsp; Alternatively, a designer group will continue to talk
in terms of the bubbles, while the programmers, who are forced to make things
work in practice, will think in terms of the concepts of their language,
preventing any effective commuication between the two. </p>
<p>In short, we need to use the same basic concepts for analysis and design as
we will in our source code.&nbsp; The object-oriented abstraction has the
potential to serve as such a universal concept.&nbsp;&nbsp; But only if the
models are kept free from mismatching concepts drawn from other paradigms, such
as entity-relationship modeling and/or central emphasis on use cases.</p>
<p>My <a target="_blank" href="computer_annotated.pdf">IEEE Computer article</a>
from 1996 stating the case for reversibility can be found here.</p>
</body>
</html>

36
www/reversibility_nav.htm Normal file
View File

@@ -0,0 +1,36 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: reversibility sidebar</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class=sidebar bgcolor="#99ccff">
<div align="center">
<p class="sidebar">IEEE Computer<br>
September 1996</p>
<br><br>
<img border="0" src="images/computer_cov_150_h160.jpg" width="114" height="160">
</div>
</body>
</html>

BIN
www/temp/VTS_01_1.VOB Normal file

Binary file not shown.

38
www/tool.htm Normal file
View File

@@ -0,0 +1,38 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="author" content="Kim Walden">
<title>BON method: BONsai drawing tool</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check_bookmark() {
var goto_bm = parent.parent.banner.goto_bookmark;
var bm = parent.banner.bookmark;
if (goto_bm) {main.location.href = bm};
parent.banner.goto_bookmark = false;
}
//-->
</script>
</head>
<frameset framespacing="0" border="0" frameborder="0" rows="6,*">
<frame name="dot" src="tool_dot.htm" scrolling="no" noresize>
<frameset framespacing="0" border="0" frameborder="0" cols="180,*">
<frame name="sidebar" src="tool_nav.htm" scrolling="auto" noresize target="_self">
<frame name="main" scrolling="auto" src="tool_main.htm" target="_self">
<noframes>
<body>
<p>This page uses frames which are not supported by your browser.</p>
</body>
</noframes>
</frameset>
</frameset>
</html>

36
www/tool_dot.htm Normal file
View File

@@ -0,0 +1,36 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: BONsai drawing tool dot</title>
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class="dot" bgcolor="#cccccc">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse">
<tr valign="top">
<td width=60></td>
<td width=100></td>
<td width=105></td>
<td width=100></td>
<td width=60></td>
<td width=115 align="center" valign="top"><img border="0" src="images/dot.gif" width="7" height="7"></td>
</tr>
</table>
</body>
</html>

89
www/tool_main.htm Normal file
View File

@@ -0,0 +1,89 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: BONsai drawing tool main</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm?tool";
}
//-->
</script>
</head>
<body onload="check()" bgcolor="#ffffff" alink="#33cc00" link="#0000ff" vlink="#0000ff">
<h1>BON Software Architecture Illustrator<br>
(BONsai)</h1>
<h2><br>
Background</h2>
<p class="first">There has long been a need for a good and widely available drawing tool supporting the BON notation.&nbsp;
Ever since the book describing the BON method was published in 1994, I have had requests from BON users
all over the world asking for a simple way to draw nice-looking BON diagrams and
have them included in system documentation.</p>
<p>The only tool with BON support available over the years&nbsp; has been EiffelCase from
Eiffel Software Inc, recently integrated into EiffelStudio<b> </b>(see<b>&nbsp; </b>
<a target="_blank" href="http://www.eiffel.com">www.effel.com</a>).&nbsp; However, this tool is part of a full Eiffel development environment, which may
be a bit too heavy for users who only want to communicate designs on paper and
those unfortunate developers who do not have the option of using Eiffel as
programming language for their systems.&nbsp; Also, there is no support in EiffelStudio for dynamic diagrams.</p>
<h2><a name="drawing tool">The drawing tool</a></h2>
<p class="first">To remedy this, I have finally managed to create a Visio Solution for BON.&nbsp;
A Visio Solution is a set of graphical shapes whose look and behavior are
tailored to a specific application area.&nbsp; It uses
<a target="_blank" href="http://www.microsoft.com/office/visio">Visio</a> as underlying
drawing engine but can hide virtually all details, enabling&nbsp; users to
simply combine familiar graphical elements by drag and drop to create the type
of drawings supported by the Solution (in this case BON diagrams).&nbsp; </p>
<p>Here is the <a target="_blank" href="bonsai_manual.pdf">BONsai manual</a> (820
Kb) in pdf format and the <a href="bonsai-1.4.zip">BONsai Visio Solution</a> (1.32
Mb) for Visio 2000/2002 and for
Visio 5 bundled with the manual and a drawing example in a zip-file.&nbsp; The
current version is 1.4 with newly added support for graphical class interfaces.&nbsp; The
<a target="_blank" href="example.pdf">example drawing</a> is the static
diagram of the conference management system described in the first case study in
&quot;Seamless Object-Oriented Software Architecture&quot;, and the class
interfaces on page 45 in the same book.&nbsp; It can be viewed and compared to the original
<a target="_blank" href="book_example.pdf">diagrams</a> printed in the book (do not
be mislead by the rather poor rendering on the screen by Acrobat Reader; the
printed diagrams are high quality).</p>
<h2>About Visio</h2>
<p class="first">If you are interested in learning more about Visio in general, &quot;Microsoft
Visio Version 2002 Inside Out&quot;, Nanette J. Eaton, Microsoft Press 2001 is a good
reference.&nbsp; For developing your own Solutions, the standard reference is
&quot;Developing Microsoft Visio Solutions&quot;, Microsoft Press 2001.&nbsp;
There is also a <a target="_blank" href="http://msdn.microsoft.com/visio">Visio
Developer Center</a> at MSDN</p>
<p><font color="#388C00"><b>Aside</b> </font>The second volume mentioned above is an updated
version of
the earlier text &quot;Developing Visio Solutions&quot; by Visio Corporation, which used
to be one of my favorite handbooks: a slim volume (1.7 cm thick, 0.74 kg, 460 pp)
with thin paper and compact typesetting, perfect to read on the bus on your way
to work.&nbsp; It has now been transcribed by Microsoft (who bought Visio in
1999) into the usual hopeless PC-brick (4.4 cm thick, 1.4 kg, 660 pp) with thick
paper and large point size, cumbersome on the bus let alone if you drop it on
your toes, and all this for very little new substance.&nbsp; </p>
</body>
</html>

49
www/tool_nav.htm Normal file
View File

@@ -0,0 +1,49 @@
<html>
<head>
<meta http-equiv="Content-Language" content="sv">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="author" content="Kim Walden">
<title>BON method: BONsai drawing tool sidebar</title>
<base target="_self">
<link rel="stylesheet" type="text/css" href="nn4.css">
<style type="text/css">
@import url("normal.css");
</style>
<script type="text/javascript">
<!--
function popup(mylink, windowname, wid, ht) {
if (! window.focus) return true;
var href;
if (typeof(mylink) == 'string')
href=mylink;
else
href=mylink.href;
eval('window.open(href,windowname,"resizable,width=' + wid + ',height=' + ht + '");');
return false;
}
function check() {
if (top.frames.length == 0 || top.frames[0].name != "banner")
top.location.href = "index.htm";
}
//-->
</script>
</head>
<body onload="check()" class=sidebar bgcolor="#99ccff">
<div align="center">
<a href="bonsai_acronym.htm" onClick="return popup(this, '', 200, 190)">
<br>
<img border="0" src="images/bonsai_h140.gif" width="119" height="140"></a><br>
<br><br>
<img border="0" src="images/visio%20solutions_cov_150_h140.jpg" width="116" height="140"><br>
<p class="sidebar_small">Visio programming</p><br><br>
<img border="0" src="images/visio%20inside%20out_cov_150_h140.jpg" width="113" height="140"><br>
<p class="sidebar_small">Visio general usage</p>
</div>
</body>
</html>