<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - functionalrequirements tag</title>
  <link>http://www.codingthearchitecture.com/tags/functionalrequirements/</link>
  <description>Software architecture for developers</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Wed, 16 May 2012 08:01:04 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>Who&#039;s paying for this?</title>
    <link>http://www.codingthearchitecture.com/2007/12/07/whos_paying_for_this.html</link>
    
      
        <description>
          &lt;p&gt;
I like working with users as they often give really good feedback. They&#039;re the ones who have to live with the software every day so tend to be very clear about how it helps/hinders their work.
&lt;/p&gt;
&lt;p&gt;
Is it naive to think that making users happy by meeting their requirements is the primary goal of a software delivery, though? In my experience, which is &lt;i&gt;not&lt;/i&gt; in COTS software development, the end users are not paying for the software - their boss is. Yet we often grant users great import, perhaps because their feedback is more immediate and tangible. Granted, it is unlikely that giving users unusable software is going to prove successful. Conversely, giving users exactly what they want is also unlikely to be a success. For a start, it could well prove financially prohibitive (eg, technically difficult)!
&lt;/p&gt;
&lt;p&gt;
I consider one of my responsibilities as an architect that of keeping delivery focused on what matters. Sometimes this may mean giving the users what they want, sometimes it may mean telling the users what they&#039;re getting (and helping smooth the transition). After all, change isn&#039;t always just about transparently replacing the technology.
&lt;/p&gt;
&lt;p&gt;
I&#039;m sure I&#039;m not the only person who&#039;s worked on software that has delivered what users wanted but has never seen the light of day. Were the users wrong or were we simply speaking to the wrong people?
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>What is the the role of a software architect?</category>
    
    <comments>http://www.codingthearchitecture.com/2007/12/07/whos_paying_for_this.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2007/12/07/whos_paying_for_this.html</guid>
    <pubDate>Fri, 07 Dec 2007 10:43:53 GMT</pubDate>
  </item>
  
  <item>
    <title>Mastering the Requirements Process</title>
    <link>http://www.codingthearchitecture.com/2006/04/25/mastering_the_requirements_process.html</link>
    
      
        <description>
          &lt;p&gt;
I&#039;ve just received a copy of Addison-Wesley&#039;s &#034;Mastering the Requirements Process&#034; 2nd Edition to review over the next few weeks.  The blurb says:
&lt;blockquote&gt;
Mastering the Requirements Process, Second Edition, sets out an industry-proven process for gathering and verifying requirements with an eye toward today&#039;s agile development environments.  In this total update of the bestselling guide, the authors show how to discover precisely what the customer wants and needs while doing the minimum requirements work according to the project&#039;s level of agility.
&lt;/blockquote&gt;
I&#039;ll be reading it over the next couple of weeks and posting a review after that.  Please feel free to post any specific questions and I&#039;ll try to answer them in the review.  
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2006/04/25/mastering_the_requirements_process.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2006/04/25/mastering_the_requirements_process.html</guid>
    <pubDate>Tue, 25 Apr 2006 20:19:20 GMT</pubDate>
  </item>
  
  <item>
    <title>Give the user what they want...</title>
    <link>http://www.codingthearchitecture.com/2006/03/17/give_the_user_what_they_want.html</link>
    
      
        <description>
          &lt;p&gt;
I used to subscribe to the school of thought that you should write, or at least design, your system solidly and then build your user interface(s) on top of this sound foundation. After all, it&#039;s got to work before you can use it, right?
&lt;/p&gt;
&lt;p&gt;
I&#039;m not so sure anymore, though this is mitigated somewhat by an iterative process. I&#039;ve more recently shifted towards the notion that each function must be usable before it can be used. After all, its main purpose in life is to be used, not to be strategic/beautiful/standard/optimal, right?
&lt;/p&gt;
&lt;p&gt;
People, particularly developers, tend to dismiss the user interface as being the &#034;front-end&#034; to the application, simply adapting between business function and user. This is only really true once it is complete; during development the UI is defining and refining the business functions - it is part of the development process. When implementing user interface first it is often the architectural assumptions that get changed since they don&#039;t fully support the desired functionality. This is a good thing - it is refining the architecture and making it fit for purpose, the purpose being to serve the user.
&lt;/p&gt;
&lt;p&gt;
Of course you&#039;re stuck trying to balance functional and non-functional requirements - just remember that the users carry a lot more weight than you might first think! If the end users don&#039;t want to use your application you&#039;ll struggle to get it adopted whereas if the end users do want to use it they&#039;ll give the project real inertia, biting your arm off for new features.
&lt;/p&gt;
&lt;p&gt;
Also, whilst it may seem a bit Machiavellian, it&#039;s quite easy (and sometimes fun) to ride an unrelated architectural improvement in on the back of some new user functionality. The development effort&#039;s got impetus so why not make the most of it and champion your own requirements?
&lt;/p&gt;
&lt;blockquote&gt;
The overall quality of your system should improve 
with the addition of functionality.
&lt;/blockquote&gt;
&lt;p&gt;
The development of new functionality &lt;i&gt;requires&lt;/i&gt; the refactoring of related code, thereby improving it. This development also &lt;i&gt;facilitates&lt;/i&gt; the refactoring of unrelated code - an opportunity worth taking!
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you deliver software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2006/03/17/give_the_user_what_they_want.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2006/03/17/give_the_user_what_they_want.html</guid>
    <pubDate>Fri, 17 Mar 2006 16:02:28 GMT</pubDate>
  </item>
  
  </channel>
</rss>

