Los objetivos de este capítulo son introducir el concepto de un sistema
socio-técnico —que incluye personas, software y hardware— y el proceso de la ingeniería de sistemas. • El término sistema es universalmente usado. Hablamos sobre: • sistemas informáticos • sistemas operativos • sistemas de pago • sistema educacional • sistema de gobierno
Estos son obviamente usos bastante diferentes de la palabra
sistema aunque coinciden en que, de algún modo, el sistema es más que simplemente la suma de sus partes. Definición de Sistema
Un sistema es una colección de componentes
interrelacionados que trabajan conjuntameme para cumplir algún objetivo. Los sistemas que incluyen software se dividen en dos categorías • Sistemas técnicos informáticos: son sistemas que incluyen componentes hardware y software, pero no procedimientos y procesos. Ejemplos de sistemas técnicos son las televisiones, los teléfonos móviles y la mayoría del software de las computadoras personales. Los individuos y organizaciones usan sistemas técnicos para algún fin, pero el conocimiento de este fin no es parte del sistema. Por ejemplo, el procesador de textos que estoy utilizando no es consciente de que se está utilizando para escribir un libro. • Sistemas socio-técnicos: comprenden uno o más sistemas técnicos pero, crucialmente, también incluyen conocimiento de cómo debe usarse el sistema para alcanzar algún objetivo más amplio. Esto quiere decir que estos sistemas han definido los procesos operativos, incluyen personas (los operadores) como partes inherentes del sistema, son gobernados por políticas y reglas organizacionales y pueden verse afectados por restricciones externas tales como leyes nacionales y políticas reguladoras. Por ejemplo, este libro fue creado por un sistema socio-técnico de la industria editorial que incluye varios procesos y sistemas técnicos. Las características esenciales de los sistemas socio-técnicos son las siguientes • Tienen propiedades emergentes que son propiedades del sistema como un todo más que asociadas con partes individuales del sistema. Las propiedades emergentes dependen tanto de los componentes del sistema como de las relaciones entre ellos. Como esto es tan complejo, las propiedades emergentes sólo pueden ser evaluadas una vez que el sistema ha sido montado. • Son a menudo no deterministas. Esto significa que, cuando se presentan con una entrada específica, no siempre producen la misma salida. El comportamiento del sistema depende de operadores humanos, y las personas no siempre reaccionan de la misma forma. Además. el uso del sistema puede crear nuevas relaciones entre los componentes del sistema y, por lo tanto, cambiar su comportamiento emergente. • El grado en que el sistema apoya los objetivos organizacionales no sólo depende del sistema en sí mismo. También depende de la estabilidad de estos objetivos, de las relaciones y conflictos entre los objetivos organizacionales y de cómo las personas en la organización interpretan estos objetivos. Una nueva dirección puede reinterpretar los objetivos organizacionales para los que un sistema está diseñado, y un sistema «exitoso» puede convertirse en un «fracaso». En este curso, se estudian los sistemas socio-técnicos que incluyen hardware y software, los cuales han definido procesos operativos y ofrecen una interfaz, implementada en software, a los usuarios humanos. Los ingenieros de software deben poseer un conocimiento de los sistemas socio-técnicos y la ingeniería de sistemas (White et al., 1993; Thayer, 2002) debido a la importancia del software en estos sistemas. Por ejemplo. hubo menos de 10 megabytes de software en el programa espacial Apolo que puso un hombre en la Luna en 1969, pero existen más de 100 megabytes de software en los sistemas de control de la estación espacial Columbus. Una característica de los sistemas es que las propiedades y el comportamiento de los componentes del sistema están inseparablemente entremezclados. El funcionamiento exitoso de cada componente del sistema depende del funcionamiento de otros componentes. Así, el software sólo puede funcionar si el procesador es operativo. El procesador sólo puede hacer cálculos si el sistema de software que define las operaciones se ha instalado de forma acertada. Por lo general, los sistemas son jerárquicos y de este modo incluyen otros sistemas. Por ejemplo, un sistema de órdenes Y' control policiaco puede incluir un sistema de información geográfica para proporcionar los detalles de la localización de incidentes. Estos sistemas se denominan subsistemas. Una característica de éstos es que pueden operar por sí solos como sistemas independientes. Por lo tanto. el mismo sistema de información geográfica se puede utilizar en diferentes sistemas. Puesto que el software es intrínsecamente flexible, los ingenieros de software deben resolver muchos problemas inesperados. Por ejemplo. digamos que la instalación de un radar se ha situado de tal forma que aparece una imagen fantasma de la imagen del radar. No es práctico mover el radar a un sitio con menos interferencias, por lo que los ingenieros de software tienen que encontrar otra técnica para eliminar estas imágenes fantasma. Su solución podría ser mejorar las capacidades del procesamiento de imágenes del software para eliminar las imágenes fantasma. Esto puede ralentizar el software de tal forma que el rendimiento sea inaceptable. El problema se puede entonces caracterizar como un «fallo de funcionamiento del software». mientras que, en realidad, fue un fallo en el proceso de diseño del sistema en su totalidad. Esta situación, en que a los ingenieros de software se les deja el problema de mejorar las capacidades del software sin incrementar el costo del hardware, es muy común. • La ingeniería del software es, por lo tanto crítica para el desarrollo acertado de complejos sistemas informáticos socio-técnicos. • Como ingeniero de software, usted no debería ocuparse sólo del software en sí mismo, sino que además debería tener un conocimiento más amplio de cómo el software interactúa con otros sistemas hardware y software y cómo se debe usar. • Este conocimiento le ayuda a entender los límites del software, a diseñar un mejor software y a participar como miembros iguales de un grupo de ingeniería de sistemas. Propiedades emergentes de los sistemas • Las propiedades emergentes funcionales aparecen cuando todas las partes de un sistema trabajan de forma conjunta para cumplir algún objetivo. Por ejemplo, una bicicleta tiene la propiedad funcional de ser un instrumento de transporte una vez que sus componentes se han conjuntado. • Las propiedades emergentes no funcionales se refieren al comportamiento de los sistemas en su entorno operativo. Ejemplos de propiedades no funcionales son la fiabilidad, el rendimiento, la seguridad y la protección. A menudo son factores críticos para sistemas informáticos, ya que un fallo mínimo en estas propiedades puede hacer inutilizable el sistema Ingeniería de sistemas La ingeniería de sistemas es la actividad de especificar. diseñar, implementar, validar, utilizar y mantener los sistemas socio-técnicos. Los ingenieros de sistemas no sólo tratan con el software, sino también con el hardware y las interacciones del sistema con los usuarios y su entorno. Deben pensar en los servicios que el sistema proporciona, las restricciones sobre las que el sistema se debe construir y funcionar y las formas en las que el sistema es usado para cumplir con su propósito. Las fases del proceso de la ingeniería de sistemas Diferencias importantes entre el proceso de la ingeniería de sistemas y el proceso de desarrollo del software: 1. Alcance limitado para rehacer el trabajo durante el desarrollo de sistemas, Una vez que se han tomado decisiones en la ingeniería del sistema, como la posición de una telefonía móvil, cuesta mucho trabajo cambiarlas. Raramente es posible rehacer el trabajo en el diseño del sistema para resolver estos problemas. Una razón por la que el software ha llegado a ser tan importante en los sistemas es que permite cambios que se hacen durante el desarrollo del sistema, como respuesta a nuevos requerimientos. 2. Implicación interdisciplinaria. Muchas disciplinas de la ingeniería se conjuntan en la ingeniería de sistemas. Existe una gran discrepancia debido a que diferentes ingenieros usan diferente terminología y convenciones. Definición de requerimientos del sistema Las definiciones de requerimientos del sistema especifican qué es lo que el sistema debe hacer (sus funciones) y sus propiedades esenciales y deseables. Esta fase de definición de requerimientos usualmente se concentra en la derivación de tres tipos de requerimientos: 1. Requerimientos funcionales abstractos. 2. Propiedades del sistema. 3. Características que no debe mostrar el sistema. Diseño del sistema El diseño del sistema se centra en proporcionar la funcionalidad del sistema a través de sus diferentes componentes. Actividades del diseño del sistema 1. Dividir requerimientos. Analice los requerimientos y organícelos en grupos afines. Normalmente existen varias opciones posibles de división, y puede sugerir varias alternativas en esta etapa del proceso. 2. Identificar subsistemas. Debe identificar los diferentes subsistemas que pueden, individual o colectivamente, cumplir los requerimientos. 3. Asignar requerimientos a los subsistemas. Asigne los requerimientos a los subsistemas. En principio, esto debe ser sencillo si la división de requerimientos se utiliza para la identificación de subsistemas. 4. Especificar la funcionalidad de los subsistemas. Debe enumerar las funciones específicas asignadas a cada subsistema.