CURSO: INGENIERIA DE SOFTWARE
Fernando ReyesTutorial3 de Septiembre de 2015
14.449 Palabras (58 Páginas)257 Visitas
CURSO: INGENIERIA DE SOFTWARE
Temas
I) Introducción
II) Paradigmas de Calidad
III) Modelos de Capacidad
IV) Control Estadístico de Procesos (Métricas)
V) Meta procesos
VI) Gestión de Proyectos
VII) Ingeniería de Requerimientos
VIII) Calidad
IX) Estimación
X) Control de Cambio (SCM)
XI) Re uso
XII) Pruebas
XIII) Procesos de Software
XIV) Reingeniería
Objetivo del curso
- Conocer los métodos y técnicas de la Ingeniería de Software. Seleccionar las técnicas más apropiadas para cada caso
- Conocer el estado del arte en Ingeniería de Software. Enfoque práctico en base a experiencias internacionales y nacionales.
- Incorporar conceptos relacionados con los procesos de desarrollo de software y las técnicas fundamentales de la gestión de proyectos de desarrollo
¿Qué es la Ingeniería de Software?
Aplicaciones de ciencias y matemáticas a través de la cual se hacen útiles a las personas las capacidades de las computadoras, desarrollando programas, procedimientos y su documentación (Bohem)
Aplicaciones disciplinadas de principios de ingeniería, ciencia y matemática, métodos y herramientas a la producción económica de software de calidad. (Humphrey)
Métodos: como construir el software (planificación, estimación, análisis de requerimientos, etc.)
Principios en los que se basa la Ingeniería de software
- rigor/formalidad, separación de ámbitos, modularidad, abstracción, anticipación al cambio, generalidad, incrementalidad.
Métodos y Técnicas
- actividades y formas de diseño, especificación, verificación
Metodologías
- Modelos de procesos.
Herramientas
- editores, interpretes, generadores de código, debuggers, testers, administradores de SCM, asistentes de proceso, manejadores de proyectos, etc.
Necesidad del a Ingeniería de Software
Evolución del Software
Primeros años: Segunda era: Tercera era: Cuarta era:
Batch Multiusuario Sist. Distribuidos Potentes sistemas de sobremesa
Distribución limitada Tiempo real HW de bajo costo Tecnología OO
Soft a medida Bases de Datos Impacto en el consumo Sistemas expertos
Soft como producto computación paralela.
1950 1960 1970 1980 1900 2000 [pic 1][pic 2]
Proporción entre los costos del HW y SW sobre el total de Gastos en Computación.
100[pic 3]
80
60
40
20
0
1995 1970 1985
Problemas que se intensifican:
El desfasaje entre la sofisticación del HW y la capacidad de construir SW que explote dicho potencial.
La capacidad de producción de nuevos programas no satisface la demanda.
La capacidad de mantener los programas existentes está amenazada por el mal diseño y la poca documentación.
Preguntas que han llevado a la adopción de Ingeniería de Software como practica:
¿Por qué lleva tanto tiempo terminar los programas?
¿Por qué es tan elevado el costo?
¿Por qué no podemos encontrar todos los errores antes de entregar el software a nuestros clientes?
¿Por qué nos resulta difícil constatar el proceso del desarrollo de software?
[pic 4][pic 5]
[pic 6]
[pic 7][pic 8]
Datos de proyectos no finalizados
Proyectos | Europa | USA |
Cancelados | 10% | 31% |
En duda | 60% | 53% |
Analizados | 70 | 8380 |
Empresas | 30 | 365 |
Impacto del cambio
[pic 9]
Costo del Cambio
Definición Desarrollo Mantenimiento
Crisis del Software
Peligro + oportunidad (ideograma chino)
“punto decisivo en el curso de algo” (Diccionario Webster)
Crisis del software Mal del software
Crisis por mas de 30 años? Problemas del desarrollo y mantenimiento de software
Crisis del Software = Problemas de su desarrollo y mantenimiento.
Problemas (Planificación y estimación usualmente imprecisos, la calidad a veces no llega a ser ni aceptable)
Esto produce como resultado clientes, usuarios insatisfechos y profesionales frustrados
Proceso de Software
¿Qué es un proceso?
Método particular de hacer algo, generalmente involucrado a un número de pasos u operaciones (Diccionario Webster)
Descripción de los pasos necesarios para implementar un cierto objetivo.
Un proceso define quien hace que, cuando y como.
Un proceso transforma teorías y descripciones de métodos en pasos concretos de la realidad.
Proceso del software: Conjunto de actividades, métodos, prácticas y transformaciones que las personas utilizan para desarrollar y mantener el software y sus productos asociados (planes de proyectos, documentación, manuales, etc.) (CMM es un modelo de referencia para saber la madurez de un proceso de software)
Incluye actividades técnicas y de gerenciamiento.
Problemas causados por la falta de un proceso formal.
- Poca estandarización.
- Desarrolladores aplican su propia interpretación de la que es el desarrollo de software.
- Experiencias no repetibles. Sin base para mejorar. No es posible medir.
- No es posible medir (evaluar, predecir)
“Un proceso de software definido es una guía para los desarrolladores. Entienden que tienen que realizar y que pueden esperar de sus colegas” (Humphrey)
Definición del proceso
Para cada actividad: Responsable, Recursos, Descripción, Entradas, Salidas, Restricciones, Detonador, Condicione de finalización, Pre-condiciones, Post-Condiciones, Métricas.
Top 5 excusas para no documentar procesos
- Mi equipo es muy bueno, han programado por años.
- Estamos muy ocupados y no tenemos tiempo para definir procesos.
- Quizás la próxima vez, pero mi programa ha estado usándose por años.
- Definir procesos es un trabajo costoso que luego nadie lee.
- El desarrollo de software es un proceso creativo, no una línea de montaje.
Modelos de proceso
“Un modelo de proceso es una descripción de mismo que representa elementos seleccionados en él por ser considerados relevantes para el propósito perseguido y puede ser llevado a la práctica por medio de personas o software” (Bill Curtis- SEI)
...