﻿<?xml-stylesheet type="text/xsl" href="../../templates/doc.xsl"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html 
	xmlns="http://www.w3.org/1999/xhtml" 
	xmlns:doc="http://www.lepus.org.uk/doc" 
	xmlns:classz="http://www.lepus.org.uk/classz" 
	xmlns:fopl="http://www.lepus.org.uk/fopl" 
	xml:lang="en" 
	xmlns:v="urn:schemas-microsoft-com:vml" 
	xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml">
	
<head>
	<link rel="stylesheet" type="text/css" href="http://www.lepus.org.uk/templates/doc.css" />
	<title>Codecharts: Roadmaps and Blueprints for Object-Oriented Programs</title>
	<meta name="Author" content="A.H. Eden" />
	<style type="text/css">
				p, td {			
						font-size:x-small;
						line-height:1.2em;
						margin:6px 0 6px 0;
				}
				li {
					font-size:x-small;
					line-height:1.2em;
					margin:2px 0 2px 0;
				}
				.Section {
								font-size: 12.0px;
								font-weight:bold;
								margin-left: 0in;
								margin-right: 0in;
								margin-top: 12.0pt;
								margin-bottom: 8.0pt;
								text-align:left;
				}
				.Chapter {
								margin: 1.2em 0in .4em 0em;
								font-size: 11px;
								text-align: left;
}
				.Subchapter {
								font-size: 9.0px;
								text-indent: 6.0px;
								margin: 0 0 0 2em;
								text-align:left;
								color:gray;
				}
				.ChapterNumber {
								line-height:1.2em;
								color: #880000;
								font-size:x-small
				}
				p { 
					text-align:justify
				}
	</style>
</head>

<body>

<div style="width:1000px">

<div style="float:left; margin:0 24px 12px 0">
	<p style="line-height:2.4em">Cover art: <strong><a href="http://cubicle-design.com/">Tahl Kaminer</a></strong> </p>
	<a href="http://www.lepus.org.uk/ref/book/ch3-overview-codecharts.pdf" style="border: none; background:none">
	<img src="/images/codecharts-front-200x300.png" /></a><br />
</div>


<p class="pagetitle" style="margin-top:24px">Codecharts</p>

<p style="font-size:large; margin:0 0 1.4em 0">Roadmaps and Blueprints for Object-Oriented Programs</p>

<table cellpadding="0" cellspacing="6" style="float:right">
<tr>
	<td colspan="2" align="center"><strong>Sample chapters:</strong></td>
</tr>
<tr>
	<td align="right"><span class="ChapterNumber">Chapter 3:</span></td>
	<td align="left"><a href="ch3-overview-codecharts.pdf"><span class="ChapterNumber">An overview of Codecharts</span></a></td>
</tr>
<tr>
	<td align="right"><span class="ChapterNumber">Chapter 4:</span></td>
	<td align="left"><a href="ch4-uml-vs-Codecharts.pdf"><span class="ChapterNumber">UML vs. Codecharts</span></a></td>
</tr>
<tr>
	<td style="text-align:right"><span class="ChapterNumber">Chapter 7:</span></td>
	<td align="left"><a href="ch7-modelling-large-programs-Codecharts.pdf"><span class="ChapterNumber">Modelling large programs</span></a></td>
</tr>
<tr>
	<td style="text-align:right"><span class="ChapterNumber">Chapter 11:</span></td>
	<td align="left"><a href="ch11-modelling-design-patterns.pdf"><span class="ChapterNumber">Modelling design patterns</span></a></td>
</tr>
<tr>
	<td style="text-align:right"><span  class="ChapterNumber">Chapter 17:</span> </td>
	<td align="left"><a href="ch17-lepus3-logic.pdf"><span  class="ChapterNumber">LePUS3 in classical logic</span></a></td>
</tr>
</table>

<p><a href="http://www.eden-study.org">A.H. Eden</a>, with contributions from 
	<a href="http://www.nicholsonweb.co.uk/">J. Nicholson</a>
