comp3400 ingeniería de software prof. josé aníbal rodríguez ortega
TRANSCRIPT
COMP3400 Ingeniería COMP3400 Ingeniería de Softwarede Software
Prof. José Aníbal Rodríguez Ortega
¿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.
¿Software Crisis?
Proyectos administrativamente a la deriva Fuera de Presupuesto Atrazados Baja calidad Todo por la complejidad del desarrollo de
software
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
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.
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
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
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
Waterfall
Análisis de Requerimientos Diseño preliminar Diseño detallado Codificación Prueba del código Entrega del sistema Mantenimiento
¿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
¿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
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.
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.
Detalles de las arquitecturasCliente / 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
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
¿System Engineering?
Diseñar, implementar y entregar un sistema que contenga Hardware, Software ( sistema operativo y aplicaciones ) y los usuarios que lo utilicen.
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
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
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
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
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
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 )
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
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
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
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