1 COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega
2 ¿Qué es Software Engineering? Es el establecimiento y uso de principios de ingeniería con el propósito de obtener Software eficiente, a bajo costo y que sea confiable. Es una disciplina responsable de monitorear todos los aspectos envueltos en la producción de software.
3 ¿Software Crisis? Proyectos administrativamente a la deriva Fuera de Presupuesto Atrazados Baja calidad Todo por la complejidad del desarrollo de software
4 Del Hardware al Software Originalmente, los problemas o situaciones de la vida real se resolvían todos con hardware. Con el pasar del tiempo y el surgimiento del software, el gobierno y otras entidades se dieron cuenta que en muchos casos la mejor solución $$$ era la utilización del software
5 Metas de SE Mantenimiento – Habilidad para hacer cambios o mejoras fácilmente Confiabilidad – Habilidad de confiar en el software cuando más se necesita Eficiencia – Habilidad de utilizar los recursos de la computadora efectivamente ( tiempo y espacio) Uso – Habilidad de lograr que los usuarios utilizen el software fácil y efectivamente.
6 Principios de Software Eng. Modularidad – Divide y conquista Encapsulación – Esconde la implementación Localización – localizar asuntos similares en un mismo lugar Abstración – provee una ilusión Uniformidad – Que se vea el código como si lo hubiese hecho una sóla persona Completo – Que haga lo que se espera que haga Garantía – Que se pruebe que funciona correctamente
7 Métodos de SE Modelos - Produciendo modelos de material asbtracto. Motivado por la DATA - solución de problemas basado en la estructura de la data Motivado por las Funciones - solución basada estrictamente en la función Orientado a Objetos - data + funciones
8 Modelos de Procesos Waterfall – Secuencia estricta de actividades – Una sola pasada Spiral – Se realiza por actividades y se regresa el principio de la actividad para ver si se cumplió el objetivo. Incremental – se realiza una parte de la funcionalidad y se va aumentado poco a poco Xtreme Programming – se realiza probando lo que se supone que haga
9 Waterfall Análisis de Requerimientos Diseño preliminar Diseño detallado Codificación Prueba del código Entrega del sistema Mantenimiento
10 ¿Requerimentos? Es el documento que establece lo que se supone haga el sistema que se va a desarrollar Es la guía de trabajo para los programadores Es el contrato entre clientes y desarrolladores / programadores
11 ¿Qué es un Sistema? Es un conjunto de componentes interrelacionados que trabajan para realizar una tarea común Puede ser una combinación de hardware y software Puede estar compuesto de otros sub- sistemas Su comportamiento hay que analizarlo en 2D y 3D
12 Retos de los sistemas Coordinación entre las diferentes disciplinas – falta de confianza – falta de comprensión Los sistemas deben ser diseñados para que duren muchos años en un ambiente cambiante.
13 Arquitectura de un sistema La arquitectura del sistema puede estar compuesto por varios subsistemas ( Linux y Windows) Cada sub-sistema puede ser desarrollado independientemente Usualmente la arquitectura se agrupa en sólo nivel.
14 Detalles de las arquitecturas Cliente / Servidor Los clientes conocen el servidor El servidor no conoce sus clientes Los clientes no conocen como trabaja el servidor internamente El servidor tampoco conoce como trabajan sus clientes internamente
15 Software and System Engineering La tendencia cada vez más es a utilizar hardware de uso general y software para uso específico Los problemas que enfrentan ambos son semejantes En ingeniería de sistemas, el software se ve como un problema, porque los proyectos se han atrazado por culpa del software
16 ¿System Engineering? Diseñar, implementar y entregar un sistema que contenga Hardware, Software ( sistema operativo y aplicaciones ) y los usuarios que lo utilicen.
17 Propiedades Emergentes Son las propiedades que adquiere el sistema como un todo y no por las propiedades individuales de los componentes Son la consecuencia de la relaciones de los componentes del sistema. Sólo pueden ser medidas y evaluadas una vez el sistema esté todo integrado
18 Ej. Propiedades Emergentes El peso total del sistema La confiabilidad del sistema – depende de la confiabilidad de sus componentes El uso – que depende del hardware y software, pero también de los usuarios
19 Confiabilidad de un Sistema Por el hecho de que los sub-sistemas son inter-dependientes, un error puede propagarse a lo largo del sistema Frecuentemente, las fallas en los sistemas ocurren por inter-relaciones no vistas entre los componentes Es sumamente difícil ver todas las inter- relaciones de los componentes del sistema Las medidas de confiabilidad del sistema puede dar una idea falsa del mismo
20 Influencias en la confiabilidad Confiabilidad en el Hardware – Cúal es la probabilidad de que haya fallas en el HW y cuánto tiempo tomará arreglarlo Confiabilidad en el Software – Cúan cierto es que un componente de software producirá el output incorrecto. SW se distingue del HW en que el SW no se gasta Confiabilidad en el Operador – Cúal es la probabilidad de que el operador cometa errores utilizando el sistema
21 Confiabilidad en las Relaciones Errores en el HW pueden distorcionar señales introduciendo errores Errores en el SW puede generar alarmas que pueden estresar al operador y causar errores El ambiente en donde se instala el sistema puede introducir errores
22 Propiedades Olvidadas Safety - Cuan seguro es un sistema Seguridad - El sistema debe ser utilizado por personal autorizado solamente Manejo de Memoria ( free olvidados ) Manejo de Archivos ( close olvidados )
23 Los sistemas y su ambiente Los sistemas no son independientes, estos existen, en medio de un ambiente Quizás la función de un sistema X pueda ser cambiar su ambiente. El ambiente afecta el funcionamiento de un sistema: humedad, salitre, frío, calor, la corriente El ambiente físico y organizativo puede ser importante
24 Factores Humanos y Organizatorios Cambios en los procesos – Necesitará el sistema cambiar el ambiente para poder funcionar Cambios de Trabajos – El sistema podrá funcionar con el personal de mantenimiento – El personal de mantenimiento tienen las destrezas necesarias Cambios en la Organización – Sobrevivirá el sistema los cambios políticos de la organización
25 Modelaje de la arquitectura del sistema Este modelo presenta una vista abstracta de los subsistemas que componen el sistema Puede incluir información importante del flujo entre los sub-sistemas Usualmente se prensenta en forma de bloques Puede identificar diferentes tipos de componentes funcionales
26 Tipos de componentes en un sistema de alarma Sensor - de movimiento, de las puertas, de impacto, de vibración Actor – El que toma la acción, por ejemplo Sirenas, e-mails, etc. Comunicación - llamar por teléfono, micro-ondas y hasta las líneas eléctricas Coordinación - entre sensores y otros componentes Interfase - sintetizador de voz