PROGETTAZIONE SOFTWARE

paradigmi, metodologie, tools, norme di riferimento

per lo sviluppo del software

Il software viene rappresentato attraverso i seguenti paradigmi, tra loro coesistenti e funzionali allo sviluppo del software stesso in applicazioni embedded real-time.

  • Software = strutture dati e algoritmi che operano su di essi, formalizzati tramite pseudolinguaggio.
    Rif.: “Algorithms + Data Structures = Programs”, by Niklaus Wirth, Prentice-Hall Series in Automatic Computation.
  • Software = processi stutturati e sequenziati.
    Rif.: “Structured Development for Real-Time Systems”, by Paul T. Ward, Stephen J. Mellor, Prentice-Hall.
  • Software = automa a stati finiti.

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

Il software viene sviluppato conformemente ad una procedura interna, che parte dalla pianificazione dello sviluppo e dalla specifica dei requisiti e termina con la validazione del software, e recepisce i requisiti normativi sopra elencati, garantendone la conformità.

Il software viene codificato secondo una procedura interna, che permette di uniformare lo stile di programmazione secondo criteri volti all’ottimizzazione delle prestazioni su microcontollori embedded. Conseguenza di ciò è anche una maggiore leggibilità del codice ed interazione tra gli sviluppatori.

La gestione delle versioni e delle configurazioni viene gestita tramite Subversion (SVN). L’uso di un sistema di questo tipo presenta i seguenti vantaggi:

  • Integrazione automatica del lavoro di tutti gli sviluppatori, riducendo il rischio di errori ed il tempo di sviluppo.
  • Registrazione di tutte le revisioni di tutti i files del progetto. Questo in particolare ci permette di:

    – ricreare qualunque situazione passata, sulla base della sola data o di una etichetta (tag) precedentemente apposta.
    – vedere le differenze tra qualunque coppia di istanze passate di qualunque file.

  • Possibilità di lavorare su più rami di sviluppo paralleli dello stesso software. Questo in particolare ci permette di:

    – correggere bachi su vecchie versioni, da integrare poi su quella corrente o su una futura
    – produrre comodamente versioni alfa o beta a partire da qualunque versione passata da integrare poi su qualunque versione futura
    – produrre versioni custom e tenerle comodamente aggiornate con l’ultima versione del software ufficiale (questo interessa molto alle vendite!)