    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: Waterfall versus RAD</title>
        <link>https://members.accu.org/index.php/journals/762</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>


        <h2>Journal Articles</h2>


<div class="xar-mod-head"><span class="xar-mod-title">CVu Journal Vol 11, #1 - Nov 1998 + Design of applications and programs</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c77/">CVu</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c134/">111</a>
                    (19)
<br />

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c13/">Topics</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c67/">Design</a>
                    (236)
<br />

                                            <a href="https://members.accu.org/index.php/journals/c134-67/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/journals/c134+67/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;Waterfall versus RAD</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 03 November 1998 13:15:28 +00:00 or Tue, 03 November 1998 13:15:28 +00:00</p>
<p><strong>Summary:</strong>&nbsp;</p>
<p><strong>Body:</strong>&nbsp;<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e20" id="d0e20"></a></h2>
</div>
<p>I am not sure what the purpose of this short article is. It is
either to air my prejudices for and against waterfall verses
rapid-prototype-development (RAD), or it's an excuse for my attempt
to call myself 'professional' rather than a cowboy. Whatever it is,
this is an experience I have suffered, and a problem shared...</p>
<p>Where I started from was a recent call for help from a local
business. As I am between contracts, a week's local work would be
very welcome. They had purchased, when they started 7 years ago, a
simple application for their type of business from a similar
business in a neighbouring town. What they purchased is a difficult
question, but I assume that what they purchased was the 'right to
use' rather than the rights to the copyright of this simple
database application. The program itself was written by the owner
of this other firm for their own use and had also sold copies to
half a dozen other firms in the area. No copyright notice can be
found in the application, no documentation was ever provided
(license, user, code, test - nothing). The company has 'stopped
trading' and the owner disappeared.</p>
<p>What my client wanted was some support, the original program was
a Lotus Approach Database (6 tables with 300+ fields in total) and
they could find no one locally, or nationally, whom would even
quote for the job. (They've been asking me for over two years, but
I've always had a contract until this time of trying!). They, like
many small businesses, just want this apparently simple program to
work. The only other company who have responded to their calls for
help were a local training firm who could provide training in
Access, &pound;600 for 10 hours training. But they were not
prepared to perform the job itself and would not guarantee that my
client would be able to after the training was over. As all the
people they had contacted have said 'Lotus Approach, is that like
Microsoft Access?', they want the application converted to Access
on the assumption that more people know Access so they should find
it easier to get support in the future (who knows?). I tried to
explain that I did not think that they'd get any more support for
the application in Access vs. Approach, but converting it is what
they want.</p>
<p>My next problem was then, should I reverse engineer the
application in order to perform the required actions for my client?
As my client is also a musician I contrasted their application with
that of sheet music, so we agreed that the copyright issues had to
remain with their company and that really I could not get involved
(my feet were getting cooler). They had actually offered me the
possibility of increasing my income from the job by allowing me to
sell the new application! (I politely refused this kind and
generous offer).</p>
<p>I then tried to explain to my client that we did not have any
form of requirements or functional specifications. They countered
by saying that they knew the business logic very well and could
explain everything to me as and when required. So I told them that
for a project, even this small and apparently simple, I'd expect to
have about a foot of bookshelf space of documentation. Furthermore,
that I usually work under the direction of a project manager and
they agreed that this was not them. It was at this point that they
realised that this was not such a simple task. But after all, all
they wanted was to convert this simple (302-field database) from
Approach into Access and add a search facility to the phone-number
field.</p>
<p>Further more, I ask how I was supposed to test the application
once it was ported without any test specification. That's ok, they
said, the current program works &quot;<span class="quote">because I've
been using it for 7 years and I know it works</span>&quot;. I then
hypothesised 'what if' the invoices were out by one pound? In the
first year they might not notice, that the next year cash flow may
be a bit tighter, but ten years later they may be out of business?
So they asked how I'd usually test such an application. I said that
I might write (yet) another program, probably of similar size, to
generate ten years worth of records and to add up all the records
to cross check the results. A few moments of reflection and they
told me of an existing bug, that there is a discrepancy between
batch generated invoice totals and the same invoice (re-)generated
singularly - Oh joy thought I.</p>
<p>So, then I contrasted this simple job with a building; I
suggested that a real builder needs plans, probably from an
architect, and has at minimum the local building control inspectors
to inspect their work. I also pointed out that if one employs
cowboys, at your own direction (the cowboys don't accept
liability), that you may end up with what you wanted, but you may
not. My client also had a limit of &pound;1000, but they had
purchased a copy of Access (as I pointed out, the converse may not
have been true of the Approach license, and I said that ignorance
was no excuse in the eyes of the law). I told them that I could put
them in touch with a local cowboy programmer who would probably not
have such qualms and as they definitely charge less, they might get
what they wanted within their price limit. They then asked me if I
thought they'd be able to do the job - I declined to answer as I
could not guarantee the cowboy's standard of work . When I got home
I started to think about the traditional waterfall method, which is
what I am accustomed to, versus the hip-and-trendy RAD approach.
The latter must be the closest to the way in which someone had
generated the original application, embedding their business
knowledge and logic into the application as they went along. What
gives me the right to want so much more?</p>
<p>As Steve McConnell points out in his excellent (but now slightly
out of date) '<i class="citetitle">Code Complete</i>' [<a href=
"#McConnell">McConnell</a>], the one and only part of any software
job that will be done, is that of 'construction', all other phases
of development can/will/are negotiable. Also in [McConnell] pp
519/520, presents a 'Project Formality Worksheet', this describes a
good metric for recommended documentation. It only takes a few
minutes to complete, so I scored my clients application as a '12'
(the lowest possible score!), so the (US DOD) recommendation is
&quot;<span class="quote">User Manual &amp; incidental program
documentation ... plus database specification if
applicable</span>&quot;. [<i><span class="remark">if you do any project
management read the book &amp; use this quick
metric</span></i>]</p>
<p>So, I believe I need a Database Specification - easy to reverse
engineer from the Approach Database; my client does not need any
User Documentation because they 'know how it works' (its only got
6/7 screens). All that leaves is testing and migration. But what
amazes me, is that my client has been using this program for 7
years without any qualms, as have (presumably) the other 5/6 users.
For my client the bugs are not so important as they employ a
bookkeeper, whose books are taken as the true state of the
company.</p>
<p>What should I do? I can't take the job without the cost going
way over my client ceiling. I won't put my name to a half-baked job
that is untested, but if I don't take the job they'll end up with a
cowboy. The last time I took a cheap local job the 'nice' people
declined to pay my last invoice, but they are a shabby little
software/hardware outfit. [My wife, formerly of the construction
industry, said that the practise of withholding the last invoice
was common as did our legal advice. The 'client' has the work
complete and can make extra profit by ignoring the contractor(s)
last invoice.] I'm sure that this client will pay but I feel like
I'm holding them over a barrel.</p>
<p>Should I attempt to pass this onto a junior? Don't even think
about increasing a company from yourself(ves) to a member of the
public, the red tape, legal requirements and employment costs in
this country are horrendous! So I agree to coach an employee of
their firm in Access, in order that the employee could do the work.
It turns out that the application only required four tables with a
total of 42 fields. The original database had lots of replicated
fields in each table, because there were fields which
coincidentally had similar names, and looking up one value from one
table, the 'logic' looked up the same value in another table; there
was no relations constructed in the database! The original author
also had two tables just so that they could generate unique
(incrementing) index values!</p>
<div class="bibliography">
<div class="titlepage">
<h2><a name="d0e59" id="d0e59"></a>Bibliography</h2>
</div>
<div class="bibliomixed"><a name="McConnell" id="McConnell"></a>
<p class="bibliomixed">[McConnell] '<span class=
"citetitle"><i class="citetitle">Code Complete</i></span>'; Steve
McConnel; Microsoft Press; 1-55615-484-4 [<span class=
"bibliomisc"><i><span class="remark">NB for Unix or non-MS
devotees: don't let the fact that this is an MS press publication
put you off, apart from the 'hungarian' naming convention anathema,
it is an A-1, if you program or manage programmers, 'You Must Read
This', grade of book</span></i></span>].</p>
</div>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e69" id="d0e69"></a></h2>
</div>
<p class="c2"><span class="remark">One of my reactions is that two
can play at the game of not paying the last invoice when it comes
to software. With a little care you can place a time limitation on
the software (no need to tell the suspect client) and remove it
when the invoice is paid. Of course if it isn't paid the 'client'
will wake up one day to find the software does not work. With a
little care over the wording of your contract you can make this
legally watertight. (Something along the lines:</span></p>
<p class="c2"><span class="remark">All rights to use the
commissioned program remain with the author until completion of
agreed payments.</span></p>
<p class="c2"><span class="remark">or</span></p>
<p class="c2"><span class="remark">No guarantees as to performance
of the product apply prior to completion of payment.</span></p>
<p class="c2"><span class="remark">Francis</span></p>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
