Imported from archive
21
www/__qf1534392279b/index.html
Normal 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
@@ -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
@@ -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
@@ -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. I was on the team that produced the Simula complier for the
|
||||
DEC-10 in 1973-74. 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. 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. </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. 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. 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. 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. 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. When Jean-Marc Nerson,
|
||||
then head of the Eiffel compiler development at ISE, presented early ideas on
|
||||
BON, I was immediately interested in collaboration. 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 "Seamless Object-Oriented Software
|
||||
Architecture" in 1994. 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">"Automatic Generation of Make Dependencies", Software Practice &
|
||||
Experience, vol. 14, no. 6, pp. 575-585, June 1984</p></li>
|
||||
<li><p class="number">"Control of Evolving Software Systems: a Language-Independent Database
|
||||
Approach", Ph D dissertation, Royal Institute of Technology, Stockholm, May
|
||||
1986 (jointly with Bo Steinholtz)</p></li>
|
||||
<li><p class="number">"Automatic Identification of Software System Differences", IEEE Trans.
|
||||
Softw. Eng., vol 13, no. 4, pp. 493-497, April 1987, (co-authored with Bo Steinholtz)</p></li>
|
||||
<li><p class="number">"Automating the Development of Syntax Tree Generators for an Evolving
|
||||
Language", 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">"Seamless Object-Oriented Software Architecture", Prentice Hall, 1994 (co-authored
|
||||
with Jean-Marc Nerson)</p></li>
|
||||
<li><p class="number">"Reversibility in Software Engineering", IEEE Computer, vol. 29, no. 9,
|
||||
September 1996, pp. 93-95</p></li>
|
||||
<li><p class="number">"Business Object Notation (BON)", chapter 10 in "Handbook of Object
|
||||
Technology", Zaba Zamir (ed.), CRC Press 1998, pp. 10.1-10.12</p></li>
|
||||
</ol>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
37
www/about_nav.htm
Normal 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
|
After Width: | Height: | Size: 3.6 KiB |
28
www/banner.htm
Normal 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
22
www/bonsai_acronym.htm
Normal 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
37
www/book.htm
Normal 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
@@ -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
@@ -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> </p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
28
www/book_eng_front.htm
Normal 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
28
www/book_jap_back.htm
Normal 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
@@ -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
@@ -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>— 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 TOOLS conference held in
|
||||
Paris 1990. 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. More or less all of them building
|
||||
heavily on some kind of entity-relationsship 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. 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. 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. The notation was cleaned up
|
||||
considerably, and a process model with standard activities building on our
|
||||
industrial experience was developed. 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). 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. A colleague of mine, Per
|
||||
Grape, and myself implemented this design as a general framework for a Swedish
|
||||
customer in 1995-96. </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 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. So it is with great pleasure that I can now at
|
||||
last (March 2003) give a positive response to all interested parties. 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. 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. 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
@@ -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
BIN
www/computer_annotated.pdf
Normal file
29
www/contracts.htm
Normal 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
@@ -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
@@ -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. This should be obvious to anyone in the software industry.
|
||||
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.
|
||||
This is not enough. We need to be more complete, and we need to be more
|
||||
precise. </p>
|
||||
<p>Components based on object-oriented abstraction lend themselves perfectly to
|
||||
a successful marriage with elements coming from the research on formal
|
||||
specifikation. 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.
|
||||
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. </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. If the corresponding
|
||||
postcondition is false directly after a valid call, the error is on the supplier
|
||||
side. 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.
|
||||
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/">
|
||||
"Building bug-free O-O Software"</a> for an overview, and
|
||||
chapter eleven of his standard reference book on object-oriented concepts, "Object-Oriented
|
||||
Software Construction", 2nd ed., Prentice Hall 1997, for a thorough explanation. For an
|
||||
introductory book, see "Design by Contract by Example" 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 "Seamless Object-Oriented Software Architecture" 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
@@ -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
BIN
www/favicon.ico
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
292
www/grammar.txt
Normal 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
29
www/home.htm
Normal 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
@@ -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
@@ -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.
|
||||
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: seamlessness, reversibility and
|
||||
software contracts.
|
||||
A ten-page overview can be found in "<a target="_parent" href="overview.htm">Handbook
|
||||
of Object Technology</a>", CRC Press 1998.</p>
|
||||
|
||||
<p>BON is described in depth in
|
||||
the book "<a target="_parent" href="book.htm">Seamless Object-Oriented Software
|
||||
Architecture</a>", Prentice Hall 1994, by Kim Waldén and Jean-Marc Nerson.
|
||||
Unfortunately, the book has been out of print for three years and is only
|
||||
obtainable from second-hand book stores. 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. 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. 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. Questions and general comments can be directed to
|
||||
<a href="mailto:kim@bon-method.com">kim@bon-method.com</a>. </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"> </td>
|
||||
<td width="135">Internet Explorer</td>
|
||||
<td width="432">4.72, 5.0, 5.50, 6.0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="20"> </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"> </td>
|
||||
<td width="135">Opera</td>
|
||||
<td width="432">7 (frame cursor displaced and barely legible)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="20"> </td>
|
||||
<td width="135">Mozilla</td>
|
||||
<td width="432">1.2.1, 1.3, 1.4, 1.6</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="20"> </td>
|
||||
<td width="135">Mozilla Firefox</td>
|
||||
<td width="432">1.4, 1.5</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p> </p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
55
www/home_nav.htm
Normal 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> </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
@@ -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
|
After Width: | Height: | Size: 9.1 KiB |
BIN
www/images/book_eng_150_back_h600.jpg
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
www/images/book_eng_150_h120.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
www/images/book_eng_150_h140.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
www/images/book_eng_150_h600.jpg
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
www/images/book_jap_150_h140.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
www/images/book_jap_150_h600.jpg
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
www/images/computer_cov_150_h160.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
www/images/dot.gif
Normal file
|
After Width: | Height: | Size: 826 B |
BIN
www/images/handbook_oo_cov_150_h140.jpg
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
www/images/kim_nikon_h160.jpg
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
www/images/lunnefaaglar.jpg
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
www/images/mckim_mitchell_cov_150_h140.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
www/images/new.gif
Normal file
|
After Width: | Height: | Size: 116 B |
BIN
www/images/oosc2_cov_150_h140.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
www/images/visio inside out_cov_150_h140.jpg
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
www/images/visio solutions_cov_150_h140.jpg
Normal file
|
After Width: | Height: | Size: 11 KiB |
28
www/index.htm
Normal 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
@@ -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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
21
www/index__qa4262e1c9bcb.htm
Normal 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>
|
||||
22
www/index_javascript_off.htm
Normal 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
@@ -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
@@ -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>
|
||||
35
www/index_normal__qa4262e1c9bcb.htm
Normal 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
@@ -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 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 me</font></a></td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
197
www/nn4.css
Normal 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
@@ -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
@@ -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
@@ -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
@@ -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 "Handbook
|
||||
of Object Technology", CRC Press 1998.</p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
37
www/overview_nav.htm
Normal 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>
|
||||
BIN
www/pages 205-212 from book_print_a4.pdf
Normal file
28
www/reversibility.htm
Normal 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
@@ -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>
|
||||
63
www/reversibility_main.htm
Normal 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. </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.
|
||||
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. Therefore, the developers will stop trusting the models almost
|
||||
from day one, and the binders containing the bubble diagrams will stay on the
|
||||
shelves. 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. The object-oriented abstraction has the
|
||||
potential to serve as such a universal concept. 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
@@ -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
38
www/tool.htm
Normal 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
@@ -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
@@ -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.
|
||||
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 has been EiffelCase from
|
||||
Eiffel Software Inc, recently integrated into EiffelStudio<b> </b>(see<b> </b>
|
||||
<a target="_blank" href="http://www.eiffel.com">www.effel.com</a>). 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. 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.
|
||||
A Visio Solution is a set of graphical shapes whose look and behavior are
|
||||
tailored to a specific application area. 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 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). </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. The
|
||||
current version is 1.4 with newly added support for graphical class interfaces. 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
|
||||
"Seamless Object-Oriented Software Architecture", and the class
|
||||
interfaces on page 45 in the same book. 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, "Microsoft
|
||||
Visio Version 2002 Inside Out", Nanette J. Eaton, Microsoft Press 2001 is a good
|
||||
reference. For developing your own Solutions, the standard reference is
|
||||
"Developing Microsoft Visio Solutions", Microsoft Press 2001.
|
||||
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 "Developing Visio Solutions" 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. 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. </p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
49
www/tool_nav.htm
Normal 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>
|
||||