<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Ulterior Motive Lounge</title>
        <link>http://geekswithblogs.net/UlteriorMotiveLounge/category/9116.aspx</link>
        <description>The world's first UML comic strip!</description>
        <language>en-US</language>
        <copyright>Martin L. Shoemaker</copyright>
        <managingEditor>Martin@TheUMLGuy.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>I blame Microsoft</title>
            <link>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/04/01/i-blame-microsoft.aspx</link>
            <description>&lt;p&gt;In a classic &lt;a target="_blank" href="http://www.Dilbert.com"&gt;Dilbert&lt;/a&gt; strip, Tina the Tech Writer is forced to write docs for code that doesn’t exist yet. Her last line: “If you call our tech support, we’ll blame Microsoft.”&lt;/p&gt;
&lt;p&gt;Works for me! I blame &lt;a target="_blank" href="http://www.Microsoft.com"&gt;Microsoft&lt;/a&gt; for why I don’t have a new Lounge today. OK, so time spent job searching is a larger factor. But still, I’d rather blame Microsoft.&lt;/p&gt;
&lt;p&gt;In particular, I blame Windows 7. Now by and large, I’m loving &lt;a target="_blank" href="http://www.microsoft.com/windows7"&gt;the Windows 7 beta&lt;/a&gt;. It’s a thousand little things I didn’t know I needed, but now I need. And it’s running amazingly well on my old Toshiba Portege M200. Soon I hope to test it on my Gateway, which has a lot more power.&lt;/p&gt;
&lt;p&gt;But there’s one area where I’ve found a bug; and it’s a critical bug for the Lounge. In fact, it’s in &lt;strong&gt;the&lt;/strong&gt; critical Lounge application: Windows Journal.&lt;/p&gt;
&lt;p&gt;I love Windows Journal. It’s simple, it’s powerful, it’s free with Windows. You grab a Tablet PC pen, and you draw. That simple, and that powerful. Simple, because it just works like a pen and paper. Powerful, because even though it doesn’t have the drawing features of a higher-end paint package like &lt;a target="_blank" href="http://www.corel.com/servlet/Satellite/ca/en/Product/1184951547051"&gt;Paint Shop Pro&lt;/a&gt;, it has two very powerful features:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;You can print documents to it. Word docs, Excel spreadsheets, Web pages, whatever: print to Journal, and then you can draw on top of the “printed” document. I use this as a presenter: I print my Powerpoint slides to Journal, and then present from those. As I present, I can hand-write notes in answer to audience questions. This is the &lt;em&gt;only&lt;/em&gt; way to present, in my opinion. (Actually, not &lt;em&gt;quite&lt;/em&gt; the only way; but that’s an announcement I’m saving until I finish some code…)&lt;/li&gt;
    &lt;li&gt;You can do a text search of your hand-written notes. So not only can you write on your document, you can search for what you wrote. Again, this is great power for a presenter. (But again, look for an announcement soon…)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So I do love Journal. I call it the Killer Tablet PC App Microsoft Doesn’t Know They Have. Journal by itself is reason enough to have a Tablet PC, but Microsoft seldom seems to mention it. (&lt;a target="_blank" href="http://search.microsoft.com/Results.aspx?qsc0=0&amp;amp;q=%22Windows+Journal%22&amp;amp;mkt=en-US&amp;amp;FORM=QBME1&amp;amp;l=1"&gt;A search for “Windows Journal” on Microsoft’s own site&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt; finds more hits for the Journal Viewer than for Journal itself; and Journal seems to have no specific page there, just a couple of “how to” articles.)&lt;/p&gt;
&lt;p&gt;And I can’t draw the Lounge without Journal. Every episode, every panel, it’s all done in Journal.&lt;/p&gt;
&lt;p&gt;And therein lies the problem: in Windows 7 beta, Journal is broken. When I open old episodes, &lt;em&gt;some&lt;/em&gt; of the contents are drawn in the wrong place. Even worse, &lt;strong&gt;some aren’t&lt;/strong&gt;. That means pieces of the episodes actually move around.&lt;/p&gt;
&lt;p&gt;As an example, here’s Episode 32 as I drew it in Journal for Windows XP, then pasted into Paint Shop Pro for cropping and converting (click pictures for larger images):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/IblameMicrosoft_330A/Episode%2032_2.jpg"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="Episode 32" border="0" alt="Episode 32" width="644" height="415" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/IblameMicrosoft_330A/Episode%2032_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Now it’s not high art, but it all looks like I intended it to look.&lt;/p&gt;
&lt;p&gt;And here is how that page looks under Windows 7 beta Journal:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/IblameMicrosoft_330A/Win7JournalBug1_2.jpg"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="Win7JournalBug1" border="0" alt="Win7JournalBug1" width="644" height="484" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/IblameMicrosoft_330A/Win7JournalBug1_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Notice the vertical stripe of missing Ink on the right. That’s bad. But it gets worse. Without me touching the image at all – all I did was switch to Paint Shop Pro to save the screen shot, switch to Live Writer to edit this post, and switch back – I get this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/IblameMicrosoft_330A/Win7JournalBug2_2.jpg"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="Win7JournalBug2" border="0" alt="Win7JournalBug2" width="644" height="484" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/IblameMicrosoft_330A/Win7JournalBug2_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;I’m not sure I can describe all the things wrong with that image. Some parts of it have moved. Some parts haven’t: the panel borders are all drawn the same as the rest of the image, after all; and the nose of the Gremlin in panel 3 hasn’t moved at all. But the tail of the Gremlin &lt;em&gt;has&lt;/em&gt; moved into panel 4!&lt;/p&gt;
&lt;p&gt;Now a suggestion by &lt;a target="_blank" href="http://blogs.msdn.com/jennifer/default.aspx"&gt;Jennifer Marsman&lt;/a&gt; made me try an experiment; and her intuition is good: the Ink hasn’t actually &lt;em&gt;moved&lt;/em&gt;, it’s just &lt;em&gt;drawn in the wrong place!&lt;/em&gt; If I use the Journal selection tool and click in the image, I get this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/IblameMicrosoft_330A/Win7JournalBug3_2.jpg"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="Win7JournalBug3" border="0" alt="Win7JournalBug3" width="644" height="484" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/IblameMicrosoft_330A/Win7JournalBug3_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Notice how &lt;em&gt;part&lt;/em&gt; of the Gremlin and passengers in panel 2 are &lt;em&gt;really&lt;/em&gt; exactly where they belong; but they’re drawn to the right of where they belong. (Why only part? I can’t guess. I don’t know the internals of Journal. May be something to do with Grouping.)&lt;/p&gt;
&lt;p&gt;Now &lt;a target="_blank" href="http://twitter.com/svicknair"&gt;Stacy Vicknair&lt;/a&gt; has asked if this bug is so bad that it stops me from drawing the Lounge? My answer is a definite &lt;em&gt;maybe&lt;/em&gt;. See, I’m busy, and I’m &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Time_Enough_For_Love"&gt;lazy&lt;/a&gt;. If I draw something well enough once, I try to copy and paste it in other places where I need it. I’ve got 32 Episodes in, plus 3 Lounge-based conference talks and a Lounge book proposal. (Oops! Did I say that?) At this point, I probably draw less than half of each Episode. The rest is paste, resize, and edit. (I even wrote LoungeWorks, a set of Ink tools that give me power features not found in Journal: rotate, mirror, and scale.) But now, if I can’t reliably see where things are, it gets much harder to draw new Episodes. And with most of my time devoted to the job search, “harder” is &lt;em&gt;not&lt;/em&gt; a feature for me right now.&lt;/p&gt;
&lt;p&gt;I’m posting this in hopes of getting the attention of someone on the Journal team at Microsoft. I &lt;em&gt;really&lt;/em&gt; want to use Windows 7, but I &lt;strong&gt;must&lt;/strong&gt; have a working Journal for the Lounge. I’m not a fan of dual-booting, especially when my M200 has a rather small drive. I’ll dual boot if I have to; but I’d be happier to help Microsoft fix this. If anyone knows anyone on the Journal team, please pass the word: I’ll be happy to share the file that shows this bug, if that will help them to fix it.&lt;/p&gt;
&lt;p&gt;I’ll also be happy to share another Journal file with an even more painful bug. Actually, I have multiple files with the same problem. They’re Web pages that I printed to Journal (XP) for later markup. If I try to open any of these in Win7 Journal, Journal hangs, and then Win7 terminates it. Worse: the recovery code “helpfully” tries to reopen that file next time I start Journal, and crashes again. Repeat, repeat, repeat, until I move the file so Journal can’t find it.&lt;/p&gt;
&lt;p&gt;Journal team, I hope this helps! Contact me if you need more info. If you can’t figure out my email, you can always try &lt;a target="_blank" href="http://www.twitter.com/umlguy"&gt;@umlguy&lt;/a&gt; on Twitter.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=130652"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=130652" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/UlteriorMotiveLounge/aggbug/130652.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin L. Shoemaker</dc:creator>
            <guid>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/04/01/i-blame-microsoft.aspx</guid>
            <pubDate>Wed, 01 Apr 2009 22:22:49 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/UlteriorMotiveLounge/comments/130652.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/04/01/i-blame-microsoft.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/UlteriorMotiveLounge/comments/commentRss/130652.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Ulterior Motive Lounge Episode 32: Talking with Pilot</title>
            <link>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/03/04/ulterior-motive-lounge-episode-32-talking-with-pilot.aspx</link>
            <description>&lt;p&gt;Continuing &lt;a target="_blank" href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/01/31/ulterior-motive-lounge-episode-31-the-teams-split-up.aspx"&gt;The Project that Time Forgot&lt;/a&gt;, a UML case study. (Click images for larger versions.)&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode32Talkingwith_9D73/Episode%2032_2.jpg"&gt;&lt;img title="Episode 32" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="415" alt="Episode 32" width="644" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode32Talkingwith_9D73/Episode%2032_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;On the surface, this Episode may seem almost social. &lt;a target="_blank" href="http://www.imdb.com/title/tt0088847/"&gt;Demented and sad, but social.&lt;/a&gt; But if you could join Hacker Girl, reading Geek Girl’s Tablet PC over her shoulder, you might see a different picture:&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode32Talkingwith_9D73/Interview%20with%20Pilot_4.jpg"&gt;&lt;img title="Interview with Pilot" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="484" alt="Interview with Pilot" width="449" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode32Talkingwith_9D73/Interview%20with%20Pilot_thumb_1.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;And you would also see this diagram: &lt;/p&gt;
&lt;p&gt;&lt;img title="Driver Use Cases (2nd revision)" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="674" alt="Driver Use Cases (2nd revision)" width="682" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode32Talkingwith_9D73/Driver%20Use%20Cases%20(2nd%20revision)_3.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;You saw a conversation. Geek Girl hopes that Pilot saw a conversation. But &lt;em&gt;she&lt;/em&gt; saw an interview, and a chance to capture and model requirements. Let’s review the notation here and discuss the diagram contents.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;The ellipses are the use cases that a driver performs (indicated by the arrows from Driver to the use cases). &lt;/li&gt;
    &lt;li&gt;Dependencies (dashed arrows) with the &lt;strong&gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&lt;/strong&gt; stereotype indicate that one use case includes another within at least one of its scenarios. So in order to Get Destination, the system must Scan GPS IDs. &lt;/li&gt;
    &lt;li&gt;The triangle-headed arrows (generalizations) indicate that one use case is a special case of another use case. So Contact Ops via GPS, Get Time from CIS, and Get Weather from CIS each has a special case that uses Voice Command; and each of those special cases is defective. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You might ask: “Why is Maintain Car in this diagram? Aren’t they modeling what the computer systems will do? Does the computer have any role in car maintenance?” And that’s a legitimate question. If the team were modeling the entire business, Maintain Car would certainly be a use case in the model; but why did Geek Girl include it in the system requirements model?&lt;/p&gt;
