Real-time embedded software development is based on a well-established set of paradigms, methodologies and technologies, evolved during our decades of activity in the field. Based on the solid foundations of computer science applied to embedded and real-time systems, our methodologies and technologies are constantly updated based on the evolution of microcontrollers, related tools, and regulatory requirements.
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.
Lo sviluppo e, più in generale, il ciclo di vita del software viene gestito in conformità e con riferimento alle più recenti norme internazionali di riferimento, ed in particolare:
- IEC 62304 – Medical device software – Software life-cycle processes.
- ISO 14971 – Medical devices – Application of risk management to medical devices
- IEC TR 80002-1 – Medical device software – Part 1: Guidance on the application of ISO 14971 to medical device software
- ISO/IEC 12207 – Systems and software engineering – Software life cycle processes
- IEC 61508-3 – Functional safety of electrical/electronic/programmable electronic safety-related systems – Part 3: Software requirements
- IEC 82304-1 – Health software – Part 1: General requirements for product safety
Software is developed through a a formalized cycle (the procedure is available for our customers), that starts from requirement specification and ends with testing.
- IEC 61508-3 – Functional safety of electrical/electronic/programmable electronic
safety-related systems – Part 3: Software
- IEC 62304 – Medical device software – Software
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!)