Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 1 La Ingenieria Del Software
Tema 1 La Ingenieria Del Software
TEMA 1
La Ingeniera del Software
Introduccin
Introduccin
Termino de la Ing. Del SW
Acuado en 1968 Respuesta -> Desarrollar software de calidad a tiempo dentro del presupuesto
Introduccin
Los desarrolladores de SW
No fueron capaces de definir objetos concretos Predecir recursos necesarios Manejar las expectativas de los clientes
Software
Instrucciones (programas de computo) que cuando se ejecutan proporcionan las caractersticas, funcin y desempeo buscados; Estructuras de datos que permiten que los programas manipulen en forma adecuada la informacin; Informacin descriptiva tanto en papel como en formas virtuales que describen la operacin y uso de los programas Fuente: Roger Pressman
Enfrenta
Problemas mal definidos Soluciones parciales
Los Ingenieros
Que trabajan con diseos
Los ingenieros de SW
1. No han tenido xito 2. Se han investigado los problemas de construir y entregar a tiempo sistemas de SW complejos
Complejidad y Cambio
1. Los sistemas software son Su complejidad inherentede se deriva de cuatro complejos elementos:
La complejidad del dominio del problema, La dificultad de administrar proceso de desarrollo, 2. Para seguir siendo el tiles La flexibilidad que se puede alcanzar a travs del necesitan: software y Evolucionar con las Los problemas que plantea la caracterizacin del necesidades de discretos. los comportamiento de sistemas
Brooks, F. April 1987. No Silver Bullet: Essence and Accidents of Software Engineering. IEEE Computer vol. 20 (4), p. 12.
Complejidad y Cambio
Complejidad del dominio del problema
Cuando los problemas del mundo real se desean resolver con modelos de sistemas computacionales, trae consigo una cantidad indefinida de requisitos que compiten entre s y algunas veces se contradicen. Dar funcionalidad a un sistema es difcil e incluso comprender los requerimientos como: facilidad de uso, rendimiento, costo, capacidad de supervivencia, fiabilidad, son parte de la complejidad externa que infiere determinantemente en la complejidad interna del sistema. Bajo este contexto nace la importancia de la relacin entre desarrolladores y usuarios del sistema. Habitualmente los usuarios tienen dificultades en expresar sus necesidades e ideas. Esto se da en ocasiones por falta de conocimiento del mbito de cada uno de los grupos. Los usuarios y los desarrolladores tienen perspectivas diferentes sobre la naturaleza del problema. Contar con herramientas que permitan plasmar estos requisitos de forma clara para ambos grupos es uno de los retos de la Ingeniera de Software.
Complejidad y Cambio
Dificultad de administrar el proceso de desarrollo
Es difcil contar con un sistema donde su caracterstica sea la simplicidad en el desarrollo del software. La mayora de los grandes sistemas contienen un alto nmero de cdigo que impide dar un mantenimiento ptimo a los programas . Cuando los equipos de desarrollo son grandes y heterogneos la administracin de las actividades se hace complicada debido a que se desarrollan por muchos equipos de trabajo. Hoy en da, tanto el hardware como el software, deben ser capaces de contar con una arquitectura abierta, reusabilidad, facilidad de reconfiguracin, aplicacin de estndares y diseo modular. Estas caractersticas permiten escribir menos cdigos y poder reutilizar el software, en un software diferente al que fue diseado originalmente. La adicin debe ser transparente para el sistema receptor.
Complejidad y Cambio
La flexibilidad que se puede alcanzar a travs del software
El software ofrece la flexibilidad al desarrollador para expresar y representar procesos triviales y complejos del conocimiento humano en un sistema computacional. Esta propiedad no debe producir cambios en los procedimientos y prcticas de las entidades.
El sistema debe ser suficientemente flexible para incorporarse a las actividades de las entidades y hacerlas ms eficientes, sin causar gastos que eleven el precio de los sistemas.
Por ejemplo, una organizacin puede tener una diversidad de sistemas de comunicacin en su estructura organizacional, el sistema computacional de apoyo a la administracin debe ser lo suficientemente flexible para trabajar y/o compatibilizar con cualquier sistema de comunicaciones (transmisin de datos) existente. Por lo tanto, el software no debe forzar al cliente a comprar sistemas de comunicaciones adicionales para poder operar sin problemas.
Complejidad y Cambio
Los problemas que plantea la caracterizacin del comportamiento de sistemas discretos
En una aplicacin de gran tamao existe cientos o hasta miles de variables, as como ms de un flujo de control. El conjunto de todas estas variables, sus valores actuales y la administracin del sistema son procesos que constituyen el estado actual de la aplicacin. Al ejecutarse el software en computadoras digitales, se tiene un sistema con estados discretos. Pequeos cambios en las entradas siempre producirn cambios consecuentemente pequeos en las salidas. Por el contrario, los sistemas discretos por su propia naturaleza tienen un nmero finito de estados posibles. Todos los eventos externos a un sistema de software tienen la posibilidad de llevar a ese sistema a un nuevo estado y ms an, la transicin de estado a estado no siempre es determinista. En las peores circunstancias, un evento externo puede corromper el estado del sistema, porque sus diseadores olvidaron tener en cuenta ciertas interacciones entre eventos.
1.
2.
Ejemplos
3. .
.
. n.
Los Sistemas SW
Creaciones complejas
software
software
1965 - 1975
Multiusuario Tiempo real Bases de datos Software como producto Mayores gastos de mtto.
1975 - 1989
Sistemas distribuidos Inteligencia Artificial Hardware de bajo costo Impacto en el consumo Redes rea local y global Gran demanda
1989 Potentes sistemas de sobremesa Tecnologa de objetos Sistemas expertos Redes neuronales Cliente/servidor Tecnologas de Internet.
La organizacin controla la especificacin Productos personalizados Desarrollados especficamente para un cliente Aplicaciones de negocio, sistemas de control de almacenes,
ventas, compras, control de procesos de fabricacin,...
Por qu se tarda tanto? (y casi siempre ms de lo previsto) Por qu la productividad es tan baja? Por qu cuesta tanto? Por qu siempre quedan errores sin localizar?
Construccin multi-persona de software multiversiones [Parnas 87]. Implica el uso de tcnicas y prcticas ingenieriles para alcanzar un resultado previsible, en trminos de proyecto y de producto...
Necesita:
Localizacin de fuentes de conocimiento Reutilizacin de experiencias Mejorar los procesos de desarrollo del software
Es el rea de la informtica o ciencias de la computacin ofrece Mtodos y Tcnicas para Desarrollar y Mantener Software de calidad para todo tipo de sistemas de software
La aplicacin de mtodos sistemticos, disciplinados y cuantificables para el desarrollo, operacin y mantenimiento de software; esto es, la aplicacin de la ingeniera al software.
IEEE 1993
Mejorar la calidad
Facilitar el control
Objetivos claros.
Planes para lograr los objetivos. Procedimientos que implementan los planes. Procedimientos de monitoreo y control de los planes.
Calida d
Baja productividad
MITOS DE GESTIN
- Uso de estndares - Uso de herramientas - Mala planificacin: aumento de programadores
Estimacin de desarrollo y costos impreciso No se corresponde la productividad del software con la demanda Insatisfaccin y desconfianza del cliente, debido a un psimo control de calidad No mantenimiento. Deteccin de un fallo no implica una sustitucin del mdulo No documentacin .
Situacin Actual
Hoy
Situacin Actual
Responder las siguientes preguntas entre dos personas (10 minutos para esta tarea)
Situacin Actual
An se habla de desarrollar SW El desarrollo del software no ha acabado de salir de la
fase artesanal
Situacin Actual
Qu debemos hacer?
Hablar de la industria del SW Producir software de calidad Reutilizacin de experiencia acumulada de proyectos nfasis en la adopcin de las mejores prcticas reconocidas por la industria, incorporndolas a los procesos de desarrollo
Artesano
Ingeniero
Qu debemos hacer?
Mejorar los procesos de desarrollo del software para obtener como resultado mejores productos software
Mejora de los procesos software Aumento de los niveles de calidad
Aumento de la competitividad
Qu debemos hacer?
Planificar el trabajo Hacer el trabajo de acuerdo con el plan Esforzarse en producir productos de calidad
mbitos de Estudios
Modelizacin del software: Mtodos y Tcnicas; para diferentes tipos de arquitecturas o sistemas de software Software: Estructurado y orientado a objetos Tecnologa: CASE Computer Aided Software Engineering , Igeniera de Software Asistida por Computacin. Reutilizacin del Software: Re-ingeniera Cualidad del software. Mtricas Gestin de procesos Gestin de proyectos
Qu se requiere?
Anlisis cuidadoso del problema
Qu se requiere?
Ms que cdigo: En un proyecto de software se genera, adems del cdigo, muchos otros documentos ...
Requisitos formales Diseo de alto nivel Diseo detallado
Planes de mantenimiento
Informes de errores y correcciones etc.
Qu se requiere?
Ingeniero de Procesos Ingeniera de Calidad Analista de Requisitos
Diseador de Software
Programador
Gerente de Proyecto
Gestor de Configuracin del Software
Caractersticas de la Ingeniera
Caractersticas de la Ingeniera
Ataca problemas prcticos reales
La gente realmente quiere o necesita resolver estos problemas.
Caractersticas de la Ingeniera
Codifica el conocimiento
La experiencia de generaciones se escribe en enormes manuales y se organiza para ser reutilizada.
Caractersticas de la Ingeniera
Caractersticas de la Ingeniera
La mayora de los proyectos implica partir casi de cero (no hay catlogos de componentes a disposicin de los ingenieros).
Conclusiones
Conclusiones
Proceso de desarrollo de software
Para mejorar la situacin es necesario mejorar el proceso. Para mejorar el proceso es necesario hacerlo visible, definirlo y
medirlo. . La IS tiene mucho que decir de esto. Administracin y control de proyectos de software involucra: Uso de mtricas, recursos y tiempos. Manejo del riesgo. Manejo de los cambios (Software Configuration Management). Control de la calidad
Conclusiones
Anlisis y especificacin de requisitos
Diseo de software Queremos diseos que respeten los requisitos. Queremos diseos realistas. Verificacin y validacin Queremos productos confiables. Queremos productos que satisfagan las especificaciones. Apoyo de la computadora Queremos hacer todo esto de la manera ms eficaz y eficiente posible.
Continuara