</p>

<p>Copyright (C) John Wiley and Sons, 2011</p>

<div id="content" style="margin:2.4em 0 2.4em 0">  
				<form method="get" action="http://www.amazon.com/gp/aws/cart/add.html/ref=as_li_tf_til" target="blank">  
					<input type="hidden" name="SubscriptionId" value="D68HUNXKLHS4J" /> <input type="hidden" name="AssociateTag" value="edenstudyorg-20" />  
					<input type="hidden" name="ASIN.1" value="0470626941" /> <input type="hidden" name="Quantity.1" value="1" />
					<input type="hidden" name="adid" value="03ZS4R11QXN2A9M1W2FQ" /> <input type="hidden" name="linkCode" value="as1" /> 
					<input type="hidden" name="OfferListingId.1" value="7o5HU%2FUo1SV%2F2fYLX2k4j5eliDi5Fjw8lXCAev2hgEI0DA5vsNkxk6qBvewTyyFJd0pM59HWnUz%2F6Ul3apHVOmdwqunBz14QykFeGpNTjoo%3D" /> 
					<input type="image"  name="submit.add" value="Buy from Amazon.com" alt="Buy from Amazon.com" src="http://ecx.images-amazon.com/images/G/01/buttons/buy-from-tan.gif" />
				
					<a href="http://onlinelibrary.wiley.com/book/10.1002/9780470891032" style="border: none; outline: none; background:none; margin:12px">
						<img src="../../images/wiley-blackwell.gif" width="100" height="26"/>
					</a>
					<a href="http://books.google.com/books?id=bSi9rXCdJRAC&amp;printsec=frontcover&amp;source=gbs_atb#v=onepage&amp;q&amp;f=false" style="border: none; outline: none; background:none">
						<img src="../../images/google_books_preview.gif" width="69" height="23"/>
					</a>
				</form>
</div>

<p style="font-size:x-small; font-weight:bold; text-align:left; clear:right">New Modelling Language Visualizes Programs Clearly and Precisely</p>

<p>Popular software modelling notations visualize 
implementation minutiae but fail to scale, to capture design abstractions, and 
to deliver effective tool support. Tailored to overcome these limitations, 
Codecharts can elegantly model roadmaps and blueprints for Java, C++, and C# 
programs of any size clearly, precisely, and at any level of abstraction. More 
practically, significant productivity gains for programmers using tools 
supporting Codecharts have been demonstrated in controlled experiments.
</p>


<table cellpadding="0" style="border-collapse:collapse"><tr><td>
	<p>Hundreds of figures and examples in this book illustrate how Codecharts are used to</p>

				<ul>
					<li>Visualize the building–blocks of object–oriented design</li>
					<li>Create bird&#39;s–eye roadmaps of large programs with minimal symbols and no clutter</li>
					<li>Model blueprints of patterns, frameworks, and other design decisions</li>
					<li>Be exactly sure what diagrams claim about programs and reason rigorously about them</li>
				</ul>
</td></tr></table>

<table cellpadding="0" style="border-collapse:collapse"><tr><td>
				<p>Tools supporting Codecharts are also shown here to</p>
				<ul>
					<li>Recover design from plain Java and visualize the program&#39;s roadmap</li>
					<li>Verify conformance to design decision with a click of a button</li>
				</ul>
</td></tr></table>

<p style="clear:both">The book includes two main parts:</p>
<p><strong>Practice (Part I)</strong>
	offers experienced programmers, software 
	designers and software engineering students practical tools for representing and 
	communicating object–oriented design. It demonstrates how to model programs, 
	patterns, libraries, and frameworks using examples from JDK, Java 3D, JUnit, 
	JDOM, Enterprise JavaBeans, and the Composite, Iterator, Factory Method, 
	Abstract Factory, and Proxy design patterns. 
