<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>64 Bytes-new site location</title><link>http://64bytes.com/</link><description>just a few characters short of a code base.</description><language>en</language><managingEditor>noemail@noemail.org (Josh Handel)</managingEditor><lastBuildDate>Sun, 21 Dec 2008 03:12:19 PST</lastBuildDate><generator>BlogEngine.Net Syndication Generator http://dotnetblogengine.net/</generator><blogChannel:blogRoll xmlns:blogChannel="http://backend.userland.com/blogChannelModule">http://64bytes.com/opml.axd</blogChannel:blogRoll><blogChannel:blink xmlns:blogChannel="http://backend.userland.com/blogChannelModule">http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Handel</dc:creator><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">just a few characters short of a code base.</dc:description><dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en-US</dc:language><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">64 Bytes-new site location</dc:title><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/64Bytes" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2F64Bytes" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2F64Bytes" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2F64Bytes" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/64Bytes" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2F64Bytes" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2F64Bytes" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2F64Bytes" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Making a “zoom to image” double click with Seadragon AJAX. (Part 1-The Problem)</title><link>http://feedproxy.google.com/~r/64Bytes/~3/hKmGvXID0-M/Making-a-e2809czoom-to-imagee2809d-double-click-with-Seadragon-AJAX-Part-1-The-Problem.aspx</link><category>.NET</category><category>AJAX</category><category>Web 2.0</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Sun, 21 Dec 2008 02:05:00 PST</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/12/21/Making-a-e2809czoom-to-imagee2809d-double-click-with-Seadragon-AJAX-Part-1-The-Problem.aspx</guid><description>&lt;p&gt;
&amp;nbsp;&amp;nbsp; Recently Microsoft released its deep zoom technology implemented in JavaScript using Ajax.&amp;nbsp; Using the Deep Zoom Composer I made a quick composition with it to test it out.&amp;nbsp; Part of this was random curiosity and part was because I was actually looking for something like this to build a High Res photo album. 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp; While things are very intuitive as you could click to zoom in, use your scroll wheel to zoom in or out, pan with a mouse drag etc.. A feature that seemed very obvious (especially for photo albums) was some kind of &amp;ldquo;Zoom to fit&amp;rdquo; feature.&amp;nbsp;&amp;nbsp; My thought was, if I double click on&amp;nbsp; specific picture in my gallery then I want to zoom that image to fit the screen..&amp;nbsp; Double click again should zoom me back out.
&lt;/p&gt;
&lt;p&gt;
While this idea seems simple there are actually a few challenges that must be dealt with Like:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Event wiring isn&amp;rsquo;t obvious at first (thank you Aseem Kishore at MS for pointing me in the right direction)&lt;/li&gt;
	&lt;li&gt;Seadragon doesn&amp;rsquo;t know there are multiple images. All it does is manage zooming and scrolling on a large canvas.&amp;nbsp; &lt;/li&gt;
	&lt;li&gt;There are event collisions due to single clicks firing with double clicks.&lt;/li&gt;
&lt;/ul&gt;
Before we dive into all of the issues let&amp;rsquo;s take a look at what we want things to look like when we are done.. The below example will allow you to do all the normal Sea dragon things (single click zoom, scroll zoom, pan, full screen, etc) and&amp;nbsp; it will let you zoom to fit any photo by double clicking on it.. And you can Zoom back out by double clicking again. &lt;br /&gt;
&lt;br /&gt;
&lt;iframe src="/examples/seadragon/ajax-running.html" width="800" height="600"&gt;
This post requires iframes for you to view the samples.
&lt;/iframe&gt;
&lt;br /&gt;
Now that we know the problem and we see how the solution works let&amp;rsquo;s talk about how we got here. Basically there are 4 steps.. &lt;br /&gt;
&lt;ol&gt;
	&lt;li&gt;Compose a deep zoom composition and export it to Seadragon Ajax &amp;amp; update the export to use the current Seadragon API.&lt;/li&gt;
	&lt;li&gt;Override Seadragon&amp;rsquo;s Mouse events in JavaScript&lt;/li&gt;
	&lt;li&gt;Map all of the images using Seadragon&amp;rsquo;s coordinate system&lt;/li&gt;
	&lt;li&gt;Build a way to detect and manage double clicks.&lt;/li&gt;
