<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://jimbodude.net/w/index.php?action=history&amp;feed=atom&amp;title=MQP%3ASecurity_Analysis_Data_Model</id>
		<title>MQP:Security Analysis Data Model - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://jimbodude.net/w/index.php?action=history&amp;feed=atom&amp;title=MQP%3ASecurity_Analysis_Data_Model"/>
		<link rel="alternate" type="text/html" href="https://jimbodude.net/w/index.php?title=MQP:Security_Analysis_Data_Model&amp;action=history"/>
		<updated>2026-04-20T13:12:37Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://jimbodude.net/w/index.php?title=MQP:Security_Analysis_Data_Model&amp;diff=1941&amp;oldid=prev</id>
		<title>J: MQP:Security Analysis Data Structure moved to MQP:Security Analysis Data Model</title>
		<link rel="alternate" type="text/html" href="https://jimbodude.net/w/index.php?title=MQP:Security_Analysis_Data_Model&amp;diff=1941&amp;oldid=prev"/>
				<updated>2008-09-08T18:14:11Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/MQP:Security_Analysis_Data_Structure&quot; class=&quot;mw-redirect&quot; title=&quot;MQP:Security Analysis Data Structure&quot;&gt;MQP:Security Analysis Data Structure&lt;/a&gt; moved to &lt;a href=&quot;/wiki/MQP:Security_Analysis_Data_Model&quot; title=&quot;MQP:Security Analysis Data Model&quot;&gt;MQP:Security Analysis Data Model&lt;/a&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 18:14, 8 September 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan='2' style='text-align: center;' lang='en'&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>J</name></author>	</entry>

	<entry>
		<id>https://jimbodude.net/w/index.php?title=MQP:Security_Analysis_Data_Model&amp;diff=1921&amp;oldid=prev</id>
		<title>J at 19:36, 3 September 2008</title>
		<link rel="alternate" type="text/html" href="https://jimbodude.net/w/index.php?title=MQP:Security_Analysis_Data_Model&amp;diff=1921&amp;oldid=prev"/>
				<updated>2008-09-03T19:36:38Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 19:36, 3 September 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot; &gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Requirements==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Requirements==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*The structure should be easy to traverse&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*The structure should be easy to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;search and &lt;/ins&gt;traverse&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;*Mappings should exist between each security requirement and the block of code that the requirement applies to&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*The structure &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;must contain &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;representation &lt;/ins&gt;of &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;each code element analyzed along with the &lt;/ins&gt;permissions required &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;by &lt;/ins&gt;each code &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;element&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;*Levels of requirements should exist including:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Each permission requirement must provide a complete path to where the requirement originated&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;**Method level requirements&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Each &lt;/ins&gt;permission &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;requirement must provide the names of the methods that determined it&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;**Class level requirements&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;The structure must hold &lt;/ins&gt;''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;Management Data&amp;quot;&lt;/ins&gt;'' - &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;policy information &lt;/ins&gt;that &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;comes from absolute sources (for example, the security policy &lt;/ins&gt;of &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;a given server or user input at runtime)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;**Protection Domain requirements&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;There must be &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;way to calculate the resultant set &lt;/ins&gt;of &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;policy&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*The structure &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;should provide &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;clear understanding &lt;/del&gt;of &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;what &lt;/del&gt;permissions &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;are &amp;quot;absolutely &lt;/del&gt;required&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot; and &amp;quot;possibly required&amp;quot; for &lt;/del&gt;each code &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;block&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;There should be a way &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;optimize &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;resultant set of &lt;/ins&gt;policy &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;by analyzing overlapping &lt;/ins&gt;permission &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;requirements&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'''Possibly Required''' - This &lt;/del&gt;permission &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is required under certain conditions, but not all conditions&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;*&lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'Absolutely Required'&lt;/del&gt;'' - &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This permission is required under all conditions&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;**We can assume any permission &lt;/del&gt;that &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is not on either list &lt;/del&gt;of &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;required permissions is not required under any condition&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The structure should provide &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;clear understanding &lt;/del&gt;of &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;what permissions are &amp;quot;granted&amp;quot; and &amp;quot;denied&amp;quot; for each code block&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;*'''Granted''' - This permission is granted &lt;/del&gt;to the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code block in the &lt;/del&gt;policy &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;file&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;**'''Denied''' - This &lt;/del&gt;permission &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is explicitly denied in the policy file, or was denied during a runtime analysis&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Design==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Design==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Data storage&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Data storage&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**A top level singleton class, ''AnalysisModel'', contains each &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;result set&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**A top level singleton class, ''AnalysisModel'', contains each &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;CodeBlock&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The result set, &lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ProgramAnalysisResult&lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, contains sets &lt;/del&gt;of &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;permissions for each &lt;/del&gt;class&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;*&lt;/ins&gt;'''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;CodeBlock&lt;/ins&gt;'&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'' - Any grouping &lt;/ins&gt;of &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;code: package, protection domain, &lt;/ins&gt;class&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, method, etc.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Each class's policy requirements are stored within the ''ProgramAnalysisResult'' as a ''ClassResult''&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;*The CodeBlock contains any number of PermissionRequirements and any number of PolicyDescriptions&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Each of the class&lt;/del&gt;'&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;s method&lt;/del&gt;'&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;s policy requirements are stored within the &lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ClassResult&lt;/del&gt;'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;as &lt;/del&gt;a ''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;MethodResult&lt;/del&gt;''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;**&lt;/ins&gt;'''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;PermissionRequirement&lt;/ins&gt;''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- Tells what permission is required (using &lt;/ins&gt;a ''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;PermissionDescription&lt;/ins&gt;''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;)&lt;/ins&gt;, the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;path to get &lt;/ins&gt;to the permission &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;checking call, &lt;/ins&gt;and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;a list of tools that agree on this requirement&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;**In order to record permission requirements&lt;/del&gt;, the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;''PermissionDescription'' class is used &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;store &lt;/del&gt;the permission &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;type &lt;/del&gt;and &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;name&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;***&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;*&lt;/ins&gt;'''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;PolicyDescription&lt;/ins&gt;'&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'' - Describes a set of policy&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Traversal&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Data Retrieval&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;In order to make the structure easy to implement and traverse, all classes that contain policy requirements extend the abstract class &lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Result&lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, which implements the following functionalities:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Search is performed from &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;AnalysisModel - any CodeBlock can be found this way, as &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;AnaysisModel contains each CodeBlock&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;***&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Provide a name to &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;item that &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;policy requirements apply to&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Traversal of the call structure is performed from any CodeBlock - &lt;/ins&gt;each &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;has a list &lt;/ins&gt;of &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;children &lt;/ins&gt;and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;a reference back to its parent (if any&lt;/ins&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;*Provide lists for &lt;/del&gt;each &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;type &lt;/del&gt;of &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;policy requirement (Possibly Required, Absolutely Required, Granted, &lt;/del&gt;and &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Denied&lt;/del&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Traversal of &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;permission &lt;/ins&gt;structure &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;is performed from any PermissionRequirement (via a CodeBlock) - each PermissionRequirement has a full trace &lt;/ins&gt;to the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;origin of the permission it describes&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;*Provide methods to add permissions to each list&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Resultant policy calculation uses &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;PolicyApplicationStrategy&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;which starts at any CodeBlock&lt;/ins&gt;, and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;is passed through all its &lt;/ins&gt;children&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, processing permissions as it goes&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;**In order to make &lt;/del&gt;the structure &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;easier &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;traverse, all classes that could be Results but also contain child results extend &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;abstract class ''ResultWithChildren''&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;**Policy optimization can occur if more than one PermissionRequirement exists for a given PermissionDescription&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;*ResultWithChildren provides &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;list of child results (of a specific type) and methods to add to the list&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;search the list&lt;/del&gt;, and &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;create new &lt;/del&gt;children &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;of the proper type&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:AnalysisModel.png|frame|left|Security Analysis Model]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:AnalysisModel.png|frame|left|Security Analysis Model]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>J</name></author>	</entry>

	<entry>
		<id>https://jimbodude.net/w/index.php?title=MQP:Security_Analysis_Data_Model&amp;diff=1915&amp;oldid=prev</id>
		<title>J at 19:10, 29 August 2008</title>
		<link rel="alternate" type="text/html" href="https://jimbodude.net/w/index.php?title=MQP:Security_Analysis_Data_Model&amp;diff=1915&amp;oldid=prev"/>
				<updated>2008-08-29T19:10:15Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 19:10, 29 August 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot; &gt;Line 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**In order to make the structure easier to traverse, all classes that could be Results but also contain child results extend the abstract class ''ResultWithChildren''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**In order to make the structure easier to traverse, all classes that could be Results but also contain child results extend the abstract class ''ResultWithChildren''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;***ResultWithChildren provides a list of child results (of a specific type) and methods to add to the list, search the list, and create new children of the proper type&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;***ResultWithChildren provides a list of child results (of a specific type) and methods to add to the list, search the list, and create new children of the proper type&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Image:AnalysisModel.png|frame|left|Security Analysis Model]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>J</name></author>	</entry>

	<entry>
		<id>https://jimbodude.net/w/index.php?title=MQP:Security_Analysis_Data_Model&amp;diff=1913&amp;oldid=prev</id>
		<title>J: /* Design */</title>
		<link rel="alternate" type="text/html" href="https://jimbodude.net/w/index.php?title=MQP:Security_Analysis_Data_Model&amp;diff=1913&amp;oldid=prev"/>
				<updated>2008-08-29T18:29:11Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Design&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 18:29, 29 August 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l25&quot; &gt;Line 25:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 25:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**Each class's policy requirements are stored within the ''ProgramAnalysisResult'' as a ''ClassResult''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**Each class's policy requirements are stored within the ''ProgramAnalysisResult'' as a ''ClassResult''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**Each of the class's method's policy requirements are stored within the ''ClassResult'' as a ''MethodResult''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**Each of the class's method's policy requirements are stored within the ''ClassResult'' as a ''MethodResult''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**In order to record permission requirements, the ''PermissionDescription'' class is used to store the permission type and name&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Traversal&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Traversal&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**In order to make the structure easy to implement and traverse, all classes that contain policy requirements extend the abstract class ''Result'', which implements the following functionalities:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**In order to make the structure easy to implement and traverse, all classes that contain policy requirements extend the abstract class ''Result'', which implements the following functionalities:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>J</name></author>	</entry>

	<entry>
		<id>https://jimbodude.net/w/index.php?title=MQP:Security_Analysis_Data_Model&amp;diff=1912&amp;oldid=prev</id>
		<title>J: New page: Category:MQP-Design {{MQP:Navbar}} ==Overview== In order to provide the results of analysis, a data structure was devised to store the results.  ==Requirements== *The structure should ...</title>
		<link rel="alternate" type="text/html" href="https://jimbodude.net/w/index.php?title=MQP:Security_Analysis_Data_Model&amp;diff=1912&amp;oldid=prev"/>
				<updated>2008-08-29T18:02:56Z</updated>
		
		<summary type="html">&lt;p&gt;New page: &lt;a href=&quot;/wiki/Category:MQP-Design&quot; title=&quot;Category:MQP-Design&quot;&gt;Category:MQP-Design&lt;/a&gt; {{MQP:Navbar}} ==Overview== In order to provide the results of analysis, a data structure was devised to store the results.  ==Requirements== *The structure should ...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:MQP-Design]]&lt;br /&gt;
{{MQP:Navbar}}&lt;br /&gt;
==Overview==&lt;br /&gt;
In order to provide the results of analysis, a data structure was devised to store the results.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*The structure should be easy to traverse&lt;br /&gt;
*Mappings should exist between each security requirement and the block of code that the requirement applies to&lt;br /&gt;
*Levels of requirements should exist including:&lt;br /&gt;
**Method level requirements&lt;br /&gt;
**Class level requirements&lt;br /&gt;
**Protection Domain requirements&lt;br /&gt;
*The structure should provide a clear understanding of what permissions are &amp;quot;absolutely required&amp;quot; and &amp;quot;possibly required&amp;quot; for each code block&lt;br /&gt;
**'''Possibly Required''' - This permission is required under certain conditions, but not all conditions&lt;br /&gt;
**'''Absolutely Required''' - This permission is required under all conditions&lt;br /&gt;
**We can assume any permission that is not on either list of required permissions is not required under any condition&lt;br /&gt;
*The structure should provide a clear understanding of what permissions are &amp;quot;granted&amp;quot; and &amp;quot;denied&amp;quot; for each code block&lt;br /&gt;
**'''Granted''' - This permission is granted to the code block in the policy file&lt;br /&gt;
**'''Denied''' - This permission is explicitly denied in the policy file, or was denied during a runtime analysis&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
*Data storage&lt;br /&gt;
**A top level singleton class, ''AnalysisModel'', contains each result set&lt;br /&gt;
**The result set, ''ProgramAnalysisResult'', contains sets of permissions for each class&lt;br /&gt;
**Each class's policy requirements are stored within the ''ProgramAnalysisResult'' as a ''ClassResult''&lt;br /&gt;
**Each of the class's method's policy requirements are stored within the ''ClassResult'' as a ''MethodResult''&lt;br /&gt;
*Traversal&lt;br /&gt;
**In order to make the structure easy to implement and traverse, all classes that contain policy requirements extend the abstract class ''Result'', which implements the following functionalities:&lt;br /&gt;
***Provide a name to the item that the policy requirements apply to&lt;br /&gt;
***Provide lists for each type of policy requirement (Possibly Required, Absolutely Required, Granted, and Denied)&lt;br /&gt;
***Provide methods to add permissions to each list&lt;br /&gt;
**In order to make the structure easier to traverse, all classes that could be Results but also contain child results extend the abstract class ''ResultWithChildren''&lt;br /&gt;
***ResultWithChildren provides a list of child results (of a specific type) and methods to add to the list, search the list, and create new children of the proper type&lt;/div&gt;</summary>
		<author><name>J</name></author>	</entry>

	</feed>