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>
|
||||||