&lt;/ol&gt;
So in the next post&amp;nbsp; I&amp;rsquo;ll take you thru getting all setup and having a sample composition ready and running locally in your own web browser.&lt;br /&gt;
&lt;br /&gt;
</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">The introductory post about how to add double click behaviors to Seadragon AJAX and to make a "Zoom to fit" Gallery using the technology.</dc:description><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=9f28d756-2f82-4b86-a108-c578eda511fb</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">18</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=9f28d756-2f82-4b86-a108-c578eda511fb</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/12/21/Making-a-e2809czoom-to-imagee2809d-double-click-with-Seadragon-AJAX-Part-1-The-Problem.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=9f28d756-2f82-4b86-a108-c578eda511fb</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/12/21/Making-a-e2809czoom-to-imagee2809d-double-click-with-Seadragon-AJAX-Part-1-The-Problem.aspx</feedburner:origLink></item><item><title>www.delphiquery.com - Because everyone should write at least one "toy" app :-)</title><link>http://feedproxy.google.com/~r/64Bytes/~3/ykoq_TBPKEc/wwwDelphiQuerycom-Because-everyone-should-write-at-least-one-toy-app-).aspx</link><category>.NET</category><category>AJAX</category><category>Links of Interest</category><category>Our little startup </category><category>Web 2.0</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Mon, 24 Nov 2008 03:10:00 PST</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/11/24/wwwDelphiQuerycom-Because-everyone-should-write-at-least-one-toy-app-).aspx</guid><description>&lt;p&gt;
I&amp;#39;m pleased to announce this &amp;quot;toy&amp;quot; app a friend and I wrote.. &lt;a href="http://www.delphiquery.com"&gt;www.delphiquery.com&lt;/a&gt;. The app is pretty strait forward. A person asks a question and its voted on for a few minutes. The results are then emailed back to them once the poll closes (currently 5 ~ 10 minutes).&amp;nbsp;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
The REAL reason we wrote this little app was to play with MVC and LINQ to SQL. I have to say the experience was very pleasent.. the Jquery ajax calls worked easy to build, and it was so VERY nice to actually know my client IDs inside my HTML . Also With a little bit of routing voodoo we got it to do some interesting things routing wise for having all of our controller actions ALSO available via JSON or XML as API calls. 
&lt;/p&gt;
&lt;p&gt;
I&amp;#39;ll post more about the whole Actions as API techniques later. But for now.. &lt;a href="http://www.delphiquery.com"&gt;Here it is, as silly as they come&lt;/a&gt;..&amp;nbsp; 
&lt;/p&gt;
</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=9afb2663-0412-4df8-8056-42d2e4867021</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=9afb2663-0412-4df8-8056-42d2e4867021</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/11/24/wwwDelphiQuerycom-Because-everyone-should-write-at-least-one-toy-app-).aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=9afb2663-0412-4df8-8056-42d2e4867021</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/11/24/wwwDelphiQuerycom-Because-everyone-should-write-at-least-one-toy-app-).aspx</feedburner:origLink></item><item><title>Open Vote Framework... Brain candy that might be worth building.</title><link>http://feedproxy.google.com/~r/64Bytes/~3/AeMhoAbYNeA/Open-Vote-Framework-Brain-candy-that-might-be-worth-building.aspx</link><category>Service-oriented architecture </category><category>Software</category><category>System Analysis</category><category>Web 2.0</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Mon, 03 Nov 2008 00:34:00 PST</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/11/03/Open-Vote-Framework-Brain-candy-that-might-be-worth-building.aspx</guid><description>&lt;p&gt;&lt;span class="Apple-style-span" style="font-family: helvetica"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: normal" class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif; color: black"&gt;So in this election year I have spent a lot of time thinking about voting and technology.. I see a lot of purpose built and closed systems outthere, and there are a few open systems.. But in my limited research I haven&amp;#39;tseen talk of but no action on a truly open source voting framework.. What I amtalking about is a series of services that would create a secure votingsystem.. Here are the design goals I am considering for this project.&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: Verdana, sans-serif; color: black"&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;					&lt;li class="MsoNormal" style="color: black; line-height: normal"&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;Distributed &amp;amp; Self healing	data model&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;&amp;nbsp;:	&amp;nbsp;The actual votes should be stored in multiple locations with enough	parity between each location that N number of locations can be compromised	and the results from the vote still be trusted and valid.&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: Verdana, sans-serif"&gt;&lt;/span&gt;&lt;/li&gt;			&lt;li class="MsoNormal" style="color: black; line-height: normal"&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;Self recounts&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;: This is something I did in a	Voting system for an NPO many moons ago.. No user vote was ever associated	with a specific user BUT all user votes were given an ID.. The User	(Voter) was given the ID and could look up their vote any time.. In these	cases when the voting base doesn&amp;#39;t trust the results, they can still	validate that their vote WAS recorded correctly.. This would allow grass	root organizations to do &amp;quot;pseudo&amp;quot; recounts on their own using	information they gather from voters about the accuracy of their vote and	some statistical analysis.. if things seem TOO far out of whack then	actual recounts can be executed.&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: Verdana, sans-serif"&gt;&lt;/span&gt;&lt;/li&gt;			&lt;li class="MsoNormal" style="color: black; line-height: normal"&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;Scoped Voting&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;: This is something that has	bugged me for a LONG time.. If I am a voter who lives in a state but I go	to the wrong polling place my entire VOTE is provisional or void.. I would	suggest that disenfranchising these voters we scope the vote. &amp;nbsp;After	all National concerns like President and Senatorial elections are still	valid for you. The rest of the ballet could be marked provisional.. The	same could be true if you move from one part of a county to another..	Perhaps you can&amp;#39;t vote in the congressional seat but you can on county	bonds or state initiatives. By scoping the vote we allow voters a chance	for their voice to be heard accurately and give them the dynamics they	need.&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: Verdana, sans-serif"&gt;&lt;/span&gt;&lt;/li&gt;			&lt;li class="MsoNormal" style="color: black; line-height: normal"&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;Vote Anywhere&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;: The goal here is to allow	voters the opportunity to vote their specific ballot (based on their	registration) regardless of their physical location or the polling station	they actually vote at.. This could also extend to the web. This, specifically,	isn&amp;#39;t pie in the sky tech; Travis County Texas already did this using Hart	Intercivics voting system at all of their early voting centers.&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: Verdana, sans-serif"&gt;&lt;/span&gt;&lt;/li&gt;			&lt;li class="MsoNormal" style="color: black; line-height: normal"&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;Hardware (and UI agnostic)&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;&amp;nbsp;: By this I mean that the	application should be service based.. Private hardware providers should be	allowed to build hardware or software that integrates with the voting	service. &amp;nbsp;This is especially important when dealing with special	needs voters. And of course this could allow for online or web based	voting.&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: Verdana, sans-serif"&gt;&lt;/span&gt;&lt;/li&gt;			&lt;li class="MsoNormal" style="color: black; line-height: normal"&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;Deep but anonymous Logs and	Auditing trails&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;:	By this we mean that actions should (for privacy) be anonymised from the	specific user that executed them BUT there should be deep logging so that	should a node in the service become invalid (see Distributed and Self	Healing) that it can be analyzed to determine the true cause of the issue.&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: Verdana, sans-serif"&gt;&lt;/span&gt;&lt;/li&gt;			&lt;li class="MsoNormal" style="color: black; line-height: normal"&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;Voter Identity validation	without ID&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: Helvetica, sans-serif"&gt;:	Using a series of questions &amp;amp; answers based on the user the identity	of that use should be able to be validate to a level of certainty that is	equal to or greater than that of forced State ID regulations.. This system	could be used as a backup in locations where a person is missing their ID	or for Online voting.&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: Verdana, sans-serif"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; line-height: 115%; font-family: Verdana, sans-serif; color: black"&gt;At thispoint its all just brain candy that I&amp;#39;m playing with. But I guess I have 4years to figure it out and get some of these ideas into code or architecture. &amp;nbsp;If your interested in these ideas or want to help let me know if there is enough backing I may start a formal project, otherwise I&amp;#39;ll just tinker with it in my proverbial garage.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=f3d4897b-c697-4be1-9b91-525bb2080827</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=f3d4897b-c697-4be1-9b91-525bb2080827</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/11/03/Open-Vote-Framework-Brain-candy-that-might-be-worth-building.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=f3d4897b-c697-4be1-9b91-525bb2080827</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/11/03/Open-Vote-Framework-Brain-candy-that-might-be-worth-building.aspx</feedburner:origLink></item><item><title>ASP.NET MVC leaves the land of "Technical Preview".. Grows up and becomes a Beta.</title><link>http://feedproxy.google.com/~r/64Bytes/~3/REIfAXN_8JQ/ASPNET-MVC-leaves-the-land-of-Technical-Preview-Grows-up-and-becomes-a-Beta.aspx</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Thu, 16 Oct 2008 07:57:00 PDT</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/10/16/ASPNET-MVC-leaves-the-land-of-Technical-Preview-Grows-up-and-becomes-a-Beta.aspx</guid><description>&lt;p&gt;
I haven&amp;#39;t had a chance to play with it yet. But its out and word on the street is it will be v1 before the end of the year.&amp;nbsp;&amp;nbsp; Go download, play, migrate &amp;amp; enjoy :-)
&lt;/p&gt;
&lt;p&gt;
Download it here: &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=a24d1e00-cd35-4f66-baa0-2362bdde0766&amp;amp;displaylang=en&amp;amp;tm"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=a24d1e00-cd35-4f66-baa0-2362bdde0766&amp;amp;displaylang=en&amp;amp;tm&lt;/a&gt;
&lt;/p&gt;
</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=59fbfcb0-e7a6-4d51-9b08-cc4bb1264b88</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=59fbfcb0-e7a6-4d51-9b08-cc4bb1264b88</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/10/16/ASPNET-MVC-leaves-the-land-of-Technical-Preview-Grows-up-and-becomes-a-Beta.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=59fbfcb0-e7a6-4d51-9b08-cc4bb1264b88</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/10/16/ASPNET-MVC-leaves-the-land-of-Technical-Preview-Grows-up-and-becomes-a-Beta.aspx</feedburner:origLink></item><item><title>Need more Flags</title><link>http://feedproxy.google.com/~r/64Bytes/~3/YeomapaS8PA/Need-more-Flags.aspx</link><category>.NET</category><category>Software</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Fri, 05 Sep 2008 02:33:00 PDT</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/09/05/Need-more-Flags.aspx</guid><description>&lt;p&gt;
Right, so first off I am no great fan of having 10,000,000 flags.. But sometimes you run into a situation where you need to pass around a datastructure with ump-teen million flags so you end up turning it into an enum of type flag and doing bitwise OR and AND to &amp;nbsp;to operate on your flags something like
&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;
enum Flags
{
    FLAG1 = 1,
    FLAG2 = 2,
    FLAG3 = 4
}
&lt;/pre&gt;
&lt;p&gt;
And somewhere in your code you would have 
&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;
Flags myCurrentVal = Flags.FLAG2;
bool Method HasFlag(Flags enum)
{
   return ((enum &amp; myCurrentVal) != 0)
}
&lt;/pre&gt;
&lt;p&gt;
Ok sure, that works and it doesn't suck to bad.. but it has limitations.. First off, you can only have 32 or 64 flags (depending on int or long) in your enum.. Not a big deal unless you are doing something like field level security on a very complex form that includes workflow. And frankly while simple to use these things always make some on the team roll there eyes and "Dear god, no more bitwise logic".. 
&lt;/p&gt;
&lt;p&gt;
So in an effort to help my flag loving client have flags and my bitwise hating teammates not have to deal with &amp; and | more than they have to I threw togeather an flag class that will support up to Int32.MaxValue flags (not wise, but it would handle it).
&lt;/p&gt;
&lt;p&gt;
So here is the flags base class, its a generic base class that takes an enum in its inherited implementation
&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;
public abstract class  FlagsBase&lt;T&gt; where T : struct
    {
        private bool[] _SetFlags;
        private int _flagLength;
        public int FlagLength
        {
            get { return _flagLength; }
        }
        public FlagsBase()
        {
            Type enumType = typeof(T);
            if (enumType.IsEnum)
            {
                int length = getFlagsLength(enumType);
                _SetFlags = new bool[length];
                for (int i = 0; i &lt; _SetFlags.Length; i++)
                {
                    _SetFlags[i] = false;
                }
                _flagLength = length;
            }
            else
            {
                throw new ArgumentException("The Generic type of " + typeof(T).ToString() + " is not an enum. This base class only supports enums.");
            }
        }

        protected int GetFlagInt(T flag)
        {
            return (int)Enum.Parse(typeof(T), flag.ToString());
        }

        public bool GetFlagValue(T flag)
        {
            int flagval = GetFlagInt(flag);
            if (flagval &lt;= _SetFlags.Length)
            {
                return _SetFlags[flagval];
            }
            return false;
        }

        public void SetFlagValue(T flag, bool newValue)
        {
            int flagval = GetFlagInt(flag);
            if (flagval &lt;= _SetFlags.Length)
            {
                _SetFlags[flagval] = state;
            }
        }

        public T Flag(int position)
        {
            return (T)Enum.ToObject(typeof(T), position);

        }

        private int getFlagsLength(Type enumType)
        {
            return Enum.GetValues(enumType).Length;
        }
    }
&lt;/pre&gt;

&lt;p&gt;
So what we have here is a generic class that takes an enum as its type. So you make an enum and the length of that enum is used to create a private bool[].. Now each value in the enum becomes a point in the array and has a bool to back it.  Easy sleasy as I like to say.
&lt;/p&gt;
&lt;p&gt;
If I want to add new values to my flags set, I just add them to the enum and everything just keeps on working. Here is an example implementation and "use"
&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;
enum WebUI_FIELDS
{
   field1,
   field2,
   field3,
   field4,
   field5,
   field6,
   field7,
   field8,
   field9,
   field10,
   field11,
   field12,
   field13,
   field14,
   field15,
   field16,
   field17,
   field18,
   field19,
   field20,
   field21,
   field22,
   field23,
   field24,
   field25,
   field26,
   field27,
   field28,
   field29,
   field30,
   field31,
   field32,
   field33,
   field34
}
public class WebUIFieldSecurity : FlagsBase&lt;WebUI_FIELDS&gt;
    {
        public WebUIFieldSecurity ():base()
        {
        }
    }
