<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Open Source U &#187; Design Patterns</title>
	<atom:link href="http://blog.theopensourceu.com/category/design-patterns/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.theopensourceu.com</link>
	<description>An Open-Source Discovery/Education Blog</description>
	<lastBuildDate>Fri, 07 May 2010 18:39:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Violet UML Editor</title>
		<link>http://blog.theopensourceu.com/2010/03/violet-uml-editor/</link>
		<comments>http://blog.theopensourceu.com/2010/03/violet-uml-editor/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 22:17:52 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Design Tip]]></category>
		<category><![CDATA[Graduate School]]></category>
		<category><![CDATA[Open Source Project]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Grad-School]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=570</guid>
		<description><![CDATA[I use UML to do quick brain storming and when exploring software. While I&#8217;ve not posted many write ups here (grad-school!),  I generally don&#8217;t want to invest a lot of time in my UML diagrams and only sometimes do I even want to save them. Often times, especially lately, I&#8217;ve been drawing on a whiteboard [...]]]></description>
			<content:encoded><![CDATA[<p>I use UML to do quick brain storming and when exploring software. While I&#8217;ve not posted many write ups here (grad-school!),  I generally don&#8217;t want to invest a lot of time in my UML diagrams and only sometimes do I even want to save them.</p>
<p>Often times, especially lately, I&#8217;ve been drawing on a whiteboard that I keep in my office.  I find this to be efficient (even over paper because I&#8217;d end up throwing it away).</p>
<p><a href="http://www.horstmann.com/design_and_patterns.html"><img class="alignright" title="OO Design &amp; Patterns, 2nd Ed Book Cover" src="http://www.horstmann.com/oodp2/oodp2.jpg" alt="OO Design &amp; Patterns, 2nd Ed Book Cover" width="270" height="333" /></a>In one of my current grad-school classes, we are using &#8220;<a title="Object-Oriented Design &amp; Patterns" href="http://www.horstmann.com/design_and_patterns.html">Object-Oriented Design &amp; Patterns</a>&#8221; by <a href="http://www.horstmann.com/">Cay S. Horstmann</a> as the class text book. I&#8217;ve enjoyed the book and it provides some decent examples. I bring the book up because apparently the author of the book created a UML package called <a title="Violet UML Software" href="http://violet.sourceforge.net/">Violet UML</a>. I&#8217;ve found this to be the best software based UML brain-storming software I&#8217;ve ever found. Here are my reasons:</p>
<ul>
<li>It loads quickly</li>
<li>I can efficiently draw diagrams without warnings or complex menus to navigate though.</li>
<li>The lack of UML rules enforcement means that I can draw partial diagrams; diagrams that mean nothing out of context.</li>
<li>It&#8217;s open source</li>
<li>So far, its more stable / reliable to <a title="ArgoUML at Tigris.org" href="http://argouml.tigris.org/">ArgoUML</a></li>
</ul>
<p>If you are looking for a UML package, I must recommend this. I searched and searched for a UML package a while back and I never came up with this. I looked at everything, no matter what and still never found it. So, if you like it, please spread the word (via your own blog, twitter, facebook, etc). I think it is well done software and worth some attention.</p>
<p><a title="Violet UML Software" href="http://violet.sourceforge.net/">http://violet.sourceforge.net/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2010/03/violet-uml-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ORM patterns which are &#8216;Invisible to the eye&#8217;</title>
		<link>http://blog.theopensourceu.com/2010/02/orm-patterns-which-are-invisible-to-the-eye/</link>
		<comments>http://blog.theopensourceu.com/2010/02/orm-patterns-which-are-invisible-to-the-eye/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 21:44:48 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Design Tip]]></category>
		<category><![CDATA[Graduate School]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[DVCS]]></category>
		<category><![CDATA[Grad-School]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=559</guid>
		<description><![CDATA[The more I work with design patterns*, the more I come to respect them as a design tool. For grad-school, I&#8217;m writing a DVCS and I needed some information on ORM patterns. While I&#8217;m not sure if this is a real term, I Googled it and found a great article on Invisible to the eye. [...]]]></description>
			<content:encoded><![CDATA[<p>The more I work with design patterns*, the more I come to respect them as a design tool. For grad-school, I&#8217;m writing a DVCS and I needed some information on ORM patterns. While I&#8217;m not sure if this is a real term, I Googled it and found a great article on <a title="Invisible to the Eye (blogspot)" href="http://giorgiosironi.blogspot.com/">Invisible to the eye</a>.</p>
<p>The article can be found at: <a title="10 orm patterns: components of a object-relational mapper @ Invisible to the eye" href="http://giorgiosironi.blogspot.com/2009/08/10-orm-patterns-components-of-object.html">http://giorgiosironi.blogspot.com/2009/08/10-orm-patterns-components-of-object.html</a></p>
<p>For my project, I&#8217;m mainly interested in the <a title="P of EAA: DataMapper" href="http://martinfowler.com/eaaCatalog/dataMapper.html">Data Mapper</a> and the <a title="P of EAA: Table Data Gateway" href="http://martinfowler.com/eaaCatalog/tableDataGateway.html">Table Data Gateway</a>. Both are patterns from <a title="Martin Fowler's Web Site" href="http://martinfowler.com/">Martin Folwer&#8217;s</a> book <a title="Patterns of Enterprise Application Architecture" href="http://martinfowler.com/books.html#eaa">Patterns of Enterprise Application Architecture</a>.</p>
<p>While I&#8217;ve not read the book yet, I think I might&#8230; After classes&#8230;. Anyway, I mostly wanted to share on the 10 ROM patterns listed at Invisible to the eye.</p>
<p>*If  you&#8217;d like a good intro to design patterns, I love <a title="Prev. reference to Head First Design Patterns on tOSU" href="http://theopensourceu.com/2009/01/plans-for-the-open-source-u/">Head First Design Patterns</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">
<h1 class="title">Invisible to the eye</h1>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2010/02/orm-patterns-which-are-invisible-to-the-eye/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smells to Refactor</title>
		<link>http://blog.theopensourceu.com/2010/01/smells-to-refactor/</link>
		<comments>http://blog.theopensourceu.com/2010/01/smells-to-refactor/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 20:56:11 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[object orientated]]></category>
		<category><![CDATA[Refactor]]></category>
		<category><![CDATA[Smells]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=537</guid>
		<description><![CDATA[I&#8217;ve recently been coming across the term &#8220;smells&#8221; or &#8220;code smells.&#8221; Once you see it in context, it&#8217;s quite clear what it means. Something bad to fix. Java.net posted a list of such smells as well as a suggested method to correct it.  Reference lists like this can be helpful. Even if you are not [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been coming across the term &#8220;<a title="Code Smells - Wikipedia" href="http://en.wikipedia.org/wiki/Code_smell">smells</a>&#8221; or &#8220;<a title="Code Smells - Wikipedia" href="http://en.wikipedia.org/wiki/Code_smell">code smells</a>.&#8221; Once you see it in context, it&#8217;s quite clear what it means. Something bad to fix. Java.net posted a list of such smells as well as a suggested method to correct it.  Reference lists like this can be helpful. Even if you are not actively studying things like this, it&#8217;s good to review to gain a broad view of what types of things should be avoided.</p>
<p><a title="Smells to Refactor" href="http://wiki.java.net/bin/view/People/SmellsToRefactorings">http://wiki.java.net/bin/view/People/SmellsToRefactorings</a></p>
<p>This link was given to me by my instructor for a Object-Orientated Software Development class. Again, worth while to review.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2010/01/smells-to-refactor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Object Relational Mapping &gt; A &#8216;Design Pattern&#8217; Solution</title>
		<link>http://blog.theopensourceu.com/2009/04/object-relational-mapping-a-design-pattern-solution/</link>
		<comments>http://blog.theopensourceu.com/2009/04/object-relational-mapping-a-design-pattern-solution/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 20:44:27 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Design Tip]]></category>
		<category><![CDATA[Data Model]]></category>
		<category><![CDATA[Decorator Pattern]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[Strategy Pattern]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=193</guid>
		<description><![CDATA[There has been a lot written about Object Relational Mapping &#8212; or ORM but I came up with a design that I intend to apply to my own projects and wanted to publish and share the idea. This idea was my own; when I wrote this I hadn&#8217;t seen this idea published elsewhere. However, the [...]]]></description>
			<content:encoded><![CDATA[<p>There has been a lot written about Object Relational Mapping &#8212; or ORM but I came up with a design that I intend to apply to my own projects and wanted to publish and share the idea.</p>
<p>This idea was my own; when I wrote this I hadn&#8217;t seen this idea published elsewhere. However, the idea is derived from a set of very common design patterns. It would not surprise me in the least if another designer/developer already implemented a similar idea. However, I digress&#8230;</p>
<h2>Preliminary Information</h2>
<p>The ORM is a method to take data stored in a relational database-type structure and represent the same data as object orientated classes.</p>
<p>I feel that the ten thousand foot level the idea is straight-forward. Assume that we are using the MVC (Model-View-Controller) design pattern for your application.  Furthermore, lets assume that we&#8217;ve got a simple object to which will represent our Model (part of the MVC).</p>
<p>Lets assume our model object is the following:</p>
<div id="attachment_228" class="wp-caption aligncenter" style="width: 245px"><a rel="attachment wp-att-228" href="http://theopensourceu.com/2009/04/object-relational-mapping-a-design-pattern-solution/classdiagram1/"><img class="size-full wp-image-228" title="Data Model Example" src="http://theopensourceu.com/wp-content/uploads/2009/04/classdiagram1.png" alt="Data Model Example" width="235" height="322" /></a><p class="wp-caption-text">Data Model Example</p></div>
<p>The idea is to take a mix of the strategy and the decorator pattern. The strategy pattern is a design pattern that allows you to define the interface for an algorithm which can be different depending on the implementation.</p>
<p>The idea of the decorator pattern is to simply add responsibility to a class (through inheritance). My ORM is a combination of the two patterns.</p>
<h2>The Design &#8211; a Class Diagram</h2>
<p>The pattern is simple.</p>
<div id="attachment_233" class="wp-caption alignleft" style="width: 413px"><a rel="attachment wp-att-233" href="http://theopensourceu.com/2009/04/object-relational-mapping-a-design-pattern-solution/objectdiagramwithpattern/"><img class="size-full wp-image-233" title="Diagram with OR Design" src="http://theopensourceu.com/wp-content/uploads/2009/04/objectdiagramwithpattern.png" alt="Diagram with OR Design" width="403" height="540" /></a><p class="wp-caption-text">Diagram with OR Design</p></div>
<p>We use the interface to represent the ability to write out or read in with the Encoder. You&#8217;d implement the interface on to a derived class of the target class.</p>
<p>Why do we implement this interface on a derived class? Strictly speaking, we don&#8217;t have to. Though, this is intentional and part of the pattern that I&#8217;m trying to describe. This is the part of the strategy pattern working for us. This would allow us to implement different encoders for different types of storage mediums.</p>
<p>This means that we could create a set for SQL server, XML and perhaps a web service if so inclined.</p>
<h2>Usage</h2>
<p>The usage, I imagine, to be simple. Setup your basic interface and then derive a target class and apply the interface. Implement your interface to write the object and read the object to/from your storage medium.</p>
<p>One point of doing this, is that if a model object contains a collection  or an instances of another model object, you can use this interface to write and retrieve that object.</p>
<h2>An Example</h2>
<p>In all honesty, I had hoped to put together a simple but working example of this. I&#8217;ve not had the time and I&#8217;ve been sitting on this post for a while. I wanted to get this post out. I still hope to get together a simple example but for the time being the description is all I&#8217;m posting.</p>
<p>If you have specific interest in an actual implemention of my concept here, please leave a message below. The interest will help modivate me to take the time to get something together.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2009/04/object-relational-mapping-a-design-pattern-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Windows OOP&#8221; vs. &#8220;Cocoa MVC&#8221;</title>
		<link>http://blog.theopensourceu.com/2009/03/windows-oop-vs-cocoa-mvc/</link>
		<comments>http://blog.theopensourceu.com/2009/03/windows-oop-vs-cocoa-mvc/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 06:16:59 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Design Tip]]></category>
		<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=182</guid>
		<description><![CDATA[While I don't agree with the following article that windows developers (the author is looking at .NET, I believe) can't implement the MVC design pattern, I do agree with the article that MVC is probably a better way to implement one's interface. I want to direct your attention to the following article.]]></description>
			<content:encoded><![CDATA[<p>While I don&#8217;t agree with the following article that windows developers (the author is looking at .NET, I believe) can&#8217;t implement the MVC design pattern, I do agree with the article that MVC is <em>probably</em> a better way to implement one&#8217;s interface. I want to direct your attention to the following article.</p>
<p><a title=" Cocoa Is My Girlfriend » Cocoa Tutorial: Windows OOP vs Cocoa MVC" href="http://www.cimgf.com/2008/07/29/cocoa-tutorial-windows-oop-vs-cocoa-mvc/">http://www.cimgf.com/2008/07/29/cocoa-tutorial-windows-oop-vs-cocoa-mvc/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2009/03/windows-oop-vs-cocoa-mvc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programming Books To Read</title>
		<link>http://blog.theopensourceu.com/2009/01/programming-books-to-read/</link>
		<comments>http://blog.theopensourceu.com/2009/01/programming-books-to-read/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 18:44:41 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Head First]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Coding Horror]]></category>
		<category><![CDATA[Hanselman]]></category>
		<category><![CDATA[Recommendations]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=144</guid>
		<description><![CDATA[Programming books are elusive for me. I often ry to start reading them and 99.9% of the time I end up not finishing the book&#8230; Even though, I usually will gt more than half way though the book. This is a very bad trend the I&#8217;m aiming to reverse this year. As I posted earlier, [...]]]></description>
			<content:encoded><![CDATA[<p>Programming books are elusive for me. I often ry to start reading them and 99.9% of the time I end up not finishing the book&#8230; Even though, I usually will gt more than half way though the book. This is a very bad trend the I&#8217;m aiming to reverse this year. As I posted earlier, I&#8217;m currently reading <a href="http://theopensourceu.com/2009/01/plans-for-the-open-source-u/"><strong>Head First Design Patterns</strong></a> and am at the halfway point.</p>
<p>I intend to finish the book yet and I&#8217;m still doing good with reading it. I usually read after work for at least 20 to 30 minutes. It is usually good enough for me to cover about 5 pages. I&#8217;ve read the book for as long as 3 hours before but that isn&#8217;t possible to do every night&#8230; <img src='http://blog.theopensourceu.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Several great bloggers have posted several book lists. I&#8217;m sure that most developers that have been following blogs are aware of them but as a reminder they are below. Check them out&#8230; How many of the books on their lists have you read? What would you add to their list and why?  (Leave a <a title="Which Books would you include on a list?" href="http://theopensourceu.com/2009/01/programming-books-to-read/#comments">comment below</a>, I&#8217;m really curious as I&#8217;m going to start building a list of books to read.)</p>
<p><a title="Recommended: Six Language Agnostic Programming Books" href="http://www.hanselman.com/blog/SixEssentialLanguageAgnosticProgrammingBooks.aspx" target="_self">http://www.hanselman.com/blog/SixEssentialLanguageAgnosticProgrammingBooks.aspx</a></p>
<p><a title="Recommended: Jeff Atwood's Recommended Reading List." href="http://www.codinghorror.com/blog/archives/000020.html" target="_self">http://www.codinghorror.com/blog/archives/000020.html</a></p>
<p>I specifically want to put <strong>Head First Design Patterns</strong> on their lists. I know that the Head First series can look a little silly (when simply flipping though the book), however I feel that the content is very well presented, is kept relevant and can hold your attention (<em>this is very important to finishing the book as well as getting something out of it</em>).</p>
<p>I know some might argue but that is my two cents.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2009/01/programming-books-to-read/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plans for The Open Source U</title>
		<link>http://blog.theopensourceu.com/2009/01/plans-for-the-open-source-u/</link>
		<comments>http://blog.theopensourceu.com/2009/01/plans-for-the-open-source-u/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 00:17:37 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Understanding Software]]></category>
		<category><![CDATA[Dissection]]></category>
		<category><![CDATA[FireFox]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=47</guid>
		<description><![CDATA[My plans for this site are not quite clear. I feel that I&#8217;ve got a very clear objective but the plan on how to achieve that objective is still a bit fuzzy. As I describe in my about page my mission plan (for a lack of a better term) is: Understand the design, architecture and [...]]]></description>
			<content:encoded><![CDATA[<p>My plans for this site are not quite clear. I feel that I&#8217;ve got a very clear objective but the plan on how to achieve that objective is still a bit fuzzy.</p>
<p>As I describe in my about page my mission plan (for a lack of a better term) is:</p>
<p><strong>Understand the design, architecture and implementation of certain major Open Source software for <em>my personal </em>and <em>professional</em></strong><strong> growth. </strong></p>
<p>On this site, I do intend to walk though the dissection of certain open source software. Additionally, I&#8217;m going to walk though and explain by example certain design patterns as well as post example software.</p>
<p>Lately, my main focus has been software architecture. That is, how is software put together. This is as opposed to how certain functions work or operate. I&#8217;m looking at the high level of software design.</p>
<div class="wp-caption alignleft" style="width: 190px"><a href="http://oreilly.com/catalog/9780596007126/"><img title="Head First Design Patterns by OReilly Meda" src="http://oreilly.com/catalog/covers/9780596007126_cat.gif" alt="Head First Design Patterns Book Cover" width="180" height="208" /></a><p class="wp-caption-text">Head First Design Patterns Book Cover</p></div>
<p>I&#8217;m currently reading <a title="Head First: Design Patterns" href="http://oreilly.com/catalog/9780596007126/" target="_blank"><strong>Head First Design Patterns</strong></a>. I love the book and this book is probably the main reason for my interest in overall software architecture. The architecture is something that I&#8217;ve not spent much time on in my career as I mostly put together software segments rather then the overall software.</p>
<p>Recently, I&#8217;ve become responsible to design the architecture of a existing project that is in terrible need of being re-done. I hope to learn things from the book and from the internet to help me in this effort.</p>
<p>As for the software dissection side of things, I&#8217;m thinking of starting with Firefox. In fact, I&#8217;ve actually started as I&#8217;ve always wanted to dissect Firefox; it intrigues me. A little bit ago, I posted a question on Stack Overflow titled: <a title="Stack Overflow Post:  	How Does FireFox Work? Source Code Walk Through?" href="http://stackoverflow.com/questions/388946/how-does-firefox-work-source-code-walk-through/" target="_blank">How Does FireFox Work? Source Code Walk Through?[^]</a></p>
<p>Check out the post for some of the responses I got. The one that is marked as the answer is what I&#8217;ve decided to follow.</p>
<p>I hope to start writing up my findings and understandings later this week. Though, with work my schedule can get dicey.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2009/01/plans-for-the-open-source-u/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
