comp.lang.ada
 help / color / mirror / Atom feed
From: "Robert I. Eachus" <rieachus@attbi.com>
Subject: Re: signature like constructions
Date: Sat, 09 Aug 2003 07:39:07 GMT
Date: 2003-08-09T07:39:07+00:00	[thread overview]
Message-ID: <3F34A510.2060002@attbi.com> (raw)
In-Reply-To: e2e5731a.0308081658.3a123a4@posting.google.com

Alexander Kopilovitch wrote:

> Do you mean that the "Paradise may be regained"... if not for average programmer
> then at least for an average star -:) ? That is, that by training yourself
> in that direction, and keeping your nerve, it is possible to follow even
> rapidly and rather randomly changing requirements with proper documentation
> and analysis in real time, inside a not very friendly environment?

No, I mean that I have worked directly on projects that could not have 
been completed without rigorous control over the (evolving) 
requirements.  You have to have religion, or something.  One of my 
favorite examples was a project actually written in Ada, but that is 
almost a detail.  The original schedule called for a three year 
development cycle, in C and assembler.  Two years in, that group 
admitted total failure. I'll get back to why in a minute.

Another group volunteered to take over the project and do it in 11 
months to meet the original schedule--if they could use Ada and modern 
software development methods.  They got the go ahead on a plan which 
called for six months of requirements analysis and design, two months of 
detailed design, two months of coding and one of testing.  At the end of 
detailed design, eight months in, they decided that a significant 
portion of the original design need to be scrapped and redone.  They 
finished coding a week behind schedule, but completed the formal testing 
in two days--the test suite has been developed as part of the entire 
process, and coded by a separate test group within the project.

The manager in charge called it management by heart attack.  It is one 
thing to logically accept that starting coding too early will be a 
disaster, but to finally start coding in the ninth month of an eleven 
month project can stress a manager out.  But it works.  In fact the rest 
of the operating system that it was part of slipped three  months, so 
that all of the features that had been postponed to version two were in 
there when it released.  But they actually formally did keep those 
additions as a second version in the configuration management system, 
and tell marketing that they would get it all when release two was ready 
but nothing before then. That allowed the first version kept bug free 
during beta test under version control so they didn't get involved in 
fighting fires.

I said I would get back to why the first group failed.  They actually 
had a "working" system at one point.  But it had some major bugs, and 
every bug fix created more bugs than it fixed.  The system as a whole 
had too much coupling.  In other words this subsystem was too big for 
the project management tools and methods they were using.  As for the 
Ada version?  The interfaces between the various modules and 
sub-components were all defined in less than one thousand lines of Ada 
package specifications.  All of the bodies, except one that got near 650 
lines were under five-hundred lines long.  Each package came with a test 
program for that package, and was unit tested before being put under 
version control.  Is it any wonder that the system ran the first time 
with only minor errors left to fix.  (There were 17 bugs found in system 
testing.  Fourteen of them were misspellings, poor punctuation or 
missing accents in the foreign language messages.  The program had a 
localization package that supported US, British, French, German, 
Spanish, and Italian.  Most of the complaints during the beta testing 
was about Quebecois usage from French testers. Release 2 made French 
Canadian a separate localization file. ;-)

> Do you mean that the common defensive strategy against probable but unpredictable
> changes of requirements -- that is, keeping yourself not too near to them, and
> more relying upon agreed tools (which seem less vulnerable for spontaneuos
> customer's or management's dances) -- is not the best strategy, and that it is
> really possible to chase a moving/jumping problem, all the time at near distance,
> without significant delay?

No.  If you don't understand the real requirements, you will get blind 
sided again and again during development.  But if you do the work to 
"develop" the requirements, you simply won't have that problem.  Another 
project which was actually for the same OS release as the project above, 
resulted in an even better example.  It was a menu subsystem to provide 
a consistent look and feel to all of the office automation packages. 
(This was for the Honeywell DPS6, Mod 400 release 3.)  There was a 
two-day review to decide if the product was ready for release.  This was 
more than just a did it meet the requirements review.  At these reviews, 
marketing could and did on occasion sent the software "back to the 
drawing boards.  Not because it did not meet the agreed requirements but 
because marketing thought they couldn't sell it in the current market 
environment.

During the first day the marketing team realized that it would be nice 
if there was a standard option just for backing out of transactions, as 
well as the key that took you to the top of the current menu hierarchy. 
  This wasn't considered a show stopper, but marketing wanted an 
estimate on the cost of adding the feature.  The review finished early 
on the second day, and they were going over action items.  The manager 
of the project was able to tell them that the changes had been made, a 
new version compiled overnight, and was now on its way to the 
Distribution and Test group for their blessing.  In the meantime, it had 
been installed on one of the test machines if they wanted to check it out.

You might think that the developers had anticipated this change request 
and had it all designed in.  But that wasn't how it worked.  Since the 
main requirement for the subsystem was to present a consistent interface 
to the user, the design of the system was a rule based engine that 
generated the screens.  The change to the code was three lines, because 
the system did model the problem space.  Something like:

      if In_Transaction
      then Bind_Key(F6, Exit_Transaction);
      end if;

