flogo4.gif (5651 bytes)     Back Flowcon Up

FlowconDesign. Software-design

Software Technical Design

Make it truly real time:
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.