&lt;/pre&gt;
&lt;p&gt;
And using it may look something like this
&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;
void SetupSecurity(IPrincipal user)
{
   WebUIFieldSecurity mysec = new WebUIFieldSecurity();
   if(user.IsInRole("UseField1"))
   {
       mysec.SetFlagValue(WebUI_FIELDS.field1,true);
   }
   SetupPageSecurity(mysec);
}
void SetupPageSecurity(WebUIFieldSecurity sec)
{
     field1.ReadOnly = sec.GetFlagValue(WebUI_FIELDS.field1);
     field2.ReadOnly = sec.GetFlagValue(WebUI_FIELDS.field2);
     field3.ReadOnly = sec.GetFlagValue(WebUI_FIELDS.field3);
     field4.ReadOnly = sec.GetFlagValue(WebUI_FIELDS.field4);
}
&lt;/pre&gt;

&lt;p&gt;
   See how nice and easy that is.. And readable.. Personally I like readable.. and If I need to add more flags, I just grow my enum.. no worring about bit masks, using Hex numbering to set my flags to the right values or being limited to less than 100 flags.. Granted if you need more than 64 flags then things may be a little crazy already. But one never knows, and at least with this you won't care :-).
&lt;/p&gt;</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">A helper class to easily handle enum flags of any size (by size I mean any number of flags in your enum) without having to mess with bitwise logic.</dc:description><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=a26414dc-2073-44c0-a5f7-baf6681d1a72</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=a26414dc-2073-44c0-a5f7-baf6681d1a72</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/09/05/Need-more-Flags.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=a26414dc-2073-44c0-a5f7-baf6681d1a72</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/09/05/Need-more-Flags.aspx</feedburner:origLink></item><item><title>Context Singletons</title><link>http://feedproxy.google.com/~r/64Bytes/~3/XAbOIFWfv_k/Context-Singletons.aspx</link><category>.NET</category><category>Software</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Mon, 01 Sep 2008 03:27:00 PDT</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/09/01/Context-Singletons.aspx</guid><description>So more often then not I want to share something in a &amp;quot;singleton&amp;quot; fashion across a call stack. But a true singleton wouldn&amp;#39;t work because the objects I want to share are usually not thread safe or its not a best practice to persist them across threads. NHibernate has a Session manager pattern that is very similar to what I want and so I extended on that principal making what I call a &amp;quot;Context&amp;quot; Singleton.&amp;nbsp; Its simply just a little base class that will store itself in right context and as such will also &amp;quot;die out&amp;quot; once that context has ended.&lt;br /&gt;
&lt;br /&gt;
Here is the helper class&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="c-sharp"&gt;
public abstract class ContextSingletonBase: IDisposable
    {
        private static string CONTEXT_PREFIX = "ContextSingleton:";

        protected static object _getObject(string key)
        {
            if (isWCF)
            {
                return WcfInstanceContext.Current.Items[ContextSingletonBase.CONTEXT_PREFIX + key];
            }
            else if (isHttp)
            {
                return System.Web.HttpContext.Current.Items[ContextSingletonBase.CONTEXT_PREFIX + key];
            }
            else
            {
                return CallContext.GetData(ContextSingletonBase.CONTEXT_PREFIX + key);
            }
        }
        protected static void _setObject(string key, object obj)
        {
            if (_getObject(key) != null)
            {
                if (isWCF)
                {
                    WcfInstanceContext.Current.Items.Remove(ContextSingletonBase.CONTEXT_PREFIX + key);
                }
                else if (isHttp)
                {
                    System.Web.HttpContext.Current.Items.Remove(ContextSingletonBase.CONTEXT_PREFIX + key);
                }
                else
                {
                    CallContext.SetData(ContextSingletonBase.CONTEXT_PREFIX + key, null);
                }
            }

            if (isWCF)
            {
                WcfInstanceContext.Current.Items.Add(ContextSingletonBase.CONTEXT_PREFIX + key, obj);
            }
            else if (isHttp)
            {
                System.Web.HttpContext.Current.Items.Add(ContextSingletonBase.CONTEXT_PREFIX + key, obj);
            }
            else
            {
                CallContext.SetData(ContextSingletonBase.CONTEXT_PREFIX + key, obj);
            }
        }
        private static bool isWCF
        {
            get
            {
                return (WcfInstanceContext.Current != null);
            }
        }
        private static bool isHttp
        {
            get
            {
                if (isWCF)
                {
                    return false;
                }
                if (System.Web.HttpContext.Current != null)
                {
                    return true;
                }
                return false;
            }
        }
        internal class WcfInstanceContext : IExtension&lt;InstanceContext&gt;
        {
            private readonly IDictionary items;

            private WcfInstanceContext()
            {
                items = new Hashtable();
            }

            public IDictionary Items
            {
                get { return items; }
            }

           public static WcfInstanceContext Current
            {
                get
                {
                    if (OperationContext.Current != null)
                    {
                        WcfInstanceContext context =
                            OperationContext.Current.InstanceContext.Extensions.Find&lt;WcfInstanceContext&gt;();
                        if (context == null)
                        {
                            context = new WcfInstanceContext();
                            OperationContext.Current.InstanceContext.Extensions.Add(context);
                        }
                        return context;
                    }
                    return null;
                }
            }

           public void Attach(InstanceContext owner) { }

           public void Detach(InstanceContext owner) { }
        }

        #region IDisposable Members

        public void Dispose()
        {
            _dispose();
        }

        protected abstract void _dispose();

        #endregion
    }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;So you will notice I test for several contexts.. This is because going down to CallContext is not always safe.. First off for Http Applications the executing thread can actually change.. If it changed and you weren&amp;#39;t using HttpContext you would end up loosing your ContextSingleton. (Granted HttpContext is infact using CallContext at its core, using HttpContext will handled that potential thread switch out for you).&amp;nbsp; I also check for a WCF context.. This is because (and I&amp;#39;m not 100% sure about this) WCF services are handled diffrently depending on the connection point. Using the WCF Context instead of CallContext removes any &amp;quot;wierdness&amp;quot; that may occure.&lt;br /&gt;