</p>
<p>
	<span class="ChapterNumber">Sample chapters:</span>
</p>
<ul>
				<li><span class="ChapterNumber">
				<a href="ch7-modelling-large-programs-Codecharts.pdf">Modelling Large Programs</a></span></li>
				<li><span class="ChapterNumber">
				<a href="ch11-modelling-design-patterns.pdf">Modelling Design Patterns</a>
				</span></li>
</ul>
<p><strong>Theory (Part II)</strong> offers a mathematical foundation for 
				Codecharts to graduate students and researchers studying software design, 
				modelling, specification, and verification. It defines a formal semantics and a 
				satisfies relation for design verification, and uses them to reason about the 
				relations between patterns and programs (e.g., &quot;java.awt implements Composite&quot; 
				and &quot;Factory Method is an abstraction of Iterator&quot;).
</p>
<p>
	<span class="ChapterNumber">Sample chapter:</span>
</p>
<ul>
				<li><span class="ChapterNumber">
				<a href="ch17-lepus3-logic.pdf">LePUS3 in Classical Logic</a>
				</span></li>
</ul>



<div style="border-style: double;border-width: 3px; width:1000px">

<table cellpadding="12" style="width:100%">
<tr>
	<td colspan="3" align="center">
		<span style="font-size:small; font-weight:bold;	color:#880000">Table of Contents</span>
	</td>
