Thoughts about Design W. Kandinsky, Contrasting Sounds

Design Thoughts

* Design Principles
* Software Engineering

Design Hardware

Abstraction

The application must to have at least 3 levels of abstraction.

Error Handling

The error handling should be of 2 types : for users, for debugging

Singletons

How to connect 2 singlestones

Information Persistance

Changes in hardware

The maximum of the code must be hardware-independent.

Test interface

You should provide two interfaces with your program : for usual use, and for testing.

Test Center class

"Test Center" class implements the testing interface. It should "know" about every device in the system. Thus the device on initialization / creation should register at the "Test Center". Test Center gives us opportunity to accumulate different statuses of the system ( for example : time of last

Simulation

Make sure your software runs in simulation mode. It lets you to develop first versions without the needed hardware. It it useful in debugging upper layers of software.

Configuration

It is very important to have information about the system configuration. All paths, all parameters should held in one place to be shared by all applications that need it. So the repository should be external or accessible from the outside of the application.

Error Handling

The error handling should be of 2 types : for users and for debugging.

Severity

Error

Warning

Info

1