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

<channel>
	<title>Bob Lambert &#187; Business Analysis</title>
	<atom:link href="http://robertlambert.net/tag/business-analysis/feed/" rel="self" type="application/rss+xml" />
	<link>http://robertlambert.net</link>
	<description>on business-aligned information technology</description>
	<lastBuildDate>Sat, 24 Jul 2010 20:26:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Use conceptual data modeling in requirements definition</title>
		<link>http://robertlambert.net/2010/07/use-conceptual-data-modeling-in-requirements-definition/</link>
		<comments>http://robertlambert.net/2010/07/use-conceptual-data-modeling-in-requirements-definition/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 16:24:50 +0000</pubDate>
		<dc:creator>Bob</dc:creator>
				<category><![CDATA[Analysis]]></category>
		<category><![CDATA[App Dev]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Data Modeling]]></category>
		<category><![CDATA[Database Design]]></category>
		<category><![CDATA[Requirements]]></category>

		<guid isPermaLink="false">http://robertlambert.net/?p=979</guid>
		<description><![CDATA[I’ve often thought that conceptual data modeling was an underused tool in the arsenal available to requirements analysts, and in a recent conversation I found that many were surprised that it would be used in the requirements phase at all.  Checking the Business Analysis Body of Knowledge (BABOK) I found data modeling listed among the [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve often thought that conceptual data modeling was an underused tool in the arsenal available to requirements analysts, and in a recent conversation I found that many were surprised that it would be used in the requirements phase at all.  Checking the <a title="The DMBOK" href="http://www.theiiba.org/AM/Template.cfm?Section=Body_of_Knowledge" target="_blank">Business Analysis Body of Knowledge</a> (BABOK) I found data modeling listed among the tools available to requirements analysts to “to describe the concepts relevant to a domain, the relationships between those concepts, and information associated with them.”  There’s also Steve Hoberman’s excellent book on the topic, <em><a title="Data Modeling for the Business" href="http://www.amazon.com/Data-Modeling-Business-Handbook-High-Level/dp/0977140075" target="_blank">Data Modeling for the Business</a></em>, an introduction to data modeling aimed at a business audience<em>.</em></p>
<p>Data modeling has long been one of my requirements analysis tools of choice for custom operational applications.  To me, using data modeling techniques in requirements analysis reduces errors by improving requirements completeness, consistency, and communication, and provides unique continuity between analysis and design.   As David Elliott told me in conversation, “development of a data model uncovers many opportunities for clarification of existing requirements, or uncovering of additional detail.  At the very least, it confirms to one’s business customer that the BSA understands and can graphically demonstrate many business rules and relationships.”</p>
<p>I’ll hasten to add a these caveats.  (1) Perhaps strangely, conceptual data modeling is not useful in the same way in requirements for informational systems like data warehouses and marts (I’ll save that discussion for another post).  (2) Requirements definition for commercial off-the-shelf (COTS) applications follows a different methodology in which data modeling might be less applicable.  (3) This post is <em>not</em> about database design, but rather about use of conceptual data modeling as a tool for organizing and validating requirements.</p>
<p><strong> </strong></p>
<p><strong>Conceptual vs. logical data modeling</strong></p>
<p>It is easy to see why in practice there are varying definitions of the different types of data models.  The Wikipedia entry on <a title="Data Modeling at Wikipedia" href="http://en.wikipedia.org/wiki/Data_modeling" target="_blank">data modeling</a> reflects the standard terminology based on the ANSI four-level database architecture, but features a confusing diagram that to me blurs the distinction between conceptual and logical models. The entries on <a title="Logical data modeling at Wikipedia" href="http://en.wikipedia.org/wiki/Logical_data_model" target="_blank">Logical Data Model</a> and <a title="Conceptual data modeling at Wikipedia" href="http://en.wikipedia.org/wiki/Conceptual_schema" target="_blank">Conceptual Data Model</a> make them sound like the same thing: implementation-independent representations of business data.  Then, the entry on <a title="Database design at Wikipedia" href="http://en.wikipedia.org/wiki/Database_design" target="_blank">Database Design</a> contradicts them by stating that the logical model “contains all the needed logical and physical design choices and physical storage parameters needed to … create a database.”</p>
<p>For this post I’ll follow the definitions offered in Simison and Witt’s <a title="Data Modeling Essentials" href="http://www.google.com/search?q=data+modeling+essentials&amp;rls=com.microsoft:en-us:IE-Address&amp;ie=UTF-8&amp;oe=UTF-8&amp;sourceid=ie7&amp;rlz=1I7HPNN_en" target="_blank"><em>Data Modeling Essentials</em></a>:</p>
<ul>
<li>Conceptual      data modeling identifies a set of data structures that will meet      requirements, focusing on business and not on technical or DBMS-specific      concerns</li>
<li>Subsequent      logical data modeling maps the conceptual model to structures supported by      the particular DBMS, finalizing the design in DBMS-appropriate constructs      but not yet optimizing for performance, which comes next in physical      modeling</li>
</ul>
<p><strong>Use of data modeling in requirements definition</strong></p>
<p>Conceptual data modeling is hardly an outlier technique in requirements definition:</p>
<ul>
<li>Perhaps in reaction to problems experienced by adopters of <a title="Structured techniques at Wikipedia" href="http://en.wikipedia.org/wiki/Structured_analysis" target="_blank">Structured techniques</a> in the 80s, data modeling was the cornerstone analytical technique in Clive Finkelstein’s and James Martin’s widely-adopted <a title="Information engineering at Wikipedia" href="http://en.wikipedia.org/wiki/Information_engineering" target="_blank">Information Engineering</a> methodology.</li>
<li> The BABOK includes class modeling, data modeling’s object-oriented cousin, in its chapter on data modeling.  Class modeling is a core technique of object-oriented analysis.</li>
<li>Scott Ambler’s <a title="Agile Modeling" href="http://www.agilemodeling.com/essays/initialRequirementsModeling.htm" target="_blank">Agile Modeling site</a> offers conceptual (or “slim”) data modeling as an option in the initial envisioning stage.</li>
<li>Informally searching requirements definition templates available on the web, I found that about a third recommend including conceptual data models.</li>
</ul>
<p><strong>Benefits of data modeling in requirements analysis</strong></p>
<p>The BABOK separates requirements gathering from requirements analysis, defining requirements analysis as an essential step to organize, prioritize, and validate elicited requirements. Elicited requirements are the business objectives of the system. The analysis step organizes those objectives in a way that both makes sense to the business and guides subsequent application design.  Conceptual data modeling in this stage helps ensure requirements completeness, consistency, and communications:</p>
<p><strong>Completeness:</strong> In my experience most requirements analysis is process-based, and the most common tool the “swim lane” activity diagram.  While such techniques are essential for understanding complex processes, they can miss requirements that aren’t directly involved in the process itself.  For example, a complex process might reference federal, state, and local tax rates by zip code.  Analysts who are heads-down in defining the process might neglect the need for at least annual refresh of the tax rate tables.  Data modelers thinking in terms of business objects and events and their life cycles would be less likely to miss that one.  This kind of review is formalized in the “CRUD Matrix” a table identifying which business activities create, read, update, or delete which business entities.</p>
<p><strong>Consistency:</strong> Another challenge with process-oriented techniques is, for large systems, the risk of inconsistency in definition of business objects and events.  For example, I worked on requirements definition of a specialized order processing system.  Separate sub-teams defined field and headquarters processes, and as a result there were incompatible definitions of critical concepts like “customer” and “order”.  Time pressures made it difficult for the two sub-teams to work together to make their work consistent.  A separate data modeling sub-team can provide a reference point for object and event definitions and promote consistency between separate process analysis teams (on COTS installations the product database itself serves as the reference data model for separate process definition teams).</p>
<p><strong>Communications: </strong>Data management professional Peter Carr recounted to me his experience as a consultant on a large project: “the Conceptual Diagram helped us think about all the current state situations, and broadly about the relationships between entities in the organization.  It helped us to ask questions of the business when they were looking to enhance or build new systems to solve business requirements.  Paraphrasing executive colleague Rich Hartt, “the enterprise data model is like a piece of art, it provides a picture into the business that offers new insight through its drawing and interpretation&#8217;.  He went on to tell the key business leaders that the enterprise data model will continually be changing, but that it helped them gain understanding of their business in a different way than written business rules”.</p>
<p>For relational database applications, data modeling applies the same conceptual tool throughout the development cycle.  A conceptual data model used to define the problem domain uses the same structure and symbols as a physical database design, although of course it uses fewer.  On the other hand, activity diagrams and data flow diagrams are fundamentally different in nature from the software that they describe.  In effect, process designers need to translate analysis artifacts into a different language.  Logical and physical data modelers use exactly the same language as the business analysts who complete the conceptual data model.</p>
<p>My colleague Grayson Gorman cites “<a title="Key reasons for project failure" href="http://blogs.captechconsulting.com/blog/grayson-gorman/key-reasons-project-failure" target="_blank">Poorly Defined / Missed Requirements</a>” as a key contributor to IT project failure.  In my view making data modeling a more prevalent part of requirements definition could help by improving requirements completeness, consistency, and communication with business participants, and promote a seamless transition from requirements to design.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertlambert.net/2010/07/use-conceptual-data-modeling-in-requirements-definition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Saturday #30, Richmond Virginia, April 10, 2010</title>
		<link>http://robertlambert.net/2010/04/sql-saturday-30-richmond-virginia-april-10-2010/</link>
		<comments>http://robertlambert.net/2010/04/sql-saturday-30-richmond-virginia-april-10-2010/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 16:44:06 +0000</pubDate>
		<dc:creator>Bob</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Data Management]]></category>
		<category><![CDATA[Data Modeling]]></category>
		<category><![CDATA[Database Design]]></category>
		<category><![CDATA[Requirements]]></category>

		<guid isPermaLink="false">http://robertlambert.net/?p=900</guid>
		<description><![CDATA[Thanks to all who attended my presentations at SQL Saturday on April 10.  Here are the materials from my two presentations: - The Business End of Data Modeling (2.5m powerpoint presentation) - Normalize Metadata For Data Integration Analysis (5.5m full version, zip including presentation and code samples) - Normalize Metadata For Data Integration Analysis (small) [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to all who attended my presentations at SQL Saturday on April 10.  Here are the materials from my two presentations:</p>
<p>- <a href="http://robertlambert.net/wp-content/uploads/2010/04/BusinessEndOfDataModeling20100410.pps">The Business End of Data Modeling</a> (2.5m powerpoint presentation)</p>
<p>- <a href="http://robertlambert.net/wp-content/uploads/2010/04/NormalizeMetadataForDataIntegrationAnalysis.zip">Normalize Metadata For Data Integration Analysis</a> (5.5m full version, zip including presentation and code samples)</p>
<p>- <a href="http://robertlambert.net/wp-content/uploads/2010/04/NormalizeMetadataForDataIntegrationAnalysissmall.zip">Normalize Metadata For Data Integration Analysis (small)</a> (2m reduced size version, graphics removed from ppt file)</p>
<p>Here are some quick notes for those looking to run the Metadata prototype:</p>
<p>The prototype metadata database includes SQL Server 2008 data definition language and data manipulation language (DDL and DML) needed to create the database and populate it with tables and columns from Microsoft’s AdventureWorksDW sample database. It also includes a sample requirements spreadsheet and source-to-target map, and SSIS jobs to load the spreadsheets to corresponding metadata tables. These define fictional requirements and mappings to populate the AdventureWorksDW FACTInternetSales table from tables in the AdventureWorks sample database.</p>
<p>AdventureWorks and AdventureWorksDW are available here: <a title="AdventureWorks DB and DW downloads" href="http://msftdbprodsamples.codeplex.com/Wikipage" target="_blank">http://msftdbprodsamples.codeplex.com/Wikipage</a> (accessed 4/14/2010)</p>
]]></content:encoded>
			<wfw:commentRss>http://robertlambert.net/2010/04/sql-saturday-30-richmond-virginia-april-10-2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Business requirements up front</title>
		<link>http://robertlambert.net/2010/03/plan-decide-ac/</link>
		<comments>http://robertlambert.net/2010/03/plan-decide-ac/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 20:38:03 +0000</pubDate>
		<dc:creator>Bob</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Alignment]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Business Case]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Strategy]]></category>

		<guid isPermaLink="false">http://robertlambert.net/?p=866</guid>
		<description><![CDATA[&#8220;Our goals can only be reached through a vehicle of a plan, in which we must fervently believe, and upon which we must vigorously act. There is no other route to success.&#8221; &#8211; Pablo Picasso It is an old story: about 30% of IT application projects succeed, 45% are &#8220;challenged,&#8221; and the other quarter fail [...]]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px;"><em>&#8220;Our goals can only be reached through a vehicle of a plan, in which we must fervently believe, and upon which we must vigorously act. There is no other route to success.&#8221; &#8211; Pablo Picasso<br />
</em></p>
<p>It is an old story: about 30% of IT application projects succeed, 45% are &#8220;challenged,&#8221; and the other quarter fail altogether.   That&#8217;s the consistent result over the years of the Standish Group Study of Project Outcomes.  Jorge Dominguez, <a title="The Curious Case of the CHAOS Report 2009" href="http://www.projectsmart.co.uk/the-curious-case-of-the-chaos-report-2009.html" target="_blank">here</a>, displays a chart of the remarkably similar results since 1994.  Not a pretty picture, right?  Some question the validity of the Standish studies, but Scott Ambler parallels the Standish story in a recent Dr Dobbs column called &#8220;<a title="Lies, Great Lies, and Software Development Project Plans" href="http://www.drdobbs.com/architecture-and-design/218700176;jsessionid=LGGO4SWIVFMNZQE1GHPSKH4ATMY32JVN" target="_blank">Lies, Great Lies, and Software Development Project Plans</a>,&#8221; which itemizes the strategies commonly used by IT project managers to &#8220;stay out of trouble&#8221; when schedule/budget results don&#8217;t match initial estimates.  For example, &#8220;18% change the original schedule to reflect the actual results&#8221;.</p>
<p>The frequent reaction to stats like these is to scapegoat the IT folks by finding fault with their tools, processes, or skills.  If we just had a more efficient methodology, or a slick development suite, or a more highly skilled team, or a better project process, were more agile, or whatever, then application projects would be on time, resulting systems would be faultless, and we could drive down outrageous IT costs.</p>
<p>Mr. Ambler plays out the IT perspective in <a title="Estimating on Agile Projects" href="http://www.drdobbs.com/architecture-and-design/223100694;jsessionid=YY1DVF1KVSAFVQE1GHPSKH4ATMY32JVN?cid=RSSfeed_DDJ_All" target="_blank">this column</a> about Agile  project estimation.  Here&#8217;s how I paraphrase the gist of his logic: you can&#8217;t accurately estimate early on due to normal uncertainty of high level requirements; you <em>will</em> get new requirements that <em>will</em> expand scope.  If you offer a range of predicted outcomes, management will hold you to the most optimistic, which will turn out to be a gross underestimate. Your best strategy is to use an accurate estimation method (net or average velocity, described in the article), and be straight with management even if they &#8220;don&#8217;t like what they are hearing&#8221;.</p>
<p>Based on my experience that sequence of events can be distressingly true to life.  But I&#8217;ve been on the other kind of IT project as well, the kind that ends on time, stays on budget, and satisfies the business. The scope of Mr. Ambler&#8217;s article doesn&#8217;t include asking <em>why</em> the requirements are changing so drastically, but if it had, maybe he would have asked questions like these:</p>
<ul>
<li>Does the business unit involved have defined objectives and processes?</li>
<li>Are strategic and tactical business objectives of the project defined, and do they support the business unit&#8217;s objectives?</li>
<li>Are the critical business success factors of the project defined?</li>
<li>Does the new project change business processes and if so have the new ones been defined yet?</li>
<li>Are there documented business requirements and a process for evaluating/approving changes?</li>
</ul>
<p>Based on what I&#8217;ve seen requirements shifts that nearly double the cost of an IT project, like the ones Mr. Ambler describes, result from inadequate business definition and business requirements analysis.  Of course it is true that the &#8220;initial high-level requirements and architecture envisioning&#8221; early in a typical project only enables an estimate &#8220;in the +/- 30% range&#8221;.  But effective requirements and architecture definition, when based on effective business definition, can enable a much closer estimate.  Further, it is possible to accurately estimate how long it will take to provide the more accurate estimate.</p>
<p>In some cases the business definition prerequisites clearly don&#8217;t yet exist at the outset of an application development effort.  One thing I&#8217;ve seen work in such cases is to divide the project into two separate projects: one to closely define the effort, and if needed make up for any lacking business definition, and another to build, test, and install the application. In between the two phases management will have the opportunity to review the costs/benefits of the project and evaluate whether to continue or not.  <a title="Big project coming up? Learn to  two-step." href="../2009/03/big-project-two-step/" target="_blank">This post</a> describes one project that successfully used that strategy.</p>
<p>Please don&#8217;t read this as repudiation of Agile methods and advocation of &#8220;big requirements up front&#8221;.  Agile methods work well whether or not business prerequisites are defined, but they <em>seem</em> not to work well when (1) the project&#8217;s goals shift with evolving business definition and (2) the plan and budget aren&#8217;t adjusted accordingly.</p>
<p>Business definition, completed as part of a discrete requirements phase, that leads to a management decision to continue or not, gives the team the opportunity to build on a solid business foundation.  It also gives management a reasonable estimate and a chance to bail if the project isn&#8217;t worth it.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertlambert.net/2010/03/plan-decide-ac/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Study data early to improve application alignment</title>
		<link>http://robertlambert.net/2009/05/study-data-early-to-improve-application-alignment/</link>
		<comments>http://robertlambert.net/2009/05/study-data-early-to-improve-application-alignment/#comments</comments>
		<pubDate>Mon, 11 May 2009 21:26:52 +0000</pubDate>
		<dc:creator>Bob</dc:creator>
				<category><![CDATA[Data Management]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Alignment]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Requirements]]></category>

		<guid isPermaLink="false">http://robertlambert.net/?p=447</guid>
		<description><![CDATA[A recurring theme in the literature on IT over the years has been frequent failure of IT projects.  Most studies lay the bulk of the blame on requirements (examples here and here).  One way to improve accuracy and fit-to-purpose of requirements, and thereby promote project success, is to include data analysis as well as process [...]]]></description>
			<content:encoded><![CDATA[<p>A recurring theme in the literature on IT over the years has been frequent failure of IT projects.  Most studies lay the bulk of the blame on requirements (examples <a title="Failed IT Projects (The Human Factor) by Sheila Wilson" href="http://faculty.ed.umuc.edu/%7Emeinkej/inss690/wilson.htm" target="_blank">here</a> and <a title="Unilog seven deadly sins press release" href="http://www.4-developers.com/docs/7-deadly-sins-press-release.pdf" target="_blank">here</a>).  One way to improve accuracy and fit-to-purpose of requirements, and thereby promote project success, is to include data analysis as well as process analysis in the requirements plan.</p>
<p>I’ve cited <a title="DQ, he isn’t so dumb he just needs glasses" href="../2009/05/dq-he-isnt-so-dumb-he-just-needs-glasses/" target="_blank">here</a> the need to start data interface analysis early to avoid budget and schedule blow-ups when, as a result of not thinking early about interface complexity, data integration work turns out to be bigger and nastier than anticipated.</p>
<p>Early data study also helps business analysts elicit more detailed and accurate business requirements.  Say a mid-level football (soccer) team in the UK is looking to recruit a couple of strikers who can reliably punch home goals for the club.  The obvious data they seek is (1) the number of goals scored per game by each prospect, and (2) over their careers how much time have they spent on the bench due to injury.  At the same time, this club is building a strategic recruiting system to support growth into the higher echelons of English football.  A process-oriented requirements strategy (like the one described <a title="A pretty good requirements analysis checklist" href="../2009/02/requirements-analysis-plan/" target="_blank">here</a>) asks the team&#8217;s recruiters what they need to in order to get good people into the club, and often emerges with a list of statements about what the system will do (”The system shall provide an interface enabling entry of the following player statistics” or “The system shall provide a report ranking players by the following criteria:…”).</p>
<p>It isn&#8217;t necessarily wrong to start with process analysis, especially when backed up with formal techniques like use cases, data flow diagramming, or others, but addition of data analysis early provides ability to be far more perceptive into the real business needs.  Without interviewing anyone a data analyst can know that there are many goals in a game of soccer (OK, to some not nearly enough, but that’s another story), that the attributes of a game include location, weather conditions, date and time, whether it&#8217;s regular season or playoff, and more.  Attributes of a goal: time during the game; left foot, right foot, or head; did it come from a set play or in the run of play; from the left or right side of the field, and much more.</p>
<p>The analyst who knows the data and understands its structure can probe with questions like whether a player tends to score at the end of games, or would it be useful to find one striker who tends to score from the left side of the field and another who scores from the right?  By understanding the data an analyst can understand the business problem more deeply, build better rapport with business people  by asking more informed questions, and cross the business/IT communications gap to define the right requirements so that the right system gets built.</p>
<p>It may be just the organizations I’ve been exposed to, but in my experience data analysis isn&#8217;t typically part of the requirements effort.  Supporting this point, the author of the <a title="&quot;Business analysis&quot; From Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/Business_analysis" target="_blank">wikipedia page on business analysis</a> entirely omits data analysis, apparently favoring a process-only approach.  On the other hand, object-based techniques offer a balanced approach, studying both data and process by representing things like goals, games, and players as objects with their own attributes and behaviors.  In addition, the <a title="IIBA" href="http://www.theiiba.org/am/" target="_blank">International Institute of Business Analysts (IIBA)</a> includes data-oriented along with process-oriented techniques in its Business Analysis Body of Knowledge (BABOK).</p>
<p>As process/data balance early on in the application lifecycle becomes more widespread analysts should generate more insightful requirements and, other things being equal, the success rate of IT application projects should improve.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertlambert.net/2009/05/study-data-early-to-improve-application-alignment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No business value in nulls</title>
		<link>http://robertlambert.net/2009/04/no-business-value-in-nulls/</link>
		<comments>http://robertlambert.net/2009/04/no-business-value-in-nulls/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 22:10:43 +0000</pubDate>
		<dc:creator>Bob</dc:creator>
				<category><![CDATA[Analysis]]></category>
		<category><![CDATA[Data Management]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Data Modeling]]></category>
		<category><![CDATA[Database Design]]></category>

		<guid isPermaLink="false">http://robertlambert.net/?p=345</guid>
		<description><![CDATA[It seems I&#8217;m frequently in conversations about using null to represent a business value.  To paraphrase, say there are credit and cash customers, and there&#8217;s a suggestion to set &#8220;Customer_Type&#8221; to &#8220;C&#8221; for credit and null for cash.  To data and database professionals this is obviously a bad idea, but it&#8217;s not obvious from a [...]]]></description>
			<content:encoded><![CDATA[<p>It seems I&#8217;m frequently in conversations about using null to represent a business value.  To paraphrase, say there are credit and cash customers, and there&#8217;s a suggestion to set &#8220;Customer_Type&#8221; to &#8220;C&#8221; for credit and null for cash.  To data and database professionals this is obviously a bad idea, but it&#8217;s not obvious from a business point of view.</p>
<p>In a database null means that there is literally no value, or the value is indeterminate.  Null is not the same as zero or blank.  When a database operation involves nulls the result can be difficult to predict for someone not practiced in SQL.  In many cases the answer is null.  For example, 1+0=0 but 1+null=null.  In plain English, what you&#8217;re asking the DBMS to do in the latter case is to add 1 to [I don't know what], and of course 1+[I don't know what] equals [I don't know what].</p>
<p>So, if you use null to represent a business value then you might not get the results you&#8217;re looking for when you try to get business answers out of your database.  For example, say &#8220;C&#8221; represents credit customers and null represents cash customers, and you have 2 cash and 1 credit customers.   In SQL Server if you use a Count function to tally all of your cash customers the answer isn&#8217;t 2, it is null.</p>
<p>That&#8217;s one example of why it&#8217;s not a good idea to try to represent a business fact with a null value.  It doesn&#8217;t make business sense and in this case the DBMS, correctly, won&#8217;t make sense of it for you.</p>
<p>To be clear, whether or not a given database column permits null values is an entirely different question, best left to database designers.  For example, a database table might record which patient occupies which hospital bed.  It may be reasonable and correct to assign a null patient ID if the bed is currently available.  However, there are alternative methods of representing this situation, and the database designer should be free to choose the right alternative taking into account the specifics of the application under development.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertlambert.net/2009/04/no-business-value-in-nulls/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A pretty good requirements analysis checklist</title>
		<link>http://robertlambert.net/2009/02/requirements-analysis-plan/</link>
		<comments>http://robertlambert.net/2009/02/requirements-analysis-plan/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 10:16:31 +0000</pubDate>
		<dc:creator>Bob</dc:creator>
				<category><![CDATA[Analysis]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Requirements]]></category>

		<guid isPermaLink="false">http://robertlambert.net/?p=58</guid>
		<description><![CDATA[Recently I was asked for a high level requirements plan for a large IT conversion.  I googled around a little for something standard.  I found some good references (see links at the bottom of this post), but not exactly what I was looking for: a simple, method-agnostic layout of the high level steps and checkpoints [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I was asked for a high level requirements plan for a large IT conversion.  I googled around a little for something standard.  I found some good references (see links at the bottom of this post), but not exactly what I was looking for: a simple, method-agnostic layout of the high level steps and checkpoints in requirements for a big project, emphasizing interactions with business people.   I then rifled my files to find the example below.</p>
<p>This summary plan frames up interactions with business subject matter experts and their review of results.  The table lays out the steps, &#8220;granularity&#8221; (meaning how often each step is carried out), what comes out of each step, who does the work, and offers a few notes.</p>
<p>Before the table, here are two important definitions:</p>
<ul>
<li><strong>Sponsor: </strong>Very early on in your project you should identify the one person who you need to make happy in order to succeed.   The bigger the project, the higher up the sponsor.  Keep in touch to make sure they know what&#8217;s going on, keep them happy, and if something happens that will make them not happy don&#8217;t keep it secret.  Maintain a vibrant risk/issue process so that you can give them early warning of bad possibilities and they can help early.</li>
<li><strong>Stakeholder: </strong>A stakeholder is anyone who will benefit from <em>or be harmed by</em> your project.  Requirements come from stakeholders.  Be sure to build support even with the latter group if at all possible, and at least make the adjustments that will keep them from working to prevent you from succeeding.</li>
</ul>
<p>Careful, this is just an empty vessel.  Within this high level framework a team can apply whatever requirements techniques they want.  (In fact, I highly recommend structured analysis techniques like use cases or process models, but that&#8217;s for the requirements team and this framework is for the PM).  Of course a smaller effort suitable for agile techniques wouldn&#8217;t need something like this.  This is for big transitions like conversion to a new COTS package, for example, where it is easy to get lost in the detail.</p>
<p>Hopefully if you&#8217;re a PM on a big project you&#8217;ll find this framework as useful as I did.</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<table class="MsoTableGrid" style="margin: auto auto auto 5.4pt; width: 488.8pt; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0" width="652">
<thead>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 62.2pt; padding-top: 0in; background-color: transparent; border: windowtext 1pt solid;" width="83" valign="bottom">
<p class="MsoNormal" style="margin: 0in 0in 0pt; text-align: center;" align="center"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt; font-family: Calibri;">Step</span></strong></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 72.9pt; padding-top: 0in; background-color: transparent;" width="97" valign="bottom">
<p class="MsoNormal" style="margin: 0in 0in 0pt; text-align: center;" align="center"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt; font-family: Calibri;">Granularity</span></strong></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 97.75pt; padding-top: 0in; background-color: transparent;" width="130" valign="bottom">
<p class="MsoNormal" style="margin: 0in 0in 0pt; text-align: center;" align="center"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt; font-family: Calibri;">Work Products</span></strong></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 111.95pt; padding-top: 0in; background-color: transparent;" width="149" valign="bottom">
<p class="MsoNormal" style="margin: 0in 0in 0pt; text-align: center;" align="center"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt; font-family: Calibri;">Responsible Group</span></strong></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 2in; padding-top: 0in; background-color: transparent;" width="192" valign="bottom">
<p class="MsoNormal" style="margin: 0in 0in 0pt; text-align: center;" align="center"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt; font-family: Calibri;">Notes</span></strong></p>
</td>
</tr>
</thead>
<tbody>
<tr style="mso-yfti-irow: 1; page-break-inside: avoid;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 62.2pt; padding-top: 0in; background-color: transparent;" width="83" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Prerequisite</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 72.9pt; padding-top: 0in; background-color: transparent;" width="97" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">n/a</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 97.75pt; padding-top: 0in; background-color: transparent;" width="130" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; text-indent: -0.25in; mso-list: l0 level1 lfo1;"><span style="font-size: 10pt; font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;">-<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 10pt; font-family: Calibri;">Scope definition</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 111.95pt; padding-top: 0in; background-color: transparent;" width="149" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; text-indent: -0.25in; mso-list: l0 level1 lfo1;"><span style="font-size: 10pt; font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;">-<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 10pt; font-family: Calibri;">Project manager</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 2in; padding-top: 0in; background-color: transparent;" width="192" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Defines context for requirements gathering by defining project objectives, constraints, stakeholders, and schedule</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2; page-break-inside: avoid;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 62.2pt; padding-top: 0in; background-color: transparent;" width="83" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Preparation</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 72.9pt; padding-top: 0in; background-color: transparent;" width="97" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">n/a</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 97.75pt; padding-top: 0in; background-color: transparent;" width="130" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; text-indent: -0.25in; mso-list: l0 level1 lfo1;"><span style="font-size: 10pt; font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;">-<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 10pt; font-family: Calibri;">Interview checklist</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; text-indent: -0.25in; mso-list: l0 level1 lfo1;"><span style="font-size: 10pt; font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;">-<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 10pt; font-family: Calibri;">Stakeholder overview</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; text-indent: -0.25in; mso-list: l0 level1 lfo1;"><span style="font-size: 10pt; font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;">-<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 10pt; font-family: Calibri;">Requirements Standards</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 111.95pt; padding-top: 0in; background-color: transparent;" width="149" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; text-indent: -0.25in; mso-list: l0 level1 lfo1;"><span style="font-size: 10pt; font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;">-<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 10pt; font-family: Calibri;">Requirements team</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; text-indent: -0.25in; mso-list: l0 level1 lfo1;"><span style="font-size: 10pt; font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;">-<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 10pt; font-family: Calibri;">Project manager</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"> </p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; text-indent: -0.25in; mso-list: l0 level1 lfo1;"><span style="font-size: 10pt; font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;">-<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 10pt; font-family: Calibri;">Requirements team with PM</span></p>
<p> </td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 2in; padding-top: 0in; background-color: transparent;" width="192" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Interview<span style="mso-spacerun: yes;"> </span>checklist should include date range, meeting participants, meeting objectives in terms of expected objects specified</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 3; page-break-inside: avoid;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 62.2pt; padding-top: 0in; background-color: transparent;" width="83" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Interview</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 72.9pt; padding-top: 0in; background-color: transparent;" width="97" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">At least once per stakeholder group</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 97.75pt; padding-top: 0in; background-color: transparent;" width="130" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; text-indent: -0.25in; mso-list: l0 level1 lfo1;"><span style="font-size: 10pt; font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;">-<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 10pt; font-family: Calibri;">Meeting notes</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; text-indent: -0.25in; mso-list: l0 level1 lfo1;"><span style="font-size: 10pt; font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;">-<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 10pt; font-family: Calibri;">Risks / Issues / Actions</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; text-indent: -0.25in; mso-list: l0 level1 lfo1;"><span style="font-size: 10pt; font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;">-<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 10pt; font-family: Calibri;">Draft Stakeholder Group requirements</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 111.95pt; padding-top: 0in; background-color: transparent;" width="149" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Requirements team </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"> </p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 2in; padding-top: 0in; background-color: transparent;" width="192" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Stakeholder group requirements are from the point of view of a single stakeholder group only</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 4; page-break-inside: avoid;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 62.2pt; padding-top: 0in; background-color: transparent;" width="83" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Stakeholder Validation</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 72.9pt; padding-top: 0in; background-color: transparent;" width="97" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">At least once per stakeholder group</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 97.75pt; padding-top: 0in; background-color: transparent;" width="130" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Stakeholder feedback on / corrections<span style="mso-spacerun: yes;"> </span>to the three items resulting from Interviews</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 111.95pt; padding-top: 0in; background-color: transparent;" width="149" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Requirements team, stakeholder group</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 2in; padding-top: 0in; background-color: transparent;" width="192" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"> </p>
</td>
</tr>
<tr style="mso-yfti-irow: 5; page-break-inside: avoid;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 62.2pt; padding-top: 0in; background-color: transparent;" width="83" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Analysis</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 72.9pt; padding-top: 0in; background-color: transparent;" width="97" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Either after all interviews or throughout the interview process</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 97.75pt; padding-top: 0in; background-color: transparent;" width="130" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Project Requirements</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 111.95pt; padding-top: 0in; background-color: transparent;" width="149" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Requirements team (with stakeholder groups)</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 2in; padding-top: 0in; background-color: transparent;" width="192" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Project Requirements result from analysis/refinement of requirements by resolution of inconsistencies, conflicts, and errors discovered in close review.<span style="mso-spacerun: yes;"> </span>This step should involve dialog with stakeholder groups. </span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 6; page-break-inside: avoid; mso-yfti-lastrow: yes;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 62.2pt; padding-top: 0in; background-color: transparent;" width="83" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Approval</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 72.9pt; padding-top: 0in; background-color: transparent;" width="97" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">PMO, Stakeholder Groups, Project Sponsor</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 97.75pt; padding-top: 0in; background-color: transparent;" width="130" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Approved project requirements</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 111.95pt; padding-top: 0in; background-color: transparent;" width="149" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt; font-family: Calibri;">Project management</span></p>
</td>
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 2in; padding-top: 0in; background-color: transparent;" width="192" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"> </p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"> </p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"> Here are some of the other references I found along the way, <em>caveat emptor</em>:</p>
<ul>
<li><a href="http://www.outsource2india.com/software/RequirementAnalysis.asp" target="_blank">http://www.outsource2india.com/software/RequirementAnalysis.asp</a></li>
<li><a href="http://en.wikipedia.org/wiki/Requirements_analysis" target="_blank">http://en.wikipedia.org/wiki/Requirements_analysis</a></li>
<li><a href="http://www.jiludwig.com/HCI_Journal_article.html" target="_blank">http://www.jiludwig.com/HCI_Journal_article.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://robertlambert.net/2009/02/requirements-analysis-plan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free form diagrams part 3: just right, with a few rules</title>
		<link>http://robertlambert.net/2009/02/free-form-diagrams-part-3/</link>
		<comments>http://robertlambert.net/2009/02/free-form-diagrams-part-3/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 16:02:44 +0000</pubDate>
		<dc:creator>Bob</dc:creator>
				<category><![CDATA[Analysis]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Business Analysis]]></category>

		<guid isPermaLink="false">http://robertlambert.net/?p=81</guid>
		<description><![CDATA[Free form diagramming doesn’t only mean “no rules”, it also means “just right”. This post, last in a three part series on free form diagramming, gives some simple guidelines for getting the technique right.  Part one talked about the tension between rigor and expression in diagramming for analysis and design, and how more precise diagrams [...]]]></description>
			<content:encoded><![CDATA[<p>Free form diagramming doesn’t only mean “no rules”, it also means “just right”.</p>
<p>This post, last in a three part series on free form diagramming, gives some simple guidelines for getting the technique right.  Part one talked about the tension between rigor and expression in diagramming for analysis and design, and how more precise diagrams can hinder rather than help communications with business people.  Part two reviewed free form diagramming in practice.</p>
<p>While it is impossible to specify format and structure of a free form diagram in advance, here are some useful guidelines to follow when building your free form diagram:</p>
<p>•    <strong>Rule number one: draw it as you see it. </strong>Typically, an analyst uses a free form diagram because he/she already pictures a business process.  Trust your mental picture and get it down on the page.  Then, go through the following checklist to make sure it says what you want it to say.</p>
<p>•    <strong>Model real world processes, things, and events. </strong>Free form diagrams have one great advantage over Use Case Diagrams, Data Flow Diagrams, and the rest: they are concrete rather than abstract.  For example, in a free form diagram you can symbolize a shopper with a clipart picture of someone choosing a soup can from a grocery store shelf.  The free form diagram should clearly represent things from the real world: organizations, locations, business processes, interfaces, etc.</p>
<p>•    <strong>Use symbols consistently. </strong>Look at each repeated rectangle, line, circle, icon, etc, and verify that everything with the same shape represents the same type of thing or event.</p>
<p>•    <strong>Speak the language of the audience. </strong>A free form diagram should depict things business people care about in recognizable terms.  For example, accountants might readily understand boxes labeled GL, AP and AR for general ledger, accounts payable, and accounts receivable.  A shipping clerk might quickly interpret a process illustration showing labeled icons shaped like trucks and warehouses.</p>
<p>•    <strong>Arrangement on the page conveys meaning. </strong>Frequently, free form diagrams group objects that belong together on the page.  In other cases, the diagram shows a definite process flow by the arrangement of objects.  For example, Business Intelligence Architecture diagrams typically show information flow from source systems on the left to business reporting on the right.  Could this kind of flow or grouping improve your diagram?</p>
<p>•    <strong>Limit the number and complexity of objects on the diagram. </strong>Most often, a meaningful diagram shows relatively few objects, organizes them in a sensible way, and does not cross lines.  If you need many objects to tell the story, reduce complexity by arranging them logically.</p>
<p>•    <strong>Work at one level of detail, or clearly indicate differences between levels of detail. </strong>If your diagram includes a box labeled “AP System” then it would not likely make sense for it also to contain another labeled “Journal Voucher Key”.  Diagrams that communicate well are all at the same level of detail or clearly indicate differences in level of detail.</p>
<p>The free form diagram can be an essential part of a successful IT application project by enabling all to understand the target system in the same way and helping business people understand critical functionality.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertlambert.net/2009/02/free-form-diagrams-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free form diagrams part 2:  real world applications</title>
		<link>http://robertlambert.net/2009/02/free-form-diagrams-part-2/</link>
		<comments>http://robertlambert.net/2009/02/free-form-diagrams-part-2/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 14:52:23 +0000</pubDate>
		<dc:creator>Bob</dc:creator>
				<category><![CDATA[Analysis]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Business Analysis]]></category>

		<guid isPermaLink="false">http://robertlambert.net/?p=69</guid>
		<description><![CDATA[This is part two of a three part series on free form diagramming for IT projects.  This entry reviews free form diagramming in practice. Part one talked about the tension between rigor and expression in diagramming for analysis and design, and how more precise diagrams can hinder rather than help communications with business people.  Part [...]]]></description>
			<content:encoded><![CDATA[<p>This is part two of a three part series on free form diagramming for IT projects.  This entry reviews free form diagramming in practice. Part one talked about the tension between rigor and expression in diagramming for analysis and design, and how more precise diagrams can hinder rather than help communications with business people.  Part three will provide a few simple guidelines for getting it right.</p>
<p>Some current development tools and methods do include the free form diagram in their toolbox.  For example, Scott Ambler’s Agile Modeling site includes a page on free form diagrams (<a href="http://www.agilemodeling.com/artifacts/freeForm.htm" target="_blank">http://www.agilemodeling.com/artifacts/freeForm.htm</a>), and the IBM tool XDE has provided an integrated free form diagram (<a href="http://www-128.ibm.com/developerworks/rational/library/915.html" target="_blank">http://www-128.ibm.com/developerworks/rational/library/915.html</a>).</p>
<div class="wp-caption aligncenter" style="width: 260px"><a href="http://www.captechventures.com/sites/default/files/advantage/capTech_RefArch.pdf" target="_blank"><img title="CapTech Reference Architecture" src="http://www.captechventures.com/sites/all/themes/captech/images/capTechRefArch_thumb.jpg" alt="A Free Form Diagram Showing the Broad Outlines of a System" width="250" height="161" /></a><p class="wp-caption-text">A Free Form Diagram Showing the Broad Outlines of a System</p></div>
<p>Free form diagrams can be especially useful in illustrating the overall scope of an IT development effort.  For example, XDE product literature cites the free form diagram’s “capabilities to communicate broad ideas about the direction of [a] solution”.  IT software product marketers frequently bear out this advantage over structured modeling with attractive diagrams describing their products and services, as in the diagram above.  Such diagrams enable companies to “level set” the terms of a conversation, providing a reference point for providing more detailed information about the product.</p>
<p>A similar diagram can provide a reference for IT project participants.  One, produced jointly early on in custom development of a financial system by the primary business contact and project architect, helped build consensus with designers, database administrators, programmers, and business people.  Some on the project considered this shared vision of the planned system one key to the project’s success.</p>
<p>Both of these examples illustrate the most common use of the free form diagram: to depict “the fundamental organization of a system [or business function], embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution” (<a href="http://en.wikipedia.org/wiki/System_architecture" target="_blank">http://en.wikipedia.org/wiki/System_architecture</a>).</p>
<p>Because the free form diagram can seem more concrete than other, more abstract, models, a well-constructed free form diagram is a great way to communicate complexity to an audience of both technical and non-technical participants.</p>
<p>The free form diagram is also useful in other situations.  Sometimes a requirements team works with business users who have a diagram describing their current process.  In that case the team might use the same format to describe the new process.  In other cases it might be useful to improve readability by drawing a process flow on a map of the shop floor, or using icons representing real objects and events rather than class symbols on a class model.  The point is to create a medium that precisely matches the audience with the message.</p>
<p>Part 3 of the Free Form Diagrams series provides a few simple guidelines for success with this technique.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertlambert.net/2009/02/free-form-diagrams-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free form diagrams part 1:  rigor versus business appeal</title>
		<link>http://robertlambert.net/2009/02/free-form-diagrams-part-1/</link>
		<comments>http://robertlambert.net/2009/02/free-form-diagrams-part-1/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 14:34:44 +0000</pubDate>
		<dc:creator>Bob</dc:creator>
				<category><![CDATA[Analysis]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Business Analysis]]></category>

		<guid isPermaLink="false">http://robertlambert.net/?p=63</guid>
		<description><![CDATA[One effective way of communicating complexity, especially in the overall architecture of a system, is the free form diagram.  A free form diagram can directly address unique characteristics of a system in a way that business people can understand. Out on a walk some years ago I met an acquaintance who happened to be a [...]]]></description>
			<content:encoded><![CDATA[<p>One effective way of communicating complexity, especially in the overall architecture of a system, is the free form diagram.  A free form diagram can directly address unique characteristics of a system in a way that business people can understand.</p>
<p>Out on a walk some years ago I met an acquaintance who happened to be a professor of Computer Science.  We talked shop (I worked in the IT department of the local electric utility) and he asked me what methods we used for mathematically proving program correctness.  I confess I laughed.  My team was struggling to figure out just what the business really wanted – forget mathematical proofs!</p>
<p>Our conversation highlights the tension between rigor and expression in diagramming to support IT projects.  Developers need precise diagrams rigorous enough to accurately reflect complex processes.  However, that precision and detail can make the diagrams at best boring and at worst intimidating to business people.  Often they don’t have the time or patience required to sit through the explanations needed to understand such diagrams. Requirements meetings frequently end early with business participants walking off grumbling about IT non-alignment.</p>
<p>UML is today’s de facto analysis and design diagramming standard. To the OO professional UML provides a rich, expressive, and consistent set of conceptual tools that continue to evolve.  Work is underway to improve the accuracy and precision of UML with respect to the target code. (<a href="http://www.omg.org/docs/ad/00-01-07.pdf" target="_blank">http://www.omg.org/docs/ad/00-01-07.pdf</a>).<br />
The problem is that more precision will make the UML diagrams more complex and less understandable to non-coders, making the diagrams even less useful in communication with business people.</p>
<p>For project success business people need to be able to communicate their needs freely and completely.  Requirements analysts need to capture, record, and replay business needs for confirmation, and let the business expert return to other work as quickly as possible.  These communications often work best with pictures rather than words, and of course when everyone understands the picture the same way.  Asking a busy floor supervisor to review a formal class model is literally having him or her review specifications in a foreign language.</p>
<p>One solution is for developers to communicate with business people using free form diagrams, expressive yet rigorous diagrams with drawing conventions tailored to the audience.</p>
<p>More to come in parts two and three of this series.  Part 2 talks about using free form diagrams in practices, and Part 3 provides some simple guidelines for successfully using free form diagrams.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertlambert.net/2009/02/free-form-diagrams-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data modeling: essential business skill</title>
		<link>http://robertlambert.net/2009/01/data-modeling-essential-business-skill/</link>
		<comments>http://robertlambert.net/2009/01/data-modeling-essential-business-skill/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 15:42:47 +0000</pubDate>
		<dc:creator>Bob</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Data Modeling]]></category>

		<guid isPermaLink="false">http://robertlambert.net/?p=8</guid>
		<description><![CDATA[Everyone involved in managing or improving a business process should understand data modeling.  For real. And almost everyone is in a position to improve a business process by understanding the current one and making suggestions to improve it.  Understanding a business process means understanding business objects, events, the relations among them, and the business rules [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone involved in managing or improving a business process should understand data modeling.  For real. And almost everyone is in a position to improve a business process by understanding the current one and making suggestions to improve it.  Understanding a business process means understanding business objects, events, the relations among them, and the business rules that govern the process, and that&#8217;s what data modeling is all about.</p>
<p>Sure, data modeling <em>is</em> the first step to designing a database, but that&#8217;s just a coincidence.  A well designed database is well designed both because it&#8217;s efficient <em>and </em>because it matches business needs.</p>
<p>The first step in data modeling is understanding <em>entities</em>.  An entity is like a business object: examples may include customer, order, product, patient, blogger, post, or whatever.  The next step is to understand <em>relationships</em> among the entities, like  <em>a customer may place many orders </em>or  <em>a post is written by a blogger</em>.   Then the data modeler thinks about the <em>attributes</em> of the entities, like the <em>name </em>of the blogger, the <em>price</em> of the product, and so on.  The attributes and relationships are where the business rules come from.  Examples of rules may be &#8220;<em>a post is written by exactly one blogger&#8221; </em>or <em>&#8220;every order must have a shipping address.&#8221; </em>It&#8217;s not really a sequential step by step thing, more like a series of really interesting brainstorm sessions, but you get the idea.</p>
<p>Data modeling can get really complex, especially when it includes enough detail to generate an actual database, but that&#8217;s beside the point.  We&#8217;re talking about clear thinking about business things, events, relationships, and rules.  The point is that this kind of thinking can enable a business person to understand better the things, events, and rules of a business, and then to define more rational processes based on that understanding.</p>
<p>Today a lot of the problems that data modeling helps reveal relate to overcomplicated org charts and artificial complexities of legacy information systems.  Often the business evolves around the system, and it takes clear thinking to untangle the process spaghetti that results.</p>
<p>I worked with one company that organized itself by four different product line channels, served by matrixed support functions like accounts receivable and claims.  Worked pretty well, except when you wanted to know all of your contacts with a given customer, for example.  The same customer could have had a different record for each channel, then more information was socked away in the matrixed support functions.   Furthermore, the customer records were all laid out differently, and had different addresses, contact information, billing instructions, and so on.</p>
<p>Maybe I&#8217;m oversimplifying, but shouldn&#8217;t one customer have one file with the same information that everyone uses?  It seems to me that if applied in the real world this data-oriented perspective could really make things simpler and more cost effective.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertlambert.net/2009/01/data-modeling-essential-business-skill/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
