{"id":4354,"date":"2016-05-26T00:46:57","date_gmt":"2016-05-25T16:46:57","guid":{"rendered":"http:\/\/people.utm.my\/haslinasarkan\/?p=4354"},"modified":"2016-05-25T13:53:04","modified_gmt":"2016-05-25T05:53:04","slug":"requirements","status":"publish","type":"post","link":"https:\/\/people.utm.my\/haslinasarkan\/requirements\/","title":{"rendered":"Requirements"},"content":{"rendered":"<p>Today I read an interesting article on software requirements from\u00a0<a href=\"http:\/\/ericsink.com\/articles\/Requirements.html\">http:\/\/ericsink.com\/articles\/Requirements.html<\/a>. \u00a0Do read it when you have the time.<\/p>\n<p>&nbsp;<\/p>\n<p>Here is an excerpt of the article:<\/p>\n<p>&nbsp;<\/p>\n<h3>What is a Spec?<\/h3>\n<p>A spec is short for &#8220;specification&#8221;.\u00a0 A spec is something that describes what a piece of software should do.<\/p>\n<p>For the moment I am being deliberately broad and inclusive.\u00a0 If you are experienced in software project management, you probably have something very specific in mind when think of the words &#8220;spec&#8221; or &#8220;requirement&#8221;.\u00a0 In fact, it is possible that you are not willing to acknowledge that something is a spec unless it matches up fairly well with your image of same.\u00a0 That&#8217;s okay.\u00a0 Just stay with me.<\/p>\n<p>For now, I&#8217;m saying that anything that is a &#8220;description of what a piece of software should do&#8221; can be considered a spec.\u00a0 This may include:<\/p>\n<ul type=\"disc\">\n<li>A document<\/li>\n<li>A bunch of 3&#215;5 note cards<\/li>\n<li>A spreadsheet containing a list of features<\/li>\n<\/ul>\n<p>I am currently involved in a project where my role is &#8220;The Walking Spec&#8221;.\u00a0 In other words, I am the person who mostly knows everything about how this piece of software should mostly behave.\u00a0 When people need a spec, they ask me a question (footnote 2).\u00a0 I&#8217;m not saying that I am a good spec, but I don&#8217;t think I&#8217;m the worst spec I have ever seen, and I am certainly better that no spec at all.\u00a0 <b>\ud83d\ude42<\/b><\/p>\n<p>Seriously, a spec needs to be in a form which is accessible to more than one person.\u00a0 It needs to be written down, either in a computer or on paper.<\/p>\n<p>But how?<\/p>\n<p>&#8230;..<\/p>\n<p>&nbsp;<\/p>\n<p>on another note Eric Sink wrote:<\/p>\n<h3>Changing Requirements<\/h3>\n<p>If a project gets all the way to completion with bad requirements, the likelihood is that the software will be disappointing.\u00a0 When this happens, the resulting assignment-of-blame exercise can be fun to watch.\u00a0 From a safe distance.<\/p>\n<p>More often, during the project somebody notices a problem with the requirements and changes them along the way.<\/p>\n<p>Marketing:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 By the way, I forgot to mention that the application has to be compatible with Windows 95.<\/p>\n<p>Development:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Windows 95?\u00a0 You&#8217;re kidding, right?\u00a0 People stopped using Win95 over a decade ago!<\/p>\n<p>Marketing:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Oh, and Mac OS 7.6 too.<\/p>\n<p>Development:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 What?\u00a0 We&#8217;re building this app with .NET 3.0 and we&#8217;re already 40% done!<\/p>\n<p>Marketing:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 You&#8217;re half done?\u00a0 That&#8217;s great!\u00a0 Oh, and I forgot to mention we need compatibility with the Atari ST.<\/p>\n<p>Development:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Why didn&#8217;t you tell us this before we started?<\/p>\n<p>Marketing:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Sorry.\u00a0 I forgot.\u00a0 It&#8217;s no problem to change it now, right?<\/p>\n<p>Changing requirements mid-project can be expensive and painful.<\/p>\n<p>However, it is very rare to have a project where all the requirements are known and properly expressed before development begins.\u00a0 So, it behooves us to prepare for changes.\u00a0 If we choose a development process which rigidly requires a perfect spec before construction can begin, we are just setting ourselves up for pain.\u00a0 We need to be a bit more agile.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I read an interesting article on software requirements from\u00a0http:\/\/ericsink.com\/articles\/Requirements.html. \u00a0Do read it when you have the time. &nbsp; Here is an excerpt of the article: &nbsp; What is a Spec? A spec is short for &#8220;specification&#8221;.\u00a0 A spec is something that describes what a piece of software should do. For the moment I am [&hellip;]<\/p>\n","protected":false},"author":6477,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30],"tags":[],"class_list":["post-4354","post","type-post","status-publish","format-standard","hentry","category-research-blog"],"_links":{"self":[{"href":"https:\/\/people.utm.my\/haslinasarkan\/wp-json\/wp\/v2\/posts\/4354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/people.utm.my\/haslinasarkan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/people.utm.my\/haslinasarkan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/people.utm.my\/haslinasarkan\/wp-json\/wp\/v2\/users\/6477"}],"replies":[{"embeddable":true,"href":"https:\/\/people.utm.my\/haslinasarkan\/wp-json\/wp\/v2\/comments?post=4354"}],"version-history":[{"count":0,"href":"https:\/\/people.utm.my\/haslinasarkan\/wp-json\/wp\/v2\/posts\/4354\/revisions"}],"wp:attachment":[{"href":"https:\/\/people.utm.my\/haslinasarkan\/wp-json\/wp\/v2\/media?parent=4354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/people.utm.my\/haslinasarkan\/wp-json\/wp\/v2\/categories?post=4354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/people.utm.my\/haslinasarkan\/wp-json\/wp\/v2\/tags?post=4354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}