&lt;br /&gt;
So this was just a base class and on its own missing the &amp;quot;Singleton&amp;quot; part of the whole design.. Its mostly intrested in the storage of said singleton and not the actual access or storeage of it. So what does an Implemented Context Singleton look like?&lt;br /&gt;
&lt;br /&gt;
Well here is an overly simple one that stores a Linq2Sql Data Context... you can see the pattern is pretty much pure &amp;quot;singleton&amp;quot; but instead of the Instance being a static field its a property and it calls back to the above static classes that then look in the approproate context for the actual instance of the helper.. In this way your interact with the class as if it were a traditional singleton but it only persists inside its appropriate context (Http, WCF or Call)..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="c-sharp"&gt;

  public class Helper:ContextSingletonBase
    {
        private static string KEY = "SingletonKey";
        public static Helper Instance
        {
            get
            {
                Helper h = GetHelper();
                if (h == null)
                {
                    h = MakeHelper();
                }
                return h;
            }
        }

        private static Helper MakeHelper()
        {
            Helper h = new Helper();
            Helper._setObject(Helper.KEY, h);
            return h;
        }

        private static Helper GetHelper()
        {
            object helper = Helper._getObject(Helper.KEY);
            if (helper != null)
            {
                return (Helper)helper;
            }
            return null;
        }

        private DataContext _dc;
        public DataContext DC
        {
            get
            {
                if (_dc == null)
                {
                    _dc = new DataContext();
                }
                return _dc;
            }
       }

        protected override void _dispose()
        {
            _dc.Dispose();
        }

}
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
One thing I would love to do is actually replace the Contexts code I have with some kind of provider model.. Use a bit of code (or settings) to detect the approriate context and return that.. That way the ContextSingletonBase wouldn&amp;#39;t have to be depended on .NET 3.0 (like it is now) and its code wouldn&amp;#39;t grow in complexity as other contexts become known (I only did this for Call, Http and WCF because those are the only contexts I&amp;#39;ve run into and Call is kind of the catch all.. But who knows, Silverlight might have its own... .NET compact framework might have one, etc... you can see how seporateing the context storage from the ContextSingleton helper could become a good thing.. &lt;br /&gt;
&lt;br /&gt;</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">A little class that allows you to manage a "singleton" accross a thread or context without it being truely static like a true singleton.</dc:description><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=e4663c90-f146-4af7-8194-e483f69aacb0</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=e4663c90-f146-4af7-8194-e483f69aacb0</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/09/01/Context-Singletons.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=e4663c90-f146-4af7-8194-e483f69aacb0</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/09/01/Context-Singletons.aspx</feedburner:origLink></item><item><title>IPhone vs. Instinct Round 2 (the knock out).</title><link>http://feedproxy.google.com/~r/64Bytes/~3/JcFy9q4nLKQ/IPhone-vs-Instinct-Round-2-(the-knock-out).aspx</link><category>Gadgets</category><category>Regular Life </category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Sun, 20 Jul 2008 10:18:00 PDT</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/07/20/IPhone-vs-Instinct-Round-2-(the-knock-out).aspx</guid><description>&lt;p&gt;
In my previous post I spoke about the wonders of Sprints new Instinct. And don&amp;#39;t get me wrong it is a great phone.. But the luster quickly wore off.. Why? Well like all non &amp;quot;Apple&amp;quot; product it didn&amp;#39;t &amp;quot;just work&amp;quot;.&amp;nbsp; Now I&amp;#39;m not going to bash Sprint or Samsung. They tried really hard, they gave it a valiant effort.&amp;nbsp; But in the end things just stopped working and Sprint was unable (in my case) to fix them.. The issues I had were as follows. 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Exchange integration never worked&lt;/li&gt;
	&lt;li&gt;Contact Sync stopped working when my number was ported and they couldn&amp;#39;t fix it (at least not by the time I cancelled the service.&lt;/li&gt;
	&lt;li&gt;Browser got worse the more I tried to like it.. (I really wanted to like it, but it just couldn&amp;#39;t hold up to the iphone).&lt;/li&gt;
	&lt;li&gt;Tethering was techically possible but a Billing problem made it not work.. Tethering was almost worth keeping the phone, but Sprint CS said it was not likely to get fixed in the near future (something to do with the new Packaging).&lt;/li&gt;
	&lt;li&gt;Sound quality wasn&amp;#39;t that great. It wasn&amp;#39;t that bad; but its no good and the speakerphone was all but useless.&lt;/li&gt;
	&lt;li&gt;Customer service is lacking.. Sprint trys to be nice, but there customer service team is all but useless. They are very nice about being useless, but still useless non the less.&lt;/li&gt;
&lt;/ul&gt;
In the end I waited inline for a 3g iphone.. And let me tell you.. 3g + everything else an iPhone does + everything &amp;quot;just works&amp;quot; and, ya its just a winning combination. 
</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Another round of comparisons between the Sprint Instinct and the iPhone... Guess who wins.</dc:description><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=ce51469a-c06e-4cbd-8c24-caaca39a0f7f</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=ce51469a-c06e-4cbd-8c24-caaca39a0f7f</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/07/20/IPhone-vs-Instinct-Round-2-(the-knock-out).aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=ce51469a-c06e-4cbd-8c24-caaca39a0f7f</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/07/20/IPhone-vs-Instinct-Round-2-(the-knock-out).aspx</feedburner:origLink></item><item><title>Instinct Vs. IPhone</title><link>http://feedproxy.google.com/~r/64Bytes/~3/7nBe-1rOffM/Instinct-Vs-IPhone.aspx</link><category>Gadgets</category><category>Regular Life </category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Sun, 22 Jun 2008 12:15:00 PDT</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/06/22/Instinct-Vs-IPhone.aspx</guid><description>&lt;p&gt;
So given that the 3G iPhone is just around the corner and Sprint has a 30 day cancellation policy on their accounts; I decided it would be fun to play &amp;quot;phone evaluator&amp;quot; for a few weeks while I waited for the 3g iPhone. So went down to the sprint store and got myself a Samsung Instinct. Now I have had an iPhone since June 30th 2007 and it is a great device.. Below is a breakdown of how the two devices compare. Now for the most part these two devices are very similar in functionality and design.. So I&amp;#39;ll just breakdown who has what vs. the other; And how similar features compare. Also, assume 3g Iphone here or atleast iphone 2.0. 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;iPhone: 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Actual Exchange integration with ActiveSync for Email, Calander and Contacts.&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;View PDF and Word Docs&lt;/li&gt;
	&lt;li&gt;iTunes Music Store&lt;/li&gt;
	&lt;li&gt;iTunes App Store &lt;/li&gt;
	&lt;li&gt;MultiTouch Interface&lt;/li&gt;
	&lt;li&gt;3G network &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Instinct 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;MMS&lt;/li&gt;
	&lt;li&gt;Exchange support (email only)&lt;/li&gt;
	&lt;li&gt;Turn by Turn navigation&lt;/li&gt;
	&lt;li&gt;Live TV&lt;/li&gt;
	&lt;li&gt;Internat Radio&lt;/li&gt;
	&lt;li&gt;Sprint Music store&lt;/li&gt;
	&lt;li&gt;Location based Services with Voice Command&lt;/li&gt;
	&lt;li&gt;Location based movie search&lt;/li&gt;
	&lt;li&gt;Voice Command&lt;/li&gt;
	&lt;li&gt;Voice Dialing&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;EVDO network&lt;/li&gt;
	&lt;li&gt;Extra apps like News &amp;amp; Sports&lt;/li&gt;
	&lt;li&gt;Hyptic feedback (the phone kinda feels like you are pressing a button when you press something because it buzzes on press and when you let go) &lt;/li&gt;
	&lt;li&gt;Tethering (ok its not on the phone yet.. but technicly it supports it and Sprint is working on fixing the &amp;quot;Simply Everything&amp;quot; plan so they can fit in Tethering as an addon.)&lt;/li&gt;
	&lt;li&gt;Messaging is included in your plan.. SMS isn&amp;#39;t an add on Yah! &lt;/li&gt;
	&lt;li&gt;MicroSD slot with support for HDSD (or atleast up to 8 gig)&lt;/li&gt;
	&lt;li&gt;Cheaper: $129 with 2 gig card.&lt;/li&gt;
	&lt;li&gt;Removable Batteries and the phone comes with 2 batteries AND an external charger (so charge in phone, and keep the spare charged too!) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Overlapping features and Whos is better. 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Webbrowser: Now Sprint and Samsung gave it the old college try, but without multi-touch they just don&amp;#39;t have the same elegent easy to use experience that iphone users (like myself) enjoy all the time.. But its not bad.. I would say a solid 2nd place for those I&amp;#39;ve used.. Oh ya, and the Samsung browser doesn&amp;#39;t seem to support aJax.. Some javascript, yes.. but not Ajax for some reason..&amp;nbsp; &lt;/li&gt;
	&lt;li&gt;Mail: Again the iPhone can leverage its webbrowser so its got html mail and it looks and works flawlessly&lt;/li&gt;
	&lt;li&gt;Virtual Keyboard: Again the iPhone wins.. Samsung trys but with the smaller screen they can&amp;#39;t fit a qwerty keyboard in portrait mode. Instead you can have one in landscape or you can use an alphabetical keyboard OR a stylest input in portrait mode.&lt;/li&gt;
	&lt;li&gt;Touchscreen: Again (I&amp;#39;m sounding like a broken record) iPhones multi-touch screen is just more responsive.. I find my self pressing things 2 or three times on occation.. &lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;Volocity style Scrolling (zoom your finger and the list zooms): Guess what.. iPhone wins again.. The biggest problem with the&amp;nbsp; Instinct is that it keeps miss selecting stuff after I try to scroll... the iPhone is just smarter about this&lt;/li&gt;
	&lt;li&gt;Full size headphone jack with mic/answer button support: I was so happy to see this, but a SUPER simple feature was left out of the Instinct that makes the iPhone better. You can&amp;#39;t use the mic button on the&amp;nbsp; headphones to skip songs or pause media play! Ya ya, its SOO simple but man that is one of my favorite iPhone features.. I have a set of headphones for my iPhone with just 1 earbud (cut the other one off) so I can cycle with it.. And having that button to change tracks is great.. Especially when I need a little more out of my music because I&amp;#39;m on a tough hill!&lt;/li&gt;
	&lt;li&gt;Development enviroments: I&amp;#39;m not going to choose a winner here. The iPhone has Apple impossed limitations and the $99/year app distro costs; and you can only code on a Mac.. Instinct is a Java based platform and it doesn&amp;#39;t look to limit too much (haven&amp;#39;t dug that deep), but you&amp;#39;ll be lucky if you have 1/10 the audiance of an apple app..&amp;nbsp; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
So in the end who wins.. Well the funny thing is as much as the iPhone beats the Instinct on every overlapping feature. None of them (for me) are deal breakers.. Its all the extras (like the tightly integrated location services or voice dialing &amp;amp; voice commands) that make a winner out of the Instinct.. Ya you heard it here first, I like the Instinct MORE than I like my iPhone.. Now I have about 20 days to continue testing and decided if in fact my initial opinions hold thru till the release of the 3g iPhone.... But at the moment, I think Sprint has a winner (all be it probably under appriciated) in the Instinct. 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">First comparison of my iPhone with a Sprint Instinct that I decided to drive around a bit.</dc:description><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=86cd8b20-f766-4aad-89ec-b5ecfd296290</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=86cd8b20-f766-4aad-89ec-b5ecfd296290</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/06/22/Instinct-Vs-IPhone.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=86cd8b20-f766-4aad-89ec-b5ecfd296290</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/06/22/Instinct-Vs-IPhone.aspx</feedburner:origLink></item><item><title>The 3 W's and H of software development.</title><link>http://feedproxy.google.com/~r/64Bytes/~3/FrFuubX47jQ/The-3-Ws-and-H-of-software-development.aspx</link><category>Regular Life </category><category>Software</category><category>System Analysis</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Thu, 05 Jun 2008 12:17:00 PDT</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/06/05/The-3-Ws-and-H-of-software-development.aspx</guid><description>&lt;div class="st_LeftColumnContainer"&gt;
&lt;span class="cssGlobalSysText_DarkGray"&gt;&lt;font color="#333333"&gt;So a non software developer friend of mine posed the open-ended question &amp;quot;How&amp;quot; to me in an email.. below is my response..&amp;nbsp;&amp;nbsp;On reflection, it is a wonderfully simple description of a healthy SDLC... Overly simple, but perhaps something you can describe to a client and make the whole process more consumable and understandable :-)&lt;/font&gt;&lt;/span&gt; 
&lt;/div&gt;
&lt;div class="st_LeftColumnContainer"&gt;
&lt;span class="cssGlobalSysText_DarkGray"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;blockquote&gt;
	&lt;div class="st_LeftColumnContainer"&gt;
	&lt;span class="cssGlobalSysText_DarkGray"&gt;&lt;font color="#333333"&gt;&lt;em&gt;Lets start with a life cycle that leads to the completion of the action that &amp;quot;how&amp;quot; proposes.. After all, how is just a question that defines an action (be it completed or proposed).. &lt;br /&gt;
	&lt;br /&gt;
	1) &lt;strong&gt;Who:&lt;/strong&gt; One must define the actors, after all &amp;quot;How&amp;quot; is either enacted on or by something/someone.&lt;br /&gt;
	&lt;br /&gt;
	2) &lt;strong&gt;Why:&lt;/strong&gt; Why is like a compass, it points the way and helps shape the goals of what How will achieve.&lt;br /&gt;
	&lt;br /&gt;
	3) &lt;strong&gt;What:&lt;/strong&gt; What is the MOST important question.. It is the goal that How will make real.. If you don&amp;#39;t know what, then how is just the definision of random action.. &lt;br /&gt;
	&lt;br /&gt;
	4) &lt;strong&gt;How:&lt;/strong&gt; wondered when we would get here hu :-P... As a developer I like to think of How as the answer to What.. &lt;br /&gt;
	&lt;br /&gt;
	5) &lt;strong&gt;Do Stuff:&lt;/strong&gt; now that you have how you start making it happen. &lt;/em&gt;&lt;/font&gt;&lt;/span&gt;
	&lt;/div&gt;
	&lt;div class="st_LeftColumnContainer"&gt;
	&lt;span class="cssGlobalSysText_DarkGray"&gt;&lt;font color="#333333"&gt;&lt;/font&gt;&lt;/span&gt;
	&lt;/div&gt;
	&lt;div class="st_LeftColumnContainer"&gt;
	&lt;span class="cssGlobalSysText_DarkGray"&gt;&lt;font color="#333333"&gt;&lt;em&gt;(Rinse and repeat whole process until final goal is achived).&lt;/em&gt;&lt;/font&gt;&lt;/span&gt; 
	&lt;/div&gt;
	&lt;div class="st_LeftColumnContainer"&gt;
	&lt;span class="cssGlobalSysText_DarkGray"&gt;&lt;em&gt;&lt;font color="#333333"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/span&gt;&lt;span class="cssGlobalSysText_DarkGray"&gt;&lt;font color="#333333"&gt;&lt;em&gt;&lt;br /&gt;
	Really each question is the answer to the previous question such that you eventually have a defined action to take.&lt;/em&gt;&lt;/font&gt;&lt;/span&gt; 
	&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div class="st_LeftColumnContainer"&gt;