</tr>
<tr>
	<td style="width: 33%;" valign="top">
				<p class="Subchapter"> Guide to the reader </p>
				<p class="Subchapter"> Acknowledgements </p>
				<p class="Section"> Prologue</p>
				<p class="Chapter"> Chapter 1: Motivation </p>
				<p class="Chapter"> Chapter 2: Design description languages</p>
				<p class="Subchapter">2.1 Theory vs. practice </p>
				<p class="Subchapter">2.2 Decidability </p>
				<p class="Subchapter">2.3 Abstraction </p>
				<p class="Subchapter">2.4 Elegance </p>
				<p class="Chapter"><a href="ch3-overview-codecharts.pdf">Chapter 3: An overview of Codecharts</a></p>
				<p class="Subchapter">3.1 Object-orientation </p>
				<p class="Subchapter">3.2 Visualization </p>
				<p class="Subchapter">3.3 Rigour </p>
				<p class="Subchapter">3.4 Automated verifiability </p>
				<p class="Subchapter">3.5 Scalability </p>
				<p class="Subchapter">3.6 Genericity </p>
				<p class="Subchapter">3.7 Minimality </p>
				<p class="Subchapter">3.8 Information neglect </p>
				<p class="Chapter"><a href="ch4-uml-vs-Codecharts.pdf">Chapter 4: UML vs. Codecharts</a></p>
				<p class="Chapter"> Chapter 5: Historical notes </p>
	</td>
	<td style="width: 33%; border-right: 1px solid #880000; border-left: 1px solid #880000" valign="top">
				<p class="Section">PART I: Practice </p>
				<p class="Chapter"> Chapter 6: Modelling small programs </p>
				<p class="Subchapter">6.1 Modelling individual classes </p>
				<p class="Subchapter">6.2 Modelling individual methods </p>
				<p class="Subchapter">6.3 Modelling properties </p>
				<p class="Subchapter">6.4 * Modelling implementation minutia </p>
				<p class="Subchapter">6.5 Modelling simple relations </p>
				<p class="Subchapter">6.6 Modelling indirect relations </p>
				<p class="Subchapter">6.7 * Subtyping </p>
				<p class="Chapter"><a href="ch7-modelling-large-programs-Codecharts.pdf">Chapter 7: Modelling large programs</a></p>
				<p class="Subchapter">7.1 Modelling sets of classes </p>
				<p class="Subchapter">7.2 Modelling total relations between sets </p>
				<p class="Subchapter">7.3 Modelling sets of methods (clans) </p>
				<p class="Subchapter">7.4 * Modelling isomorphic relations </p>
				<p class="Subchapter">7.5 Modelling sets of methods (tribes) </p>
				<p class="Subchapter">7.6 Modelling class hierarchies </p>
				<p class="Subchapter">7.7 Modelling methods in hierarchies </p>
				<p class="Subchapter">7.8 Modelling properties of sets </p>
				<p class="Subchapter">7.9 * Case study: total vs. isomorphic </p>
				<p class="Subchapter">7.10 Case study: JDOM </p>
				<p class="Subchapter">7.11 Case study: Java 3D </p>
				<p class="Chapter">Chapter 8: * Modelling industry-scale programs </p>
				<p class="Subchapter">8.1 Modelling sets of hierarchies </p>
				<p class="Subchapter">8.2 Modelling sets of sets of methods (clans) </p>
				<p class="Subchapter">8.3 Modelling sets of sets of methods (tribes) </p>
				<p class="Subchapter">8.4 Modelling total relations revisited </p>
				<p class="Subchapter">8.5 Modelling isomorphic relations revisited </p>
				<p class="Chapter">Chapter 9: Modelling design motifs </p>
				<p class="Chapter">Chapter 10: Modelling application frameworks </p>
				<p class="Subchapter">10.1 Case study: Enterprise JavaBeans </p>
				<p class="Subchapter">10.2 Case study: JUnit </p>
				<p class="Chapter"><a href="ch11-modelling-design-patterns.pdf">Chapter 11: Modelling design patterns</a> </p>
				<p class="Subchapter">11.1 Case study: the Composite pattern </p>
				<p class="Subchapter">11.2 Case study: the Iterator Pattern </p>
				<p class="Subchapter">11.3 Case study: the Factory Method pattern </p>
				<p class="Subchapter">11.4 * Case study: the Abstract Factory pattern </p>
				<p class="Subchapter">11.5 * Concluding remarks </p>
				<p class="Chapter">Chapter 12: Modelling early design revisited </p>
				<p class="Chapter">Chapter 13: * Advanced modelling techniques </p>
				<p class="Subchapter">13.1 Ad-hoc symbols </p>
				<p class="Subchapter">13.2 Modelling information hiding </p>
	</td>
	<td style="width: 33%" valign="top">
				<p class="Section">PART II: Theory </p>
				<p class="Chapter">Chapter 14: Abstract semantics </p>
				<p class="Subchapter">14.1 Finite structures </p>
				<p class="Subchapter">14.2 Abstract semantics functions </p>
				<p class="Subchapter">14.3 Design models </p>
				<p class="Subchapter">14.4 Program modelling revisited </p>
				<p class="Chapter"> Chapter 15: Verification </p>
				<p class="Subchapter">15.1 Verifying closed specifications </p>
				<p class="Subchapter">15.2 Verifying open specifications </p>
				<p class="Subchapter">15.3Verifying pattern implementations </p>
				<p class="Subchapter">15.4 Tool support for automated verification </p>
				<p class="Chapter"> Chapter 16: * Schemas </p>
				<p class="Chapter"><a href="ch17-lepus3-logic.pdf">Chapter 17: LePUS3 in classical logic</a> </p>
				<p class="Subchapter">17.1LePUS3 and Class-Z as first-order languages </p>
				<p class="Subchapter">17.2 Specifications in the predicate logic </p>
				<p class="Subchapter">17.3 The axioms of class-based programs </p>
				<p class="Chapter"> Chapter 18: Reasoning about charts </p>
				<p class="Section">Appendices </p>
				<p class="Chapter"> Appendix I: The ‘gang of four’ companion </p>
				<p class="Chapter"> Appendix II: Formal definitions </p>
				<p class="Chapter"> Appendix III: UML quick reference </p>
				<p class="Chapter"> Appendix IV: References </p>
				<p class="Chapter"> Appendix V: Index </p>
				

	</td>
</tr>
</table>
			

</div>
</div>
</body>

</html>

