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
next prev parent 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