Coches y software (I)
Me resulta curioso la cantidad de veces que se compara el desarrollo de software con la industria automovilística. Coloquialmente comparamos la venta de un programa con la venta de un coche en cuanto a que la formación no se incluye con el vehículo, hay que pagarla aparte (Auto escuela). Comparamos el proceso de diseño de un coche con el de diseño de una aplicación, las pruebas de calidad que utiliza la industria del automóvil con las que utilizamos quienes hacemos programas. Pero nos equivocamos, como dice Alejandro Sanz, "no es lo mismo".
Además de las diferencias "palpables" y obvias, un automóvil no es como un programa. En un automóvil se gasta mucho dinero durante el proceso de diseño, se gasta dinero durante el lanzamiento y durante la producción física del mismo. En el desarrollo de un programa se gasta mucho dinero en el proceso de diseño, pero no en el de producción, al menos no con el software "empaquetado".
Durante el diseño de un vehículo los ingenieros se atienen a una serie de normas, tanto internas de la casa (estilo, tamaño, motores, etc.), como de las autoridades, en materia de seguridad, apariencia (dos faros, luces traseras, emisiones contaminantes, ruidos, etc.). Se hacen planos, se hacen cálculos, se montan maquetas, un prototipo, se hacen unidades de prueba que ser testan y se van corrigiendo, cada parte del vehículo se somete a una serie de pruebas de desgaste, de especificaciones funcionales (¿A que no sabías que la palanquita que sirve para abrir o cerrar las bocas de ventilación debe tener una resistencia indicada entre un mínimo y un máximo? Si está por debajo del mínimo puede vibrar, puede moverse "a su antojo" y si supera el máximo es difícil de manejar, requiere más atención, no lo puede hacer un niño. Algún día contaré porque se esto.), paralelamente mientras se terminan de pulir aspectos del vehículo, en las factorías se van preparando los procesos para la llegada del nuevo modelo, se van adquiriendo las herramientas necesarias, se reprograman los robots, muchas cosas. Finalmente un día, se empieza a producir el vehículo, se van cogiendo las piezas y se van montando, después de un periodo de tiempo, al final de la cadena de montaje, van apareciendo los vehículos montados y se llevan a los concesionarios para que los vendan.
Con un programa algo similar al inicio. Los analistas describen que es lo que ha de hacer el programa, pero... ¿Hay alguna autoridad que les indique que normas ha de cumplir el software, que indique un mínimo de calidad, de funcionalidad...? lo dejo en el aire. Luego se diseñan los objetos, las tablas, las pantallas, listados, informes, enlaces con bases de datos, protocolos, etc. (dependiendo del tipo de aplicación), luego los programadores hacen prototipos, empiezan a codificar el programa, se hacen pruebas, se verifica que todo funciona según lo previsto, se hacen las últimas modificaciones, y a producir, pero resulta que ésta producción es muy sencilla: grabar CDs y empaquetar, y si se distribuye por internet, ni se graba ni se empaqueta.
Es decir, que durante la fase inicial en los dos casos hay mucho recurso y mucho trabajo, pero luego en la fase de producción, en un caso continuan los gastos y en otro casi insignificantes.
Y no terminan ahi las diferencias...
continuará ...
Además de las diferencias "palpables" y obvias, un automóvil no es como un programa. En un automóvil se gasta mucho dinero durante el proceso de diseño, se gasta dinero durante el lanzamiento y durante la producción física del mismo. En el desarrollo de un programa se gasta mucho dinero en el proceso de diseño, pero no en el de producción, al menos no con el software "empaquetado".
Durante el diseño de un vehículo los ingenieros se atienen a una serie de normas, tanto internas de la casa (estilo, tamaño, motores, etc.), como de las autoridades, en materia de seguridad, apariencia (dos faros, luces traseras, emisiones contaminantes, ruidos, etc.). Se hacen planos, se hacen cálculos, se montan maquetas, un prototipo, se hacen unidades de prueba que ser testan y se van corrigiendo, cada parte del vehículo se somete a una serie de pruebas de desgaste, de especificaciones funcionales (¿A que no sabías que la palanquita que sirve para abrir o cerrar las bocas de ventilación debe tener una resistencia indicada entre un mínimo y un máximo? Si está por debajo del mínimo puede vibrar, puede moverse "a su antojo" y si supera el máximo es difícil de manejar, requiere más atención, no lo puede hacer un niño. Algún día contaré porque se esto.), paralelamente mientras se terminan de pulir aspectos del vehículo, en las factorías se van preparando los procesos para la llegada del nuevo modelo, se van adquiriendo las herramientas necesarias, se reprograman los robots, muchas cosas. Finalmente un día, se empieza a producir el vehículo, se van cogiendo las piezas y se van montando, después de un periodo de tiempo, al final de la cadena de montaje, van apareciendo los vehículos montados y se llevan a los concesionarios para que los vendan.
Con un programa algo similar al inicio. Los analistas describen que es lo que ha de hacer el programa, pero... ¿Hay alguna autoridad que les indique que normas ha de cumplir el software, que indique un mínimo de calidad, de funcionalidad...? lo dejo en el aire. Luego se diseñan los objetos, las tablas, las pantallas, listados, informes, enlaces con bases de datos, protocolos, etc. (dependiendo del tipo de aplicación), luego los programadores hacen prototipos, empiezan a codificar el programa, se hacen pruebas, se verifica que todo funciona según lo previsto, se hacen las últimas modificaciones, y a producir, pero resulta que ésta producción es muy sencilla: grabar CDs y empaquetar, y si se distribuye por internet, ni se graba ni se empaqueta.
Es decir, que durante la fase inicial en los dos casos hay mucho recurso y mucho trabajo, pero luego en la fase de producción, en un caso continuan los gastos y en otro casi insignificantes.
Y no terminan ahi las diferencias...
continuará ...
0 comentarios