&lt;span class="cssGlobalSysText_DarkGray"&gt;&lt;font color="#333333"&gt;&amp;nbsp;(The title is in deference to my 4th grade teacher who always tought me that good journalisum was the 4 W&amp;#39;s and H (Who, What, Where, Why &amp;amp; How).. )&lt;/font&gt;&lt;/span&gt; 
&lt;/div&gt;
&lt;div class="st_LeftColumnContainer"&gt;
&lt;span class="cssGlobalSysText_DarkGray"&gt;&lt;font color="#333333"&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;!-- 
&lt;div id="partnerFooter"--&gt;
</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">So a non software developer friend of mine posed the open-ended question "How" to me in an email.. Here is my response.. On reflection, it is a wonderfully simple description of a healthy SDLC</dc:description><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=0c6d0572-c33e-4879-ad05-2521e951b639</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=0c6d0572-c33e-4879-ad05-2521e951b639</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/06/05/The-3-Ws-and-H-of-software-development.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=0c6d0572-c33e-4879-ad05-2521e951b639</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/06/05/The-3-Ws-and-H-of-software-development.aspx</feedburner:origLink></item><item><title>I still ♥ Ruby on Rails...</title><link>http://feedproxy.google.com/~r/64Bytes/~3/tcgQb5i0ao4/I-still-heart-Ruby-on-Rails.aspx</link><category>.NET</category><category>Ruby on Rails</category><category>Web 2.0</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Tue, 20 May 2008 05:23:00 PDT</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/05/20/I-still-heart-Ruby-on-Rails.aspx</guid><description>&lt;p&gt;
&lt;span style="font-size: 8pt; font-family: Verdana"&gt;Over the summer I finally dug into this whole &amp;quot;MVC&amp;quot; thing for web development. Naturally I began with the Mecca of them all Ruby on Rails.&amp;nbsp; This was a twofold learning experience for me..&amp;nbsp; First off it was Ruby a meta-language that bends like read in the wind.&amp;nbsp; And second was Rails, the darling framework that seems to have&amp;nbsp;been sent by the demi-gods of software to help all suffering web developers. &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 8pt; font-family: Verdana"&gt;But all of this joy was not without its flaws. Ruby is (as I mentioned before) all but un-deployable on a windows platform. After all Ruby is a single threaded/multi-process language (great for Unix where you don&amp;#39;t actually have threads). But this limitation makes it an un-workable option on a windows box. Since then I have dug into Monorail, and now am neck deep in ASP.NET MVC. Heck I&amp;#39;m even a committer on the MVCContrib project. And while these projects are great they are still missing some magic.&amp;nbsp; &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 8pt; font-family: Verdana"&gt;In short I still have stars in my eyes when I think of RoR.. This brings up the question, Why? (ya simple question).&amp;nbsp; I&amp;#39;ve been thinking about this a bit and I think (for me) the issue boils down to just a few issues. &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 8pt; font-family: Verdana"&gt;First off is the RoR mantra &amp;quot;Convention over Configuration&amp;quot;.&amp;nbsp; This mantra is actually quite deep; and while it can be a touch annoying at times (class naming can get silly) it&amp;#39;s actually insanely smart. I have probably downloaded 15 different rails projects and had a working knowledge of the app and how to tweak each one in less than an hour. This is because the sites structure is described 1 way and 1 way only. More over I have been able to hand over projects in no time flat. In short, getting up to speed on a rails project is a no brainer.&amp;nbsp; ASP.NET MVC missed the mark on this in a big way in my book. MS, wisely from an OO perspective, laid everything out in a strong override-able and design. If you don&amp;#39;t like routing, just implement a new router, don&amp;#39;t like the view engine, just replace it. MVCContrib continued this with implantations of DI containers like Winsor, Structure Map, etc.. To muddy the situation further, MVCContrib implements multiple View Engines allowing developers to choose between ASPX, NHTML, NVolocity etc.. With all of that we diverge from Convention, and in doing so remove elegance for the privilege of flexibility (* Flexibility I am sure I will be thankful for when I migrate some of my Monorail apps to ASP.NET MVC over the summer).&amp;nbsp; Monorail is also bad about this (although not as much) with multiple view engines and a solid OO framework; but monorail has a community that has become kind of set in their ways. And so, while not set in stone, some conventions have settled in.&amp;nbsp; But going back to the rails mantra &amp;quot;Convention over Configuration&amp;quot;; nether ASP.NET MVC or Monorail prescribe to this philosophy more over they are the opposite &amp;quot;Here&amp;#39;s a convention, but here are 108 tools to ignore it with &amp;quot; (I jest).&amp;nbsp; &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 8pt; font-family: Verdana"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The second great feature of rails is the data model versioning and deployment methodology. You want a new data model, you add a new class to your data model describing the changes. Deploy the new version to your dev db, then code. Once your are done you run your deployment in test, evaluate your unit tests and push to prod; all very elegantly and with little effort. Linq for SQL has a great model but you design the app to the data (pulling your object structure from your tables) not the other way around.. So the same model change in Linq starts at the DB (with change scripts so you can manually run them in test and prod later) then re build your mode, code, test, run scripts in test, run unit tests, and deploy using your ant script that took 2 days to write. That&amp;#39;s a lot of work and unfortunately Castle active record isn&amp;#39;t much better. &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 8pt; font-family: Verdana"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;No don&amp;#39;t get me wrong I really enjoy using Monorail and ASP.NET MVC has real promise. But when you take these three MVC frameworks and you look at developer efficiency and experience RoR is closest to my heart!&lt;/span&gt; 
&lt;/p&gt;
</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Over the summer I finally dug into this whole "MVC" thing for web development. Naturally I began with the Mecca of them all Ruby on Rails.  This was a twofold learning experience for me..  First off it was Ruby a meta-language that bends like read in the wind.  And second was Rails, the darling framework that seems to have been sent by the demi-gods of software to help all suffering web developers.</dc:description><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=56664264-00c6-4c56-a4f4-f469cb17b328</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">7</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=56664264-00c6-4c56-a4f4-f469cb17b328</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/05/20/I-still-heart-Ruby-on-Rails.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=56664264-00c6-4c56-a4f4-f469cb17b328</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/05/20/I-still-heart-Ruby-on-Rails.aspx</feedburner:origLink></item><item><title>Week 5 Question 1 - Requirements Gathering (Round 2)</title><link>http://feedproxy.google.com/~r/64Bytes/~3/Emck0ZMgCJQ/Week-5-Question-1-Requirements-Gathering-(Round-2).aspx</link><category>Education</category><category>System Analysis</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Sun, 10 Feb 2008 02:24:00 PST</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/02/10/Week-5-Question-1-Requirements-Gathering-(Round-2).aspx</guid><description>&lt;p&gt;
&lt;strong&gt;Question:&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;The director of IT would like to know more about enthography, and suggestions on weather or not it should be used in the organization. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Response:&amp;nbsp;&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; For starters, weather you know this term or not ethnography is a staple is business process analysis and review. Ethnography, put simply, is requirements gathering thru observation. Weather we call it ethnography, a work session, a focus group or any other number of observation techniques the key to remember is it&amp;rsquo;s an excellent tool for seeing how well a current process is working.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;One of the best BA&amp;rsquo;s I ever knew could sit down and observe two or three users of a business unit, ask a few key questions and peg the main roadblocks in that groups daily work (she was quite talented). Ethnography, based on some of the material I reviewed, has a multitude of methodologies. It can vary from a very formal, almost &amp;ldquo;academic&amp;rdquo;, approach of video tapes and avoiding contact as much as possible, to an extremely light and informal working session where questions are just kept to a minimum. Really it all depends on your goal and target audience as to how far you want to go. Perhaps if you are running a study or focus group the more formal processes may provide better insight into something like a consumer level product. Contrasting that extreme, a small team working with a business unit inside an organization may want to drop by a subject&amp;rsquo;s office and have a quick working session and take some casual notes. The key to remember is it&amp;rsquo;s all about what you want out of the process. &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;As a recommendation, well ethnography is already in use. The process is a key asset in the toolbox of requirements gathering. Perhaps the name isn&amp;rsquo;t attached but, yes the method is already in use. That&amp;rsquo;s not to say the process couldn&amp;rsquo;t be optimized, and as such it is probably wise to review our techniques as they compare to the more structured implementations of requirements gathering thru observation.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Refrences:&lt;/strong&gt; 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;ilikecake(2008), Ethnography retrieved on February 7th 2008 from ilikecake website: http://www.ilikecake.net/hci/requirements/ethnography.htm &lt;/li&gt;
&lt;/ul&gt;
</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Question: 

 The director of IT would like to know more about enthography, and suggestions on weather or not it should be used in the organization.</dc:description><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=ae4de508-921f-4a7d-80f5-1a46fad20af3</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=ae4de508-921f-4a7d-80f5-1a46fad20af3</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/02/10/Week-5-Question-1-Requirements-Gathering-(Round-2).aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=ae4de508-921f-4a7d-80f5-1a46fad20af3</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/02/10/Week-5-Question-1-Requirements-Gathering-(Round-2).aspx</feedburner:origLink></item><item><title>Week 4 Question 1 - Requirements Gathering.</title><link>http://feedproxy.google.com/~r/64Bytes/~3/6MHNxF4RSw0/Week-4-Question-1-Requirements-Gathering.aspx</link><category>Education</category><category>Software</category><category>System Analysis</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Sun, 03 Feb 2008 06:32:00 PST</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/02/03/Week-4-Question-1-Requirements-Gathering.aspx</guid><description>&lt;p&gt;
&lt;strong&gt;Question:&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
Propose what a team that will handle requirements gathering might look like, what tasks they must do and what resulting assets may come out of this phase of development. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Response:&lt;/strong&gt; 
&lt;/p&gt;
&lt;div&gt;
&lt;p class="MsoNormal"&gt;
Requirements gathering, possibly the most crucial step in software development, is often times the first &amp;ldquo;real&amp;rdquo; step a company takes in developing an application. That&amp;rsquo;s not to say that Scope Definition and problem analysis don&amp;rsquo;t happen. Its just that Requirements Gathering is often time considered the &amp;ldquo;kickoff&amp;rdquo; point from the perspective of most business users.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The goal of requirements gathering is to create a definitive description of exactly what the solution must do in order to resolve the business problem and be considered a success.&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;It is during this phase that we work most closely with the system users to derive these requirements.&lt;span&gt;&amp;nbsp; &lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
One reality about Requirements gathering that many don&amp;rsquo;t realize is that it is more likely that your business users and system owners don&amp;rsquo;t know their own business processes than it is that they do.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;As surprising as that sounds it really isn&amp;rsquo;t bazaar, &lt;span&gt;&amp;nbsp;&lt;/span&gt;many users are far too busy to analyze what they do plus get a strong understanding of how they fit into the organization as a hole.&lt;span&gt;&amp;nbsp; &lt;/span&gt;And while system owners may have a strong high level understanding of what their business does, the minutia of the process that achieves that is often abstracted from them. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
If this sounds like an uphill battle, that&amp;rsquo;s because it is. But if you assemble the right team,&lt;span&gt;&amp;nbsp; &lt;/span&gt;excute the right tasks (often times over and over and over again), and diligently develop and manage the right artifacts;&lt;span&gt;&amp;nbsp; &lt;/span&gt;then you can come out of requirements gathering with a solid foundation. Often times this leads to the requirements gathering team to have a better understanding of what the business does, then even the business users or the system owners do.&lt;span&gt;&amp;nbsp; &lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;strong&gt;&lt;span style="font-size: 16pt; line-height: 115%"&gt;The Team:&lt;/span&gt;&lt;/strong&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;strong&gt;Project Manager:&lt;/strong&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;The project manager acts mostly as a facilitator during requirements gathering, they will be working to get the right people together in the right room so that requirements can be acquired thru interviews, observation or other techniques. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Business Analyst:&lt;/strong&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;It is the responsibility of the Business Analyst to capture the requirements. They will work with the users to understand what they do, what they need, and how to put the system together to get them where they need to go.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Business Analysis is part art and part science and requires exceptional people skills as you help lift the fog surrounding what the system needs to do. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;strong&gt;System Users:&lt;/strong&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;System Users are the Business Analysts primary contact. The Business Analysts will meet with System Users as many times as it takes to get a solid and complete understanding of what is needed. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;strong&gt;System Owners:&lt;/strong&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;Often times there will be gaps in understanding between the various System Users; the System Owners are the best place to start to either fill these gaps or find out who will be filling these gaps. They are also an excellent &amp;ldquo;sanity&amp;rdquo; check. Its surprising how often one can hear &amp;ldquo;they do/want what?&amp;rdquo;&lt;span&gt;&amp;nbsp; &lt;/span&gt;from a System Owner when a BA is explaining the process they have obtained thru their interaction with the &lt;span&gt;&amp;nbsp;&lt;/span&gt;System Users. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;strong&gt;&lt;span style="font-size: 16pt; line-height: 115%"&gt;The Tasks:&lt;/span&gt;&lt;/strong&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
The tasks involved are really a cycle of specific tasks. Thinking of it like a mini process helps, below are the tasks involved in requirement gathering. 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&amp;lt;!--[if !supportLists]--&amp;gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: Symbol"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;Requirements Identification &amp;ndash; Learning of a requirement and defining it in as much detail as possible. &lt;/li&gt;
	&lt;li&gt;&amp;lt;!--[if !supportLists]--&amp;gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: Symbol"&gt;&lt;span&gt;&lt;span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;!--[endif]--&amp;gt;Prioritizing &amp;ndash; Define how important the requirement as it relates to other requirements in the system &lt;/li&gt;
	&lt;li&gt;&amp;lt;!--[if !supportLists]--&amp;gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: Symbol"&gt;&lt;span&gt;&lt;span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Project Impact &amp;ndash; New requirement means a new project plan. Fit in the new requirement and evaluate its impact on the entire project. &lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-indent: -0.25in" class="MsoListParagraphCxSpLast"&gt;
&amp;lt;!--[if !supportLists]--&amp;gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: Symbol"&gt;&lt;span&gt;&amp;middot;&lt;span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;!--[endif]--&amp;gt;Update documentation &amp;ndash; Once we have a full understanding of the new requirement we have to serialize it into documentation. To do that we must update our requirements documents and models. These documents are how projects are defined and the center of communication. It is crucial that these documents stay as up to date as possible. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;strong&gt;&lt;span style="font-size: 16pt; line-height: 115%"&gt;The Artifacts:&lt;/span&gt;&lt;/strong&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
The artifacts are those documents that are the center of communication between the different members of the project team. The key is to make these documents as throe as possible, while making sure that all members of the team understand them.&lt;span&gt;&amp;nbsp; &lt;/span&gt;There are many different types of artifacts that can be used, and it is best to view different types of artifacts like tools rather than items that must exists. After all the goal of these artifacts is for communication, if an artifact isn&amp;rsquo;t successful with your team, don&amp;rsquo;t waste cycles using it. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
Example Artifacts: 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&amp;lt;!--[if !supportLists]--&amp;gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: Symbol"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;Requirements document &amp;ndash; A hallmark of this state. Often times these documents are hundreds of pages long and provide very detailed descriptions of each function of a solution. Sometimes this document is called the Functional Requirements document. &lt;/li&gt;
	&lt;li&gt;&amp;lt;!--[if !supportLists]--&amp;gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: Symbol"&gt;&lt;span&gt;&lt;span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;!--[endif]--&amp;gt;Business Process model &amp;ndash; A series of workflows and state or status diagrams and descriptions that act as a high level overview of how the different requirements interact &lt;/li&gt;
	&lt;li&gt;&amp;lt;!--[if !supportLists]--&amp;gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: Symbol"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;Business Data Model &amp;ndash; This document describes the data that the solution must capture and work with. It is often times that this document acts like a dictionary. Its description of different objects helps users understand what the other documents and models are describing. &lt;/li&gt;
	&lt;li&gt;&amp;lt;!--[if !supportLists]--&amp;gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: Symbol"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;Screen shots or UI Model &amp;ndash; These documents work to help describe how screens will function. Often times they include descriptions of every field that will be viewed or edited on a screen along with mapping information to specific points in other documents like Requirements or models. &lt;/li&gt;
	&lt;li&gt;&amp;lt;!--[if !supportLists]--&amp;gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: Symbol"&gt;&lt;span&gt;&lt;span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;!--[endif]--&amp;gt;Stories &amp;ndash; Stories are used in Agile development and are like mini versions of all the above documents. The specifies of a story are much more laxed leaning more on the idea of the bear minimum to make a requirement understandable rather than a ridged and in-depth description. &lt;/li&gt;
	&lt;li&gt;&amp;lt;!--[if !supportLists]--&amp;gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: Symbol"&gt;&lt;span&gt;&lt;span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;!--[endif]--&amp;gt;Acceptance Testing document &amp;ndash; Sometimes it is easier to describe a piece of functionality by describing the test that validates it. In these cases, writing a few tests cases early is worthwhile. After all, any project worth its weight in salt will have one of these anyways. &lt;/li&gt;
	&lt;li&gt;&amp;lt;!--[if !supportLists]--&amp;gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: Symbol"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;Use Case Models &amp;ndash; These are often very high level graphical representations of requirements, defining all of the actors of the process and what the process will do. &lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
References: 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
Whitten, Jeffery L., &amp;amp; Bentley, Lonnie D. (2008). Introduction to System Analysis and Design. New York: McGraw-Hill Irwin. 
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Question: 

Propose what a team that will handle requirements gathering might look like, what tasks they must do and what resulting assets may come out of this phase of development.</dc:description><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=c86cbe49-eaea-401f-bf4d-0b169f9071c4</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">5</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=c86cbe49-eaea-401f-bf4d-0b169f9071c4</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/02/03/Week-4-Question-1-Requirements-Gathering.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=c86cbe49-eaea-401f-bf4d-0b169f9071c4</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/02/03/Week-4-Question-1-Requirements-Gathering.aspx</feedburner:origLink></item><item><title>Week 3 Question 1 - Handling Scope Creep</title><link>http://feedproxy.google.com/~r/64Bytes/~3/qYC1uQz39FY/Week-3-Question-1-Handling-Scope-Creep.aspx</link><category>System Analysis</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Thu, 24 Jan 2008 14:05:00 PST</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/01/24/Week-3-Question-1-Handling-Scope-Creep.aspx</guid><description>&lt;p&gt;
&lt;strong&gt;Question:&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;You are working on a project, and during the prototype review the client has come up with some new requirements. The project is constrained by both its budget and its schedule. How do you handle this change in scope?&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;*Note to protect the innocent I have paraphrased the question.&lt;/em&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Response:&lt;/strong&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
It is very common when developing an application that the user base will have changes. The fact of the matter is, rarely does a client actually know, in complete detail, what they need. &lt;span&gt;&amp;nbsp;&lt;/span&gt;That kind of forethought is just not the kind of thing you can expect from your clients. There are a few approaches to handle these changes and it really depends on the client and the methodology you are using to develop the project. To keep things simple I&amp;rsquo;ll describe methods to handle this kind of issue in both an Iterative (Agile-esk) and Watershed (RUP-esk) methodologies. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;strong&gt;Iterative&lt;/strong&gt;: &lt;span&gt;&amp;nbsp;&lt;/span&gt;This is the bread and butter of an Iterative process. When dealing with change in an iterative process your first goal is to capture the new request. The Requirement or Story is recorded and added to the development queue. The client then prioritizes the new feature and places it in one of the pre scheduled iterations. If other requirements are not reached before the schedule or budget ends then so be it.&lt;span&gt;&amp;nbsp; &lt;/span&gt;One of my peers is on a SCRUM project at a major PC Manufacturer, and the management actually funds each SCRUM sprint (iteration) at a time.&lt;span&gt;&amp;nbsp; &lt;/span&gt;If the business users see a need for the next sprint then they fund it. If not, the project ends. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;strong&gt;Watershed&lt;/strong&gt;:&lt;span&gt;&amp;nbsp; &lt;/span&gt;While the process will sound similar to Iterative; the decision making and the process that follows is much more structured.&lt;span&gt;&amp;nbsp; &lt;/span&gt;First an analysis of the new request is done, requirements are defined, and impact is scoped. &lt;span&gt;&amp;nbsp;&lt;/span&gt;Once the request is fully understood you have a few chooses. Option one is you can push the new request out until a new phase. Or you can feed in the request into your change management process. This may include your client making some tough decisions about what features they are going to push out or cancel to make room for the new feature. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
The fact of the matter is, if a project is truly constrained (with no wiggle room) then you can think of your project constraints like a budget and requirements like bills you need to pay. &lt;span&gt;&amp;nbsp;&lt;/span&gt;When you run out of your budget you can&amp;rsquo;t pay anymore bills, it&amp;rsquo;s as simple as that. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
Now for a touch of reality, when I am engaged with a client I always make sure they understand that no one truly captures all of their needs in the first pass. As such they should always plan for either financing a second phase OR adding a decent amount of wiggle room to cover these kinds of events. This is really common during the deployment and stabilization phase (when users actually start using the app) and I just refer to this as the &amp;ldquo;shakeout&amp;rdquo; period. In fact the bigger the project, the longer the shakeout.. During the ERP app our shakeout was almost a quarter long as different departments went thru actual monthly and quarterly closes.. 
&lt;/p&gt;
</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Question: 

 You are working on a project, and during the prototype review the client has come up with some new requirements. The project is constrained by both its budget and its schedule. How do you handle this change in scope?</dc:description><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=cce8454b-e175-48ee-82e3-8cda3fdce436</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=cce8454b-e175-48ee-82e3-8cda3fdce436</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/01/24/Week-3-Question-1-Handling-Scope-Creep.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=cce8454b-e175-48ee-82e3-8cda3fdce436</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/01/24/Week-3-Question-1-Handling-Scope-Creep.aspx</feedburner:origLink></item><item><title>Week 2 Question 2 - System Modeling</title><link>http://feedproxy.google.com/~r/64Bytes/~3/46y1TTzr0mk/Week-2-Question-2-System-Modeling.aspx</link><category>Education</category><category>System Analysis</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Fri, 18 Jan 2008 01:13:00 PST</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/01/18/Week-2-Question-2-System-Modeling.aspx</guid><description>&lt;p&gt;
&lt;strong&gt;Question:&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;Someone has asked you to define the models nessesary for the System Analysis phase of the process. What Models would you suggest and where would they be created in the methodology we are using. 
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;*Note to protect the innocent I have paraphrased the question.&lt;/em&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Response:&lt;/strong&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
For system analysis to succeed we must enter this phase of development with a strong understanding of what the business goals are and edit the phase with a complete understanding on how we are going to achieve that goal in a technology agnostic&amp;nbsp; taxonomy. &amp;nbsp; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
A few choose quotes from a former mentor of mine are especially apt here so I am going to paraphrase them before I continue answering this question 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Software development is like asking a question and answering it. &lt;/li&gt;
	&lt;li&gt;A complete set of requirements is the question. Without a complete question , you don&amp;rsquo;t know what you are answering &lt;/li&gt;
	&lt;li&gt;Requirements should be unambiguous, understandable and testable. If you can&amp;rsquo;t test it how do you know you have met the requirement? &lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoNormal"&gt;
-Mentor (not going to use their name on a public site :-P) 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
System Analysis using our development methodology consists of Requirements analysis and Logical Design. By the time you exit Logical Design deliverables will include Business Data Requirements, Logical Data Model, Business Process Requirements, Logical Process Model, Business &amp;amp; System Interface Requirements and finally Logical Interface Model.&amp;nbsp; But not all of these are models and some may include &amp;ldquo;mini&amp;rdquo; models as to support the text in the documents. Below is how I would break down the models across these two phases with more specificity. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;font size="+0"&gt;&lt;font size="1"&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; line-height: 115%"&gt;&lt;font size="+0"&gt;Requirements&lt;/font&gt; Analysis&lt;/span&gt;&lt;/strong&gt;:&lt;/font&gt;&lt;/font&gt;&amp;nbsp; This phase will produce mostly documentation and not models, the documentation from this phase will be consumed to produce formal models. However some modeling will help support this documentation and make it easier to be understood. 
&lt;/p&gt;
&lt;p style="margin-left: 0.75in; text-indent: -0.25in" class="MsoListParagraphCxSpFirst"&gt;
-&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;Use Case Models&lt;/strong&gt;: Use Case models are representations at a fairly high level of a requirement. They employ graphics to represent Actors, actions, inputs and outputs. 
&lt;/p&gt;
&lt;p style="margin-left: 0.75in; text-indent: -0.25in" class="MsoListParagraphCxSpMiddle"&gt;
-&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;Sequence Diagrams&lt;/strong&gt;: These diagrams can help describe how a process executes. The graphic representation of multiple separate processes and how they communicate and react to each other is the goal of this kind of graphic 
&lt;/p&gt;
&lt;p style="margin-left: 0.75in; text-indent: -0.25in" class="MsoListParagraphCxSpLast"&gt;
-&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;State Diagrams&lt;/strong&gt;: These can describe the various states of a business entity, interface or process and how that state may change its properties. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;strong&gt;&lt;span style="font-size: 12pt; line-height: 115%"&gt;Logical Design&lt;/span&gt;&lt;/strong&gt;:&amp;nbsp; The goal of Logical Design is take Business requirements and map them to a system. Maintaining a technology neutral stance these models may have the look and &amp;ldquo;feel&amp;rdquo; of what the system will do, they avoid implementation details or making decisions that could limit chooses during Decision Analysis. These models may also leverage more detailed versions of the above mentioned Use Case, Sequence and State models. 
&lt;/p&gt;
&lt;p style="margin-left: 0.75in; text-indent: -0.25in" class="MsoListParagraphCxSpFirst"&gt;
-&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;Logical Data Model&lt;/strong&gt;:&amp;nbsp; This model describes all of the data needs of the application in maps that include field requirements and relationships. Logical Data Models are a lot like a dictionary of what specific business entity is. 
&lt;/p&gt;
&lt;p style="margin-left: 0.75in; text-indent: -0.25in" class="MsoListParagraphCxSpMiddle"&gt;
-&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;Logical Process Model&lt;/strong&gt;:&amp;nbsp; This model will be a series of flow charts, use cases models, sequence diagrams and other supporting material that turns business requirements into defined processes.&amp;nbsp; The end result of a Logical Process Model is to define each specific process and describe how that process will flow, and how decisions in that process will change the outcome. 
&lt;/p&gt;
&lt;p style="margin-left: 0.75in; text-indent: -0.25in" class="MsoListParagraphCxSpLast"&gt;
-&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;Logical Interface Model&lt;/strong&gt;:&amp;nbsp; The interface model will help define how inputs and outputs will be parsed across the application. This will describe where data should be rendered and where it should be required. This may be described in State Diagrams, Screen mockups, and Logical Data Model based interface requirements with external systems. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
So while I would have to make my describe these quickly, those 3 Logical Models and three types of supporting models are what I would&amp;nbsp; present as required for the System Analysis of the application. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;em&gt;References&lt;/em&gt; 
&lt;/p&gt;
&lt;p style="background: white"&gt;
&lt;span style="font-size: 9.5pt; color: black; font-family: 'Verdana','sans-serif'"&gt;Whitten, Jeffery L., &amp;amp; Bentley, Lonnie D. (2008). Introduction to System Analysis and Design.New York: McGraw-Hill Irwin.&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="background: white"&gt;
&lt;span style="font-size: 9.5pt; color: black; font-family: 'Verdana','sans-serif'"&gt;Fowler, Martin &amp;amp; Scott, Kendall (1999).UML Distilled Second Edition, A Brief Guide to the Standard Object Modeling Language. New Jersey: Addison-Wesley.&lt;/span&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&amp;nbsp;
&lt;/p&gt;
</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Question: 

 Someone has asked you to define the models nessesary for the System Analysis phase of the process. What Models would you suggest and where would they be created in the methodology we are using.</dc:description><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=f6cce831-011e-46e3-9276-7e33ef9656bf</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=f6cce831-011e-46e3-9276-7e33ef9656bf</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/01/18/Week-2-Question-2-System-Modeling.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=f6cce831-011e-46e3-9276-7e33ef9656bf</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/01/18/Week-2-Question-2-System-Modeling.aspx</feedburner:origLink></item><item><title>Week 2 Question 1 - Capability Maturity Model Level</title><link>http://feedproxy.google.com/~r/64Bytes/~3/lchLB_T8j-o/Week-2-Question-1-Capability-Maturity-Model-Level.aspx</link><category>Education</category><category>System Analysis</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:creator><pubDate>Fri, 18 Jan 2008 01:07:00 PST</pubDate><guid isPermaLink="false">http://64bytes.com/post/2008/01/18/Week-2-Question-1-Capability-Maturity-Model-Level.aspx</guid><description>&lt;p&gt;
&lt;strong&gt;Question:&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="1"&gt;&lt;font size="2"&gt;What steps would you take to evaluate a companies CMM level and what evidence would you look for to validate that they met a given level?&lt;/font&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="1"&gt;&lt;em&gt;*Note to protect the innocent I have paraphrased the question.&lt;/em&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Response:&lt;/strong&gt; 
&lt;/p&gt;
&lt;div&gt;
&lt;p style="margin-bottom: 0.14in" class="western"&gt;
To analyze the current CMM level of an organization I would conduct a series of tests, interviews and sample for evidence. Based on the results of those I would be able to evaluate an organization&amp;rsquo;s CMM level with some level of accuracy. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in" class="western"&gt;
Interviews: the goals of these interviews would be to evaluate both internal and external perceptions on what methodologies and tracking processes are in place for the organization. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
-&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;An Executive that is not related to IT 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
-&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;A Business user not related to IT 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
-&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Executive in charge of IT (could be a CIO or Director of IT) 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
-&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Manager of Network Operations 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
-&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Software Development Manager 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
-&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Software Development Project Manager 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
-&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Software Development Techical Lead 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
-&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Software Developer 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
-&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;IT Support Desk Rep 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in" class="western"&gt;
Tests: The function of these tests will be to evaluate how competent the users are of their process. These tests may include further interviews asking specific questions about the organizations processes and comparing those to the documentation obtained. These test may also extend into watching users of the process actually enact tasks in the process. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in" class="western"&gt;
Evidence: It&amp;rsquo;s one thing to talk the talk. But only with evidence can you prove that the organization is in fact using the process. Evidence will be asked for with little to no warning and will need to be pulled from the system with the evaluator present. The sample set for evidence to be pulled from will include all projects for the last 18 months plus at least 6 completed projects. We will be sampling for evidence that the software process is executed consistently and documented as such. &amp;nbsp;Evidence may include documents, emails, helpdesk tickets, reports derived from any in use Methodware, meeting notes and Groupware archives of scheduled meetings. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in" class="western"&gt;
Evaluation: Once all of the data is received we would evaluate the results comparing interview notes, tests &amp;amp; evidence against the organizations published process. We would also compare the organizations published and actual process against industry best practices below is what we are looking for to reach a specific CMM level. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
1)&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Initial : 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
a.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;The organization has completed at least one project and it has been deployed to production. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
b.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;The project includes at least basic documentation to validate that the application was requested and meet the business users needs 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
2)&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Repeatable: 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
a.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;The organization has demonstrated at least 60% of their projects use the same basic methodology. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
b.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;The organization has demonstrated that both the internal and external users are aware of the organizations endeded software development methodology and its general process as it affects them 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
c.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;The organization has completed at least 3 projects that follow the accepted methodology with minimal deviation without documented explanations for deviation. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
3)&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Defined : 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
a.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Specific process documentation and or Methodware was delivered to the Review team at the beginning of the evaluation. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
b.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;The organization has demonstrated that all project have used the methodology since its approval date or documentation is provided with excepted explanations as to which projects deviated and why. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
c.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;At least 50% of all projects demonstrated execution of the documented process. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
d.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;All users of the process know where documentation is stored in the organizations systems and have a strong knowledge of its methods without referring to the documentation. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
e.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;The documented process has been in effect for at one quarter (3 months) 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
4)&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Managed: 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
a.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;The documented process has been in effect for at least 4 quarters (one year) 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
b.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Process evidence is primarly provided by a single system rather than a mixture of emails, meeting notes and other ancillary evidence. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
c.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;The organization has reports that demonstrate quantifiable details regarding a projects success or failure. This should include estimates vs. actual for man hours, cost, schedule, administrative overhead, defect tracking, customer feedback. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
d.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;All current projects are presented in the organizations tracking systems and are accurate to within a reporting period. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
e.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;At least 5 now complete projects used the tracking system from kickoff to completion of the project 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
f.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;All users of the tracking system have logins to the system. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 0.5in; text-indent: -0.25in"&gt;
5)&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Optimized: 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
a.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;The documented process has been in effect for the entire sampling period 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
b.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Process evidence is provided solely from the organizations tracking system. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
c.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Evidence is provided that the organizations process has been evaluated in accordance with IT policies. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
d.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;All users of the tracking system demonstrate consistent and repeated use of the system. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
e.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;The tracking system has enough data to provide baseline reports for comparison. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
f.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;The process includes a lessons learned and these are archived in the tracking system for every closed project 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
g.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Evidence is proved that lessons learned from all closed projects have feed into validate-able changes to the organizations processes (if applicable). 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in; margin-left: 1in; text-indent: -0.25in"&gt;
h.&lt;font size="1"&gt;&lt;font face="Times New Roman, serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;Tracking System metrics &amp;amp; reports are ties to individual and organizational reviews not just process reviews. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in" class="western"&gt;
Comparing the tests results to the above level qualifications would allow us to know which phase an organization is currently in and how close they are to the next phase of CMM. 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in" class="western"&gt;
So ya, I&amp;rsquo;ve been thru a few SOX audits (4 to be exact) so I am leaning a lot on how they test our IT department to make sure that we were meeting Sarbanes-Oxley controls as they relate to IT (and there are a surprising number of them that do!). 
&lt;/p&gt;
&lt;p style="margin-bottom: 0.14in" class="western"&gt;
&lt;font face="Verdana, sans-serif"&gt;&lt;font size="2" style="font-size: 9pt"&gt;Whitten, Jeffery L., &amp;amp; Bentley, Lonnie D. (2008). Introduction to System Analysis and Design.New York: McGraw-Hill Irwin.&lt;/font&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
</description><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">josh</dc:publisher><dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Question: 

What steps would you take to evaluate a companies CMM level and what evidence would you look for to validate that they met a given level?</dc:description><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://64bytes.com/post.aspx?id=d7684543-f7b0-4e41-bf8c-66e4cb1ac5a0</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://64bytes.com/trackback.axd?id=d7684543-f7b0-4e41-bf8c-66e4cb1ac5a0</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/post/2008/01/18/Week-2-Question-1-Capability-Maturity-Model-Level.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://64bytes.com/syndication.axd?post=d7684543-f7b0-4e41-bf8c-66e4cb1ac5a0</wfw:commentRss><feedburner:origLink>http://64bytes.com/post/2008/01/18/Week-2-Question-1-Capability-Maturity-Model-Level.aspx</feedburner:origLink></item></channel></rss>