&lt;p&gt;The answer is two-fold:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Pilot mentioned reflashing the engines, which is a computer-driven operation. As indicated in Geek Girl’s notes, it’s not clear at this time whether the Park’s computers are involved in reflashes or not. The reflashes may be done by dedicated tools that have no connection with Park systems; but it may be that the Park maintains records about the reflashes. Just in case, Geek Girl wanted to capture this. &lt;/li&gt;
    &lt;li&gt;And building on 1: it’s always best to capture whatever a user says, even if you’re not sure it’s relevant. You can always remove it later. The analyst’s first job is to listen and capture. Analysis and filtering comes later. &lt;strong&gt;Don’t filter while you’re listening, filter later!&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;But then you might ask: “Why did Geek Girl stop there? Why didn’t she include use cases like Fly Helicopter and Rebuild Diesel Ferry Engine?” The answer is that she ignored what I just said, and she filtered now. “Filter later” is a good guideline, but you do have to apply some measure of judgment. Certainly “Watch Your Language” doesn’t involve the computer system, so she knew she could ignore that. Fly Helicopter and Rebuild Diesel Ferry Engine are less clear; but there’s certainly a good reason for leaving them off &lt;em&gt;this&lt;/em&gt; diagram: it’s a diagram of &lt;em&gt;Driver&lt;/em&gt; use cases, and those aren’t Driver functions. Pilot does them, true; but when he does, he’s not acting in the Driver role. Because remember: actors are &lt;em&gt;roles&lt;/em&gt; people or things can play, not the people themselves; and one person or thing may play multiple roles.&lt;/p&gt;
&lt;p&gt;If you’re still uncomfortable with the distinction between Maintain Car and Rebuild Diesel Ferry Engine, good! Welcome to the world of requirements analysis! There are no hard and fast rules. There are no clear lines, only guidelines. You have to apply judgment; but as a general rule, err on the side of capturing more information, not less. Geek Girl captured a lot of notes on her Tablet PC, while converting the most clearly relevant ones into a diagram. After the interview, Geek Girl will find time to clean up and reorganize the diagrams, and perhaps rethink the contents.&lt;/p&gt;
&lt;p&gt;In &lt;a target="_blank" href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/09/ulterior-motive-lounge-episode-28-meet-danny-diplodocus.aspx"&gt;Episode 28&lt;/a&gt;, The UML Guy adopted a convention of indicating defects via notes on diagrams, as in this earlier diagram of Driver Use Cases:&lt;/p&gt;
&lt;p&gt;&lt;img title="Driver Use Cases Scene 7" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="474" alt="Driver Use Cases Scene 7" width="584" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode32Talkingwith_9D73/Driver%20Use%20Cases%20Scene%207_3.jpg" /&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://en.wikipedia.org/wiki/Harlan_Ellison"&gt;Harlan Ellison&lt;/a&gt; once observed that a lot of dumb behavior can be traced back to the phrase, “It seemed like a good idea at the time.” Well, Geek Girl has decided that The UML Guy’s good idea at the time is a bad idea going forward. Not that the notes are a &lt;em&gt;bad&lt;/em&gt; practice: they clearly indicate the defect, and diagram readers can easily see what the defect is. If your goal is printable diagrams which stand on their own, this might be a good practice.&lt;/p&gt;
&lt;p&gt;But it has some weaknesses:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;As we find a lot more defects, the diagrams will get cluttered, and it will get harder and harder to arrange the diagrams legibly. &lt;/li&gt;
    &lt;li&gt;We have to do extra work to show the defect on additional diagrams. &lt;/li&gt;
    &lt;li&gt;Printable diagrams aren’t your goal, or shouldn’t be, in my opinion. To quote &lt;a target="_blank" href="http://www.apress.com/book/view/1590590872"&gt;myself&lt;/a&gt;: &lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;h3&gt;&lt;a name="_Toc21817975"&gt;The Model Rule&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We saw &lt;strong&gt;The Model Rule&lt;/strong&gt; in chapter 1; but it bears repeating. To use UML effectively, you should never be simply drawing pretty pictures; you should always be editing an underlying model, using the pretty pictures as your user interface. Thus, the model should contain more information than is displayed in any one diagram; and information in one diagram should not explicitly contradict information in another diagram. Information that is found in one diagram but not in another should not be considered a contradiction. Rather, this simply indicates that the former diagram displays more detail than the latter. Details may be omitted from a given diagram to make it more comprehensible.&lt;/p&gt;
&lt;p&gt;But how do you keep these diagrams consistent with each other? How do you maintain the underlying model? This is where a good modeling tool proves its worth: a good modeling tool will maintain the model as you create and edit your diagrams. If you are not using some sort of modeling tool, this very mechanical burden will fall on you, rather than on the machine. That’s a poor division of labor: brains should do brain work and machines should do mechanical work. If you do the mechanical work, you will do it imprecisely and inefficiently, and you’ll have no time for brain work. I urge you to investigate and use one of the many UML tools available. A list of UML tools can be found in Appendix B.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
    &lt;li&gt;And building on &lt;strong&gt;The Model Rule&lt;/strong&gt;, defect notes on the diagram don’t let your model and your tool help you in managing the defects. As an example, &lt;a target="_blank" href="http://www.sparxsystems.com/"&gt;Enterprise Architect from Sparx Systems&lt;/a&gt; allows us to add detailed requirements information to each element of the model. Here’s a sample screen shot: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img title="Defect" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="505" alt="Defect" width="399" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode32Talkingwith_9D73/Defect_3.jpg" /&gt; &lt;/p&gt;
&lt;p&gt;And then you can create a requirements report that lists the defects, as in this snippet:&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0" border="3"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="500"&gt;
            &lt;h1&gt;Launch Car Information System&lt;/h1&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="144"&gt;
            &lt;p&gt;&lt;em&gt;Satus:&lt;/em&gt; Proposed&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" width="156"&gt;
            &lt;p&gt;&lt;em&gt;Priority:&lt;/em&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" width="186"&gt;
            &lt;p&gt;&lt;em&gt;Difficulty:&lt;/em&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="144"&gt;
            &lt;p&gt;&lt;em&gt;Phase: &lt;/em&gt;&lt;em&gt;1.0&lt;/em&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" width="156"&gt;
            &lt;p&gt;&lt;em&gt;Version: &lt;/em&gt;&lt;em&gt;1.0&lt;/em&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" width="186"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="478"&gt;
            &lt;p&gt;&lt;strong&gt;Defect #1:&lt;/strong&gt; Startup is delayed.&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;That’s a lot of power to give up just for the minor benefit of notes on the diagrams. (There’s a lot more power in Enterprise Architect reports than I’ve shown here; and if that’s not enough, EA is an &lt;em&gt;incredibly&lt;/em&gt; powerful automation environment. You can build add-ins for it, and also build automation clients that control your EA models. I have one in the works that lets you directly create EA models from Microsoft Word 2007 and Microsoft Office 2007. When I first started using EA, I said, “This is a &lt;strong&gt;great&lt;/strong&gt; UML tool for the price!” Today, I know better: Enterprise Architect is a great UML tool for &lt;strong&gt;any&lt;/strong&gt; price!)&lt;/p&gt;
&lt;p&gt;So in place of defect notes on the diagram, Geek Girl prefers to note the defects in the model, as above; and then use a stereotype to show that the use case has a defect. I think that’s a better practice, even if it’s a bit tool-specific. It makes it easier to add the additional use cases that Pilot described in this Episode (omitting the domain objects so we can focus on the use cases and defects). And for me, &lt;strong&gt;The Model Rule&lt;/strong&gt; is more important than printable diagrams, by a long shot.&lt;/p&gt;
&lt;p&gt;And as for the last item in Geek Girl’s notes: yes, why &lt;em&gt;is&lt;/em&gt; H.G. so hostile? That must wait for an upcoming Episode…&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129844"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129844" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/UlteriorMotiveLounge/aggbug/129844.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin L. Shoemaker</dc:creator>
            <guid>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/03/04/ulterior-motive-lounge-episode-32-talking-with-pilot.aspx</guid>
            <pubDate>Wed, 04 Mar 2009 22:06:48 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/UlteriorMotiveLounge/comments/129844.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/03/04/ulterior-motive-lounge-episode-32-talking-with-pilot.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/UlteriorMotiveLounge/comments/commentRss/129844.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Ulterior Motive Lounge Episode 31: The Teams Split Up</title>
            <link>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/01/31/ulterior-motive-lounge-episode-31-the-teams-split-up.aspx</link>
            <description>&lt;p&gt;Continuing &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/01/07/ulterior-motive-lounge-episode-30-touring-the-laboratories.aspx"&gt;The Project That Time Forgot&lt;/a&gt;, a UML case study in comic strip form... (Click pictures for larger images.)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Episode%2031.jpg"&gt;&lt;img title="Episode 31" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="389" alt="Episode 31" width="604" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode31TheTeamsSpl_EA80/Episode%2031_5.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;After a long hiatus due to weather, illness, work, conferences, and more stuff than I can explain, the Lounge is back.&lt;/p&gt;
