COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

26
COMP3400 COMP3400 Ingeniería de Ingeniería de Software Software Prof. José Aníbal Rodríguez Ortega

Transcript of COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

Page 1: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

COMP3400 Ingeniería COMP3400 Ingeniería de Softwarede Software

Prof. José Aníbal Rodríguez Ortega

Page 2: COMP3400 Ingeniería de 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.

Page 3: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

¿Software Crisis?

Proyectos administrativamente a la deriva Fuera de Presupuesto Atrazados Baja calidad Todo por la complejidad del desarrollo de

software

Page 4: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 5: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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.

Page 6: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 7: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 8: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 9: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

Waterfall

Análisis de Requerimientos Diseño preliminar Diseño detallado Codificación Prueba del código Entrega del sistema Mantenimiento

Page 10: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

¿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

Page 11: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

¿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

Page 12: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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.

Page 13: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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.

Page 14: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 15: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 16: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

¿System Engineering?

Diseñar, implementar y entregar un sistema que contenga Hardware, Software ( sistema operativo y aplicaciones ) y los usuarios que lo utilicen.

Page 17: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 18: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 19: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 20: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 21: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 22: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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 )

Page 23: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 24: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 25: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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

Page 26: COMP3400 Ingeniería de Software Prof. José Aníbal Rodríguez Ortega.

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