mirror of
https://expo.survex.com/repositories/expoweb/.git/
synced 2024-11-27 01:32:03 +00:00
97 lines
4.0 KiB
HTML
97 lines
4.0 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>CUCC Expo Handbook: Troggle UML Class Diagrams</title>
|
|
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
|
|
</head>
|
|
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
|
|
<h2 id="tophead">CUCC Expo Handbook - Troggle UML Class Diagrams</h2>
|
|
<h1>Troggle UML Class Diagrams</h1>
|
|
<style>figure {font-weight: bold; font-size: small; font-family: sans-serif;font-variant-caps: small-caps;}</style>
|
|
|
|
<div class="onright">
|
|
<figure>
|
|
<a href="https://yuml.me/mkay2100/edit/Troggle-1"><img alt="Troggle UML Class Diagram" src="../i/trogclass-1.jpg"></a>
|
|
<br><figcaption>Class Diagram - Essential Level (draft - to be corrected)</figcaption>
|
|
</figure>
|
|
</div>
|
|
|
|
<p>This shows the major "things" in troggle and how they relate to each other.
|
|
<p>So <strong>a survex (SVX) file</strong> is dated to a particular day during the expedition and usually has between 1 and 3 people associated with it.
|
|
<p>A <strong>Logbook entry</strong> has several people involved and may relate to a cave. It will be dated to a day during the expedition.
|
|
|
|
<h3>Design Diagrams</h3>
|
|
<p>Analysis of expo and design of troggle is done using three levels:
|
|
<style>
|
|
li {padding-left: 0;margin-left: 0;line-height:160%;}
|
|
ul, ol {padding-inline-start: 1em;}
|
|
</style>
|
|
<ol>
|
|
<li>The '<strong>essential</strong>' or 'real-world' level.
|
|
<li>The '<strong>specification</strong>' level.
|
|
<li>The '<strong>implementation</strong>' level.
|
|
</ol>
|
|
<p>As anyone reading this has probably been on expo and you might think that we can skip the <strong>real-world level</strong>. Not so: the multiplicities (the number of participants in the association) of the relationships between the different cave survey artefacts can be surprising.
|
|
<p>The <strong>specification level</strong> is where the action is.
|
|
This is where we decide which aspects of the real world <em>we will ignore</em> and what <em>extra concepts</em> we need to make things work.
|
|
<p>So we ignore who is resident at top-camp (even though today we record this religiously because of the tax implications for the GastHof at base). We do need to track the in-computer associations between survex files: the *include tree, what directories they live in, what wallet-directory they relate to, and all the individual survex blocks of survey measurements within each survex file.
|
|
|
|
<p>We only need <strong>implementation-level</strong> diagrams for tiny, tricky issues. Python is very clear so serves as its own implementation specification. However Django does need some explanation.
|
|
<h3>Class Diagrams</h3>
|
|
<p>A Class Diagram is one the the basic types of structural diagram (as opposed to behavioral diagrams) used to understand complex systems.
|
|
<ul>
|
|
<li><a href="https://en.wikipedia.org/wiki/Class_diagram">wikipedia:Class diagram</a>
|
|
<li><a href="https://www.tutorialspoint.com/uml/uml_class_diagram.htm">UML - Class Diagram</a>
|
|
</ul>
|
|
<p>
|
|
The purpose of class diagram is to model the static view of an application.
|
|
|
|
|
|
<h3>Online free class diagram editor</h3>
|
|
<p>This diagram was created online using the YUML free software at <a href="https://yuml.me/mkay2100/edit/Troggle-1">https://yuml.me//</a>.
|
|
<p>
|
|
You can edit your own version to revise this when it becomes outdated. <br>This is the entire source code that generates the diagram:
|
|
<pre><code style ="font-size:x-small">
|
|
// Troggle Class Diagram
|
|
// ------------------------------
|
|
|
|
// Chain elements like this
|
|
[SVX file]<>-wallet 1..*>
|
|
|
|
[Wallet]++-1..*>[Scanned Note]
|
|
|
|
[Wallet]++-1..*>[Scanned CentreLine]
|
|
|
|
[Scanned CentreLine]++-1..*>
|
|
[Drawing{bg:turquoise}]
|
|
|
|
[People{bg:wheat}]<->
|
|
[LogBook Entry{bg:violet}]
|
|
|
|
[People]1..3<->[SVX file]
|
|
|
|
[Cave{bg:cyan}]->[LogBook Entry]
|
|
|
|
[Cave]->[SVX file]
|
|
|
|
// note:
|
|
[Cave]-.-[Drawing{bg:turquoise}]
|
|
|
|
[Expedition{bg:green}]1<>-1..*
|
|
[ExpeditionDay{bg:green}]<>-
|
|
[LogBook Entry]
|
|
|
|
[ExpeditionDay]1<>-1..*[SVX file]
|
|
|
|
[PersonExpedition{bg:yellowgreen}]1<-1
|
|
[People{bg:wheat}]
|
|
|
|
[ExpeditionDay]1..*--1.*
|
|
[PersonExpedition{bg:yellowgreen}]
|
|
|
|
</code></pre>
|
|
|
|
<hr />
|
|
</body>
|
|
</html> |