Step 2 - System Design

These are some common implementation decisions we are faced with. Note that our intent to build a Java applet constrains many of these.

  • Subsystem Organization
  • Concurrency (none)
  • Processor Allocation (one)
  • Data Store Management (none)
  • Global Resources (Java static items)
  • Control (Java AWT events)
  • Boundary Conditions
  • Tradeoff priorities

Subsystems

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

Boundary Conditions

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.

  • init/start - standard features of applet
  • stop/destroy - standard features of applet
  • crash - handled by Java runtime

Tradeoff Priorities

An often-overlooked issue is stating clearly what the priorities are.

  • Important
    • Pedagogical simplicity
    • Clear use of Java features
    • Simple OO concepts

Unimportant

  • Performance

Table Of Contents

Previous topic

Step 1 - Analysis

Next topic

Step 3 - Detailed Design