Software Technical Design
| Make it truly real time:
Advantages:
| Virtually instantaneous
response to external conditions regardless of what screen or function the operator is
using. |
| We wrote our own real-time
core -- optimized for the flexibility and response needs of a batching system
without the wasted overhead of a generic real-time system.
|
| Systems without real-time
control only appear to function correctly
| They are constantly
subjected to unanticipated operator inputs which can result in operational
"glitches", slowdowns, lockups or inaccuracies.
|
|
|
| Group functions by priority
and purpose (multi-thread):
The major groups:
| Real-time batch control -
highest priority |
| Print spooling
|
| Operator interface, file
maintenance, report generators.
|
|
| Give Critical functions
priority (premptive)
Give the batch control
group priority over all other functions.
| These modules control the
ingredient accuracy, and control all of the process control functions.
|
|
| Clear logical structure and
process flow:
| Use State Logic - ensures
changes can be made without unintended side effects. |
| Keep code fragments
managable in size and scope.
|
|
| Make Shared functions
globally accessable:
Standardize the product
functions common to all systems.
| Speeds development time,
thus minimizing system costs. |
| Allows changes to propagate
between customers, so every customer benefits from ongoing improvements.
|
| Place all shared functions
in a common library. This allows continuous incremental product improvements to be applied
backwards to pre-existing systems as an upgrade while minimizing the direct labor effort
to accomplish an upgrade. This avoids the possibility of a system becoming "too
outdated" to update to the current level of technology.
|
|
| Isolate customer unique
modules, for the life of the product.
| Group custom modules so they
can be stored specifically to that customer. |
| This maintains features that
are unique to an installation -- those that were customized specifically to that
customer's needs. |
| On an major upgrade, these
can be folded into the current baseline.
|
|
| Good code practices
and in-line documentation (stays current).
| Lint checkers - eliminate
irratic code before testing. |
| Consistent formatting
improves readibility between programmers. |
| Thorough documentation,
in-line, keeps the code and the documentation current to each other over years of changes.
|
|
| Maintain data in one place.
| All edits from multiple
locations must unformly display in all files. Use references instead of copies of the
data. |
| Ensure data is typed in only
once. Reference original data to display it in other files. When data changes in one
place, it must change in all places.
|
|
| Confine all processes
elements to a single function
| Containing a process within
a set of functions, minimizes unintended consequences to other program areas, when
implementing changes. |
|
|