<?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>Deversus Software Inc. &#187; Custom Software Development</title>
	<atom:link href="http://blog.deversus.com/category/custom-software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.deversus.com</link>
	<description>Vancouver Web and Software Development Company Blog</description>
	<lastBuildDate>Fri, 20 Jan 2012 19:39:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>How to maintain a vision for your software</title>
		<link>http://blog.deversus.com/2011/11/how-to-maintain-a-vision-for-your-software/</link>
		<comments>http://blog.deversus.com/2011/11/how-to-maintain-a-vision-for-your-software/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 20:25:16 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Custom Software Development]]></category>
		<category><![CDATA[quoting software]]></category>
		<category><![CDATA[socket]]></category>

		<guid isPermaLink="false">http://blog.deversus.com/?p=304</guid>
		<description><![CDATA[(Or how to say no to your customers) Henry Ford said famously in reference to popularizing the automobile: “If I had asked people what they wanted, they would have said a faster horse.” Instead, Ford thought more broadly and created a product that addressed the true needs of his customer. Similar discrimination is key in [...]]]></description>
			<content:encoded><![CDATA[<p></p><h3>(Or how to say no to your customers)</h3>
<p>Henry Ford said famously in reference to popularizing the automobile: “If I had asked people what they wanted, they would have said a faster horse.” Instead, Ford thought more broadly and created a product that addressed the true needs of his customer. Similar discrimination is key in any creative industry, and particularly in software development.</p>
<p>Throughout the development and ensuing public release of <a href="http://www.socketapp.com" target="_blank">our quoting software, Socket</a>, we encountered countless ideas and suggestions for new features from both our own team and our customers. Many were great and would likely serve useful to at least some users, however only a few truly fit the greater goal for our software. Since our goal was to build a sales quoting system that takes care of the grunt work without unnecessarily complicating the process, only a few made it through our gantlet of validation questions.</p>
<h3>Scratch your own itch</h3>
<p>To produce an effective piece of software, a developer must have a clear vision for the goals and design of his product, and must be judicious in deciding what features will and will not make it in. Intimate knowledge of the problem domain is necessary to ensure that the end solution achieves its goals in the least complex manner. The best way to ensure the efficacy of your software is to start by scratching your own itch &mdash; developing a solution for a problem you are naturally familiar with. Naturally, though, this can sometimes come at odds with what customers seek.</p>
<h3>Needs do not equal wants</h3>
<p>Customers don’t always see the big picture, and often misunderstand their real needs. They can often become impatient with a feature, and try to misuse it in an unintended way. In response, it’s often easy for the customer to request new ways of doing what they specifically have in mind.</p>
<p>On the other hand, as a developer, acting on every feature request would quickly turn your product into “bloatware” — bogged down by layer upon layer of confusing and redundant features. (By the same token a developer’s own visions can also lead to boundless “feature rampage”, so restraint must come from within, too.)</p>
<h3>&#8220;Say no by default&#8221;</h3>
<p>Jason Fried and David Heinemeier Hansson, in their book <em><a href="http://37signals.com/rework" target="_blank">Rework</a></em>, give the advice to “say no by default”. The benefit of this position is that popular requests will make themselves heard repeatedly, making it easier to evaluate their importance.</p>
<p>Despite turning down a request, saying “no” doesn’t have to mean leaving your customer high and dry. You can still be diplomatic in response, and even helpful.  Often there is an alternative and perhaps simpler solution that will work just as well at solving the problem at hand, without needing to complicate the software.</p>
<h3>Your vision must withstand the tests of time</h3>
<p>Inevitably, customers will eventually grow out of your product. Resist the urge to grow with them by relentlessly expanding scope, because such a pursuit might risk alienating new customers whom you’ve been targeting all along.</p>
<p>With a clear vision, and as you begin to acquire customers and build an understanding of their needs, it will become easier to thoughtfully refrain from adding undue features — while knowing when to move ahead with those that truly benefit your target market and best serve the product.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deversus.com/2011/11/how-to-maintain-a-vision-for-your-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Make Web Not War in Van!</title>
		<link>http://blog.deversus.com/2011/04/make-web-not-war-in-van/</link>
		<comments>http://blog.deversus.com/2011/04/make-web-not-war-in-van/#comments</comments>
		<pubDate>Mon, 25 Apr 2011 06:07:24 +0000</pubDate>
		<dc:creator>Mike Polga</dc:creator>
				<category><![CDATA[General Technology]]></category>
		<category><![CDATA[Socket]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://blog.deversus.com/?p=289</guid>
		<description><![CDATA[We got a heads up from our friends at Invoke Media about Make Web Not War hitting Vancouver (now totally sold out!) and we thought it would be a great opportunity to check out what they have to offer and network with fellow web devs. The event is on May 7 at Masik Studios and will [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>We got a heads up from our friends at <a href="http://www.invokemedia.com/" target="_blank">Invoke Media</a> about Make Web Not War hitting Vancouver (now totally sold out!) and we thought it would be a great opportunity to check out what they have to offer and network with fellow web devs. The event is on May 7 at <a href="http://maps.google.ca/maps?q=145+West+2nd+Avenue+Vancouver+British+Columbia+V5Y+1C2+&amp;ie=UTF8&amp;hq=&amp;hnear=145+W+2nd+Ave,+Vancouver,+British+Columbia+V5Y+1C2&amp;t=h&amp;z=16" target="_blank">Masik Studios</a> and will showcase a ton of new web tech. We&#8217;re most interested in the cloud computing aspect, as our new SaaS product <a href="http://plugyourbusinessin.com" target="_blank">Socket</a> is hosted in the cloud (Rackspace). With the impressive advances cloud hosting and cloud computing in general has experiences in just the last few years, it will be exciting to take a peek into the future and see what we can look forward to.</p>
<p>You can check out more info on their website: <a href="http://www.webnotwar.ca" target="_blank">http://www.webnotwar.ca</a> &#8211; hope to see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deversus.com/2011/04/make-web-not-war-in-van/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create Your Own Loading Animated .gifs for Free</title>
		<link>http://blog.deversus.com/2011/01/create-your-own-loading-animated-gifs-for-free/</link>
		<comments>http://blog.deversus.com/2011/01/create-your-own-loading-animated-gifs-for-free/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 21:17:23 +0000</pubDate>
		<dc:creator>Mike Polga</dc:creator>
				<category><![CDATA[Custom Software Development]]></category>

		<guid isPermaLink="false">http://blog.deversus.com/?p=258</guid>
		<description><![CDATA[I was looking for a nice loading animated .gif for a site I was working on today, and stumbled upon this site and thought I&#8217;d pass it along: http://preloaders.net]]></description>
			<content:encoded><![CDATA[<p></p><p>I was looking for a nice loading animated .gif for a site I was working on today, and stumbled upon this site and thought I&#8217;d pass it along: <a href="http://preloaders.net/" target="_blank">http://preloaders.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deversus.com/2011/01/create-your-own-loading-animated-gifs-for-free/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Proper Way to Store Currency/Money in mySQL</title>
		<link>http://blog.deversus.com/2011/01/the-proper-way-to-store-currency-money-in-mysql/</link>
		<comments>http://blog.deversus.com/2011/01/the-proper-way-to-store-currency-money-in-mysql/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 01:06:12 +0000</pubDate>
		<dc:creator>Mike Polga</dc:creator>
				<category><![CDATA[Custom Software Development]]></category>

		<guid isPermaLink="false">http://blog.deversus.com/?p=249</guid>
		<description><![CDATA[When storing currency (or any decimal number for that matter) in mySQL, it&#8217;s extremely important to be aware of the differences in the decimal place storage methods available. Doubles and Floats are imprecise storage methods (as they use floating point arithmetic), and can lead to major problems when representing currency, as the cents value is [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>When storing currency (or any decimal number for that matter) in mySQL, it&#8217;s extremely important to be aware of the differences in the decimal place storage methods available. Doubles and Floats are imprecise storage methods (as they use floating point arithmetic), and can lead to major problems when representing currency, as the cents value is obviously important. Thus, <strong>always use the decimal type for currency or money storage in mySQL! </strong>In most cases, 10 digits before the decimal place and 2 digits after should be sufficient, as shown in the screenshot of phpMyAdmin below.</p>
<div id="attachment_250" class="wp-caption aligncenter" style="width: 373px">
	<a rel="attachment wp-att-250" href="http://blog.deversus.com/2011/01/the-proper-way-to-store-currency-money-in-mysql/screen-shot-2011-01-07-at-4-58-11-pm/"><img class="size-full wp-image-250" title="currency mySQL column of the decimal data type" src="http://blog.deversus.com/wp-content/uploads/2011/01/Screen-shot-2011-01-07-at-4.58.11-PM.png" alt="currency mySQL column of the decimal data type" width="373" height="316" /></a>
	<p class="wp-caption-text">phpMyAdmin screenshot showing how to properly store currency/money in mySQL</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.deversus.com/2011/01/the-proper-way-to-store-currency-money-in-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deversus Releases Location-based iPhone App</title>
		<link>http://blog.deversus.com/2009/11/deversus-releases-location-based-iphone-app/</link>
		<comments>http://blog.deversus.com/2009/11/deversus-releases-location-based-iphone-app/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 05:46:33 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[Custom Software Development]]></category>
		<category><![CDATA[Deversus News]]></category>
		<category><![CDATA[iPhone Development]]></category>
		<category><![CDATA[boozehound app]]></category>
		<category><![CDATA[deversus releases liquor store finder app]]></category>
		<category><![CDATA[find closest app]]></category>
		<category><![CDATA[iphone app development]]></category>

		<guid isPermaLink="false">http://blog.deversus.com/?p=136</guid>
		<description><![CDATA[Deversus is pleased to announce that it has launched a location-based iPhone application, built on its proprietary Find Closest Framework. BoozeHound â€” an innovative liquor store finder app for Canadians â€” allows people to find the nearest liquor store with a single touch of the finger. Developed in partnership with Zygoat Creative Tech., BoozeHound was [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Deversus is pleased to announce that it has launched a location-based iPhone application, built on its proprietary Find Closest Framework. <a href="http://www.boozehoundapp.com" target="_blank">BoozeHound</a> â€” an innovative liquor store finder app for Canadians â€” allows people to find the nearest liquor store with a single touch of the finger.</p>
<p><span id="more-136"></span></p>
<p>Developed in partnership with <a href="http://www.zygoat.ca/">Zygoat Creative Tech.</a>, BoozeHound was designed to be simple, effective, and efficient. Built on our innovative &#8220;Find Closest&#8221; platform, we&#8217;re confident that BoozeHound is second to none in its ability to find the nearest liquor stores with ease. The platform boasts some impressive location-aware capabilities, such as realtime connectivity to a geo-spatially indexed database via web service, intelligent map browsing and caching, and inaccurate location reporting. Users of the app will appreciate the quality and quantity of the liquor store data, which includes phone numbers and store hours for most provinces.</p>
<p>The app makes its debut on the Canadian app store on December 1st for $1.99. For more information about the app itself, check out the <a href="http://www.boozehoundapp.com" target="_blank">BoozeHound website</a>.</p>
<div class="wp-caption aligncenter" style="width: 280px">
	<a href="http://www.boozehoundapp.com"><img title="BoozeHound iPhone Liquor Store Finder" src="http://www.boozehoundapp.com/wp-content/themes/wp-coda/images/iphone-list-view.png" alt="BoozeHound iPhone Liquor Store Finder" width="280" height="525" /></a>
	<p class="wp-caption-text">BoozeHound: iPhone Liquor Store Finder App</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.deversus.com/2009/11/deversus-releases-location-based-iphone-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Note about Customer Service (or lack theirof &#8211; 1and1 Internet)</title>
		<link>http://blog.deversus.com/2009/11/a-note-about-customer-service-or-lack-theirof-1and1-internet/</link>
		<comments>http://blog.deversus.com/2009/11/a-note-about-customer-service-or-lack-theirof-1and1-internet/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 21:18:22 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[Custom Software Development]]></category>
		<category><![CDATA[General Technology]]></category>
		<category><![CDATA[1and1 customer service experience]]></category>
		<category><![CDATA[1and1 hosting review]]></category>
		<category><![CDATA[the consequences of poor customer service]]></category>
		<category><![CDATA[the importance of customer service]]></category>

		<guid isPermaLink="false">http://blog.deversus.com/?p=122</guid>
		<description><![CDATA[We recently upgraded our web server to a dedicated package with 1&#38;1. After being moved to the wrong type of server, we called 1&#38;1&#8242;s customer service department to try and have the issue resolved. Our experience with them was so bad, I&#8217;ve decided to write a short article about the importance of customer service and [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>We recently upgraded our web server to a dedicated package with 1&amp;1. After being moved to the wrong type of server, we called 1&amp;1&#8242;s customer service department to try and have the issue resolved. Our experience with them was so bad, I&#8217;ve decided to write a short article about the importance of customer service and the consequences that even one bad customer experience can bring.</p>
<h3>Our Attempt to Upgrade Our Hosting Package with 1and1</h3>
<p>The issue, in a nutshell, was that we were misinformed about what server package we were being upgraded to. Being a customer with 1&amp;1 Internet for about 6 years (transferring the account from my old web development business to Deversus in between), we&#8217;ve grown to the point where we require a dedicated web server to meet our needs. I used 1and1&#8242;s Switch Package feature via their control panel to process the upgrade. The Switch Package experience was awful, at best. It gave a terse listing of the available servers and their associated costs, with no description or links to indicate what the server package contained. After Googleing the package of interest (the 1&amp;1 Dedicated Server Dual-Core M Website), we decided to go with that (as a caveat, the Dual-Core M package description we read was from the 1and1 UK website and is no longer on the US website).</p>
<p>Three days later, the upgrade was complete â€” sort of. It was at this point that we realized we had been upgraded to 1and1&#8242;s &#8220;dedicated managed server&#8221; and not a &#8220;dedicated root server&#8221; like we were expecting. We hadn&#8217;t a clue that there was even such an option. While one could blame us for not doing our due diligence to make sure of what we were getting, the general lack of information throughout the process was simply unacceptable.</p>
<p><span id="more-122"></span></p>
<h3>Our Attempt to Resolve the Issue with 1and1&#8242;s Customer Support</h3>
<p>I first e-mailed 1and1&#8242;s support@1and1.com address to inquire about the issue and attempt to have the managed server changed to a root server. After being told that there is no way to stop the upgrade process or change to a root server, and that I would need to purchase a separate server and migrate the files myself, I decided to call their customer support team.</p>
<p>It was downhill from there. I was transferred a total of 7 times, back and forth between departments, and placed on hold for 45 minutes. After trying to escalate the issue, I was told I would have to call their Germany office (which conveniently, was closed for business). The primary conflict was surrounding the fact that their Dual-Core M Website package was apparently no longer available. I was told that I would need to switch to a lesser package, in which case the server paled in comparison to the Dual-Core M, albeit for $10 less per month. Or, switch to the Dual-Core M package â€” a similarly spec&#8217;ed server â€” for nearly twice the price. Long story short, the best they could do was offer one month free for the Dual-Core L package, which I decided was petty. After an awkwardly long silence, I let them know that we would be pursuing a different hosting provider.</p>
<h3>The Moral of the Story</h3>
<p>As I so politely asked the 1and1 CSR, &#8220;what would you do in this scenario if you were the CEO of 1and1?&#8221;, there exists a big picture mentality that most customer service teams are simply not trained in. While perhaps insignificant to the overall profitability to their company, our $59/month over the next five years translates into $3540. This assumes, of course, that we don&#8217;t upgrade or add more servers to our account. Not to mention, being a custom software development company who deals with numerous other large companies with extensive server requirements, we are able to bring a lot of potential new business to a company like 1and1. Or what about the fact that I had such a bad experience that I felt compelled to write a blog article about the importance of customer service and the consequences a bad experience can have?</p>
<p>While I don&#8217;t hold any one of the individual CSRs I spoke with at 1and1 accountable for the inability to resolve our issue, I am in disbelief that it is possible for a behemoth of a company like 1and1 to instill such shortsightedness into their employee training.</p>
<p>I know that at Deversus, we value our client relationships because they are our lifeblood. We go out of our way to make sure our clients are happy with the work we do for them and if there is an issue, we do anything within reasonable means to resolve it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deversus.com/2009/11/a-note-about-customer-service-or-lack-theirof-1and1-internet/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Deversus 3.0 Goes Live!</title>
		<link>http://blog.deversus.com/2009/05/deversus-30-goes-live/</link>
		<comments>http://blog.deversus.com/2009/05/deversus-30-goes-live/#comments</comments>
		<pubDate>Tue, 05 May 2009 16:52:33 +0000</pubDate>
		<dc:creator>Mike Polga</dc:creator>
				<category><![CDATA[Custom Software Development]]></category>

		<guid isPermaLink="false">http://blog.deversus.com/?p=76</guid>
		<description><![CDATA[Today we are proud to unveil the third version of our corporate website, deversus.com. We&#8217;ve given our new site a beautiful Web 2.0 look and feel as well as expanded our testimonial and showcase sections. Our services section has been separated into distinct categories, too, so you can easily find what&#8217;s most relevant to your [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Today we are proud to unveil the third version of our corporate website, <a href="http://www.deversus.com" target="_blank">deversus.com</a>. We&#8217;ve given our new site a beautiful Web 2.0 look and feel as well as expanded our <a href="http://www.deversus.com/testimonials/" target="_blank">testimonial</a> and <a href="http://www.deversus.com/showcase/" target="_blank">showcase</a> sections. Our <a href="http://www.deversus.com/services/" target="_blank">services</a> section has been separated into distinct categories, too, so you can easily find what&#8217;s most relevant to your business. Also, we built the site using our <a href="http://www.deversus.com/custom-content-management-system/" target="_blank">in-house CMS</a>, which will allow us to easily keep our content fresh. If you have any comments or feedback regarding our new site, <a href="http://www.deversus.com/contact/" target="_blank">contact us</a> or leave a comment here!</p>
<p><span id="more-76"></span></p>
<p>The second big announcement for the day is the release of our new customer referral program. We base our marketing strategy almost exclusively on impressing clients and encouraging word-of-mouth referrals. With our new program, if you send a project our way, you&#8217;ll earn Development Credits that you can use towards your own future development projects to help offset the cost. By earning Development Credits, you could save up to 30% of the development costs for your next project! Read about it <a href="http://www.deversus.com/customer-referral-program/" target="_blank">here</a>.</p>
<p>As always, comments and questions are welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deversus.com/2009/05/deversus-30-goes-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gold Plating: Avoiding Unnecessary Features and Increasing Cost Effectiveness</title>
		<link>http://blog.deversus.com/2009/03/gold-plating-avoiding-unnecessary-features-and-increasing-cost-effectiveness/</link>
		<comments>http://blog.deversus.com/2009/03/gold-plating-avoiding-unnecessary-features-and-increasing-cost-effectiveness/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 23:24:53 +0000</pubDate>
		<dc:creator>Mike Polga</dc:creator>
				<category><![CDATA[Custom Software Development]]></category>
		<category><![CDATA[requirements]]></category>

		<guid isPermaLink="false">http://blog.deversus.com/?p=68</guid>
		<description><![CDATA[Over the years developing web sites and web applications, we&#8217;ve noticed a couple things about our development process. We&#8217;re very passionate about the work we do and we love to go that extra mile for our clients. As such, there is a great temptation to investigate and utilize new, cool technologies and deliver snazzy features [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Over the years developing web sites and web applications, we&#8217;ve noticed a couple things about our development process. We&#8217;re very passionate about the work we do and we love to go that extra mile for our clients. As such, there is a great temptation to investigate and utilize new, cool technologies and deliver snazzy features to enhance our projects. At the same time, we must be very aware of our clients&#8217; budget and ensure they are receiving the features they need before the features they (or we) want (as described in our <a href="/requirements-engineering-explained/">Requirement Engineering</a> article). Furthermore, there are features that can creep into projects that are nice to have, but mostly unnecessary. The term gold plating describes this collective set of features.</p>
<p><span id="more-68"></span></p>
<p>Gold plating is the addition of features that may be nice to have, but are unnecessary. During the initial requirements engineering phase, we work with clients to identify and prioritize all features. Then, we determine which features are considered gold plating by asking a couple of questions. First, is the feature in question going to save the client time and money? How often will the feature be used? Will the feature impress the website viewer, and entice them to respond favourably (perhaps by making a purchase, or filling out a contact form)? Is the estimated benefit of the feature worth its implementation cost? In regards to visual features, is there a way we can implement the same functionality in a more cost-effective manner (i.e. AJAX compared to a page refresh)? Do we have enough information to ensure the feature is completely necessary? Sometimes it is best to identify, develop and deliver the must-have features first, and then determine if a feature is necessary after it the system has been put to use for some time. As we go through these questions, we get a better idea of how each feature should be prioritized so we can steer away from gold plating, and save the client development time and cost.</p>
<p>The key to developing a cost effective custom solution lies in the analysis of the requirements &#8211; specific to this article, the identification and elimination of gold plating. Sometimes the client wants things they don&#8217;t need, and sometimes the client needs features they aren&#8217;t aware of. As software development consultants, we have a responsibility to understand the issues that need to be addressed with the software solution. This way, the client receives a great custom solution in the most time and cost effective manner possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deversus.com/2009/03/gold-plating-avoiding-unnecessary-features-and-increasing-cost-effectiveness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Requirements Engineering Explained</title>
		<link>http://blog.deversus.com/2008/12/requirements-engineering-explained/</link>
		<comments>http://blog.deversus.com/2008/12/requirements-engineering-explained/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 00:35:37 +0000</pubDate>
		<dc:creator>Mike Polga</dc:creator>
				<category><![CDATA[Custom Software Development]]></category>
		<category><![CDATA[Software Development Process]]></category>

		<guid isPermaLink="false">http://blog.deversus.com/?p=24</guid>
		<description><![CDATA[Requirements engineering is the first and most critical phase in the development of custom software. During this phase, we take an in-depth look at your current business processes and how we can address problems or bottlenecks with a custom built solution. This phase is absolutely critical to the current and future success of the software; [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Requirements engineering is the first and most critical phase in the development of custom software. During this phase, we take an in-depth look at your current business processes and how we can address problems or bottlenecks with a custom built solution. This phase is absolutely critical to the current and future success of the software; without it we are building a house without a blueprint. The only way to validate the success of a custom software endeavour is to understand what needs to be delivered. Thus, without understanding the requirements, we can never hope to deliver a successful system that our clients would be happy with.</p>
<p><span id="more-24"></span></p>
<p>There are numerous benefits that arise from an in-depth requirements analysis. Some include:</p>
<ul>
<li><strong>Great understanding of development time, and therefore cost.</strong> Based on past development experience, we are able to take a brief look at a proposed system and generate a ball-park estimate. After completing the Requirements Engineering phase, we are able to improve from ball-park range to eye of the needle, where we will agree to a fixed price quote for your software.</li>
</ul>
<ul>
<li><strong>Our development team gains invaluable insight into the software they will deliver.</strong> The understanding our team gains while spending time with the end users will dramatically reduce the development effort, saving our clients&#8217; money.</li>
</ul>
<ul>
<li><strong>Prioritization of requirements allows for the delivery of a usable system in the most time and cost effective manner possible.</strong> We work closely with our clients to place requirements in priority order before we begin development. Since software is constantly evolving the â€˜should-have&#8217; and â€˜nice-to-have&#8217; features can be planned for and added after a working system is in place.</li>
</ul>
<p>Take a look at our requirements engineering process outlined below. You will learn about the each phase of the process and discover the deliverables produced at the end of this important phase. Comments and suggestions are greatly appreciated.</p>
<p>Requirements engineering is the first and most critical phase in the development of custom software. This process encompasses all tasks involved in eliciting, analyzing, specifying and validating requirements. The ultimate goal is to generate a set of requirements which can be used by the software development team to build the necessary software. This phase can be broken up into four related sub-phases.</p>
<p>1. Requirements Elicitation</p>
<p>This is the process by which users of the system are interviewed in order to reveal and understand their requirements. This sub-phase involves a high level of client input.</p>
<p>2. Requirements Analysis</p>
<p>This is the process by which elicited requirements are evaluated for consistency, similarity and scope coverage. Requirements are triaged; that is, placed in 3 separate categories:</p>
<p style="padding-left: 30px;">a) Must-have<br />
b) Should-have<br />
c) Nice-to-have</p>
<p>Through this process the most relevant, mission critical requirements are emphasized and developed first. This ensures the final product satisfies all of the important requirements, and does so in the most time and cost efficient manner possible. Other &#8220;should-have&#8221; and &#8220;nice-to-have&#8221; requirements can be relegated to future phases, should they be necessary. Once triaged, the requirements are divided into phases and milestones, which will be mapped to the project estimation and timeline (see next paragraph). For example, Phase 2 may consist of implementing every &#8220;must-have&#8221; feature. A milestone within that phase may consist of implementing Use Case x, y and z (See â€˜Use Case document&#8217; below for the definition of a Use Case). By scheduling the project in this iterative way, our client has a good understanding of when certain things will be delivered and when their input will be required. Additionally, features are generally developed in a &#8220;vertical&#8221; fashion; once Use Case x has been developed, its unabridged functionality can be demonstrated to the client. In this way, our client has a clear understanding of where development time is being spent, and potential issues can be caught early and dealt with efficiently.</p>
<p>3. Requirements Specification</p>
<p>This is the process by which requirements and their analyses are committed to some formal media. For this project, we would generate four documents during this sub-phase:</p>
<p style="padding-left: 30px;">a) <strong>Use Case document</strong>: a use case is a description of the system&#8217;s response as a result of a specific request from a user. Each use case will cover certain requirements discovered during elicitation and analysis. For example, a use case may cover &#8220;Adding a New Employee&#8221;, or &#8220;Generating Site Report&#8221;. User interface requirements are completely ignored at this point; the goal of the use case is to document system behavior at a high level. Thus, the use case document is simply a collection of logically ordered use cases that will encompass all currently discovered functionality.</p>
<p style="padding-left: 30px;">
<p style="padding-left: 30px;">b) <strong>Interface prototypes</strong>: an interface prototype is a rough representation of certain critical functionality, recorded as anything from a hand-drawn image to an elaborate HTML mock-up. The prototypes are completely horizontal in nature; they roughly illustrate how the interface for a certain feature will look and what information is accessible but they will have no back end (vertical) functionality. This will allow us to design a system whereby the important functionality is easy to access and use. Additionally, these prototypes tie in heavily with the triaging process; since screen real estate is of utmost importance when presenting information, by knowing which data and functionality is most important it can receive the most attention.</p>
<p style="padding-left: 30px;">
<p style="padding-left: 30px;">c) <strong>Architecture Diagram</strong>: an architecture diagram will be generated for developer use as it is a high level view of how the software will be structured. Only if we feel it will help in our understanding of the system will this document be created.</p>
<p style="padding-left: 30px;">
<p style="padding-left: 30px;">d) <strong>Database Diagram</strong>: as with the architecture diagram, a database diagram is generally created for developer use. Through these final two media, we are beginning the shift from words (requirements) to code (software). By generating these two documents we can effectively explore different ways of satisfying the requirements through the software and achieve a more technical understanding of how we will proceed once the development begins.</p>
<p>4. Requirements Validation</p>
<p>This is the final phase of the requirements engineering process. It involves scrutinizing the documents generated during the specification sub-phase and ensuring their relevance and validity. This must be done by all interested parties (which may include the users of the system, financiers of the system and Deversus as the developer) so they are in agreement with the proposed system&#8217;s behavior, especially in the case of the Use Case document and prototypes.</p>
<p>Project Estimation and Timeline</p>
<p>As requirements are elicited, analyzed, specified and validated, we will be estimating most features. This is an on-going process that will culminate in the delivery of the Project Estimation and Timeline document. This will outline the duration of work required to develop and deliver Phase 2. As indicated in the Requirements Analysis sub-phase, Phase 2 will likely consist of the majority of the &#8220;must-have&#8221; features; however it is ultimately up to the client to decide what is most important (even within the &#8220;must-have&#8221; category), and this will be developed first.</p>
<p>Conclusion</p>
<p>Though the aforementioned processes are part of &#8220;Phase 1&#8243; of our software development lifecycle, realize that this process is always occurring. It would be unrealistic to think that everything required from the software can be uncovered during the first phase. Constantly re-analyzing our requirements documents throughout the development process will ensure the risks associated with change are caught early and thus mitigated. Therefore, we can be sure that the Use Case document, for example, will be a &#8220;work in progress&#8221; piece that is constantly refined throughout the development lifecycle.</p>
<p>The first phase of the software development lifecycle as outlined here is absolutely crucial. In order to build any system correctly and effectively, its purpose must first be established. By carefully defining the requirements of the software at this stage, we can ensure the delivery of a solution that streamlines operations, lowers costs, and provides lasting value.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deversus.com/2008/12/requirements-engineering-explained/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Deversus Blog Goes Live!</title>
		<link>http://blog.deversus.com/2008/11/the-deversus-blog-goes-live/</link>
		<comments>http://blog.deversus.com/2008/11/the-deversus-blog-goes-live/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 00:19:55 +0000</pubDate>
		<dc:creator>Mike Polga</dc:creator>
				<category><![CDATA[Custom Software Development]]></category>

		<guid isPermaLink="false">http://blog.deversus.com/?p=3</guid>
		<description><![CDATA[Just want to welcome everyone to the new Deversus Blog. We&#8217;ll be covering many different topics over the next while, ranging from why a custom solution may be right for you, to the latest and greatest tech news. Check back soon for our first (real) article!]]></description>
			<content:encoded><![CDATA[<p></p><p>Just want to welcome everyone to the new Deversus Blog. We&#8217;ll be covering many different topics over the next while, ranging from why a custom solution may be right for you, to the latest and greatest tech news. Check back soon for our first (real) article!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.deversus.com/2008/11/the-deversus-blog-goes-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

