-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
78 lines (69 loc) · 7.27 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<title>Reqs by dprentiss</title>
<link rel="stylesheet" href="stylesheets/styles.css">
<link rel="stylesheet" href="stylesheets/pygment_trac.css">
<script src="javascripts/scale.fix.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<h1 class="header">Reqs</h1>
<p class="header">Requirements Engineering Query System</p>
<ul>
<li class="download"><a class="buttons" href="https://github.com/dprentiss/reqs/zipball/master">Download ZIP</a></li>
<li class="download"><a class="buttons" href="https://github.com/dprentiss/reqs/tarball/master">Download TAR</a></li>
<li><a class="buttons github" href="https://github.com/dprentiss/reqs">View On GitHub</a></li>
</ul>
<p class="header">This project is maintained by <a class="header name" href="https://github.com/dprentiss">dprentiss</a></p>
</header>
<section>
<h1>Requirements Engineering Query System</h1>
<p>Reqs is a proof-of-concept application that demonstrates the ability of graph-based databases to model and query complex entity-relationship concepts. In this case, an embedded database based on Neo4j is used to represent Stakeholders, Concerns, and Viewpoints as described in IEEE 1471 standard describing the architecture of a software-intensive system. </p>
<p>The challenge presented by this task is to capture and effectively traverse the many to many relationships between the three entities. For this initial version of Reqs, the user is presented with a graph-based visual representation of the Stakeholders, Concerns, and Viewpoints in a hypothetical architecture description. The user can graphically select one or more entities and the system responds by highlighting the entities that are related to it. </p>
<div class="highlight"><pre> <span class="kd">public</span> <span class="n">Iterable</span><span class="o"><</span><span class="n">Relationship</span><span class="o">></span> <span class="nf">getRelationships</span><span class="o">()</span> <span class="o">{</span>
<span class="n">TraversalDescription</span> <span class="n">traversal</span> <span class="o">=</span> <span class="n">Traversal</span><span class="o">.</span><span class="na">description</span><span class="o">()</span>
<span class="o">.</span><span class="na">breadthFirst</span><span class="o">()</span>
<span class="o">.</span><span class="na">evaluator</span><span class="o">(</span><span class="k">new</span> <span class="n">Evaluator</span><span class="o">()</span> <span class="o">{</span>
<span class="nd">@Override</span>
<span class="kd">public</span> <span class="n">Evaluation</span> <span class="nf">evaluate</span><span class="o">(</span><span class="kd">final</span> <span class="n">Path</span> <span class="n">path</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(</span><span class="n">path</span><span class="o">.</span><span class="na">length</span><span class="o">()</span> <span class="o">==</span> <span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">Evaluation</span><span class="o">.</span><span class="na">EXCLUDE_AND_CONTINUE</span><span class="o">;</span>
<span class="o">}</span>
<span class="kt">boolean</span> <span class="n">isOutgoingIS_MEMBER</span> <span class="o">=</span> <span class="o">(</span>
<span class="n">path</span><span class="o">.</span><span class="na">lastRelationship</span><span class="o">().</span><span class="na">getEndNode</span><span class="o">()</span> <span class="o">==</span>
<span class="n">path</span><span class="o">.</span><span class="na">endNode</span><span class="o">()</span> <span class="o">&&</span>
<span class="o">(</span><span class="n">path</span><span class="o">.</span><span class="na">lastRelationship</span><span class="o">()</span>
<span class="o">.</span><span class="na">isType</span><span class="o">(</span><span class="n">ReqsDb</span><span class="o">.</span><span class="na">RelTypes</span><span class="o">.</span><span class="na">IS_MEMBER</span><span class="o">)));</span>
<span class="kt">boolean</span> <span class="n">isRelTypeUnique</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
<span class="n">Iterator</span><span class="o"><</span><span class="n">Relationship</span><span class="o">></span> <span class="n">i</span> <span class="o">=</span>
<span class="n">path</span><span class="o">.</span><span class="na">reverseRelationships</span><span class="o">().</span><span class="na">iterator</span><span class="o">();</span>
<span class="n">i</span><span class="o">.</span><span class="na">next</span><span class="o">();</span>
<span class="k">while</span> <span class="o">(</span><span class="n">i</span><span class="o">.</span><span class="na">hasNext</span><span class="o">())</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(</span><span class="n">i</span><span class="o">.</span><span class="na">next</span><span class="o">().</span><span class="na">isType</span><span class="o">(</span><span class="n">path</span><span class="o">.</span><span class="na">lastRelationship</span><span class="o">()</span>
<span class="o">.</span><span class="na">getType</span><span class="o">()))</span> <span class="o">{</span>
<span class="n">isRelTypeUnique</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
<span class="k">break</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="kt">boolean</span> <span class="n">included</span> <span class="o">=</span> <span class="n">isOutgoingIS_MEMBER</span> <span class="o">||</span> <span class="n">isRelTypeUnique</span><span class="o">;</span>
<span class="kt">boolean</span> <span class="n">continued</span> <span class="o">=</span> <span class="n">included</span><span class="o">;</span>
<span class="k">return</span> <span class="n">Evaluation</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="n">included</span><span class="o">,</span> <span class="n">continued</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">});</span>
</pre></div>
</section>
<footer>
<p><small>Hosted on <a href="https://pages.github.com">GitHub Pages</a>test</small></p>
</footer>
</div>
<!--[if !IE]><script>fixScale(document);</script><![endif]-->
</body>
</html>