Professional Documents
Culture Documents
Bibliografa
2
Bsica
Ingeniera del software. Un enfoque prctico - R. Pressman Captulo 1 El software y la ingeniera de software Captulo 2 Modelos del proceso Captulo 3 Desarrollo gil Captulo 4 Principios que guan la prctica Ingeniera de software . Teora y Prctica - S. L. Pflegger Captulo 2 Modelado del proceso y del ciclo de vida
Ingeniera de Software
Proceso. Modelos de Proceso. Ciclo de vida. Metodologas giles. Principios.
Proceso
Proceso
5
Conjunto de actividades, acciones y tareas a ejecutar para crear algn producto. Actividad: objetivo amplio, se desarrolla en cualquier dominio de aplicacin, tamao del proyecto o grado de rigor del trabajo Accin: conjunto de tareas para obtener un producto del trabajo Tarea: objetivo pequeo, bien definido, con resultado tangible
Caractersticas de un proceso
6
Establece las principales actividades Utiliza recursos y est sujeto a restricciones Est compuesto por subprocesos encadenados y/o jerarquizados Cada actividad tiene criterios de entrada y de salida Conjunto de principios orientadores que explican las metas de cada actividad
Ciclo de vida
8
Cuando el proceso implica la construccin de algn producto, se suele hablar de Ciclo de vida Al proceso de desarrollo de software se lo denomina Ciclo de vida del software
Actividades sombrilla
Seguimiento y control del proyecto Administracin del riesgo Aseguramiento de la calidad del sw Revisiones tcnicas Medicin Administracin de la configuracin Administracin de la reutilizacin Preparacin y produccin del producto
Organizacin de las actividades y sus tareas con respecto a secuencia y tiempo: Lineal Iterativo Evolutivo Paralelo
Comunicacin
Planificacin
Modelado
Construccin
Despliegue
Comunicacin
Planificacin
Modelado
Construccin
Despliegue
Comunicacin
Despliegue
Construccin
Modelado
Construccin tiempo
Despliegue
16
Modelos de proceso
Modelos de proceso
17
Cascada
Modelo en V
Concurrente
Modelo de cascada
18
El trabajo fluye de manera lineal desde la primera actividad (comunicacin, anlisis de requerimientos) hasta la ltima (despliegue o mantenimiento) Requerimientos bien definidos o para mejora de sistema existente.
R.Pressman
Modelo de cascada
19
S. Pfleeger
Modelo de cascada
20
Ventajas:
Es simple de explicar y entender para personas no familiarizadas con el desarrollo de software Explicita productos intermedios necesarios para avanzar de etapa
Desventajas:
No refleja la realidad ms frecuente. No es flexible, no se puede aplicar cuando hay requerimientos dinmicos El cliente debe esperar por una versin funcional
Modelo V
21
Variante del modelo de cascada Permite visualizar las acciones de verificacin y validacin Hace ms explcita la necesidad de iteracin para rehacer tareas si hay cambios o errores
Modelo incremental
22
Secuencias lineales aplicadas de manera escalonada Puede haber un grado de paralelismo entre las distintas secuencias Cada secuencia produce incrementos en el software Es til cuando no se dispone de personal suficiente para la implementacin completa Ayuda a la administracin de riesgos tcnicos
Modelo incremental
23
El sistema se entrega completo al comienzo Las iteraciones modifican (mejoran, corrigen, extienden) la funcionalidad
El sistema se entrega completo al comienzo Las iteraciones modifican (mejoran, corrigen, extienden) la funcionalidad
Inicialmente se planea rpidamente una iteracin para producir un primer prototipo Cada iteracin refina el conocimiento, el plan y el modelo, y genera un nuevo prototipo Es til cuando inicialmente el cliente solo define objetivos generales y no identifica requerimientos detallados Algunos prototipos son desechables, otros evolucionan
Ventajas
Dar una idea real ms temprana al usuario Obtener mejor definicin de los requerimientos
Desventajas
Se itera en forma de espiral Las primeras iteraciones pueden producir modelos o prototipos En cada iteracin se ajustan todos los documentos: plan, definicin, modelos, costos, incluso el nmero de iteraciones necesarias Es adaptable para usarse durante todo el ciclo de vida del sistema
Modelo concurrente
31
Define una serie de eventos que desencadenan transiciones de un estado a otro para cada una de las actividades, acciones o tareas de la ingeniera de software
Tienen las caractersticas de los procesos vistos. Se aplican para enfoques especficos.
Componentes de software como productos Se integran en el software a construir Naturalmente evolutivo, tiene caractersticas del modelo en espiral
1. 2. 3. 4. 5.
Investigar y evaluar productos disponibles Considerar aspectos de integracin Disear la arquitectura Integrar componentes en la arquitectura Realizar pruebas exhaustivas
Ventajas
Aumenta la reutilizacin Se hace ms medible el proceso y el producto
Desventajas
Perdida de control Costo de integracin
Mtodos formales
35
Especificacin matemtica del software y sus caractersticas Especificar, desarrollar y verificar los productos de manera rigurosa
Mtodos formales
36
Ventajas
Es posible verificar y validar de manera rigurosa Permite descubrir ambigedades e inconsistencias Baja los costos de mantenimiento
Desventajas
Hay pocos desarrolladores con la capacitacin adecuada Puede encarecer el desarrollo Es dificil de utilizar para comunicarse con los clientes
Proceso y enfoque metodolgico para definir, especificar, disear y construir caractersticas globales del sistema Preocupaciones globales que tienen efecto a travs de toda la arquitectura del software Tiene caractersticas del modelo evolutivo y del concurrente
Ejemplos
Interfaces de usuario Trabajo en colaboracin Distribucin Persistencia Seguridad Integridad
El trabajo de Rumbaugh, Booch y Jacobson en un mtodo unificado resulta en la definicin del Lenguaje de modelado unificado (UML) Desarrollan el proceso unificado, estructura para la ingeniera de software orientado a objetos que utiliza UML Proceso impulsado por el caso de uso, centrado en la arquitectura, iterativo e incremental
45
Metodologas giles
Manifiesto gil
46
Grupo conocido como Alianza gil firma: Estamos descubriendo formas mejores de desarrollar software , desarrollandolo y ayudando a otros a desarrollarlo. Ese trabajo nos ha hecho valorar:
Los individuos y sus interacciones ms que a los procesos y las herramientas El software que funciona ms que la documentacin exhaustiva La colaboracin con el cliente ms que la negociacin de contratos Responder al cambio ms que seguir un plan
Agilidad
47
Responder de manera apropiada a los cambios Reconocer que al software lo desarrollan individuos trabajando en equipo, la colaboracin es clave Recomendar estructuras y actitudes que favorezcan la comunicacin Entregar software funcional rpidamente (restando importancia a la documentacin intermedia) Adoptar al cliente como parte del equipo Reconocer la necesidad de planificaciones flexibles
Proceso gil
49
Suposiciones
Es difcil predecir: persistencia de los requerimientos, cambios de prioridades del cliente En muchos tipos de software el diseo y la construccin se superponen: deben ser simultneos Anlisis, diseo, construccin y pruebas no son tan predecibles como quisieramos: es difcil planificar
El proceso debe ser adaptable, debe hacerlo incrementalmente y debe permitir la retroalimentacin con el cliente
Principios de agilidad
50
1.
2.
3.
La prioridad ms alta es satisfacer al cliente mediante la entrega pronta y continua de software valioso. Los requerimientos cambiantes son bienvenidos, an en etapas avanzadas del desarrollo. Los procesos giles aprovechan el cambio para la ventaja competitiva del cliente. Entregar software funcional con frecuencia, entre dos semanas y dos meses, de preferencia lo ms pronto posible.
Principios de agilidad
51
4.
5.
6.
Las personas de negocio y los desarrolladores deben trabajar juntos, a diario, durante todo el proyecto. Desarrollar proyectos con gente motivada. Darles el ambiente y el apoyo que necesiten, y confiar en que harn bien su trabajo. El mtodo ms eficiente y eficaz para transmitir informacin a los integrantes de un equipo, y entre estos, es la conversacin cara a cara
Principios de agilidad
52
7.
8.
9.
La medida principal del avance es el software que funciona Los procesos giles promueven el desarrollo sostenible. Los patrocinadores, desarrolladores y usuarios deben poder mantener un ritmo constante en forma indefinida. La atencin continua a la excelencia tcnica y el buen diseo mejora la agilidad
Principios de agilidad
53
10.
11.
12.
La simplicidad es esencial el arte de maximizar la cantidad de trabajo no realizado. Las mejores arquitecturas, requerimientos y diseos surgen de los equipos con organizacin propia. El equipo reflexiona a intervalos regulares sobre cmo ser ms eficaz, para despus afinar y ajustar su comportamiento en consecuencia.
Procesos giles
54
Diferentes modelos enfatizan distintos principios. Todos siguen un espritu gil. Enfatizan la importancia de factores personales:
Competencia, Enfoque comn, Colaboracin, Habilidad para tomar decisiones, Capacidad para resolver problemas difusos, Confianza y respeto mutuos, Organizacin propia.
Del ingls: eXtreme Programming Variante: IXP = Industrial eXtreme Programming Pone el nfasis en la colaboracin estrecha pero informal entre clientes y desarrolladores para establecer metforas que comuniquen conceptos importantes, en la retroalimentacin continua y en evitar documentacin voluminosa
Planificacin:
recabar requerimientos, crear historias y asignarles valores, asignar costo medido en semanas de desarrollo. Luego de la primera entrega se calcula velocidad
Diseo:
Mantenerlo sencillo Si es difcil: realizar prototipos
Codificacin:
No codificar! Sino disear pruebas unitarias. Luego desarrollar el cdigo. Utilizar programacin por parejas.
Pruebas:
Automatizarlas siempre que sea posible. Efectuar pruebas de integracin a diario.
Desarrollo adaptativo de software (DAS) Scrum Mtodo de desarrollo de sistemas dinmicos (MDSD) Cristal Desarrollo impulsado por las caractersticas (DIC) Desarrollo esbelto de software Modelado gil Proceso unificado gil
Scrum
61
Scrum
62
Actividades estructurales:
Requerimientos Anlisis Diseo Evolucin Entrega
Cada actividad realiza las tareas bajo un patrn de proceso llamado sprint
Scrum
63
Scrum
64
Backlog (pendientes o acumulados) Sprints: unidades de trabajo necesarias para alcanzar un requerimiento. No introducir cambios. Reuniones scrum: breves y diarias, para responder tres preguntas claves
Qu hiciste desde la ltima reunin del equipo? (ayer) Qu obstculos estas encontrando? Qu planeas hacer hasta la prxima reunin?
Filosofa tomada de la regla de Pareto: 80% de la aplicacin puede entregarse en el 20% del tiempo que tomara entregarla completa. Enfoque para sistemas que cumplan restricciones apretadas de tiempo mediante la realizacin de prototipos incrementales en un ambiente controlado.
Se combina con XP
Adopta una filosofa en serie para lo grande e iterativa para lo pequeo Fases clsicas del PU: concepcin, elaboracin, construccin y transicin. Dentro de cada actividad el equipo itera para alcanzar la agilidad y entregar incrementos de software significativos
68
Principios
Principios
69
El ingeniero de software aplica de manera cotidiana un conjunto de mtodos, herramientas y principios. Las tcnicas y metodologas pueden cambiar, las herramientas pueden renovarse o modificarse, pero los principios bsicos en los que basamos la profesin se conservan y dan sustento a todo lo dems
Principios
70
Para guiar el proceso Para guiar la prctica De comunicacin De planificacin De modelado De construccin De despliegue
1. 2. 3. 4. 5.
6. 7.
8.
Ser gil Centrarse en la calidad Poder adaptar Formar un equipo eficaz Establecer mecanismos para la comunicacin y coordinacin Administrar el cambio Evaluar el riesgo Crear productos que agreguen valor para otros
1. 2. 3. 4.
5.
6. 7.
8.
Dividir y conquistar Entender y usar la abstraccin Buscar coherencia Centrarse en la transferencia de informacin Modularizar eficazmente Buscar patrones Usar perspectivas diferentes Pensar en quien dar mantenimiento al software
2.
3. 4.
5.
Escuchar Prepararse previamente Determinar un facilitador o lder Comunicarse cara a cara Tomar notas y documentar decisiones
6. 7. 8. 9.
10.
Buscar la colaboracin Centrarse, modularizar la discusin Utilizar dibujos para clarificar Avanzar! al acordar, si no se puede acordar, si no se puede aclarar, avanzar. Negociar no es competir, lo ideal es que todos ganen.
1. 2. 3.
4.
5. 6.
Entender el alcance del proyecto Involucrar a los participantes en la planificacin Reconocer la necesidad de iterar Estimar basandose en conocimiento previo Considerar los riesgos Ser realista
7. 8. 9.
10.
Ajustar la granularidad Definir cmo se buscar la calidad Describir cmo se administrar el cambio Realizar seguimiento frecuente del plan y ajustar en la medida que sea necesario
De requerimientos De diseo
Requerimientos: dominio de la informacin, de la funcionalidad y del comportamiento Diseo: arquitectura, interfaz de usuario y detalle a nivel de componentes
5.
Representar y entender el dominio del problema Definir las funciones del software Representar el comportamiento del software Dividir los modelos: informacin, funcin, comportamiento Avanzar desde lo esencial hacia el detalle
5.
6. 7. 8. 9.
Rastreable a los requerimientos Tener en cuenta la arquitectura a construir Es tan importante disear datos como funciones Cuidar las interfaces Resaltar facilidad de uso y necesidades del usuario Independencia funcional de los componentes Buscar buen acoplamiento de componentes Los modelos deben ser fciles de comprender Hacerlo iterativo, buscando sencillez
Calidad externa: propiedades del software observables fcilmente por el usuario Calidad interna: propiedades que sirven al ingeniero de software La calidad interna conduce a la calidad externa. Se deben buscar LAS DOS CALIDADES.
Preparacin:
Entender el problema Comprender conceptos y principios bsicos de diseo Elegir el lenguaje de programacin correcto Seleccionar un ambiente de desarrollo adecuado Crear pruebas unitarias para aplicar al terminar
Programacin
Programacin estructurada Seleccionar cuidadosamente las estructuras de datos Entender la arquitectura, crear acorde a ella Mantener la lgica condicional sencilla Cuidar el anidamiento Seguir estandares Usar nombres significativos Escribir cdigo autodocumentado y legible
Validacin
Recorrer el cdigo Realizar pruebas unitarias Corregir errores detectados Redisear el cdigo cuando resulte apropiado
Pruebas
Pensar la prueba como proceso que tiene como objetivo encontrar un error Un caso de prueba bueno tiene probabilidades altas de encontrar errores no detectados Una prueba exitosa es aquella que encontr un error no detectado
Pruebas
Rastreables a los requerimientos Planeadas con anterioridad Principio de Pareto: proporciones 80-20
El 80% de los errores no detectados durante las pruebas, se relacionan con el 20% de los componentes del programa.
3.
4. 5.
Manejar la expectativa del cliente Ensamblar y probar paquete completo Establecer previamente el soporte a brindar Proporcionar material de aprendizaje Los defectos primero se corrigen
Principios - resumen
87
Los proyectos, los mtodos, los conceptos y las herramientas son diferentes, los principios se aplican en todos los casos. Ayudan en la aplicacin de una ingeniera de software eficaz. Guan al equipo de software durante todo el proceso.