¿Cuál es la diferencia entre un sistema y un software?

Un sistema es un conjunto de elementos que interactúan. Si puedes hacer un diagrama con elementos y conexiones, entradas y salidas, describe un sistema. Los sistemas suelen tener propiedades "emergentes" que no se pueden predecir por las partes o las conexiones.

Es común modelar estas propiedades con diagramas, ecuaciones, conjuntos, máquinas de estado u otros métodos. La cuestión no es sólo -encontrar- problemas, sino también encontrar formas baratas (o ligeras, o de bajo consumo, etc.) de aumentar drásticamente la fiabilidad (o la seguridad de la misión, o lo que sea.)

Es común analizar los sistemas con el análisis de modos de fallo y efectos (FMEA): Por ejemplo, hacer una entrada en la tabla para cada elemento y conexión, imaginar los efectos si falla, inventar una solución.

Un método de análisis de fallos relacionado es un análisis de árbol de fallos (FTA). Un FTA suele contar con la ayuda de un software de análisis que se ejecuta en un PC, no en el sistema. El software lee un archivo de árbol de fallos que describe el sistema. El archivo suele ser elaborado por un ingeniero. El software FTA encuentra "conjuntos de cortes" que describen los "modos de fallo" y da una probabilidad de fallo que puede expresarse como tiempo medio entre fallos. El análisis del árbol de fallos también suele contar con la ayuda de manuales estándar que indican la fiabilidad de los componentes. (Disponible en organizaciones militares muy grandes.)

En el primer diseño de la mayoría de los sistemas hay fuentes únicas de fallo: Por ejemplo, en las naves espaciales, las fuentes de alimentación y los controles de actitud, o en las ciudades, los puentes y los sistemas telefónicos.

Ambos métodos (FMEA y FTA) también pueden aplicarse a otros ámbitos distintos de los fallos. Por ejemplo, la seguridad (para sistemas médicos, reactores nucleares o aviones), la garantía de la misión (para sistemas militares o financieros), la seguridad, la legitimidad (sistemas de votación), etc. Los diseñadores de sondas o satélites espaciales científicos suelen modelar las probabilidades de aseguramiento de la misión científica.

Nótese que ninguno de estos métodos de análisis depende de tecnologías particulares como el software.

El software es -simplemente- una tecnología -particular- en la que patrones numéricos en una memoria (es decir, el software) son ejecutados por un ordenador.

El software es maravillosamente útil, y podría ser un subsistema, pero un ingeniero de sistemas se preocuparía no sólo de la fiabilidad del software, sino también de su compilador, de los arneses de prueba, de la cobertura de las pruebas, de la fiabilidad de las piezas de un ordenador (la CPU, los conectores de los cables de E/S, etc.) , de su fuente de alimentación, del blindaje electromagnético y de las interferencias, etc.