(It was only three lines because there was already a "cancel 
transaction" entry in the localization files.  But if the new messages 
had to be added to the localization files, it still would not have been 
a big deal.)

You can see how designing the system from the getgo to model the problem 
space meant that there were not hundreds of different menu templates 
that needed to be changed.  Since the REAL requirement was for a 
consistent user interface, designing the system this way meant that 
consistency was automatic.

> You have seen the miracles being used more that in one or two cases -- so you
> are lucky. I think that most of us feel that the miracles, if happen, will be
> most probably betrayed. That's why "Adding an understanding of ISAs and machine
> architecture to that is very rare" indeed.

And I have also seen disasters where this sort of discipline was 
necessary due to the scope of the project, but was not put in place.  In 
fact I may finally get around to publishing that paper.  (Basically how 
to tell when the project is dead beyond all hope of recovery from 
analyzing the reports in the bug tracking system.  The earlier you can 
determine that a project will fail, the less money you waste.)

As for the miracle approach, on one very large project, I had to 
determine if the money should be spent at all.  Relatively quickly I 
determined that the success or failure of the radar upgrade would depend 
on whether a particular problem could be solved.  We called it the 
formation flight problem, but it could be a lot of airliners on the same 
course between beacons at the same speed, or a dozen other sorts of 
coincidences.  The proposed solution was to partition the target 
detections into clusters then resolve each cluster separately.  Of 
course this would have to be done in real-time in a few milliseconds 
before the next set of pulse doppler data arrived.  At the end of six 
months I couldn't prove that the partitioning could be done in the time 
available, or that it couldn't.  But I did find a way to solve the 
problem without partitioning the data, so the contract was awarded.

-- 
"As far as I'm concerned, war always means failure." -- Jacques Chirac, 
President of France
"As far as France is concerned, you're right." -- Rush Limbaugh




  reply	other threads:[~2003-08-09  7:39 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-30 11:32 XML DOM Binding for Ada 95 - matter of style DENNY VRANDECIC
2003-07-30 12:33 ` Martin Dowie
2003-07-30 15:20   ` Denny Vrandecic
2003-07-30 16:33     ` Stephen Leake
2003-07-31 10:57       ` Marin David Condic
2003-07-31 11:27         ` Preben Randhol
2003-07-31 13:10           ` Matthew Heaney
2003-07-31 19:04             ` Simon Wright
2003-08-02 14:40               ` Matthew Heaney
2003-07-31 20:25             ` Randy Brukardt
2003-08-01 11:46           ` Marin David Condic
2003-08-02  3:40             ` Matthew Heaney
2003-08-02 12:08               ` Marin David Condic
2003-08-02 14:46                 ` Matthew Heaney
2003-08-02 21:25                   ` Ed Falis
2003-08-05 19:59                   ` Marin David Condic
2003-08-03 16:42                 ` Matthew Heaney
2003-08-04  8:04                   ` Dmitry A. Kazakov
2003-08-05  8:00                     ` Georg Bauhaus
2003-08-05 11:46                       ` Dmitry A. Kazakov
2003-08-05 13:34                         ` Georg Bauhaus
2003-08-06  9:03                           ` Dmitry A. Kazakov
2003-08-06 18:15                             ` signature like constructions (was: Re: XML DOM Binding for Ada 95 - matter of style) Georg Bauhaus
2003-08-07 10:12                               ` Dmitry A. Kazakov
2003-08-07 16:22                                 ` signature like constructions Georg Bauhaus
2003-08-08  8:31                                   ` Dmitry A. Kazakov
2003-08-08 10:12                                     ` Robert I. Eachus
2003-08-08 13:29                                       ` Dmitry A. Kazakov
2003-08-08 19:37                                         ` Robert I. Eachus
2003-08-09  0:58                                           ` Alexander Kopilovitch
2003-08-09  7:39                                             ` Robert I. Eachus [this message]
2003-08-10  1:30                                               ` Alexander Kopilovitch
2003-08-10  4:11                                                 ` Robert I. Eachus
2003-08-11 10:25                                           ` Dmitry A. Kazakov
2003-08-08 23:44                                         ` Alexander Kopilovitch
2003-08-11  9:54                                           ` Dmitry A. Kazakov
2003-08-11 14:59                                             ` Alexander Kopilovitch
2003-08-12  9:54                                               ` Dmitry A. Kazakov
2003-08-13 22:28                                                 ` Alexander Kopilovitch
2003-08-09  8:32                                       ` Simon Wright
2003-08-09 15:32                                         ` Robert I. Eachus
2003-08-07 12:52                             ` XML DOM Binding for Ada 95 - matter of style Matthew Heaney
2003-08-07 15:03                               ` Dmitry A. Kazakov
2003-08-07 12:28                           ` Matthew Heaney
2003-08-05 20:05                   ` Marin David Condic
2003-07-30 16:34     ` Martin Dowie
2003-07-30 17:54 ` tmoran
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox