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. |
|
|