Ingeniería de Sistemas e Ingeniería de Software
¿Qué es ingeniería de sistemas?
La ingeniería de sistemas es un modo de enfoque interdisciplinario que permite estudiar y comprender la realidad, con el propósito de implementar u optimizar sistemas complejos. Puede verse como la aplicación tecnológica de la teoría de sistemas a los esfuerzos de la ingeniería, adoptando en todo este trabajo el paradigma sistémico. La ingeniería de sistemas integra otras disciplinas y grupos de especialidad en un esfuerzo de equipo, formando un proceso de desarrollo centrado.
Sistema
conjunto de elementos de hardware, software, personas, procedimientos, herramientas y otros factores organizativos, organizados para llevar a cabo un objetivo común.
Funciones de la Ingeniería de sistemas
- Definición del problema: Determinación de las expectativas hacia el producto, necesidades y restricciones obtenidas y analizadas en los requisitos del sistema. Trabaja cerca del cliente para establecer las necesidades operacionales.
- Análisis de la solución: Determinar las opciones posibles para satisfacer los requisitos y las restricciones. Estudiar y analizar las posibles soluciones. Seleccionar la mejor, sopesando las necesidades inmediatas, opciones de implementación, utilidad, evolución del sistema…
- Evaluación del producto: Determinar la calidad y cantidad de los productos elaborados, a través de evaluaciones, pruebas, análisis, inspecciones…
- Planificación de los procesos: Determinar los grupos de tareas técnicas que se deben realizar, el esfuerzo requerido para cada una, su prioridad y los riesgos que implican para el proyecto.
- Control de los procesos: Determinar los métodos para controlar las actividades técnicas del proyecto y los procesos; la medición del progreso, revisión de los productos intermedios y ejecución de las acciones correctivas, cuando corresponda.
Ingeniería del Software
o ¿Qué es la Ingeniería del Software?
o ¿En qué se diferencia un Programador de un Ingeniero de Software?
o ¿Cuál es la diferencia entre un Ingeniero de Software y un Ingeniero de Sistemas?
o ¿Qué diferencia la Ingeniería del Software de la Ciencia de la Computación?
o ¿Qué es el software?
o ¿Qué es un proceso de software?
o ¿Qué es un modelo de software?
Mitos del software
· Es fácil modificar el software
· Como es complejo, el software puede fallar
· Una vez que el programa funciona, hemos terminado
· Hasta que empiece a funcionar no sabré si está bien
· Al cliente basta con darle un código que funcione
· El programa no falla, es el cliente que no sabe utilizarlo
· Con pruebas y verificación formal se pueden eliminar todos los errores
· Cuanto más voluminosa sea la documentación de un producto, mejor será
· Si una característica de la aplicación no es necesaria para el 80% de los usuarios, al 20% restante realmente no le hará falta
· Si un error ha sobrevivido a dos revisiones, no es un error, sino comportamiento normal del sistema
¿Qué es el software?
· Pressman:
1. Instrucciones (programas de computadora) que cuando se ejecutan proporcionan la función y el rendimiento deseados
2. Estructuras de datos que permiten a los programas manipular adecuadamente la información, y
3. Documentos que describen la construcción y uso de programas
· Sommerville:
o Programas de ordenador y documentación asociada
o Los productos de software pueden ser
• Genéricos: desarrollados para clientes muy diversos
• Hecho a medida: para un cliente particular de acuerdo a su especificación
Desastres causados por fallos del software
o
A continuación se describen 20 desastres causados en mayor o menor medida por el software, en orden cronológico.
A continuación se describen 20 desastres causados en mayor o menor medida por el software, en orden cronológico.
1. Marinero sin rumbo (1962)Coste: 18,5 millones de dólares.
Desastre: El cohete Mariner 1, en una investigación espacial destinada a Venus, se desvió de su trayectoria de vuelo poco después de su lanzamiento. El control de la misión destruyó el cohete pasados 293 segundos desde el despegue.
Causa: Un programador codificó incorrectamente en el software una fórmula manuscrita, saltándose un simple guión sobre una expresión. Sin la función de suavizado indicada por este símbolo, el software interpretó como serias las variaciones normales de velocidad y causó correcciones erróneas en el rumbo que hicieron que el cohete saliera de su trayectoria. (Más información)
2. El hundimiento del Hartford Coliseum (1978)Coste: 70 millones de dólares, más otros 20 millones en daños a la economía local.
Desastre: Sólo unas horas después de que miles de aficionados al hockey abandonaran el Hartford Coliseum, la estructura de acero de su techo se desplomaba debido al peso de la nieve.
Causa: El desarrollador del software de diseño asistido (CAD) utilizado para diseñar el coliseo asumió incorrectamente que los soportes de acero del techo sólo debían aguantar la compresión de la propia estructura. Sin embargo, cuando uno de estos soportes se dobló debido al peso de la nieve, inició una reacción en cadena que hizo caer a las demás secciones del techo como si se tratara de piezas de dominó. (Más información)
3. La CIA le da gas a los soviéticos (1982)Coste: Millones de dólares, daño significativo a la economía soviética.
Desastre: El software de control se volvió loco y produjo una presión excesiva en la tubería de gas transsiberiana, provocando la mayor explosión no nuclear, causada por el hombre, de la historia de la tierra.
Causa: los agentes de la CIA supuestamente introdujeron un error en el sistema informático canadiense adquirido por los soviéticos para controlar sus tuberías de gas. La compra era parte de un estratégico plan soviético para robar u obtener de forma encubierta tecnología secreta de los Estados Unidos. Cuando la CIA descubrió la compra, sabotearon el software de forma que éste superara la inspección soviética pero fallara una vez operativo. (Más información)

