These are some common implementation decisions we are faced with. Note that our intent to build a Java applet constrains many of these.
There are two sides to the subsystems decisions: layers and interfaces.
Layers
Application
Model/View design pattern using Java Observer-Observable
This is a common design pattern, and simplifies our approach. The GUI components will implement the Observer interface. The model will be a subclass of the Observable class. This automates notification of the GUI when the model changes state.
Java Abstract Window Toolkit (AWT)
Java Runtime (native toolkit)
OS
Interfaces - defined by Java
There are three typical boundary condition decisions: how to start up, how to stop and what to do in the event of catastrophic failure. We are abdicating all responsibility to the applet class. We won’t even (explicitly) worry about the divide-by-zero problem that will occur if the weight or alpha acid is supplied as zero.
An often-overlooked issue is stating clearly what the priorities are.
Unimportant
- Performance