Archivi categoria: software

Software medico

“Più di metà degli apparecchi medici venduti in America (il maggior mercato di strumenti medici) è basata su software, spesso su molto software. Il software di un pace-maker può contenere oltre 80.000 righe di codice, un infusore di farmaci 170.000, e un apparato per la risonanza magnetica oltre 7 milioni di righe di codice.”

L’affidabilità di questo software è ovviamente critica. Uno studio condotto su apparati venduti negli USA dal 1999 al 2005 ha scoperto che un terzo di tali apparati sono stati tolti dal servizio per problemi legati al software.

Una strada per rendere il software medico più affidabile potrebbe essere l’open source, per permettere una migliore visibilità e la possibilità di esaminare il codice. Purtroppo, i regolamenti di approvazione del software stabiliti dagli enti di validazione (come la FDA, la Food and Drug Administration degli USA) sono fatti in modo da scoraggiare il ricorso alle pratiche collaborative tipiche dell’open source.

“When code can kill or cure”, The Economist, Technology Quarterly, June 2nd 2012.

La qualità del codice software è importante

La qualità del codice è importante, scrive Bjarne Stroustrup, l’ideatore del linguaggio di programmazione C++ , in un articolo pubblicato a gennaio 2012 su IEEE Computer.

Importante, in particolare, per il software presente in quei dispositivi su cui la nostra vita quotidiana si regge. Il software che controlla le automobili, i treni, gli aerei. Ma anche i dispositivi medici, gli apparati di controllo ambientale, i telefoni cellulari, o i PC tramite i quali accediamo ai conti bancari.

Stroustrup definisce tutto il software che può creare danni fisici, ambientali o economici come software infrastrutturale, e sostiene che deve essere progettato e implementato diversamente dagli altri tipi di software, quelli meno rischiosi per gli esseri umani:

“Infrastructure software needs more stringent correctness, reliability, efficiency, and maintainability requirements than non- essential applications. This implies greater emphasis on up-front design, static structure enforced by a type system, compact data structures, simplified code structure, and improved tool support. Education for infrastructure and application developers should differ to reflect that emphasis.”

Interessante, tra l’altro, l’opinione di Stroustrup contraria al Model-Driven Development per il software infrastrutturale: “Many tasks aren’t mathematically well-defined, resource constraints can be draconian, and we must deal with hardware errors. I see no alternative to programmers and designers directly dealing with code for most of these tasks.”

Duraturo – adattabile

Il web è il più grande laboratorio mai esistito per studiare il comportamento umano, secondo Gerry McGovern:

“The Web facilitates continuous testing and improvement. Great web designs are responsive and flexible. They allow for rapid innovation based on feedback.”

Dal “Built-to-last” (fatto per durare) al “Built-to-change” (fatto per cambiare).

Sulla stessa linea, per approfondire, l’ottimo libro di Eric Ries, The Lean Startup.

Value delivery

Fornire valore agli stakeholder (le parti interessate al rilascio di un prodotto) è ciò che si chiede allo sviluppo software.
Ma le specifiche dei requisiti spesso dettagliano solo i dettagli sulle funzionalità, anziché affrontare in modo diretto gli interessi degli stakeholder e chiarire ciò che per gli stakeholder è davvero importante.

“What’s Fundamentally Wrong? Improving our Approach Towards Capturing Value in Requirements Specification”, un articolo di Tom Gilb con Lindsey Brodie, su Requirements Network (per leggerlo, serve una registrazione gratuita).

Tecno austerità

“Meno è meglio”.

“I tecnologi si stanno risvegliando ai vantaggi del minimalismo, per due motivi: il fastidio per l’eccessivo numero di funzionalità dei prodotti da parte dei clienti che vogliono solo che le cose funzionino, e una forte richiesta da parte di clienti meno ricchi provenienti dai paesi in via di sviluppo.”

The Economist, 12 giugno 2010.

Giochi per la formazione IT

Il mio interesse per il software è scaturito, trent’anni fa, quando mi è stato presentato un problema da risolvere con un flow chart, e mi ha appassionato come i giochi della Settimana Enigmistica.

L’uso dei giochi per la formazione sta forse crescendo: “Puzzle-Based learning for Engineering and Computer Science“, su IEEE Computer, April 2010. (In inglese, i puzzle non sono solo i giochi in cui si incastrano le tesserine, ma anche tutti i giochi logici, linguistici, enigmistici, matematici.)

Scratch: programmazione per bambini

Scratch è un linguaggio di programmazione pensato per i bambini.

Per chi lo usa (anche per gli adulti), è molto divertente, e permette di fare un sacco di cose interessanti.

Dal punto di vista tecnico è potente: il MIT (Massachusetts Institute of Technology) Media Lab ha realizzato un eccellente linguaggio didattico.

Su Communications of the ACM, novembre 2009, un articolo di presentazione da parte degli autori (scaricabile ma a pagamento per i non soci ACM).

Altri articoli su Scratch (gratis).

Non tutti i videogame rintronano

“A growing number of researchers – and an expanding body of evidence – indicate that joysticks can go a long way toward building smarter children with better reasoning skills.
Games such as Sim City, Civilization, Railroad Tycoon, and Age of Mythology extend beyond the flat earth of rote memorization and teach decision-making and analytical skills in immersive, virtual environments that resemble the real world.”

Samuel Greengard, “Are We Losing Our Ability to Think Critically?“, in Communications of the ACM, 07/2009.