Beruflich Dokumente
Kultur Dokumente
Ingeniería de Software
0
Agenda
2
Fallas en los proyectos de TI (1 de 2)
The Standish Group es una organización que presenta resultados en
la ejecución de proyectos de TI clasificándolos en:
Exitosos (Succesful): Terminan en tiempo, dentro del presupuesto y con el
alcance solicitado.
Con complicaciones (Challenged): Terminan y quedan operativos, pero fuera de
tiempo, fuera del presupuesto o con menos funcionalidad que la solicitada.
Fallados (Failed): El proyecto es cancelado en algún punto antes de terminar.
31% 16%
53%
3
Fallas en los proyectos de TI (2 de 2)
4
Escribir software no es como otras ramas
de la ingeniería (1 de 2)
Diferencia fundamental: Otras ramas de la ingeniería están restringidas por las
limitaciones físicas del mundo real, el software no.
Un edificio construido hasta la mitad, aún puede ser utilizado. En software, es
usual que o sirva todo o no sirva nada.
Los componentes de la ingeniería tradicional existen en el mundo real y pueden
ser verificados y modificados en una interacción ver-hacer, cosa que no se puede
hacer en software.
La programación orientada a objetos se creó para
acercar la programación a la realidad.
Por ejemplo, trate de visualizar como construir una casa
en una calabi-yau.
5
Escribir software no es como otras ramas
de la ingeniería (2 de 2)
Los componentes físicos de la vida real interactúan de maneras más limitadas
y predecibles. Por ejemplo, al construir un auto es difícil que una luz
intermitente genere fallas en el motor o que al construir una casa por error al
jalar la palanca de un excusado suene el timbre. Un pequeño trozo de
software en un programa puede generar efectos fuertes en toda una
aplicación.
Hacer software es más arte que ciencia. Es como escribir novelas de ficción:
Es un acto de creación.
Con pocas reglas definidas.
En un medio etéreo y con pocas restricciones.
Es difícil de enseñar.
Sólo se puede ver si es bueno cuando está listo integralmente, no cuando se está
haciendo.
6
Causas de alargamiento de los proyectos
7
Introducción a la
Ingeniería de Software
8
¿Qué es Ingeniería de Software
Ciencia
INGENIERÍA DE SOFTWARE
Arte Oficio
9
Historia de la Ingeniería de Software
10
Disciplinas
11
Disciplinas de la Ingeniería de Software
12
Requerimientos
13
Requerimientos de Software
Un requerimiento es definida como una propiedad que debe tener el software para resolver un
problema del mundo real
Fundamentos de requerimientos. Definiciones de requerimientos de software, tipos de
requerimientos: producto vs. proceso, funcional vs. no funcional, propiedades emergentes
Proceso de requerimientos. Procesos que orienta cómo gestionar requerimientos. Describe
modelos de procesos, actores o roles, gestión y soporte al proceso, y mejora y calidad del proceso
Captura de requerimientos. Identifica de dónde vienen los requerimientos y cómo se puede
recolectarlos
Análisis de requerimientos. Los requerimientos son analizados para detectar y resolver conflictos
entre requerimientos, identificar los límites del software y cómo debe interactuar con su entorno. Los
requerimientos se clasifican, se modelan, se diseña la arquitectura, se negocia
Especificación de requerimientos. Se produce un documento que puede ser revisado, evaluado y
aprobado. Para sistemas complejos se puede necesitar describir la definición del sistema, los
requerimientos del sistema y los requerimientos del software
Validación de requerimientos. Se examinan los documentos para asegurar que definen el sistema
correcto, el sistema que el usuario espera. Se logra a través de revisiones, prototipeo, validación de
modelos y pruebas de aceptación
Consideraciones prácticas. El proceso de requerimientos es iterativo, debe gestionarse el cambio,
los requerimientos tienen atributos complementarios y deben ser rastreados y medidos
14
Patrones de requerimientos de software (1 de 2)
Anatomía
Detalles básicos
Aplicabilidad
Discusión
Contenido
Plantilla
Ejemplo
Requerimientos extra
Consideraciones para desarrollo
Consideraciones para prueba
15
Patrones de requerimientos de software (2 de 2)
Información
Interfaz inter- Fórmula de
Tecnología
sistemas Tipo de dato cálculo
Estructura de Envejecimiento
Cumplir con Interacción de datos
datos Archivamiento
estándar inter-sistemas
ID de datos
Requerimientos
externos
Fundamental
Funcionalidad
Interfaz
Documentación Almacenar usuaria usuaria
información
Consulta
Entidad de datos
Reportar
Reporte
Desempeño
Tiempo de
Instalabilidad Escalabilidad Control
Ancho de banda Registro de
respuesta usuario de
Capacidad acceso
Extensibilidad Autenticación
Capacidad Capacidad dinámica
dinámica estática
Facilidad de Autorización
instalación Aprobación
Disponibilidad
16
Diseño
17
Diseño de Software
18
Construcción
19
Construcción del software
20
Evolución de los lenguajes de programación (1 de 2)
21
Evolución de los lenguajes de programación (2 de 2)
22
Pruebas
23
Pruebas de software
24
Mantenimiento
25
Mantenimiento de software
26
Gestión de la configuración
27
Gestión de la configuración del software
28
Infraestructura - Ambientes de trabajo
Producción
Certificación
Desarrollo
Gestión de la Gestión de la
configuración configuración
29
Gestión de la ingeniería de software
30
Gestión de la ingeniería de software
31
Proceso de ingeniería de software
32
Proceso de ingeniería de software
33
Ciclos de Vida para el Desarrollo de Software
34
Cascada pura
Diseño
preliminar Pocos signos visibles
Si falta una tarea pasada la etapa,
el trabajo retrasa la entrega y Diseño de progreso hasta el
aumenta el costo detallado final
Programación y
pruebas
Adecuado para versiones de Explotación y
mantenimiento o migración mantenimiento
35
Sashimi
Concepto del
software Análisis de
requerimientos
Especificación de
requerimientos
Diseño
preliminar
Diseño
detallado
Programación y
Actividades en paralelo puede pruebas Explotación y
suponer mala comunicación, mantenimiento
suposiciones incorrectas e ineficacia.
36
Codificar y corregir
Empieza con una idea general de lo que se necesita, y luego se usa cualquier
combinación de diseño, código, depuración y prueba hasta que tener listo el producto
Especificación
del sistema
Codificar y
(con suerte) corregir
37
Modelo en espiral
Modelo orientado al riesgo que divide el proyecto software en miniproyectos. Cada
miniproyecto se encarga de resolver uno o varios riesgos
Determinar
Identificar
objetivos y
riesgos
alternativas
Enfoque de Evaluar
siguiente alternativas
iteración
38
Prototipo evolutivo
Se diseñan y construyen las partes mas importantes, luego se refina y amplia
Recolección y
refinamiento
de requisitos
Diseño
Evaluación rápido
Construcción
del prototipo
39
Entrega por etapas
Luego del diseño global se puede implementar y entregar la aplicación en etapas. Se
crea un producto para entregar al final de cada etapa
Concepto del
software
Proporciona signos tangibles
Análisis de
requerimientos de progreso
Especificación de
requerimientos
Diseño
global
Etapa 1: Diseño detallado, codificación,
depuración, prueba y entrega
Proporciona funcionalidad útil en manos
del cliente sin tener aplicación finalizada
Etapa 2: Diseño detallado, codificación,
depuración, prueba y entrega
Concepto del
software
Entregar
Análisis de versión
requerimientos final
42
Herramientas y métodos de ingeniería de software
43
Unified Process
44
Capability Maturity Model Integrated (CMMi)
45
Capability Maturity Model Integrated – Level 3
46
Calidad del software
47
Calidad del software
48
Estimación del Tamaño y el
Esfuerzo del Software
49
Estimaciones en el Software
50
Tamaño del Software – Líneas de Código
51
Tamaño del Software: Puntos de Función
54
Ejemplo de Puntos de Función (1 de 3) 4
3
Funcionalidades Operaciones Elementos Clasificación Complejidad PF
Funcionales
Mantenimiento del Digitar datos Formulario de Entradas B 1
catálogo de captura de datos
productos
Reporte de rotación Capturar registros Procesos de M 3
de stock captura
Cálculo de costos Acceder o consultar Lectura de scanner M 3
archivos
Llamar o invocar Consultas / Consultas B 3
funciones Llamadas
Listar reportes Listados / Informes Salidas B 4
5
55
Ejemplo de Puntos de Función (2 de 3)
56
Ejemplo de Puntos de Función (3 de 3)
PFa = 43
57
Esfuerzo para construir el software
Lenguajes de Roles
Programación Analista Programador Programador
programador Senior Junior
Senior
VB .NET 4 3 2
C# 3 2 1
Java/J2EE 2 1 0.5
59
Ingeniería de Software y el PETI
60
Ingeniería de Software y el PETI
Proyectos de Negocios
Proceso de atención de requerimientos
Pruebas: participación de usuarios y datos de pruebas
Mantenimiento: costo y recurrencia
Gestión de la configuración: ambientes
Procesos y herramientas utilizadas
Estimación del costo del software
Proyectos Internos de TI
Nuevos procesos de desarrollo: dinámico, ágil, etc.
Capacitaciones y certificaciones
Acciones de mejora de productividad
61
62
Actividad:
Identificación de posibles causas
de alargamiento de proyectos de
Talibank
63
ACTIVIDAD
Identificación de posibles causas de alargamiento de
proyectos de Talibank
Conformar grupos. Obtener sus materiales: plumones, papelógrafo y masking tape
Elija 5 proyectos que están en proceso o por iniciar en Talibank e identifique para cada
uno 3 posibles causas de alargamiento de acuerdo al Diagrama Causa-Efecto revisado
Elija un proyecto y para cada una de sus posibles causas de alargamiento, proponga
una posible forma de mitigar o eliminar dicho riesgo
Tiempos: Discusión y elaboración 40” / Exposiciones 20”
Realizar la exposición al aula
64
65
66