Software development

Key Points   |   Experience   |   Methodology
flow diagram    

Key Points

  • Distributed real-time and embedded applications
  • C and C++ for the embedded hardware
  • Java for supervisory components
  • UDP and TCP communications between the embedded hardware and the supervisory components
  • RS-232 and RS-485 communications
  • Windows and Linux
  • HTML5, CSS and JavaScript for applications requiring a web interface
  • SQL for applications requiring access to a back-end database
  • SSH and SFTP for remote access and control

separator bar


My experience of software design and implementation goes back to 1974. My first work with real-time systems was in 1978, working with radar.
Current projects include control systems for both hydroponics and aquaponics systems, and for electronic signage of floodways, both running Linux on a single-board computer. The hydroponics system also includes a supervisor application written in Java running on a desktop computer. It uses both UDP and TCP to communicate with the single-board computers.

separator bar
Previous work includes a multi-function scoreboard for a sports facility. The system includes the sign itself, a desktop computer, and an Android tablet. Communications technologies include fibre-optic and WiFi. The application on the desktop is written in Java, and the application on the Android is written in Java for Android.

separator bar
At about the same time I designed and implemented a single-board computer solution to allow remote control of price poles at petrol stations. The principle function was to convert the price information into a form used by the communication protocol used by the LED signs themselves. Technologies included C, Linux, RS-232, RS-485, wired ethernet, WiFi and SSH.

Development methodology

The activity of software development has changed dramatically since the 1970s, that change driven by large changes in technology. The methodology presented below is what I currently use and recommend for embedded systems, and it is subject to revision with changes in business practices and available technology.

  • Identification of processes
  • Identification of process dependencies
  • Allocation of processes to hardware platforms
  • Design of inter-process communications
  • Review
  • Selection of development environments
  • Development of test schema
  • Component design
  • Data storage design
  • Review
  • Coding and testing of embedded components against specification
  • Coding and testing of supervisory components against specification
  • Iterate the above as far back as required
  • Customer review
  • Field trials
  • Support and maintenance
back   back