4. La Tercera Guerra Mundial… o casi (1983)
Coste: prácticamente toda la humanidad.
Desastre: El sistema soviético de alerta temprana indicó erróneamente que los Estados Unidos habían lanzado cinco misiles balísticos. Afortunadamente, el oficial de servicio, con un gran instinto, razonó que si realmente les estuvieran atacando les habrían lanzado más de cinco misiles, por lo que informó del aparente ataque como una falsa alarma.
Causa: un error en el software soviético hizo que los efectos de la reflexión de la luz solar en las nubes fueran considerados misiles por el sistema. (Más información)

5. La máquina asesina (1985)
Coste: Tres personas muertas, otras tres heridas gravemente.
Desastre: La máquina de terapia radiactiva canadiense Therac-25 falló y emitió dosis letales de radiación a los pacientes.
Causa: Debido a un sutil bug llamado race condition (condición de carrera), un técnico pudo accidentalmente configurar el Therac-25 de forma que el haz de electrones se disparase en modo de alta potencia sin que el paciente contara con la protección apropiada. (Más información)
Coste: Tres personas muertas, otras tres heridas gravemente.
Desastre: La máquina de terapia radiactiva canadiense Therac-25 falló y emitió dosis letales de radiación a los pacientes.
Causa: Debido a un sutil bug llamado race condition (condición de carrera), un técnico pudo accidentalmente configurar el Therac-25 de forma que el haz de electrones se disparase en modo de alta potencia sin que el paciente contara con la protección apropiada. (Más información)
¿Qué es la Ingeniería del Software?
o La Ingeniería de Software (IS) es
o Una disciplina de ingeniería
• Aplicación de teorías, métodos, herramientas para hacer cosas que funcionen:
• Software que sea fiable y trabaje en máquinas reales
• Teniendo en cuenta restricciones financieras, organizacionales y técnicas
o que comprende todos los aspectos de la producción de software
• Desde la especificación inicial al mantenimiento del sistema
• Administración y gestión del proceso de producción
• Principios y metodologías para desarrollo y mantenimiento de sistemas de software
o IEEE 610-12 (Software Engineering)
o Aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación (funcionamiento) y mantenimiento del software
¿Qué es la Ingeniería del Software?
La IS es aplicar el sentido común al desarrollo de sistemas software, Navarro (UCM)
¿Qué es el sentido común?
• Planificar antes de desarrollar
• Diseñar antes de programar
• Reutilizar diseños que funcionan y son mantenibles
... utilizando las herramientas apropiadas, Pavón (UCM)
Herramientas CASE
Computer-Aided Software Engineering (CASE)
Software que facilita la realización de actividades del proceso de desarrollo de software
• Edición de diagramas
• Comprobar la consistencia de los diagramas
• Generación de documentación
• Seguimiento de actividades del proyecto
Upper-CASE
Herramientas que ayudan en las actividades de captura de requisitos, análisis y diseño
Lower-CASE
Herramientas para la programación, depuración y pruebas
Ingeniería de Software y Ciencia de la Computación
La Ciencia de la Computación se refiere a las teorías y los fundamentos subyacentes en los sistemas de computación
La Ingeniería del Software trata los problemas prácticos del desarollo de software
Con las teorías de la ciencia de la computación no es suficiente para desarrollar software (al menos cuando el sistema tiene suficiente envergadura)
Ingeniería de Software e Ingeniería de Sistemas
La Ingeniería de Sistemas se refiere a todos los aspectos del desarrollo de sistemas basados en computadora, tanto del hardware como del software y los procesos de diseño y distribución de sistemas
La Ingeniería de Software es solo parte de este proceso
Los ingenieros de sistemas se encargan de especificar el sistema, definir su arquitectura, integrar sus partes
• Están menos relacionados con la ingeniería de los componentes del sistema (hw y sw)
Al ser el software muchas veces la parte más importante del sistema, las técnicas de ingeniería del software se aplican en el proceso de ingeniería de sistemas
Relevancia de la IS
Las economías de TODOS los países desarrollados dependen en gran medida del software
Cada vez más sistemas son controlados por software
Comunicaciones
Seguridad
Administración
Fábricas
Comercio
Agricultura
Etc.
El gasto en La Ingeniería de Software, representa un alto porcentaje del PIB de los países desarrollados
Coste del software
Los gastos del software dominan sobre los de sistema
Cuesta más el software que hay en un PC que el PC
Cuesta más mantener el software que desarrollarlo
En sistemas con una larga vida, los costes de manutención llegan a multiplicar varias veces los costes de desarrollo
La IS trata de mejorar el coste del desarrollo de software
¿Cuáles son los costes de la IS?
Coste del software
Gastos de desarrollo
Gastos de mantenimiento y evolución
El coste varía dependiendo de
Tipo de sistema que se desarrolle y los requisitos de atributos del sistema como eficiencia y fiabilidad
Modelo de desarrollo
Generalmente, para el desarrollo del software
60% en desarrollo
40% en pruebas
En software hecho a medida los gastos de evolución suelen ser mayores que los de desarrollo
En software genérico muchas veces no se considera la evolución sino que cada nueva versión se trata como un nuevo producto (razones mercantiles)
Retos de la IS
Sistemas heredados (legacy systems)
Mantenimiento, actualización, integración
Heterogeneidad (sw y hw) de sistemas distribuidos
Integración y evolución
Tiempos de desarrollo cada vez más cortos
Y con menos recursos
Proyectos web: 3 meses–3 personas–3 kilos
Modas
Métodos, lenguajes, ...
Cultura de ingeniería
Formalidad
Existe una gran demanda de que exista formalidad en el proceso de desarrollo de software
Responsabilidad y ética profesional
Confidencialidad
De los demás empleados y de los clientes
Competencia
Reconocer los límites y capacidades para aceptar un trabajo
Derechos de propiedad intelectual
Patentes, copyright
Trabajo de otros colegas
Mal uso de los sistemas
Juegos, virus, pirateo
Responsabilidad y ética profesional
Código ético de ACM/IEEE
Principios que deben guiar el comportamiento y decisiones de ingenieros software profesionales (incluyendo gestores, estudiantes y profesores)
1. Actuar en bien del interés público
2. Actuar en el mejor interés del cliente y el empleador, siendo consistente con el interés público
3. Asegurar que los productos y modificaciones reúnen los mejores estándares profesionales posibles
4. Mantener la integridad e independencia en el juicio profesional
5. Suscribir y promocionar un comportamiento ético en la gestión y mantenimiento del desarrollo de software
6. Colaborar en el avance de la integridad y la reputación de la profesión siendo consistente con el interés público
7. Ser justo y ayudar a los colegas
8. A lo largo de la vida, reciclarse en la práctica de la profesión y promocionar un comportamiento ético en la práctica de la profesión
Responsabilidad y ética profesional
Dilemas en el ejercicio de la profesión
Desacuerdo con los principios y política de los superiores
El empleador actúa de manera no ética y libera un sistema crítico de seguridad sin haber acabado las pruebas del sistema
Participación en el desarrollo de sistemas militares
Ingeniería de sistemas–Gestión de proyectos–Ingeniería del software
Ingeniería de sistemas–Ingeniería de sistemas de software–Ingeniería del software
Bibliografía
Roger Pressman, Ingeniería del Software. Un enfoque práctico.
Quinta edición. McGraw Hill, 2001
Ian Sommerville, Ingeniería del Software, Sexta Edición, Pearson
Educación, 2002
F. P. Brooks, The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition), Addison Wesley, 1995












No hay comentarios:
Publicar un comentario