El Producto Qué es la Ingeniería de Software? Tecnología para construir software Un proceso Un conjunto de métodos Herramientas
Evolución Primeros años Principios 1960 s orientación batch distribución limitada software a la medida
Evolución Segunda era Mediados 60 s, finales 70 s multiusuario tiempo-real bases de datos producto de software
Evolución Tercera era Mediados 70 s Finales 80 s sistemas distribuidos inteligencia embebida bajo costo de hardware impacto al consumidor
Evolución Cuarta era Desde mediados 80 s sistemas desktop poderosos tecnologías orientadas a objetos sistemas expertos redes neuronales artificiales cómputo paralelo redes de computadoras
Problemas Relacionados con Software Hardware muy rápido No se satisface la demanda de nuevos programas Dependencia de una operación confiable de software Batalla para crear software altamente confiable y de calidad Problemas para mantener y extender programas existentes debido a un pobre diseño y recursos inadecuados
Perspectiva de la Industria Al principio Orientación a hardware, Ingeniería de HW SW era sólo el paso final (artístico) Hoy Orientación a software, Ingeniería de SW SW cuesta más
Perspectiva de la Industria Preguntas: Porqué toma tanto tiempo terminar los programas? Porqué los costos son tan altos? Porqué no es posible encontrar todos los errores antes de la entrega? Porqué es tan difícil medir el progreso del software mientras se desarrolla?
Planta de Software en Decadencia industria de software en decadencia Invertir para seguir compitiendo con industrias nuevas (con nueva tecnología) Miles de aplicaciones necesitan reconstruirse Aplicaciones viejas ya no se pueden mantener (20 años atrás) Difícil entender estructura de aplicaciones de diseño crítico por su edad (estilos de diseño) Sistemas embebidos tienen comportamiento extraño, pero no hay nada que los reemplace
Competitividad Antes el software se hacía a la medida Software caro No competencia Ahora el software es un negocio muy competido Competencia mundial Fuerza de trabajo barata
Software Qué entendemos por software? instrucciones que al ejecutarse producen una función deseada estructuras de datos que permiten a los programas manipular adecuadamente la información documentos que describen la operación y uso de los programas Realmente nos referimos a esto?
Características del Software El software es algo lógico, no físico y de aquí que sus características difieran de las del hardware El software se desarrolla, no se manufactura en el sentido clásico Requiere calidad Costos básicamente de ingeniería El software no echa a perder, pero si se deteriora La mayoría del software se hace a la medida en lugar de ensamblar partes existentes
Componentes de Software Reusabilidad Diseñar para reutilizar Algoritmos Estructuras de datos Encapsulación de datos y proceso Código a distintos niveles bajo nivel: lenguaje máquina nivel medio: C alto nivel: íconos
Aplicaciones de Software Sistema Tiempo real Negocios Ingeniería y científico Embebido Computadora personal Inteligencia artificial
Software: Crisis en el horizonte Evolución lenta Se ha vivido con el problema por mucho tiempo Problema de: Cómo desarrollamos software Cómo damos mantenimiento Cómo satisfacer la demanda de software
Mitos Administrativos Ya tenemos libros llenos de estándares y procedimiento para construir software. Proveerá esto a mis desarrolladores con todas las herramientas que necesitan? Se utiliza el libro? Los desarrolladores saben de su existencia? Refleja la práctica moderna de desarrollo de SW? Está completo? En muchos casos la respuesta es NO
Mitos Administrativos Mi gente cuenta con las herramientas de software más recientes, les compramos las computadoras más recientes Se necesita más que el mejor modelo de computadora para generar SW de calidad CASE son más importantes
Mitos Administrativos Si nos retrasamos podemos contratar mas programadores para recuperarnos Desarrollo de SW no es manufactura Añadir más gente retrasa el proyecto Entrenamiento Añadir gente debe ser una actividad planeada
Mitos del Cliente Un planteamiento general de los objetivos es suficiente para empezar a programar Esta es la causa de la mayoría de las fallas Es esencial una detallada descripción de: Información del dominio Función Desempeño Interfaces Restricciones de diseño Criterios de validación
Mitos del Cliente Los requerimientos del proyecto cambian continuamente, pero éstos pueden ser ajustados porque el SW es flexible El impacto varía con el tiempo en que se introduce un cambio Poco impacto en la primer fase Impacto crece mucho en fase de diseño Impacto severo durante implementación (función, desempeño, interfaces) Impacto muy costoso cuando el SW ya está en uso
Mitos del Practicante Una vez terminado el programa y trabajando, hemos terminado Mientras más pronto empieces a escribir código, el tiempo de terminado se alarga Se gasta entre un 50 y 70% del tiempo después de entregado por primera vez
Mitos del Practicante No es posible trabajar en calidad hasta que se termine de programar La calidad del software se asegura con las revisiones Revisiones Formales del Software
Mitos del Practicante El único entregable de un proyecto exitoso es el programa trabajando El programa es sólo una parte, también se requiere de: documentación datos