<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ref="http://purl.org/rss/1.0/modules/reference/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://purl.org/rss/1.0/">
	<channel rdf:about="http://www.manoatech.com/pages/rss.rdf">
		<title>Manoa Tech</title>
		<link>http://www.manoatech.com/pages/index.php</link>
		<description><![CDATA[Copyright 2008-2009 Manoa Technology Services LLC]]></description>
		<items>
			<rdf:Seq>
				<rdf:li resource="http://www.manoatech.com/pages/index.php?entry=entry090427-144854" />
				<rdf:li resource="http://www.manoatech.com/pages/index.php?entry=entry090304-161425" />
			</rdf:Seq>
		</items>
	</channel>
	<item rdf:about="http://www.manoatech.com/pages/index.php?entry=entry090427-144854">
		<title>Actually Useful Use Cases, part 1</title>
		<link>http://www.manoatech.com/pages/index.php?entry=entry090427-144854</link>
		<description><![CDATA[Best practices for use cases go far beyond simply referring to users as <i>Actors</i>.  Common recommendations include: <br /><ul style="margin-left: 40px;"><li style="list-style-image:url('/images/bullet-blue.gif');">Document the use case steps independently from the UI</li><li style="list-style-image:url('/images/bullet-blue.gif');">Include both user and system actions</li><li style="list-style-image:url('/images/bullet-blue.gif');">Use a template to capture the various parts of a use case: user goal, pre-conditions, steps, post conditions, alternate paths, forms submitted, and so on.</li></ul>But following the above steps is often not enough to fully integrate use case documentation into your development process, as many of you know.  Process problems often mean that you&#039;re putting a lot of effort into writing use cases the &quot;right way&quot;, but are getting limited results in terms of productivity.  The tips on this list will get you <b>better results from your use case documentation</b>, and <b>save you time on every development iteration</b>.  That being said, here we go...<h2>1. Identify use cases by name, not an issue tracking number</h2>Use case descriptions should survive and be usable across multiple development iterations and even across releases.  That means that multiple issues may be written against the use case over time, including initial development, defects, and enhancements.  If you are writing new use case documentation for each release, you are not only duplicating a lot of work, but you are also losing that valuable traceability that should convey knowledge from one development iteration to the next.<br /><br />Since your use case will be around for a long time, <b>you want to give it a name that will stick</b>.  One way to ensure this is to write the name in CamelCase -- make it clear that this is a long-lived label, not just a document title.  You also want the use case name to describe how this case is different than others; for example, instead of using the name &quot;Advanced Image Upload&quot;, you might use the name &quot;UploadAndTagImage&quot;, which additionally prompts the user to tag and geocode uploaded images.  This level of detail is different than using use case extension and should be used when our new UploadAndTagImage case replaces the previous UploadImage case.  If tagging an image were an optional path that the user may embark upon, then you would document it as a use case extension (which I will write about in a future part of this article).<br /><br />The above approaches will yield you a <b>unique, long-lived, and descriptive name for your functionality</b>.  If you use a requirements management system or a requirements wiki, your use case documents may be linked to from your issue tracking system, code repository comments, other web pages, or other documentation.  Having these long-lived cross-references in your requirements in the #1 thing that you can start doing today to improve your development accuracy and productivity.  The other items on this list follow from this first step.<h2>2. Use cases should be revision controlled</h2>Using long-lived use case artifacts means that it will actually become easier to determine the differences between any two development iterations or system releases; however, your use case documents must be revision controlled in order to gain this benefit.  This can be in the same revision control system as your source code, a proprietary document management system, or in a Wiki.  <br /><br />Using a Wiki is an especially good choice for non-technical business analysts -- the interface and usage model is similar to many of the Web 2.0 sites out there, and you can get the benefit of revision control without the analysts performing a separate check-in and check-out.  If your requirements are going to be written by the developers themselves, it may be convenient to put requirements documents in the same revision control system as your code.  Just <b>be sure to choose a revision control system that supports a web-based front-end</b>; this will allow you to link directly to your documents and achieve the cross-referenced nirvana that every project needs.<br /><br />If possible, it is nice to be able to tag your requirements documents when they are approved for a specific software iteration or release.  This functionality is almost always available in a typical revision control system or proprietary system.  If using a requirements wiki, you may have to look for a plugin (search for <i>Flagged Revisions</i> for your wiki flavor) or use page metadata.]]></description>
	</item>
	<item rdf:about="http://www.manoatech.com/pages/index.php?entry=entry090304-161425">
		<title>Simple PHP Blog</title>
		<link>http://www.manoatech.com/pages/index.php?entry=entry090304-161425</link>
		<description><![CDATA[I&#039;m installing <a href="http://sourceforge.net/projects/sphpblog/" target="_blank" >Simple PHP Blog</a> to host the blog on this site.  The app is, in fact, simple to install -- just extract the distro into your web directory, ensure that your file permissions are correctly set, and run the online setup procedure via a web browser.<br /><br />It offers a large amount of interface customization.  You can customize the sidebar widgets, color scheme, and layout theme via your web browser, as well as administer users and moderation.  Other layout customizations are implemented by modifying the php files that are included in the installation package, or by creating new themes written in PHP.<br /><br />My next steps with this will be to develop a layout theme and color scheme to match the rest of this site.]]></description>
	</item>
</rdf:RDF>

