From the
different organisation set-ups described in previous section, 2 pattern of
development arise. Sequential and Recursive. The challenge remains to find the
right balance between keeping enough internal resources assigned to the
clinical projects and involve end-users in the development of such tools so project
standards can be considered further and end-users adoption can be enhanced
through out the process.
Standard program
development must follow a software development life cycle at the opposite of
custom/one-shot programs that will be used once in a study. It goes from
-
Requirements (what the program must do)
-
Code (technical implementation addressing requirements)
-
Program documentation (Technical description of code aiming at
facilitating maintenance)
-
User guide (Technical documentation aiming at helping end-users
using the program)
-
Test plan (Test cases checking that all requirements are met)
-
Test report (Documentation of test case execution)
-
User acceptance test (A number of scenarios are tested formally
or informally before release)
-
To Release in production.
Both sequential
and recursive approaches can be adapted to the V-model that is widely used in
software development so development and validation remain compliant.
Sequential
Requirements
-> Program code and documentation -> Test plan -> Test report ->
User acceptance test -> Release in production
It is easy to
outsource but relies on detailed requirements and strong programming guidelines
and well established program design practices. There is always the risk creating
a toolbox that will sound totally foreign to in-house programmers in clinical
projects that they will have to learn like a new application vs. using their
own suite of undocumented and unvalidated of programs.
When outsourcing
this, make sure you have an in-house programmer assigned as reviewer who will
follow the development and will be able to become “super-user” on the given
component and can take ownership for the success of its release inside the
organisation. Requirements and programming guidelines need to be more detailed and
examples of in-house developed “state-of-the-art” standard programs to refer as
gold examples.
Recursive
Draft
requirements + Draft code prototype -> Use as-is within one or more projects
-> Refinement of requirements -> Upgrade of prototype into robust and
standardised program + doc -> Test plan -> Test report -> User
acceptance test (anecdotic) -> Release in production
A prototype-based
approach will aim at getting as much feedback as possible from most senior
programmers and users before formal implementation. It will also help the users
to learn the program and create a feeling of ownership. Naturally programmers
will see some components they have spent time in improving as their “babies”
and will be first advocate and support for using them in the future.
The challenge
here can be to leave the “creative” loop and call a given prototype “final” (for
now) and ready to be upgraded to a standard program.
Small wins early
will come quicker. Prototyping can almost replace some of the analysis work that
would lead to design requirements (more fun for a programmer than going on the
black board). Following this, the requirements can be written retrospectively
and the whole V-model followed step by step ensuring full compliance. During
this process the prototype is elevated to some more robust code following
internal guidelines regarding standard program practices including
documentation. During the prototyping period, programs can be used in the projects
as guinea pigs and double programmed for the time being. A given double-program
can be reused across studies if needed in order to minimize validation time
till it is fully validated and released as a standard program.
“Real” test for
standard programmes is when programmers use it in real settings (trial reporting,
submissions, publications). The second real test is when study team (Medical
Writers, Medical & Science, etc.) reviews the produced outputs and check
that they fulfil expectations from the defined and agreed standard. You can
have surprises there too and if some modifications are needed, it is always
better to get this feedback early on before finalising documentation and
testing.
In a recursive type of approach involving
prototyping, it is crucial that individuals are made responsible and have the
mandate to get each given components into production. This is to avoid
prototyping dragging for too long or being left aside due to important clinical
deadlines.