SOFTWARE DESIGN

Software is represented through the following paradigms, together coexistent and functional for software development in embedded, real-time applications.

  • Software = data structures and algorithms that operates on them, formalized with pseudo language.
    Ref.: “Algorithms + Data Structures = Programs”, by Niklaus Wirth, Prentice-Hall Series in Automatic Computation.
  • Software = sequenced and structured processes.
    Rif.: “Structured Development for Real-Time Systems”, by Paul T. Ward, Stephen J. Mellor, Prentice-Hall.
  • Software = finite state machine.

Software coding is done in conformity with an internal manual (available for our customers), that permits to make uniform the programming style according to performance optimization criteria for embedded microcontrollers. As a consequence of this method, code is more readable and interaction among developers is easier.

Software is developed through a a formalized cycle (the procedure is available for our customers), that starts from requirement specification and ends with testing.

For version management we use Subversion (SVN).

Using this kind of system offers the following advantages:

  • Automatic integration of all developers’ job, reducing the risk of errors and the development time.
  • Recording of all project file revisions. In particular this allows:

    – to restore any past situation, starting from the date or from a tag previously created.
    – to view the differences between any couple of any file past instances.

  • Possibility to work on several parallel branches of development of the same software. In particular, this allows:

    – to correct bugs on old versions and integrate the corrections on current or future versions.
    – to produce easily alpha or beta versions starting from any past version, with the possibility of integrate the modifications in any future version.
    – to produce custom versions and keep them updated with last official software version (Sales department likes this very much!)