&lt;p&gt;This Episode gets the ball rolling for Act II, so there’s not much new UML content here yet. But I can give you a few diagrams of the team’s review process. The process starts with some preliminaries, then splits into three threads of operations, each with a separate team:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Review%20Process.jpg"&gt;&lt;img title="Review Process" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="432" alt="Review Process" width="604" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode31TheTeamsSpl_EA80/Review%20Process_3.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Design Review.&lt;/strong&gt; This team, led by The UML Guy, will create a Design Assessment, summarizing the state of the design and any clear risks and concerns. The details of the Design Review look like this: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img title="Design Review" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="627" alt="Design Review" width="554" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode31TheTeamsSpl_EA80/Design%20Review_3.jpg" /&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;ul&gt;
        &lt;li&gt;Review the original design spec to determine the intent of the original team. &lt;/li&gt;
        &lt;li&gt;Review design documents and updates since the original spec. &lt;/li&gt;
        &lt;li&gt;Reverse engineer a design from the code. A good UML tool like &lt;a target="_blank" href="http://www.sparxsystems.com/"&gt;Enterprise Architect&lt;/a&gt; makes this a lot easier, but not easy. &lt;a target="_blank" href="http://www.theumlguy.com/Videos/RosarioReverseSequence.wmv"&gt;VSTS 2010 will make it even easier&lt;/a&gt;, but &lt;em&gt;still&lt;/em&gt; not easy. Incorporate this into a design summary. &lt;/li&gt;
        &lt;li&gt;Review the design with the dev team and revise until it’s ready for presentation. &lt;/li&gt;
        &lt;li&gt;Review the design with the full review team and revise until it’s ready for assessment. &lt;/li&gt;
        &lt;li&gt;Create the design assessment. &lt;/li&gt;
    &lt;/ul&gt;
    &lt;li&gt;&lt;strong&gt;Functional Review.&lt;/strong&gt; This team, led by Geek Girl, will create a Functional Assessment: a description of how well the system performs existing functions, with emphasis on usability and correctness. The details of the Functional Review process look like this: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img title="Functional Review" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="484" alt="Functional Review" width="503" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode31TheTeamsSpl_EA80/Functional%20Review_3.jpg" /&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;ul&gt;
        &lt;li&gt;Review the existing requirements docs. &lt;/li&gt;
        &lt;li&gt;Review outstanding defect reports, and make those the beginning of a functional assessment. &lt;/li&gt;
        &lt;li&gt;For each function identified in the requirements, identify actors and user who represent those actors. Interview those users to determine how well the system &lt;em&gt;really&lt;/em&gt; works, and update the functional assessment. &lt;/li&gt;
    &lt;/ul&gt;
    &lt;li&gt;&lt;strong&gt;Requirements Review.&lt;/strong&gt; This team, led by The Reader, will create a Requirements Assessment: a description of what requirements the system covers; and more important, what it &lt;em&gt;doesn’t&lt;/em&gt; cover. The details of the Requirements Review process look like this: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img title="Requirements Review" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="526" alt="Requirements Review" width="509" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode31TheTeamsSpl_EA80/Requirements%20Review_3.jpg" /&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;ul&gt;
        &lt;li&gt;Review the existing requirements docs. &lt;/li&gt;
        &lt;li&gt;Assess the quality of the existing requirements. Are they quantified? Are they testable? Are they unambiguously stated in words, diagrams, and tests? Are they assigned business values and priorities? Do they have clearly identified actors and use cases and scenarios and goals for each feature? These and many more questions will help to create the requirements assessment. &lt;/li&gt;
        &lt;li&gt;For each actor represented in the requirements &lt;em&gt;or&lt;/em&gt; discovered during interviews, identify and interview representative users. Determine whether they have missing requirements, as well as whether they know of or require previously unidentified actors. &lt;/li&gt;
    &lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;For a really thorough review, you probably need at least three more threads of activity:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Code Review to inspect the code, either completely or through sampling, to identify how well it’s constructed and maintained. &lt;/li&gt;
    &lt;li&gt;Quality Review to identify Quality Assurance measures, Testing measures, and the status of each. &lt;/li&gt;
    &lt;li&gt;Process Review to analyze the processes followed by the dev team and related teams. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But for simplicity (and to keep most of my focus on &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/11/17/requirements-night-at-ulterior-motive-lounge.aspx"&gt;my primary message&lt;/a&gt;), I’m going to restrict this case study to Design, Functionality, and Requirements. Code will be reviewed under Design, and Quality will be reviewed under Functionality. Process will be reviewed everywhere.&lt;/p&gt;
&lt;p&gt;Is this a lot of work? Yep. But it’s a minimal necessary set of activities to review a project for status and risks after you’ve ignored them for a long time. It would be &lt;strong&gt;so&lt;/strong&gt; much easier if you could do these sorts of assessments in real time right from the start as the project proceeds. It would be &lt;strong&gt;so&lt;/strong&gt; much easier if you could report the status and health of the project at the push of a button, based upon the actual work the team does &lt;strong&gt;as they do it.&lt;/strong&gt; Gee, wouldn’t Owner’s life be a lot easier if there were tools to do all that?&lt;/p&gt;
&lt;p&gt;Oh, wait a minute… There &lt;em&gt;are&lt;/em&gt; tools like that! In fact, there’s a whole category of such tools: &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Application_Lifecycle_Management"&gt;Application Lifecycle Management (ALM)&lt;/a&gt;. And my current favorite is the aforementioned &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/vsts2008/products/default.aspx"&gt;Visual Studio Team System&lt;/a&gt;, perhaps the most poorly named product Microsoft produces today. Why poorly named? Because &lt;a target="_blank" href="http://msdn.microsoft.com/vstudio/products/"&gt;Visual Studio&lt;/a&gt; is a developer tool set, particularly a tool set for .NET developers; so when people hear a name like “Visual Studio Team System”, they assume it’s a developer tool set, only bigger and better. They assume it’s about .NET development.&lt;/p&gt;
&lt;p&gt;VSTS is &lt;strong&gt;not&lt;/strong&gt; about .NET development. Oh, VSTS includes Visual Studio, and then adds some powerful developer and architect and DBA and tester features; but those features, as powerful as they are, are just the icing on the cake.&lt;/p&gt;
&lt;p&gt;The cake is ALM. VSTS is about your process and how you can define it and design it and manage it and track it, all through tools your team – your &lt;strong&gt;whole&lt;/strong&gt; team, not just .NET developers – are already using. Your Project Managers can create task lists and project plans in Excel or Project. Your developers can work on those plans in Visual Studio – or not! If they’re working with Eclipse or other non-.NET tools, developers can use &lt;a target="_blank" href="http://www.devbiz.com/teamplain/webaccess/default.aspx"&gt;TeamPlain&lt;/a&gt; to access their work items. Testers can create and apply test plans. Executives can view summaries and reports and Key Productivity Indicators (KPIs) through a project Web portal.&lt;/p&gt;
&lt;p&gt;And all of these tools are updated automatically as the team works, in real time, through the Team Foundation Server: a powerful set of databases, reports, services, and tools that integrate with Excel and Project and Visual Studio and Sharepoint and other tools to provide a seamless process involving all participants.&lt;/p&gt;
&lt;p&gt;I didn’t intend this post to turn into an ad for VSTS, so I’ll leave you to explore further if you like. But I can tell you this: even if Owner had known about VSTS, even if he could’ve convinced Cowboy Consultant to look at it, they would’ve turned it down. Owner already balked at spending proper time and money on requirements and design. Cowboy Consultant already demonstrated that he has no patience for anything beyond the code itself. Well, as powerful as VSTS is, it’s not cheap (though I think it’s well cost justified), and it takes time and effort and training to use it properly. They both would’ve written it off as needless overhead, judging by the attitudes we’ve seen so far.&lt;/p&gt;
&lt;p&gt;And those attitudes are going to lead to some mighty big problems pretty soon. Dinosaur sized, even.&lt;/p&gt;
&lt;p&gt;One final note on today’s Episode. You may wonder why Dog is going out into the Park with The Reader and Stick Boy. Well, she’s a dog. She smells things, really interesting things. She wants to investigate, not hang around in some sterile, air conditioned computing center. Dogs gotta be walked, ya know?&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129103"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129103" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/UlteriorMotiveLounge/aggbug/129103.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin L. Shoemaker</dc:creator>
            <guid>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/01/31/ulterior-motive-lounge-episode-31-the-teams-split-up.aspx</guid>
            <pubDate>Sat, 31 Jan 2009 06:59:22 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/UlteriorMotiveLounge/comments/129103.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/01/31/ulterior-motive-lounge-episode-31-the-teams-split-up.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/UlteriorMotiveLounge/comments/commentRss/129103.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Ulterior Motive Lounge: A Map of Carnivore Park</title>
            <link>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/01/10/ulterior-motive-lounge-a-map-of-carnivore-park.aspx</link>
            <description>&lt;p&gt;&lt;a target="_blank" href="http://www.ulteriormotivelounge.com/ulteriormotivelounge/Map.aspx"&gt;As I’ve written elsewhere&lt;/a&gt;, I love maps. And I love a story that includes maps. Maps help me to see where the action takes place; and they give me tantalizing clues to action yet ahead. When I first opened a hardcover of &lt;a target="_blank" href="http://www.amazon.com/Hobbit-There-Back-Again-Collectors/dp/0395177111"&gt;The Hobbit&lt;/a&gt; and unfolded the big map of Wilderland, I was hooked.&lt;/p&gt;
&lt;p&gt;So for those who love maps like I do, here’s a map of Carnivore Park. (Click picture for a larger image.) This is where the rest of the story takes place; and following it is a map guide that &lt;em&gt;may&lt;/em&gt; contain clues to what lies ahead.&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Carnivore%20Park.jpg"&gt;&lt;img title="Carnivore Park" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="415" alt="Carnivore Park" width="644" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeAMapofCarnivorePark_15FC/Carnivore%20Park_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Carnivore Park lies within a dormant volcanic island, bought and run by Owner. The volcano cone makes a natural barrier to dinosaurs – and to prying eyes, of course. The west end faces open ocean. The east end faces Central America, though a long way away. The east end beach has been artificially built up, along with two breakwaters. A concrete apron allows cargo and passengers to disembark and take the switchback up the slope to the entrance to The Park.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The interior of The Island may &lt;em&gt;seem&lt;/em&gt; natural, but it’s actually nearly 100% sculpted or planted. The topsoil has been imported from rich fertile swamps on the mainland. The river has some contribution from springs and runoff, but is heavily fed by a hidden desalination plant. The ridge through the Park is actually a concrete wall, with interior chambers and bolt holes. The plateaus of the visitor center are partly natural, but largely shaped concrete. Roads run along the ridges, sometimes fenced from the dinosaurs, sometimes separated by “natural” barriers, and sometimes exposed.&lt;/p&gt;
&lt;h2&gt;The Visitor Port&lt;/h2&gt;
&lt;p&gt;Ship and helicopter landings.&lt;/p&gt;
&lt;h2&gt;Carnivore Park&lt;/h2&gt;
&lt;p&gt;The main park buildings reside on a set of artificially enhanced plateaus. Trees and other obstacles are carefully arranged to block any view of dinosaurs from the Pavilion or the rest of the control area; but the Lodge is elevated so that the higher (and more expensive) storeys have a view into the main Park.&lt;/p&gt;
&lt;h2&gt;The Pavilion&lt;/h2&gt;
&lt;p&gt;This is the entry to the Park. It includes the Operations Center, the Gift Shop, the Quick Bite Café, the Boring Exposition, and the Laboratories.&lt;/p&gt;
&lt;h3&gt;Gift Shop&lt;/h3&gt;
&lt;p&gt;Souvenir shop. Sells Park merchandise. Also sells &lt;a target="_blank" href="http://www.cafepress.com/UMLounge"&gt;LoungeWare&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Quick Bite Café&lt;/h3&gt;
&lt;p&gt;A cafeteria.Specializes in curried “dinosaur” dishes (actually chicken).&lt;/p&gt;
&lt;h3&gt;The Boring Exposition&lt;/h3&gt;
&lt;p&gt;Auditorium named for Wayne H. Boring. Used for reviews and presentations.&lt;/p&gt;
&lt;h3&gt;Operations Center&lt;/h3&gt;
&lt;p&gt;The nerve center for the Park.&lt;/p&gt;
&lt;h3&gt;The Laboratories&lt;/h3&gt;
&lt;p&gt;A sign on the door reads “Here there be dragons!”&lt;/p&gt;
&lt;h2&gt;The Lodge&lt;/h2&gt;
&lt;p&gt;Guest lodging at the Park. Across from The Pavilion.&lt;/p&gt;
&lt;h3&gt;Drumbeats&lt;/h3&gt;
&lt;p&gt;Nightclub at the top of The Lodge.&lt;/p&gt;
&lt;h3&gt;The Food Chain&lt;/h3&gt;
&lt;p&gt;Restaurant in The Lodge.&lt;/p&gt;
&lt;h3&gt;The Pool&lt;/h3&gt;
&lt;p&gt;A place to unwind when not out seeing the dinosaurs.&lt;/p&gt;
&lt;h3&gt;On The Rocks&lt;/h3&gt;
&lt;p&gt;Bar near The Pool.&lt;/p&gt;
&lt;h3&gt;The Petting Zoo&lt;/h3&gt;
&lt;p&gt;An area near the Pool where small, cute dinosaurs are available for petting and feeding. &lt;/p&gt;
&lt;h2&gt;The Park&lt;/h2&gt;
&lt;p&gt;A giant, dormant volcano cone, perfect for confining dinosaurs.&lt;/p&gt;
&lt;h3&gt;The Garden&lt;/h3&gt;
&lt;p&gt;Where the herbivores run “free”. Visitors can approach by ascending walking trails.&lt;/p&gt;
&lt;h3&gt;Carnivore Country&lt;/h3&gt;
&lt;p&gt;An area where various smaller carnivores roam.&lt;/p&gt;
&lt;h3&gt;Rex’s Crib&lt;/h3&gt;
&lt;p&gt;An area set aside for Tyrannosaurs Rex specimens, including extra reinforced fencing and other safeguards.&lt;/p&gt;
&lt;h3&gt;Raptor Country&lt;/h3&gt;
&lt;p&gt;An area dedicated to Velociraptors and their prey.&lt;/p&gt;
&lt;h3&gt;The Backlots&lt;/h3&gt;
&lt;p&gt;Fenced areas deep within the public viewing areas, well-screened by trees. These are areas where workers prepare and care for dinosaurs (and dinosaur meals) before release into the viewing areas. Each has a number of isolation pens, carefully screened by trees from other pens.&lt;/p&gt;
&lt;h3&gt;River Country&lt;/h3&gt;
&lt;p&gt;A boat tour (not yet approved by Money Man) through swamp and river dinosaur habitats. Also passes through The Glasshouse.&lt;/p&gt;
&lt;h3&gt;The Glasshouse&lt;/h3&gt;
&lt;p&gt;A large glass enclosure for flying dinos.&lt;/p&gt;
&lt;h3&gt;The Power Center&lt;/h3&gt;
&lt;p&gt;Includes a geothermal power station, water pumps, and fence control.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128539"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128539" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/UlteriorMotiveLounge/aggbug/128539.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin L. Shoemaker</dc:creator>
            <guid>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/01/10/ulterior-motive-lounge-a-map-of-carnivore-park.aspx</guid>
            <pubDate>Sat, 10 Jan 2009 07:35:07 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/UlteriorMotiveLounge/comments/128539.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/01/10/ulterior-motive-lounge-a-map-of-carnivore-park.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/UlteriorMotiveLounge/comments/commentRss/128539.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Ulterior Motive Lounge Episode 30: Touring the Laboratories</title>
            <link>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/01/07/ulterior-motive-lounge-episode-30-touring-the-laboratories.aspx</link>
            <description>&lt;p&gt;Continuing &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/15/ulterior-motive-lounge-episode-29-touring-the-pavilion.aspx"&gt;The Project That Time Forgot&lt;/a&gt;, a UML case study in comic strip form... (Click pictures for larger images.)&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Episode%2030.jpg"&gt;&lt;img title="Ulterio Motive Lounge Episode 30" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="386" alt="Ulterio Motive Lounge Episode 30" width="600" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode30TouringtheL_890/Episode%2030_thumb_1.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Episode%2030A.jpg"&gt;&lt;img title="Ulterior Motive Lounge Episode 30A" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="383" alt="Ulterior Motive Lounge Episode 30A" width="600" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode30TouringtheL_890/Episode%2030A_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Here, for your convenience, is a larger version of the activity diagram from panel 2:&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode30TouringtheL_890/Dinosaur%20Growth_2.jpg"&gt;&lt;img title="Dinosaur Growth Recipe" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="358" alt="Dinosaur Growth Recipe" width="476" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode30TouringtheL_890/Dinosaur%20Growth_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 1: The Recipe for Growing a Dinosaur&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;And here is Editor Bill's comment on that diagram: "I hope in the commentary you plan to explain that this activity diagram tells the story of the rest of the Episode." Well, no, Editor Bill. I hoped that by now my readers were UML-savvy enough to figure that out on their own. You're not the &lt;em&gt;only&lt;/em&gt; smart reader I have, you know? (Bloody Editor Bill's &lt;strong&gt;too&lt;/strong&gt; smart, keeps figuring out my strategies before I can reveal them. Next thing you know, he's gonna grab my drawing pen. Uh-uh, no way, Editor Bill! This pen &lt;em&gt;is&lt;/em&gt; mightier than the sword!)&lt;/p&gt;
&lt;p&gt;That diagram is also &lt;em&gt;almost&lt;/em&gt; a logical sequencing of the use cases from this diagram from the previous Episode:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Geneticist%20and%20Embryologist%20Use%20Cases.jpg"&gt;&lt;img alt="Geneticist and Embryologist Use Cases" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Geneticist%20and%20Embryologist%20Use%20Cases.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 2: Geneticist and Embryologist Use Cases&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;But that's a use case diagram, and the new diagram is an activity diagram. Which is the right way to show this information? Should we draw use cases, or should we draw activities?&lt;/p&gt;
&lt;p&gt;Those who know me might guess that my answer is: &lt;em&gt;Yes&lt;/em&gt;. (They've heard it too many times: "Whenever you ask me 'A' or 'B', I'll always answer 'Yes' or 'C'.") But in this case, my answer is more nuanced: "Whichever one communicates better; and that may mean drawing both of them." Which of course is a longer way of saying "Yes."&lt;/p&gt;
&lt;p&gt;As I mentioned in &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/11/15/ulterior-motive-lounge-qa-2-battle-of-the-twitter-guest.aspx"&gt;Q&amp;amp;A #2: Battle of the Twitter Guest Stars!&lt;/a&gt;, one purpose for an activity diagram is to show what happens "inside" a use case. So the Figure 1 &lt;em&gt;could&lt;/em&gt; be a diagram of what happens within this hypothetical use case:&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode30TouringtheL_890/Grow%20Dinosaur%20Use%20Case_2.jpg"&gt;&lt;img title="Grow Dinosaur Use Case" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="132" alt="Grow Dinosaur Use Case" width="570" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode30TouringtheL_890/Grow%20Dinosaur%20Use%20Case_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 3: The Grow Dinosaur Use Case&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Why do I call this a &lt;em&gt;hypothetical&lt;/em&gt; use case? Well, to my way of thinking, it's rather large. Based on what The UML Guy has learned about the laboratories, the process from DNA extraction to a dinosaur ready for release into the Park consists of multiple complex operations, possibly iterations of operations, over weeks to months. I like my use cases to be a lot smaller and more atomic than that. The use cases Isolate Sequence, Replicate Sequence, etc., look a lot more like use cases to me. Grow Dinosaur looks a lot bigger, like some large scale business process.&lt;/p&gt;
&lt;p&gt;But here's where it gets a lot more complicated, and where I have to stop giving you easy answers. More important, I have to stop giving you just &lt;em&gt;my &lt;/em&gt;answers, because I don't want you to be limited by my biases. I want to suggest other ways of looking at use cases. In fact, I'm &lt;strong&gt;seriously&lt;/strong&gt; hoping that some of the Business Analysts in my audience will add comments and start a discussion, so that the rest of you can see the gamut of approaches to use case modeling.&lt;/p&gt;
&lt;p&gt;Because here's the thing: many Business Analysts, including many I respect a lot, would say that Grow Dinosaur is about the right size for a use case. In fact, some might even claim that it's &lt;em&gt;too small&lt;/em&gt;, and would prefer a more generalized use case like Care for Dinosaurs.&lt;/p&gt;
&lt;p&gt;I once heard an experienced analyst say confidently he had worked on a &lt;em&gt;very&lt;/em&gt; large system for a client, the largest system he had ever worked on. In fact, it was so large, it had &lt;em&gt;fifteen use cases!&lt;/em&gt; Oh, that was for the &lt;em&gt;entire&lt;/em&gt; business operations of a multinational corporation, so it had to be big. But just imagine, he said, &lt;em&gt;fifteen use cases!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;And I once heard another experienced analyst say just as confidently that the user interface he was modeling wasn't very complex. After all, it wasn't much more than a dozen or two use cases. That's tiny, right? He was used to working with 80 use cases in a system.&lt;/p&gt;
&lt;p&gt;And here's the kicker: those two analysts, one who saw 15 as unimaginably huge and one who saw 24 as kind of small, &lt;em&gt;worked for the same very respected consulting company&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;In other words, there’s a lot of disagreement in the analyst community over the right level of granularity for use cases. Some see use cases like Shipping and Manage Personnel and Manage Facilities, while others see use cases like Order Supplies and Schedule Repairs. Some see use cases in individual button pushes. Who’s right? I dunno. I gave up trying to answer that question a long time ago. I listen to one point of view, and I say, “Hey, those arguments make a lot of sense!” Then I listen to another point of view, and I say, “Hey, &lt;em&gt;those&lt;/em&gt; arguments make a lot of sense!” And then I put them together, and I say, “Hey, this doesn’t make any sense…”&lt;/p&gt;
&lt;p&gt;I’ve decided that the difference isn’t in right or wrong, it’s in what level the analyst thinks at and is comfortable thinking at. Those who think at the enterprise level see enterprise use cases like Shipping and Manage Personnel and Manage Facilities. Those who think at the project level see project use cases like Order Supplies and Schedule Repair. Those who think at the UI level see use cases in individual button pushes. And all of those levels are valuable, and none is “right” or “wrong”.&lt;/p&gt;
&lt;p&gt;But there’s probably a big difference in the level of documentation for different levels of use cases. The exhaustive level of detail prescribed by, say, Cockburn’s &lt;a target="_blank" href="http://www.amazon.com/Writing-Effective-Cases-Software-Development/dp/0201702258"&gt;Writing Effective Use Cases&lt;/a&gt; may be appropriate for a use case like Manage Facilities; but it’s massive overkill for a use case like Log In. Business analysts have told me horror stories of 15-pages of documentation for Log In; and I’m fairly sure it’s because they were applying enterprise-level documentation practices to application-level use cases.&lt;/p&gt;
&lt;p&gt;So in sum, I find the argument over the “proper” granularity of use cases to be pointless. Oh, for a given analysis project, that argument matters: an enterprise analysis effort can’t afford to get bogged down in use cases like Log In and Change Password, or they’ll have thousands of use cases; but an application analysis effort needs more detail than Manage Facilities (and &lt;em&gt;less&lt;/em&gt; detail than 15 pages on Log In). But when I see arguments over the “proper” granularity, I can usually resolve them by discovering that the parties arguing are working at different levels.&lt;/p&gt;
&lt;p&gt;And far more useful to me is this simple fact: the use case strategy, the use case way of thinking about requirements and solutions, is powerful at &lt;em&gt;all&lt;/em&gt; levels of analysis. I’ve used this strategy from way out at the enterprise level all the way down to the level of individual classes. This strategy of saying “Who needs some work done? What’s the work? Who else participates? What information or objects are involved and affected?” has great probative power. If you want to say that Order Supplies isn’t a use case, fine. Call it a feature. Call it a function. Call it a benefit, an operation, a a method. Call it an Apatosaurus for all I care. I don’t &lt;em&gt;care&lt;/em&gt; what you call it; I care how I &lt;em&gt;think&lt;/em&gt; about it and describe it and figure out how to resolve it. And how I do that is the use case strategy. &lt;em&gt;I’ll&lt;/em&gt; call it a use case, and you can laugh at me if you like.&lt;/p&gt;
&lt;p&gt;But those who adamantly insist on a “proper” granularity will often also insist on a rule: “Thou shalt not decompose use cases.” And I’m going to &lt;em&gt;completely&lt;/em&gt; ignore them when they say that, because to me it means, “Thou shalt not examine use cases at one level and think how they may be realized via use cases at a deeper level.” And as much as I’m loath to use such a black-and-white word as “wrong”, that’s just wrong. When I start to think about the problem at a deeper level, I &lt;em&gt;will&lt;/em&gt; think about finer-granularity use cases that make up the use cases from the upper level. For example:&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Grow%20Dinosaur%20Use%20Case%20and%20Details.jpg"&gt;&lt;img title="Grow Dinosaur Use Case and Details" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="284" alt="Grow Dinosaur Use Case and Details" width="600" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/WindowsLiveWriter/UlteriorMotiveLoungeEpisode30TouringtheL_890/Grow%20Dinosaur%20Use%20Case%20and%20Details_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 4: The Grow Dinosaur use case, plus detail use cases&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In this use case diagram, I introduced some new UML notation: I added two &lt;strong&gt;boundaries&lt;/strong&gt;. A UML boundary is just a box that groups related diagram elements. In this example, the boundaries represent two different perspectives on the system. Operations needs a strategic view. To them, growing a dinosaur is one task they want carried out: “Yeah, this is Ops Chief. We’re ready to start planning the Back Lot now. Could you start growing us some Velociraptors? Thanks!” From that strategic view, Grow Dinosaur is one use case. Meanwhile, the Laboratory sees a number of complex operations that they carry out on different samples and eggs and newborn dinosaurs. From their more tactical perspective, there are many dinosaur-related use cases. So I used the boundaries to help separate these perspectives while still showing them on a single diagram. To me, there’s great value in thinking at the strategic level and then moving to the tactical level, and even deeper. That means there’s great value in decomposing use cases. Others are free to disagree, but I’m going to keep doing it.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Other comments on today’s Episode…&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Why does Dr. Gene carry around a giant DNA strand? Because I like it! It started life as the spiral staircase from &lt;a target="_blank" href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/11/26/ulterior-motive-lounge-episode-25-the-uml-guys-terms.aspx"&gt;Episode 25&lt;/a&gt;; and from there, it kind of grew unexpectedly. Sometimes things grow beyond our plans, and the unexpected happens. The same thing has been known to happen with dinosaur parks. And with comic strips… &lt;/li&gt;
    &lt;li&gt;Yes, I &lt;em&gt;have&lt;/em&gt; seen UML diagrams adapted into marketing materials. After all, if a diagram communicates, it may communicate to the audience as well. Of course, most UML tools produce kind of bland diagrams, so the art department usually jazzes them up to the point where the modelers may no longer recognize them. &lt;/li&gt;
    &lt;li&gt;Editor Bill immediately saw the bad joke in panel 5; and he liked it, so I kept it. You can blame him. (But he wouldn’t let the crocodile say, “Ow!”) &lt;/li&gt;
    &lt;li&gt;&lt;a target="_blank" href="http://en.wikipedia.org/wiki/Cladistics"&gt;Cladistics&lt;/a&gt; is the hierarchical classification of species based on evolutionary ancestry. You examine the DNA of different species and determine how closely related they are and when they diverged evolutionarily by how closely their DNA matches. It’s also the subject of &lt;a target="_blank" href="http://www.indiana.edu/~ensiweb/lessons/zebra.html"&gt;a fascinating essay by Stephen Jay Gould&lt;/a&gt;. (“A fascinating essay by &lt;a target="_blank" href="http://www.amazon.com/exec/obidos/search-handle-url/ref=ntt_athr_dp_sr_1?%5Fencoding=UTF8&amp;amp;search-type=ss&amp;amp;index=books&amp;amp;field-author=Stephen%20Jay%20Gould"&gt;Stephen Jay Gould&lt;/a&gt;” may be one of the greatest redundancies I’ve ever written.) To my knowledge, there’s no such thing as cladistic reversal, but it seems like a really clever idea for recreating ancestral DNA by isolating it from descendant species. Hey, you have a better idea for growing dinosaurs, fine, you can open your own park. In &lt;em&gt;my&lt;/em&gt; Park, they use cladistic reversal! &lt;/li&gt;
    &lt;li&gt;While cladistic reversal is fictitious, the lab equipment in panel 6 is certainly of &lt;a target="_blank" href="http://www.amazon.com/Hamilton-Beach-Kitchen-Housewares/b/qid=1231311900/ref=sr_tc_img_2_0?ie=UTF8&amp;amp;node=568978"&gt;the highest quality&lt;/a&gt;. &lt;/li&gt;
    &lt;li&gt;In the second page, notice that many of the dinosaurs have the &lt;strong&gt;Name : Class&lt;/strong&gt; format for their labels, such as we first saw in &lt;a target="_blank" href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/11/15/ulterior-motive-lounge-episode-15-back.-to-the-80s-part.aspx"&gt;Episode 15&lt;/a&gt;. Remember that we typically omit the name if there’s only one instance of a class in a diagram, particularly if the diagram shows what is true for &lt;em&gt;all&lt;/em&gt; instances of the class. But when we want to examine different instances – in this case, different dinosaurs – and tell them apart, then we add names. &lt;/li&gt;
    &lt;li&gt;Despite the name (Carnivore Park), all of the dinosaurs in that last scene are herbivores. This is the safe, open section of the Park. Trust me, the carnivores are coming in Act II! &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128440"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128440" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/UlteriorMotiveLounge/aggbug/128440.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin L. Shoemaker</dc:creator>
            <guid>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/01/07/ulterior-motive-lounge-episode-30-touring-the-laboratories.aspx</guid>
            <pubDate>Wed, 07 Jan 2009 08:22:19 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/UlteriorMotiveLounge/comments/128440.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2009/01/07/ulterior-motive-lounge-episode-30-touring-the-laboratories.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/UlteriorMotiveLounge/comments/commentRss/128440.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Ulterior Motive Lounge Episode 29: Touring the Pavilion</title>
            <link>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/15/ulterior-motive-lounge-episode-29-touring-the-pavilion.aspx</link>
            <description>&lt;p&gt;Continuing &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/09/ulterior-motive-lounge-episode-28-meet-danny-diplodocus.aspx"&gt;The Project That Time Forgot&lt;/a&gt;, a UML case study in comic strip form... (Click pictures for larger images.)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Episode%2029.jpg"&gt;&lt;img alt="Ulterior Motive Lounge Episode 29" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Episode%2029.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“We grow dinosaurs!” Big whoop, huh? Like &lt;em&gt;anyone&lt;/em&gt; reading the strip hadn’t figured that out before I started Scene 1… It’s hard to surprise the characters in a story when the audience can tell from the promos what the surprise is.&lt;/p&gt;
&lt;p&gt;But since The UML Guy has been part of the project before, none of this was a surprise to him. So while the others were taking in the new sights, he was drawing more UML diagrams. His results follow.&lt;/p&gt;
&lt;p&gt;We learned a few more specific kinds of scientists on the project:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Laboratory Staff Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Laboratory%20Staff%20Scene%207.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;We added one more category of Employee Actors, Information Staff:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Employee%20Actors%20Scene%207.jpg"&gt;&lt;img alt="Employee Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Employee%20Actors%20Scene%207.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you’ve ever eaten at a restaurant – certainly if you’ve ever worked at one – you’ll realize we need more detail in our set of Concession Actors, starting with a Restaurant Manager:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Supervisor%20Actors%20Scene%207.jpg"&gt;&lt;img alt="Supervisor Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Supervisor%20Actors%20Scene%207.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And then more specific Restaurant Staff:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Concession Staff Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Concession%20Staff%20Actors%20Scene%207.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;We also learned of more systems we’ll need to support the functions described in the Episode:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Deployment%20with%20Icons%20Scene%207.jpg"&gt;&lt;img alt="Logical Deployment Diagram" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Deployment%20with%20Icons%20Scene%207.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We added an Information Console, a Laboratory Server, Laboratory Computers, Laboratory Devices, a Commerce Server, and Cash Registers. Note that the Commerce Server has to communicate with the Warehouse Server to schedule deliveries to the rooms and to the mainland.&lt;/p&gt;
&lt;p&gt;These new systems complicated the physical Deployment Diagram almost to the breaking point. It’s complex enough that The UML Guy plans to group it, simplify it, and turn it into multiple diagrams when he gets time. But for now, here’s one more look at the single diagram:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Physical%20Deployment%20Scene%207.jpg"&gt;&lt;img alt="Physical Deployment Diagram" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Physical%20Deployment%20Scene%207.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We added some new Use Cases for Driver:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Driver%20Use%20Cases%20Scene%207.jpg"&gt;&lt;img alt="Driver Use Cases" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Driver%20Use%20Cases%20Scene%207.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;And for Guest:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Guest%20Use%20Cases%20Scene%207.jpg"&gt;&lt;img alt="Guest Use Cases" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Guest%20Use%20Cases%20Scene%207.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One of those Use Cases, Make Purchase, is complex enough to deserve a dedicated diagram:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Make%20Purchase.jpg"&gt;&lt;img alt="Make Purchase Use Cases" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Make%20Purchase.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We can see from the Episode that there are multiple Classes of souvenirs:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Souvenir Classes" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Merchandise.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;And finally, we have new Use Cases for the Geneticist and the Embryologist. Normally, The UML Guy prefers a single diagram per Actor, focused on the Use Cases for that Actor; but in this case, the Use Cases are closely related and work with related Domain Objects. So he combined the diagrams for now, but may split them later:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Geneticist%20and%20Embryologist%20Use%20Cases.jpg"&gt;&lt;img alt="Geneticist and Embryologist Use Cases" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Geneticist%20and%20Embryologist%20Use%20Cases.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That’s it for new UML content for this Episode. Oh, The UML Guy could &lt;em&gt;imagine&lt;/em&gt; more, such as Use Cases for the Restaurant Staff and the Souvenir Staff; but Owner just didn’t give enough detail to work with. Those will come out over time.&lt;/p&gt;
&lt;p&gt;Other comments on this Episode:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;The sign post in panel 2 probably ought to include &lt;a href="http://en.wikipedia.org/wiki/Seoul"&gt;Seoul&lt;/a&gt;, &lt;a href="http://www.ottumwaiowa.com/"&gt;Ottumwa&lt;/a&gt;, &lt;a href="http://www.millvalley.com/"&gt;Mill Valley&lt;/a&gt;, &lt;a href="http://www.cityofboston.gov/"&gt;Boston&lt;/a&gt;, and &lt;a href="http://www.hometownusa.com/maine/Crabapple_Cove.html"&gt;Crabapple Cove&lt;/a&gt;; but that would’ve made it unreadable. &lt;/li&gt;
    &lt;li&gt;It’s not the Dino Dog that’s bothering The Reader in panel 6, it’s the curry. The fastest way to drive him away is to serve him curry. But boy, curried chicken sausage sounds good to me right now! &lt;/li&gt;
    &lt;li&gt;Since you insisted (I know you’re thinking it, here’s the recipe for Yabanapple Soup: &lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;&lt;strong&gt;Yabanapple Soup (Serves 4)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;3 large ripe bananas&lt;/p&gt;
&lt;p&gt;1 large sweet potato (sometimes called a yam in America, but &lt;em&gt;not&lt;/em&gt; the same as yams elsewhere – it’s a whole different genus and species)&lt;/p&gt;
&lt;p&gt;1 large can of chunk pineapple, drained&lt;/p&gt;
&lt;p&gt;2 large cans of whole coconut milk (skim if you prefer)&lt;/p&gt;
&lt;p&gt;3 tablespoons of honey&lt;/p&gt;
&lt;p&gt;1 dash cinnamon&lt;/p&gt;
&lt;p&gt;1 dash nutmeg&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
    &lt;li&gt;Clean and peel the sweet potato. &lt;/li&gt;
    &lt;li&gt;Boil a pan of water. When boiling, add the sweet potato, and boil until slightly soft. Remove from heat and drain. &lt;/li&gt;
    &lt;li&gt;Peel and slice the banana into quarter-inch slices. &lt;/li&gt;
    &lt;li&gt;Slice the sweet potato into quarter-inch slices, and then into chunks. &lt;/li&gt;
    &lt;li&gt;In a sauce pan, mix coconut milk, sweet potato chunks, banana slices, pineapple chunks, honey, cinnamon and nutmeg. Heat until simmering. &lt;/li&gt;
    &lt;li&gt;Serve hot; or chill and serve with a scoop of ice cream. &lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
    &lt;li&gt;Boy, those are some cool-looking souvenirs in panel 7. Let’s take a closer look: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;a href="http://www.cafepress.com/UMLounge.340153135"&gt;&lt;img alt="Ladies of Ulterior Motive Lounge T-Shirt" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Ladies.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cafepress.com/UMLounge.340166266"&gt;&lt;img alt="What-EVER! T-Shirt" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_What-EVER.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cafepress.com/UMLounge.340171710"&gt;&lt;img alt="The UML Guy T-Shirt" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_The%20UML%20Guy%20Shirt.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cafepress.com/UMLounge.340234288"&gt;&lt;img alt="UML Bear" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_UML%20Bear.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cafepress.com/UMLounge.340215623"&gt;&lt;img alt="Ulterior Motive Lounge Stein" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Stein.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Wow! Too bad this is just a comic strip, not the real world. Wouldn’t it be great if there were &lt;a href="http://www.cafepress.com/UMLounge"&gt;a place where you could buy LoungeWare&lt;/a&gt;, especially just in time for Christmas?&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.wayneboring.com/"&gt;Wayne H. Boring&lt;/a&gt; was a famous and popular &lt;a href="http://www.dccomics.com/go/superman/"&gt;Superman&lt;/a&gt; artist. I love his work, and I couldn’t resist borrowing his name for the pun in panel 8. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Next Episode: a tour of the Labs!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127957"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127957" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/UlteriorMotiveLounge/aggbug/127957.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin L. Shoemaker</dc:creator>
            <guid>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/15/ulterior-motive-lounge-episode-29-touring-the-pavilion.aspx</guid>
            <pubDate>Tue, 16 Dec 2008 02:03:15 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/UlteriorMotiveLounge/comments/127957.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/15/ulterior-motive-lounge-episode-29-touring-the-pavilion.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/UlteriorMotiveLounge/comments/commentRss/127957.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Ulterior Motive Lounge Episode 28: Meet Danny Diplodocus!</title>
            <link>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/09/ulterior-motive-lounge-episode-28-meet-danny-diplodocus.aspx</link>
            <description>&lt;p&gt;Continuing &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/05/ulterior-motive-lounge-episode-27-meet-the-crew.aspx"&gt;The Project That Time Forgot&lt;/a&gt;, a UML case study in comic strip form... (Click pictures for larger images.)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Episode%2028.jpg"&gt;&lt;img alt="Ulterior Motive Lounge Episode 28" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Episode%2028.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And just in case you can't read that sign above the gate, here's a larger view:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Gate%20Sign.jpg"&gt;&lt;img alt="Park Gate Sign" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Gate%20Sign.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So Editor Bill looked at this strip and said, "Geez, Martin, what happened? You spent so much time drawing that volcano cone, you didn't have time for any UML?"&lt;a href="#Apologies to Editor Bill"&gt;*&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;"What?" I said, "You don't see the UML content in this Episode?"&lt;/p&gt;
&lt;p&gt;"Well, yeah, there are a couple new systems mentioned, I guess."&lt;/p&gt;
&lt;p&gt;"Ah," I said, "that's because you're not listening (or reading) with the ears (or eyes) of an analyst. This Episode is chock full of UML content. The UML Guy's listening carefully and updating his diagrams and drawing new diagrams. You just can't see that in the tiny little panels. But I'll be sure the readers can see them in the commentary." Score 1 for The UML Guy!&lt;/p&gt;
&lt;p&gt;To start with, The UML Guy remembered the right name for one Actor. He kept blipping out on the name of the workers who load and unload the baggage; so he simply called them "Shipping Staff". Then he remembered the right name: Stevedore. So he updated the model for that, and also to show a previously forgotten Actor, Driver:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Transport%20Staff%20Actors%20Scene%206.jpg"&gt;&lt;img alt="Transport Staff Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Transport%20Staff%20Actors%20Scene%206.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Editor Bill responded, "Drivers? I don't see any drivers. The team are just driving themselves."&lt;/p&gt;
&lt;p&gt;"Ah," I reminded him, "don't forget: Actors in UML aren't people or job descriptions: they're roles people or systems play. In this Episode, Owner, The Reader, and Geek Girl are fulfilling the Driver role." Score 2 for The UML Guy! It's almost like I'm setting up these points on purpose...&lt;/p&gt;
&lt;p&gt;Editor Bill mentioned a couple new systems. Oh, it's a lot more than a couple. Implicit and explicit in Owner's narration are &lt;strong&gt;17 new systems&lt;/strong&gt;. Score 3 for The UML Guy!  That means our original Logical Deployment Diagram has grown by 242%:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Deployment%20with%20Icons%20Scene%206.jpg"&gt;&lt;img alt="Logical Deployment Diagram (revised)" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Deployment%20with%20Icons%20Scene%206.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now some of those systems are implicit &lt;em&gt;only&lt;/em&gt; because The UML Guy has worked on baggage handling systems and reservation systems. So these aren't requirements or existing infrastructure &lt;em&gt;yet&lt;/em&gt;. They're only assumed.&lt;/p&gt;
&lt;p&gt;That's OK. You're allowed to bring your experience and history to your projects. You're &lt;em&gt;expected&lt;/em&gt; to bring them. Just be sure you don't mistake past experience for present knowledge. The UML Guy will have to present these ideas to Owner and Owner's staff and ask the analyst's most important question: "Is this right?"&lt;/p&gt;
&lt;p&gt;And that's a &lt;em&gt;hard&lt;/em&gt; question to get answered. It's easy for stakeholders to get confused in jargon and answer "Yes" out of reflex, not out of understanding. It's &lt;em&gt;really&lt;/em&gt; easy for an analyst with a strong personality to unintentionally pressure the stakeholders into "Yes." I spend a &lt;em&gt;lot&lt;/em&gt; of time saying, "Don't let me &lt;em&gt;convince&lt;/em&gt; you that I'm right. If I'm wrong, &lt;em&gt;please&lt;/em&gt; tell me. I don't think I'm wrong; but I &lt;em&gt;need&lt;/em&gt; you to tell me if I am, because you're the only ones who can."&lt;/p&gt;
&lt;p&gt;Now in this &lt;em&gt;particular&lt;/em&gt; case, we're going to find that The UML Guy is brilliant, and these changes are all perfect. Scriptwriters have awesome powers, after all. (But I'd love to hear from you if you disagree with anything here.)&lt;/p&gt;
&lt;p&gt;So the new systems are these:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Car Information System.&lt;/strong&gt; This new system is obvious from the Episode. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Guest Information Server.&lt;/strong&gt; If the Car Information Server is going to present guest-specific info feeds, somewhere there will have to be stored information on each Guest. Since the Central Server is concerned with operation of the Park systems, The UML Guy assumes there will be a separate system for Guest information. He's willing to be told that he's wrong, of course, but that's how he's drawing the diagrams right now. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Reservation Server.&lt;/strong&gt; Since Owner discussed Priority Guests vs. Guests, we know there has to be a way for Guests to express their preferences as they make reservations. (See the Guest Use Cases below for more details.) That little bit of knowledge implies a reservation system of some kind. The Park will contract with a travel company to book reservations; and their Reservation Server will have to connect with the Guest Information Server to know what rooms are available when, and to inform the Park about reservations. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Guest's Personal PC.&lt;/strong&gt; Guests will be able to make their reservations online, so their PCs are connected to the rest of the network by connecting to the Reservation Server. It's unlikely that we'll be deploying any code there; but again, we're defining a broad scope now, and narrowing in later. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Weather Station.&lt;/strong&gt; Since the Island is an independent territory, there's no National Weather Service providing forecasts there. In order to provide up-to-date weather information, they'll need some sort of weather reporting station. &lt;a href="http://www.amazon.com/Furuno-PB100-Ultrasonic-Weather-Station/dp/B000OTMZHI/ref=sr_1_3?ie=UTF8&amp;amp;s=electronics&amp;amp;qid=1228868421&amp;amp;sr=1-3"&gt;Something like this...&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Hospitality Console.&lt;/strong&gt; The Lodge staff will need consoles to enter and maintain Guest information. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Event Planner Console.&lt;/strong&gt; Event planners will need consoles to plan and manage events. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Room Lock.&lt;/strong&gt; From Owner's description, the Lodge room locks must tie into the GPS system, since the GPS Locators act as keys; and the Guest Information Server must be able to assign GPS's to locks. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Sorter.&lt;/strong&gt; The baggage sorter on the Island will be a &lt;em&gt;huge&lt;/em&gt; system. (Trust me!) It needs a server dedicated just to sortation logic and planning. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Sorter Controller Module.&lt;/strong&gt; While the Sorter plans and routes bags (and packages -- Park staff will use the same system for routing packages to installations throughout the Island), the actual sortation hardware needs a separate server to control all the inducts and diverts and carriers and rollers and conveyors and scanners and lifters and loaders and pushers and more and more and more... There's a lot there (Trust me!), so we'll need separate servers for routing logic and for device control and communications. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Bar Code Scanner.&lt;/strong&gt; Each package will be tagged with a bar code label, and the scanners will use these to locate each package and report the locations to the Sorter Controller Module. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Sorter Car.&lt;/strong&gt; Each car (or carrier) in the sortation system will have its own control device to help it induct, center, and divert loads. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Baggage Check In Console.&lt;/strong&gt; When the Guests arrive at the docks on the mainland (or at the heliport for Priority Guests), the Stevedores there will have to check in their baggage at this console. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Baggage Scale.&lt;/strong&gt; Weighs Guest luggage. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Bar Code Printer.&lt;/strong&gt; Prints the bar code labels for the baggage. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Shoreside Baggage Server.&lt;/strong&gt; Manages baggage information at the dock or the heliport. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Dockside Bar Code Scanner.&lt;/strong&gt; Used to confirm that each bag reachs the dock and is loaded onto the ship. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And if the &lt;em&gt;Logical&lt;/em&gt; Deployment Diagram has gotten complicated, the &lt;em&gt;Physical&lt;/em&gt; Deployment Diagram has gotten worse -- so complex, The UML Guy had to reorganize it and regroup the nodes by their locations in (and out of ) the Park:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Physical%20Deployment%20Scene%206.jpg"&gt;&lt;img alt="Physical Deployment Diagram (revised)" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Physical%20Deployment%20Scene%206.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;These locations are:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Underground Sortation System.&lt;/strong&gt; Where all the sortation hardware is found. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Server Room.&lt;/strong&gt; Where the primary servers are found. (Yes, I can explain why Room Lock is inside that boundary. It's a highly technical concept we call a &lt;em&gt;mistake&lt;/em&gt;. The UML Guy goofed. He'll clean it up later.) &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Lodge Offices.&lt;/strong&gt; Where Lodge hardware is found (and probably where Room Lock &lt;em&gt;should&lt;/em&gt; be found). It contains two specific locations:
    &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Concierge Office.&lt;/strong&gt; Where the Hospitality team works. &lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Event Planning Office.&lt;/strong&gt; Where the Events team works. &lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Reservation Agent.&lt;/strong&gt; The offices of the third-party reservation service. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Ops Center.&lt;/strong&gt; Where the lead Ops staff works. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Comm Center.&lt;/strong&gt; A separate building where communications hardware is found, including an array of communications towers and antennas mounted on the roof. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Check In.&lt;/strong&gt; The baggage check-in centers on the mainland. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Field Units.&lt;/strong&gt; Mobile devices throughout the Island. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And as The UML Guy added hardware and envisioned hardware in different locations, he realized the Park would need more Routers, along with a satellite Internet link; so he added those to this diagram.&lt;/p&gt;
&lt;p&gt;The UML Guy also identified initial Use Cases for some Actors, including Driver:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Driver%20Use%20Cases.jpg"&gt;&lt;img alt="Driver Use Cases" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Driver%20Use%20Cases.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This Use Case relates to two Domain Objects: the GPS Data, and the Guest Feed (which in turn involves a Weather report, Daily Events, and Guest Schedules). The UML Guy also added a note for a known defect. There may be better ways to note this, depending on your defect tracking tools; but this note is a very &lt;em&gt;visible&lt;/em&gt; way to indicate it (expecially to my audience, i.e., you).&lt;/p&gt;
&lt;p&gt;We also have Stevedore Use Cases:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Stevedore%20Use%20Cases.jpg"&gt;&lt;img alt="Stevedore Use Cases" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Stevedore%20Use%20Cases.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The UML Guy didn't mark either of these with a defect note: even though he knows the sorter's not working, he doesn't know enough yet to tie it to a particular Use Case.&lt;/p&gt;
&lt;p&gt;And finally, with have Use Cases for Guests and Priority Guests:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Guest%20Use%20Cases.jpg"&gt;&lt;img alt="Guest and Priority Guest Use Cases" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Guest%20Use%20Cases.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I could go through the Episode panel by panel and justify every one of those Use Cases; but most of them should be obvious if you've done much traveling. If you have any questions on them, please feel free to ask. The UML Guy probably has some idea of Event Planner and Concierge Use Cases from this Episode as well; but the information is &lt;em&gt;so&lt;/em&gt; vague, he left those Actors for later. (Either that, or he was awed by the scenery.)&lt;/p&gt;
&lt;p&gt;No UML content, Editor Bill? Ha! It is to laugh! UML content coming out your ears, my friend...&lt;/p&gt;
&lt;p&gt;Some other notes on this Episode:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Yes, all cars on the Island are AMC Gremlin X's. Long-time readers will notice a pattern here. &lt;/li&gt;
    &lt;li&gt;Before I drew panel 4, I had no idea there would be Car Information Systems. Before I drew panel 5, I had never heard of Danny Diplodocus. Now this little bit of imaginary code is whispering in my ear and suggesting that he needs a larger role in the story. &lt;strong&gt;He's a blooming drawing of an imaginary blooming computer-animated dinosaur, and he's trying to wrest control of the story from me!&lt;/strong&gt; I tell ya, authors have no control over their creations, none at all. &lt;/li&gt;
    &lt;li&gt;No offense is intended toward Italian software developers in their role in the defective sortation system. &lt;strong&gt;I'm&lt;/strong&gt; not blaming them; but it's common for the absent team members to become the scapegoats for all failures, &lt;em&gt;especially&lt;/em&gt; when they're from a different company &lt;em&gt;and&lt;/em&gt; there's a bit of a language barrier. Do they share the blame in this case? Probably. Do they deserve the &lt;strong&gt;whole&lt;/strong&gt; blame? I seriously doubt it. But since they're not there to defend themselves, they're going to get more than their share, I'll bet. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Next Episode: a tour of the Pavilion!&lt;/p&gt;
&lt;p&gt;&lt;a name="Apologies to Editor Bill"&gt;&lt;/a&gt; OK, OK, Editor Bill didn't say that. As author, I get to put words in the mouths of my characters &lt;em&gt;and&lt;/em&gt; Editor Bill. He did say, "Well, no, there's not a lot of UML content; but you can be excused, because you've got a lot coming up." &lt;em&gt;Then&lt;/em&gt; I told him about the UML content. But if I tell the story this way, I get to brag about how hard I worked on that volcano cone!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127775"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127775" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/UlteriorMotiveLounge/aggbug/127775.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin L. Shoemaker</dc:creator>
            <guid>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/09/ulterior-motive-lounge-episode-28-meet-danny-diplodocus.aspx</guid>
            <pubDate>Wed, 10 Dec 2008 00:23:32 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/UlteriorMotiveLounge/comments/127775.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/09/ulterior-motive-lounge-episode-28-meet-danny-diplodocus.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/UlteriorMotiveLounge/comments/commentRss/127775.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Ulterior Motive Lounge Episode 27: Meet the Crew</title>
            <link>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/05/ulterior-motive-lounge-episode-27-meet-the-crew.aspx</link>
            <description>&lt;p&gt;Continuing &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/02/ulterior-motive-lounge-episode-26-aboard-the-helicopters.aspx"&gt;The Project That Time Forgot&lt;/a&gt;, a UML case study in comic strip form... (Click pictures for larger images.)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Episode%2027.jpg"&gt;&lt;img alt="Ulterior Motive Lounge Episode 27" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Episode%2027.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There's the business, and then there's the role of the system within the business. If all you focus on is the role of the system, you can miss chances to see where the system's &lt;em&gt;really&lt;/em&gt; needed.&lt;/p&gt;
&lt;p&gt;So time permitting, I would rather start by understanding the whole business and then work inward. Oh, sometimes the division is very clear: if my client asks for a change to their payroll system, I probably don't need details about their waste management system.&lt;/p&gt;
&lt;p&gt;Or do I? What if the waste management staff is made up of hourly employees? What if excess waste problems can result in overtime? What if that overtime gets charged to a different budget, such as the Environmental Quality Initiative?&lt;/p&gt;
&lt;p&gt;The boundaries between "business" and "problem domain" can be fuzzy, and it's easy to cross the boundaries without realizing it. I find it's easier to start with a broad scope and narrow in than to start with a narrow scope and expand.&lt;/p&gt;
&lt;p&gt;And if I had to pick the number one category of overlooked Actors in requirements analysis, it's the development and maintenance teams themselves. Customers think about what &lt;em&gt;they&lt;/em&gt; need from your system; but how often do they think about what &lt;em&gt;you&lt;/em&gt; need from the system? Do they think about running diagnostics to chase down problems? Do they think about maintenance and archiving of data? Do they think about staging and deploying patches and new releases? Do they think about detecting and tracking defects and problems and patterns of usage and percentage of down time? Do they think about support personnel and the tools they'll need to keep users running?&lt;/p&gt;
&lt;p&gt;Maybe. Maybe, if they're a very experienced system buyer. But most often, the answer is &lt;strong&gt;no&lt;/strong&gt;. If &lt;em&gt;you&lt;/em&gt; don't think of the development and maintenance and support staffs as Actors, and &lt;em&gt;you&lt;/em&gt; don't identify their Use Cases, no one will. Then you'll deploy, and the system will need maintenance, and your users will need support, and you'll have no tools to help them. And when you start trying to retrofit the tools after the fact, someone will say "You should've thought of that." And they're right. You should have. You're the professionals here.&lt;/p&gt;
&lt;p&gt;So Owner has done a good job of identifying the "stars" of the story. These are Actors you &lt;em&gt;will&lt;/em&gt; see again as the story plays out. (Trust me: if I didn't need them in the story, I wouldn't draw them. I'm just too busy to draw characters I don't need. (Somewhere Editor Bill and &lt;a href="http://www.getflowerpot.com"&gt;Curtis Gray&lt;/a&gt; are stunned into disbelief at that remark.)) But he has barely scratched the surface of the full Park staff. After much longer discussions, The UML Guy identified these basic classes of Actors:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Park%20Actors.jpg"&gt;&lt;img alt="Park Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Park%20Actors.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a common pattern in many of my models:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;User&lt;/strong&gt;s are anyone who might be involved with the system in any way. They may be anonymous visitors to the Park's Web site; or they may be more specific Actors, as described below. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Authorized User&lt;/strong&gt;s are Users who have permissions to do something on the system that Users can't do. This is represented in the diagram above as a set of Authorizations. Different Authorized Users will have different Authorizations. We'll get more specific about what that means when we get closer to code. &lt;/li&gt;
    &lt;li&gt;An &lt;strong&gt;Employee&lt;/strong&gt; is an Authorized User that works within the organization and has additional Authorizations as a result. &lt;/li&gt;
    &lt;li&gt;A &lt;strong&gt;Supervisor&lt;/strong&gt; is an Employee with a Staff of Employees, along with additional Authorizations and responsibilities. &lt;/li&gt;
    &lt;li&gt;A &lt;strong&gt;Vendor&lt;/strong&gt; is an Authorized User who isn't employed by the business, but who provides services to the organization and may have additional Authorizations and responsibilities. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition, this model has another class of Authorized Users: Guests. We want each Guest to have Web access to Park content, so that we can sell additional services and souvenirs to them. And then Priority Guests are Guests who pay for full Internet access.&lt;/p&gt;
&lt;p&gt;After identifying these major classes of Actors, the team identified more specific versions of each. The Vendor Actors diagram is the simplest:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Vendor%20Actors.jpg"&gt;&lt;img alt="Vendor Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Vendor%20Actors.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Supervisor Actors are more numerous:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Supervisor%20Actors.jpg"&gt;&lt;img alt="Supervisor Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Supervisor%20Actors.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The Employee Actors are where the "Actor Explosion" comes in. This is just the first diagram; more detailed Employee diagrams follow:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Employee%20Actors.jpg"&gt;&lt;img alt="Employee Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Employee%20Actors.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Most (but not all) of these Employee classes have more detailed Employees below.&lt;/p&gt;
&lt;p&gt;Here are the Ops Staff Actors:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Ops%20Staff%20Actors.jpg"&gt;&lt;img alt="Ops Staff Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Ops%20Staff%20Actors.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And Ops Staff is complex enough to require two even more detailed diagrams. Here are the Transport Staff Actors:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Transport%20Staff%20Actors.jpg"&gt;&lt;img alt="Transport Staff Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Transport%20Staff%20Actors.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And here are the Facilities Staff Actors:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Facilities%20Staff.jpg"&gt;&lt;img alt="Facilities Staff Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Facilities%20Staff.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here are the Laboratory Staff Actors:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Laboratory%20Staff.jpg"&gt;&lt;img alt="Laboratory Staff Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Laboratory%20Staff.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here are the Lodge Staff Actors&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Lodge%20Staff%20Actors.jpg"&gt;&lt;img alt="Lodge Staff Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Lodge%20Staff%20Actors.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here are Concession Staff Actors:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Concession%20Staff%20Actors.jpg"&gt;&lt;img alt="Concession Staff Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Concession%20Staff%20Actors.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here are the Marketing Staff Actors:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Marketing%20Staff%20Actors.jpg"&gt;&lt;img alt="Marketing Staff Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Marketing%20Staff%20Actors.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And finally, here are the Medical Staff Actors:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Medical%20Staff%20Actors.jpg"&gt;&lt;img alt="Medical Staff Actors" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Medical%20Staff%20Actors.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Whew! That's a total of 86 different classes and subclasses of Actors! And I'll bet if I spoke to people in the transport, hospitality, marketing, or amusement industries, I'd find more. Owner's 8 Actors may be the most important, but they're less than 10% of the total set of Actors.&lt;/p&gt;
&lt;p&gt;And I haven't even started &lt;em&gt;looking&lt;/em&gt; at system and device actors. We'll likely end up with around 100 candidate Actors. Will we need all of them? Probably not. But I'm more comfortable now that we haven't overlooked anything.&lt;/p&gt;
&lt;p&gt;And yet categorizing isn't enough! We really need to understand relations between them as well. For instance, Employees report to Supervisors. Here is a rough Org Chart for the Park staff, with an arrow from each Employee to the Supervisor to which she or he reports:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Org%20Chart.jpg"&gt;&lt;img alt="Park Org Chart" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Org%20Chart.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There's one more lesson in this Episode: although I see this work as identifying Actors, I went a little farther than that, identifying their goals and motivations as well. That's a step down the road to identifying Personas, as described by Alan Cooper in &lt;a href="http://www.amazon.com/About-Face-Essentials-Interaction-Design/dp/0470084111/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1228525682&amp;amp;sr=8-1"&gt;About Face&lt;/a&gt; and &lt;a href="http://www.amazon.com/Inmates-Are-Running-Asylum-Products/dp/0672326140/ref=pd_bbs_sr_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1228525682&amp;amp;sr=8-2"&gt;The Inmates Are Running the Asylum&lt;/a&gt;. In fact, since these are fictional characters, it's a &lt;em&gt;lot&lt;/em&gt; like defining Personas. Cooper argues that by creating fictional Personas that represent users with personalities and motivations and goals, you create a filter to differentiate "okay software that someone can use" from "&lt;strong&gt;great&lt;/strong&gt; software that will really satisfy this person's goals and make this person happy". I like a lot of what Cooper has to say in these books. I'm not 100% persuaded yet, but he's persuasive. Of course, I've also gone &lt;em&gt;way&lt;/em&gt; overboard by his standards. He recommends typically around 3 Personas, 5 for a big project. I have 8, plus the review team, plus almost 80 more Actors. But I have them in part for the demands of the story, not the system. If Alan Cooper were doing Interaction Design for this project, he would likely focus on just one or two of these Actors, and flesh them out to a handful of Personas, and work on designing great software for them. Then he would focus on other Personas over time.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127606"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127606" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/UlteriorMotiveLounge/aggbug/127606.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin L. Shoemaker</dc:creator>
            <guid>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/05/ulterior-motive-lounge-episode-27-meet-the-crew.aspx</guid>
            <pubDate>Fri, 05 Dec 2008 23:34:39 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/UlteriorMotiveLounge/comments/127606.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/05/ulterior-motive-lounge-episode-27-meet-the-crew.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/UlteriorMotiveLounge/comments/commentRss/127606.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Ulterior Motive Lounge Episode 26: Aboard the Helicopters</title>
            <link>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/02/ulterior-motive-lounge-episode-26-aboard-the-helicopters.aspx</link>
            <description>&lt;p&gt;Continuing &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/11/26/ulterior-motive-lounge-episode-25-the-uml-guys-terms.aspx"&gt;The Project That Time Forgot&lt;/a&gt;, a UML case study in comic strip form... (Click picture for a larger image.)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Episode%2026.jpg"&gt;&lt;img alt="Ulterior Motive Lounge Episode 26" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/r_Episode%2026.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is the first we've seen of Deployment Diagrams in the Lounge; but they're enough like Class Diagrams that I think you should find them easy to read. Here's the diagram above, larger and more readable:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Logical Deployment Diagram" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Logical%20Deployment.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;The cubes represent nodes within the system. By default, they represent Processors: computers where you'll deploy code. The &lt;strong&gt;&amp;lt;&amp;lt;device&amp;gt;&amp;gt;&lt;/strong&gt; stereotype here indicates devices that your system talks to, but you don't actually deploy any code there. The lines connecting the nodes represent paths of communication. Recall from our Class Diagrams that we use arrows to indicate which end of a relationship is a "controller or "owner" in the relationship; but if the ends are "peers" -- or if we just haven't decided the details yet -- we use simple lines, not arrows. Lines are more common in Deployment Diagrams.&lt;/p&gt;
&lt;p&gt;As in Class Diagrams, the triangle-headed arrow indicates generalization or inheritance. In this example, a Windows Mobile Phone is a more-specific example of a cell phone, one where we can deploy Windows Mobile apps.&lt;/p&gt;
&lt;p&gt;Processors and devices are physical things. Stakeholders who haven't a clue what Classes they need will commonly have strong opinions of what nodes they need. "We're going to have PCs at all these stations, and a server back here, and two printers over here, and a connection to the Internet here, and..." So a Deployment Diagram is often part of their requirements, not just their design. (Of course, the design may result in deployment changes...) Drawing the Deployment Diagram is a good starting point for discussing the system.&lt;/p&gt;
&lt;p&gt;To make these diagrams even more readable to the stakeholders, it's common to add specific icons for specific kinds of nodes:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Logical Deployment Diagram with node icons" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Deployment%20with%20Icons.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;What we've seen so far are &lt;em&gt;logical&lt;/em&gt; Deployment Diagrams: these are the nodes that must communicate to carry out requirements, but not the full picture. A physical Deployment Diagram adds the hardware that connects these nodes, and also describes the connections:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Physical Deployment Diagram" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Physical%20Deployment.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Some stakeholders -- particularly IT staff and network admins -- will prefer the physical Deployment Diagrams; but most will prefer to know where work is done, without reference to how the nodes connect.&lt;/p&gt;
&lt;p&gt;Note also some added detail here: besides Windows Mobile Phones, we have two other kinds of cellular devices. The Tablet PCs are equipped with Cellular Modems; and the GPS Locators use cell signals to broadcast their locations. Hmmm... That means the cellular network is very close to being a single point of failure. if that went down, it would be bad...&lt;/p&gt;
&lt;p&gt; Other notes from today's Episode:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Dog refused to be left home. She's pretty stubborn sometimes. &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.wimax.com/"&gt;WiMAX&lt;/a&gt; is becoming a very popular solution for wide-range wireless networking. But darn it, they &lt;em&gt;still&lt;/em&gt; don't have a tower that can reach my house! &lt;/li&gt;
    &lt;li&gt;Stick Boy is a gamer geek. He never goes anywhere without his wizard staff. &lt;/li&gt;
    &lt;li&gt;Hacker Girl's shirt reads, "What-EVER!" in pink on blackl. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And finally: yes, despite his admonitions, The UML Guy just overlooked some vital information. He's not kidding: we &lt;em&gt;all&lt;/em&gt; have blind spots, and we &lt;em&gt;need&lt;/em&gt; each other to review and catch what we miss. Even knowing that, he didn't listen to Dog. She's always barking about something, so this can't be important, right?&lt;/p&gt;
&lt;p&gt;Everyone on the team and every stakeholder has a unique perspective. Think of your problem as a giant abstract sculpture in a dark room; and you're supposed to recreate that sculpture. Everyone has a flashlight. Some are broad beams, and some are narrow, but &lt;em&gt;none&lt;/em&gt; is large enough to encompass the entire sculpture. Oh, sure, if you stand back at a distance, you can play your beam over the wole thing; but then you're too far away to see details. So you need everyone, every light, to see angles and perspectives that you overlook. Even with &lt;em&gt;all&lt;/em&gt; the beams, you'll miss some details; so go out of your way to get as many beams as possible, and have everyone look from multiple angles.&lt;/p&gt;
&lt;p&gt;Of course, most of us would probably overlook Dog as a stakeholder, so I'll cut The UML Guy a little slack. But if only he had listened...&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127519"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127519" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/UlteriorMotiveLounge/aggbug/127519.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin L. Shoemaker</dc:creator>
            <guid>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/02/ulterior-motive-lounge-episode-26-aboard-the-helicopters.aspx</guid>
            <pubDate>Tue, 02 Dec 2008 14:59:21 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/UlteriorMotiveLounge/comments/127519.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/02/ulterior-motive-lounge-episode-26-aboard-the-helicopters.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/UlteriorMotiveLounge/comments/commentRss/127519.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Ulterior Motive Lounge Episode 25: The UML Guy's Terms</title>
            <link>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/11/26/ulterior-motive-lounge-episode-25-the-uml-guys-terms.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; This was scheduled for tomorrow (hence the date drawn on the strip); but due to the U.S. Thanksgiving holiday, I'm releasing it a day early.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Continuing The Project That Time Forgot, a UML case study in comic strip form... (Click picture for a larger image.) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Episode%2025.jpg"&gt;&lt;img alt="Ulterior Motive Lounge Episode 25: The UML Guy's Terms" src="http://geekswithblogs.net/images/geekswithblogs_net/UlteriorMotiveLounge/9138/o_Episode%2025%20Small.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; So in &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/11/24/ulterior-motive-lounge-episode-24-the-project-that-time-forgot.aspx"&gt;the previous Commentary&lt;/a&gt;, I wrote:&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;This Episode is all introduction. It doesn't include much UML content, and there's not much to add yet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So naturally, this Episode has &lt;em&gt;no&lt;/em&gt; UML content. But it was necessary to set the stage and to introduce common wisdom that somehow gets overlooked on project after project. I first saw this on the wall of a tire shop where my brother worked:&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;If you don't have time to do it right,&lt;br /&gt;
when will you have time to do it over?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;So if they know that in the tire business, where the job is mostly well-defined, why don't we seem to know it in the software business with our nebulous requirements and goals? Oh, we &lt;em&gt;say&lt;/em&gt; we know it; but when push comes to shove, we push and shove, when we should stop and think.&lt;/p&gt;
&lt;p dir="ltr"&gt;And push and shove is exactly the wrong thing to do! I know of no better metaphor for this way of thinking than &lt;a href="http://www.stevemcconnell.com/psd/02-FoolsGold.pdf"&gt;Steve McConnell's pyramid builders&lt;/a&gt; (link is to a PDF). Please, please, &lt;em&gt;please&lt;/em&gt; go read the whole thing! But here's the key description of the recurring problem:&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;The problem with the code-and-fix approach, as with the brute force approach to moving the stone block, is that quick movement off the starting line doesn’t necessarily translate into quick progress toward the finish line. The team that uses a more advanced approach is putting a framework in place that will allow the project to spin up to a high level of productivity and finish efficiently. It is putting rollers under the block, clearing the roadway, and preparing to focus the energy of the project team. The codeand-fix project gets the block moving early, but it doesn’t move the block far enough each day and the brute force approach isn’t sustainable. It typically leads to the creation of hundreds or thousands of defects early in the project. Several studies have found that project’s budget goes into fixing defects that were created earlier on the same project.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But that early "progress" is tempting. That early "progress" is seductive. That early "progress" is comforting, even if it's false. And most important, that early "progress" is &lt;em&gt;visible&lt;/em&gt;. Stakeholders can see that things are happening. During up-front preparations, stakeholders can't see progress as easily, even if it's &lt;em&gt;true&lt;/em&gt; progress, not just block-shoving.&lt;/p&gt;
&lt;p&gt;So the situation shown in this Episode is common: stakeholders start out with enthusiasm for "doing the job right this time"; but then, when doing it right takes a long time and no code results, they get cold feet. They fall back onto "proven" techniques -- which mostly have proven to be difficult and costly; but because stakeholders get nervous, they grasp at tangible "progress" in lieu of visible &lt;strong&gt;progress&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Who do we blame for this? Do we blame the stakeholders? Nope. Oh, maybe a little: if they've been through this before, and it never worked before, then they should know better. A simple rule: if nothing ever changes, then nothing will ever change. But no, I don't think the stakeholders get the blame.&lt;/p&gt;
&lt;p&gt;Do we blame Cowboy Consultant? Nope. Oh, he probably deserves some of the blame; but I'm reluctant to blame him, because at times I've &lt;em&gt;been&lt;/em&gt; him. As &lt;a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959"&gt;Fred Brooks has noted&lt;/a&gt;, optimism is an occupational hazard of software development, and maybe even a necessary characteristic for surviving the field: the problems we face are so large and so complex and so interconnected that anyone who wasn't a foolish optimist would go find other work. It takes a certain mix of optimisim, &lt;em&gt;hubris&lt;/em&gt;, and geekiness to throw yourself into the multidimensional problems that programmers tackle. So even though an experienced developer should know better, we all have a tendency to say, "Oh, that'll be fun! &lt;em&gt;I&lt;/em&gt; can do &lt;em&gt;that&lt;/em&gt;!". And then we leap in without thinking, before we even know what we're doing. But no, I don't think Cowboy Consultant gets the blame (but maybe a little of it).&lt;/p&gt;
&lt;p&gt;So if we can't blame Owner, and we can't blame Cowboy Consultant, who do we blame? I can tell you who I blame in this case.&lt;/p&gt;
&lt;p&gt;I blame The UML Guy. He really blew it.&lt;/p&gt;
&lt;p&gt;Much of the disaster that looms in future Episodes could have been avoided had The UML Guy simply done one thing right the first time: &lt;em&gt;make his work more visible and comprehensible to Owner, so Owner would want him to continue.&lt;/em&gt; When he worked for Owner before, he knew a lot of the power of modeling. He saw a lot of modeling benefits in his final code. But he was too isolated, and hadn't yet figured out that his processes &lt;em&gt;must&lt;/em&gt; be open and visible and measurable and testable to the stakeholders. In other words, he hadn't yet figured out his primary message...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/11/21/its-all-about-communication.aspx"&gt;It's all about communication.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And yes, this is fiction (I've yet to be invited to consult on a project on a tropical island, darn it!); but in spirit, it's true. Even though I got a lot of use out of UML early on, I only saw the true power when I changed my focus from &lt;em&gt;modeling&lt;/em&gt; to &lt;em&gt;communicating through models&lt;/em&gt;. Then, and only then, did I start to become The UML Guy: a UML fanatic who today can barely carry on a development conversation without drawing some sort of diagram of what's in my brain. Heck, I find myself drawing diagrams for anything and everything, not just development. Remember: UML is not about &lt;em&gt;software&lt;/em&gt; modeling; it's about &lt;em&gt;system&lt;/em&gt; modeling, where system equals stucture plus behavior plus purpose. So I can use UML diagrams to communicate about many things in my business life and even in my personal life. It has become a language that I speak, not a tool that I use. And that brings a very different attitude. I don't think about UML, I think &lt;em&gt;in&lt;/em&gt; UML.&lt;/p&gt;
&lt;p&gt;Now all this discussion about modeling up front may sound like a direct attack on Agile Development. I'm sorry if that's how it sounds, but it's not. It's an attack on Agile Gone Awry. It's an attack on &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/11/15/process-is-a-lie.aspx"&gt;CAFÉ&lt;/a&gt;. I think &lt;a href="http://www.cooper.com/journal/agile2008/"&gt;Alan Cooper makes a strong case&lt;/a&gt; that requirements gathering and interaction design is a valuable precursor to Agile processes. &lt;a href="http://cc2e.com/"&gt;Steve McConnell also makes a case&lt;/a&gt; that iterative or Agile work simply spreads this up front work across the iterations, and probably even increases the amount of up-front thinking (while also focusing the thinking, if you're doing it right.) &lt;a href="http://www.agilemodeling.com/"&gt;Scott Ambler has written an entire book&lt;/a&gt; on the value and role of modeling in an Agile environment. And Martin Fowler, one of the original signatories to &lt;a href="http://agilemanifesto.org/"&gt;the Agile Manifesto&lt;/a&gt;, wrote perhaps &lt;a href="http://www.amazon.com/UML-Distilled-Standard-Modeling-Language/dp/020165783X"&gt;the seminal book on UML&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'm a big fan of Agile Development; but I think the idea that modeling and requirements analysis aren't Agile is just off base. In fact, I would contend that Agile UML is &lt;em&gt;exactly&lt;/em&gt; what I've been promoting in the Lounge and elsewhere: UML as a language you speak, not a tool you buy and not a process you follow. In fact, some Agile practitioners who tell me they hate UML are really conflating it with &lt;a href="http://en.wikipedia.org/wiki/Unified_Process"&gt;the Unified Process&lt;/a&gt; and hating that. It's UP they're rejecting; but because they conflate the two, they entirely miss what UML is about. (And they're also misunderstanding the Unified Process, which in fact can be a very Agile process. But that's a discussion for another day.)&lt;/p&gt;
&lt;p&gt;And I'm &lt;em&gt;not&lt;/em&gt; a fan of Agile Gone Awry: Agile Development used as cover for cowboy coding. Sadly, I find that many shops that &lt;em&gt;claim&lt;/em&gt; to be Agile are really just doing CAFÉ. Some developers will grab any excuse to avoid doing any process. They'd rather be coding. &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/11/15/ulterior-motive-lounge-episode-17-process-cop-academy.aspx"&gt;As I've said before&lt;/a&gt;, you have to honestly understand your process before you can judge or change your process.&lt;/p&gt;
&lt;p&gt;So this Episode is The UML Guy's attempt to make up for past mistakes. He's more confident now. He knows that if he doesn't trust his team and his process, Owner never will either; and he knows the process has to be open and visible to Owner and everyone else, so they'll understand why it matters. Will he succeed? Owner starts out pretty skeptical, after all. We'll find out...&lt;/p&gt;
&lt;p&gt;Some other notes on this Episode...&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;The computer in panel 2 is &lt;a href="http://www.microsoft.com/windowsxp/tabletpc/default.mspx"&gt;a Tablet PC&lt;/a&gt;. It's all The UML Guy uses these days. (And if you enjoy Ulterior Motive Lounge, thank Microsoft for creating Tablet PCs. I couldn't draw this strip without mine. Someday maybe I'll write a post on how I create a Lounge Episode. I also may someday do a post on the "art" of stickfiguration.) &lt;/li&gt;
    &lt;li&gt;The drinks in panel 2 are beer (on the right) and cranberry juice (on the left). The UML Guy doesn't know how you people can drink beer. The stuff smells vile. But he has friends who expect it in the Lounge. &lt;/li&gt;
    &lt;li&gt;Dog in panel 2 is a Welsh Terrier. You probably can't tell that from my stick figure art, but she is. She's friendly and loyal and cheerful. She also has a nose for critters, which may get her into trouble at some point. &lt;/li&gt;
    &lt;li&gt;The spiral staircase in panel 7 started with a simple problem. Well, two simple problems, really. First, the panel seemed kinda empty without it. (That's the same reason I added Dog to panel 2. Sometimes little things take on a big life of their own.) And second, in &lt;a href="http://www.ulteriormotivelounge.com/Map.aspx"&gt;my map of the Lounge&lt;/a&gt;, I forgot to include space for The UML Guy's office. That led me to the idea of a basement office; and from there, a spiral staircase seemed natural. It's a good way to fit the stairs in a small space. But once I had the first version drawn (which was &lt;em&gt;much&lt;/em&gt; simpler than this version), I thought, "Ya know, that stair edge and that hand rail with those support posts look a lot like a double-helix..." So expect to see those stairs again, or something like them, in a later Episode. &lt;/li&gt;
    &lt;li&gt;Editor Bill was puzzled by Geek Girl's nickname, "Terminator Barbie". Geek Girl will explain when she feels like it, and not until. (I explained the nickname to &lt;a href="http://blogs.msdn.com/jennifer/archive/2008/04/04/who-is-jennifer-marsman.aspx"&gt;Jennifer Marsman&lt;/a&gt;, a &lt;a href="http://blogs.msdn.com/jennifer/archive/tags/Featured+Women+in+Tech/default.aspx"&gt;real-life Geek Girl&lt;/a&gt;, and she approves. So I'm gonna keep the nickname.) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Next up: On the helicopter... In the mean time, remember: don't just do something, stand there!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127415"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127415" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/UlteriorMotiveLounge/aggbug/127415.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin L. Shoemaker</dc:creator>
            <guid>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/11/26/ulterior-motive-lounge-episode-25-the-uml-guys-terms.aspx</guid>
            <pubDate>Thu, 27 Nov 2008 01:04:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/UlteriorMotiveLounge/comments/127415.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/11/26/ulterior-motive-lounge-episode-25-the-uml-guys-terms.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/UlteriorMotiveLounge/comments/commentRss/127415.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>