On Wed, 04 Aug 2021 17:56:02 +0000, Charlie Gibbs wrote:
> Sounds like it's time to pay a little more attention to the KISS
> principle.
> (I realize that large corporations might want to burn me at the stake
> for this heresy...)
>
Indeed, and very often the way to achieve that is to break the design
into modules with rigidly defined interfaces while roughly grouping them
by function. It goes without saying that there is almost certainly some
sort of module hierarchy, but its depth needs to be kept as shallow as
possible.
This approach simplifies design reviews, makes design validation a lot
easier and also makes costing the project simpler.
It also simplifies the code and module test phase because, if the design
documents are any good, writing test harnesses and specifying module test
suites becomes straight forward and also lets you catch bugs well before
they become horridly apparent during integration testing, let alone, as
I've <<shudder>> seen, when they surface, inexcusably late, during
acceptance or performance testing.
Ideally, the test harnesses and scripts will be kept under version
control - just like the production code - because they will be extremely
useful later for regression testing as and when requirements change and
the code gets modified to suit.
And, before you ask, I've worked on projects that were designed and
implemented using exactly this strategy:
- On one large project that had a very complex data model that needed
its database to be populated before the system was remotely useful.
This approach let us use an incremental release strategy, i.e. the
system initially went live with the online system's navigation and help
subsystems complete, but with with only the screens and reports needed
for the users to create the two catalogues that everything else
depended on. Other functions were build and put live after the main
catalogues were complete enough to be useful.
This wasn't a financial or manufacturing system: the underlying data
structure was a lot more complex than those generally need because it
had to track 'products' from initial concept through design, production,
use and partial reuse so those involved could be paid for the use and
reuse of their individual contributions.
- a large consultancy I worked for used exactly those design principles
to cost projects we were bidding on: the project manager, application
and database designers were all on the bid team from the start and had
a large hand in costing what they would deliver if we got the contract.