Objetivos
Reconocer el marco de trabajo de la ingeniera de
software (ISW)
Establecer los objetivos de la ISW Establecer el objeto de estudio de la ISW Identificar y analizar el producto de ISW Establecer ventajas y desventajas de los modelos de
proceso.
Reconocer a RUP como un modelo importante dentro de
ISW.
INGENIERA DE SOFTWARE
Qu es Ingeniera?
Construir una casa para FIDO
Puede hacerlo una sola persona Requiere: Modelado mnimo Proceso simple
Vs.
Construido eficientemente y en un
tiempo razonable por un equipo
Requiere: Modelado (de Patricio Lettelier) Proceso bien definido
4
Herramientas simples
Herramientas ms sofisticadas
Qu es Ingeniera?
APLICACIN de conjunto de conocimientos y tcnicas cientficas
Qu es software?
Elemento lgico de la computadora
Qu es Ingeniera de Software?
Definicin:
Es una disciplina tecnolgica - administrativa dedicada a la produccin sistemtica de productos de programacin de calidad en tiempo y presupuesto definido.
Muchas Definiciones: 1. Es una disciplina o rea de la informtica o ciencia de la computacin, que ofrece conocimientos, tcnicas y mtodos para desarrollar y mantener software de calidad que resuelva problemas de todo tipo. La aplicacin de un enfoque sistemtico, disciplinado y cuantificable hacia el desarrollo, operacin y mantenimiento del software; es decir la aplicacin de la Ingeniera al software. (Roger Pressman) La Ingeniera del Software abarca un conjunto de actividades y tcnicas cuyos objetivos es optimizar al mximo los recursos (tiempo, dinero y persona), el proceso, el producto y la calidad.
2.
3.
Qu es el Software?
Elemento lgico de la computadora Producto que construyen y disean los Ingenieros de Software.
2.
3. 4. 5.
Doc.Especificacin de requerimientos Documento de diseo Comprende: Cdigo Documentacin (descripciones, Manual de usuario modelos, tablas, etc.) Manual tcnico
Lgico, no fsico.
Se desarrolla, no se fabrica. No se desgasta, se deteriora.
SW de PC
SW de IA SW basado en la Web
Del administrador del proyecto Mitos del SW Del usuario final o cliente
Del desarrollador
10
10
60 100x C o s t e
1,5 6x 1x
Definicin
Desarrollo
Despus de la Entrega
12
12
programa funcionando.
13
13
Qu es Software de Calidad?
Definicin oficial (IEEE Std. 610-1990) Es el grado con el que un sistema, componente o proceso cumple:
Los requisitos especificados. Las necesidades o expectativas del cliente o usuario.
Concordancia del software producido con los requisitos funcionales y de rendimiento explcitamente establecidos, con los estndares de desarrollo explcitamente documentados y con las caractersticas implcitas que se espera de todo software desarrollado profesionalmente.
Existen dos aspectos que no se deben perder de vista Matenibilidad Que sea usado
14
MTODOS PROCESO
UN ENFOQUE DE CALIDAD
15
Las herramientas de la ingeniera del software proporcionan un enfoque automtico o semi-automtico para el proceso y para los mtodos.
17
18
Proceso de Software
Otra denominacin del Proceso de Software
Al proceso de software tambin se le conoce como Ciclo de Vida del Software
20
21
Definicin
(QUE)
Diseo G. de Cdigo Prueba Mant. Correctivo Mant. Adaptativo Mant. Perfectivo Mant. Preventivo o Reingeniera del Software
23
Desarrollo
(COMO)
Soporte
(CAMBIOS)
24
25
Modelo de proceso
Requerimientos de Usuarios Software
26
Espiral
XP
Ensamblaje de Componentes
27
El problema es seleccionar el modelo de proceso de software apropiado que debe aplicar el equipo de proyecto
?
28
Ciclo de vida clsico, modelo en cascada + antiguo, + usado Enfoque sistemtico secuencial Dirigido por documentos
Investigacin preliminar
Determinacin De requerimientos
Desarrollo Del sistema prototipo Diseo del sistema
Puesta en marcha
30
Crticas:
Proyectos reales raras veces se ajustan. Raras veces cliente expone todos los req. de entrada. Producto operativo al final => Paciencia (cliente) alta.
Ventajas
31
Plan prototipo
Prototipo ejecutable
Reporte ev eluacin
32
Cliente cree que es el sistema. Peligro de familiarizacin con malas elecciones iniciales (quick and dirty). Difcil administrar: se necesita mucha experiencia Costo
Ventajas
Se detectan malos entendidos entre los desarrolladores y los usuarios Se detectan servicios no detectados antes Dificultades de uso o servicios confusos pueden ser identificados y refinados Staff de desarrollo de software puede encontrar requerimientos incompletos o inconsistentes con el desarrollo del prototipo El prototipo sirve como una base de la especificacin para la produccin de un sistema de calidad
Consejo:Cundo usar?
Usar cuando inicialmente no estn claros los requerimientos. Definir claramente de entrada las reglas de juego con el cliente. No ceder a presin del cliente.
33
Bosquejo de la
Versiones Desarrollo
Descripcin
Intermedias
Validacin
Versin Final
34
Desarrollo rpido cuando no se conocen bien los requerimientos. Cuando el usuario/desarrollador no sabe bien lo que quiere: acierta/falla. Adecuado para sistemas pequeos y de vida corta.
Desventajas
Requiere tcnicas y herramientas especiales, para un desarrollo rpido. Los cambios continuos tienden a corromper la estructura del sistema haciendo el mantenimiento futuro muy difcil. Es imprescindible la pericia de un experto en prototipeo en el equipo de desarrollo. La organizacin debe estar consciente que el tiempo de vida de los sistemas desarrollados as es corto.
Cundo usar?
Es recomendable usar para sistemas pequeos o de vida corta. Cuando es difcil conocer bien los requerimientos.
35
corto.
Candidatos: sistemas que se pueden modularizar
36
Modelo DRA
Equipo # 1
Qu informacin? Quin la genera? A dnde va? Identificacin de Objetos y relaciones Descripciones de procesos de negocio para ABM de objetos de MD
Modelo de Negocio
Modelo de Datos
Modelo de Proceso
Tiempo
37 <-------------------------------60-90 das------------------------>
Modelo DRA
Crticas:
Proyectos grandes => gran nro. de personas. Alto compromiso en tiempo. No apto para todo tipo de sistema (ej. no modularizable, bajo reuso de componentes). Desaconsejable cuando existen riesgos tecnolgicos altos o alta interoperatividad con programas ya existentes.
38
Modelos Evolutivos
Se adaptan ms fcilmente a los cambios
introducidos a lo largo del desarrollo. Iterativos En cada iteracin se obtienen versiones ms completas del SW. Modelos Evolutivos:
Modelo Incremental (*) Modelo en Espiral (*) Modelo de Desarrollo Basado en Componentes (*) Modelo WINWIN Modelo de Desarrollo Concurrente
39
Modelo Incremental
Iteracin de Lineal Secuencial.
Cada iteracin devuelve un Incremento
o versin operativa.
til cuando no se est seguro de cumplir
40
Modelo Incremental
Anlisi s Diseo Codif. Prueba
Entrega 1er Incremento
Inc1
Inc2
Anlisi s
Diseo
Codif.
Prueba
Inc3
Anlisi s
Diseo
Codif.
Prueba
Tiempo
41
Modelo Incremental
Validacin incremento
si
Sistema completo?
42
Modelo Incremental
Ventajas:
Ofrece retroalimentacin Disminuye progresivamente el nmero de errores en las partes que faltan Disminuye el riesgo del desarrollo, errores se corrigen progresivamente Disminuye el tiempo de entrenamiento al usuario, que es progresivo El usuario no tiene que esperar hasta el final para hacer uso del sistema Problemas: Definicin del contrato, porque se planifica en forma detallada por incremento Los planes y documentacin se entregan con cada incremento del sistema Una vez que una parte es entregada sus interfaces son congeladas e incrementos posteriores deben adaptarse a estas Nota: Una evolucin de este enfoque se conoce como Programacin Extrema (XP
Extreme Programming).
43
Modelo en Espiral
44
Modelo en Espiral
Ventajas:
til para proyectos grandes. Permite usar el prototipado en todas las etapas de la evolucin para reducir el riesgo. Mantiene el enfoque sistemtico de los pasos sugeridos por el lineal secuencial, pero lo incorpora dentro de un marco iterativo ms real.
Crticas:
Difcil de convencer a los clientes de que es controlable. Requiere mucha habilidad para el anlisis de riesgos y de esta habilidad depende su xito. No ha sido utilizado tanto como el lineal secuencial o el de prototipos. Se necesita mucha experiencia
45
Construir
Colocar en biblioteca
Extraer
Construir iteracin
46
Demostraciones formales de propiedades. Especificaciones sin ambigedades: Consistencia Utiles para sistemas crticos.
Crticas
Dificulta validacin con cliente => combinacin con otras tcnicas semi-formales. La ejecucin de este tipo de modelos requiere mucho tiempo y esfuerzo.
47
Herramientas que facilitan la realizacin de especificaciones a alto nivel -> cdigo fuente. Basadas en Lenguajes de 4ta Generacin (L4G) y uso de herramientas CASE
Lenguage de consulta a BD
Consejo:
En sistemas grandes, aunque se usen T4G se debe
hacer anlisis, diseo y pruebas.
49
Mtodos Agiles
Manifiesto gil (2001) Origen de los mtodos giles
En marzo de 2001, 17 crticos de estos modelos, convocados por Kent Beck, que acababa de definir una nueva metodologa denominada Extreme Programming, se reunieron en Salt Lake City para discutir sobre los modelos de desarrollo de software. En la reunin se acu el trmino Mtodos giles para definir a aquellos que estaban surgiendo como alternativa a las metodologas formales, (CMM-SW, PMI, SPICE) a las que consideraban excesivamente pesadas y rgidas por su carcter normativo y fuerte dependencia de planificaciones detalladas, previas al desarrollo. Los integrantes de la reunin resumieron en cuatro postulados lo que ha quedado denominado como Manifiesto gil, que capturaba el espritu en el que se basan estos mtodos. Aunque como se ver ms adelante, en la actualidad hay aproximaciones que combinan lo mejor de ambos enfoques (formal y gil), hasta 2005, en cada lado sus defensores adoptaron posturas radicales, quiz ms ocupadas en descalificar a la contraria que en estudiarla y conocerla para mejorar la propia.
50
Mtodos Agiles
Manifiesto gil (2001)
Estamos poniendo al descubierto mejores mtodos para desarrollar software, hacindolo y ayudando a otros a que lo hagan. Con este trabajo hemos llegado a valorar:
A los individuos y su interaccin El software que funciona La colaboracin con el cliente La respuesta al cambio
de los procesos y las herramientas de la documentacin exhaustiva la negociacin contractual seguimiento de un plan
Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick,
Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas
51
http://agilemanifesto.org/
Mtodos Agiles
eXtreme Programming (XP)
Este es el mtodo que ms popularidad ha alcanzado entre las metodologas giles, y posiblemente sea tambin el ms transgresor de la ortodoxia basada en procesos. Su creador, Kent Beck fue el alma mater del Manifiesto gil. Extreme Programming (XP) se basa sobre la suposicin de que es posible desarrollar software de gran calidad a pesar, o incluso como consecuencia del cambio continuo. Su principal asuncin es que con un poco de planificacin, un poco de codificacin y unas pocas pruebas se puede decidir si se est siguiendo un camino acertado o equivocado, evitando as tener que echar marcha atrs demasiado tarde.
FEEDBACK
CORAJE
COMUNICACIN
RESPETO
52
Mtodos Agiles
eXtreme Programming (XP)
Mtodos Agiles
eXtreme Programming (XP)
Principios
1. Simplicidad: simplifica el diseo. Para que sea mantenible necesario la refactorizacin del cdigo.
simplicidad +autora colectiva del cdigo + la programacin por parejas ms grande el proyecto, todo el equipo conocer ms y mejor el sistema completo.
54
Mtodos Agiles
eXtreme Programming (XP)
Principios
2. Comunicacin:
Cdigo comunica mejor mientras ms simple. Cdigo autodocumentado ms fiable que comentarios Pruebas unitarias muestran ejemplos concretos de como utilizar su funcionalidad. Programacin por parejas. Cliente forma parte del equipo de desarrollo.
El cliente decide qu caractersticas tienen prioridad y siempre debe estar disponible para solucionar dudas. 55
Mtodos Agiles
eXtreme Programming (XP)
Principios
3. Retroalimentacin (feedback):
Cliente integrado en el proyecto: su opinin sobre el estado del proyecto se conoce en tiempo real. Ciclos que muestran resultados, ayuda a los programadores a centrarse en lo que es ms importante.
56
Mtodos Agiles
eXtreme Programming (XP)
Principios
4. Coraje o Valenta:
Programacin en parejas puede ser difcil de aceptar, parece como si la productividad se fuese a reducir a la mitad (beneficia en calidad sin repercutir en productividad) Coraje para implementar las caractersticas que el cliente quiere ahora sin caer en la tentacin de un enfoque ms flexible que permita futuras modificaciones. No se debe emprender el desarrollo de grandes marcos de trabajo (frameworks) mientras el cliente espera. La forma de construir marcos de trabajo es mediante la refactorizacin del cdigo en sucesivas aproximaciones.
57
Mtodos Agiles
eXtreme Programming (XP)
Principios
5. Respeto:
Aadido en la segunda edicin de Extreme Programming Explained Programadores no pueden realizar cambios que hacen que las pruebas existentes fallen que demore el trabajo de sus compaeros. Los miembros respetan su trabajo, buscan alta calidad en el producto y diseo ms ptimo para la solucin a travs de la refactorizacin del cdigo.
58
Mtodos Agiles
eXtreme Programming (XP)
Caractersticas
Desarrollo iterativo e incremental: pequeas mejoras, unas tras otras. Pruebas unitarias continuas, frecuentemente repetidas y automatizadas, incluyendo pruebas de regresin. Se aconseja escribir el cdigo de la prueba antes de la codificacin. Vase, por ejemplo, las herramientas de prueba JUnit orientada a Java, DUnit
orientada a Delphi y NUnit para la plataforma.NET. Estas dos ltimas inspiradas en JUnit.
Programacin en parejas: dos personas en un mismo puesto. Mayor calidad del cdigo escrito de esta manera -el cdigo es revisado y discutido mientras se escribees ms importante que la posible prdida de productividad inmediata. Parejas se intercambian.
Frecuente integracin del equipo de programacin con el cliente o usuario. Se recomienda que un representante del cliente trabaje junto al equipo de desarrollo.
Correccin de todos los errores antes de aadir nueva funcionalidad. Hacer entregas frecuentes.
59
Mtodos Agiles
eXtreme Programming (XP)
Caractersticas
Refactorizacin del cdigo, es decir, reescribir ciertas partes del cdigo para aumentar su legibilidad y mantenibilidad pero sin modificar su comportamiento. Las pruebas han de garantizar que en la refactorizacin no se ha introducido ningn fallo. Propiedad del cdigo compartida: en vez de dividir la responsabilidad en el desarrollo de cada mdulo en grupos de trabajo distintos, este mtodo promueve el que todo el personal pueda corregir y extender cualquier parte del proyecto. Simplicidad en el cdigo: es la mejor manera de que las cosas funcionen.
XP apuesta que es ms sencillo hacer algo simple y tener un poco de trabajo extra para cambiarlo si se requiere, que realizar algo complicado y quizs nunca utilizarlo.
60
Mtodos Agiles
eXtreme Programming (XP)
Caractersticas (todas)
Desarrollo iterativo e incremental:
usuario.
Correccin de todos los errores antes de aadir nueva funcionalidad.
Mtodos Agiles
eXtreme Programming (XP)
Conclusiones
La simplicidad y la comunicacin son extraordinariamente complementarias.
Sprint
Pila de Sprint
BackLog
Determina las prioridades Una sola persona Gestiona y Facilita la ejecucin del proceso Relacin de requisitos del producto, no es necesario excesivo detalle. Priorizados. Lista en evolucin y abierta a todos los roles. El propietario del producto es su responsable y quien decide. Requisitos comprometidos por el equipo para el sprint con nivel de detalle suficiente para su ejecucin
Facilitador
Construye el producto
Hito de sprint
Parte del producto desarrollado en un sprint, en condiciones de ser usada (pruebas, codificacin, limpia y documentada.
Asesoran y observan
Empowerment y compromiso de las personas Foco en desarrollar lo comprometido Transparencia y visibilidad del proyecto Respeto entre las personas Coraje y responsabilidad Minimizar el precio del
Proceso gil de desarrollo iterativo e incremental. Origen : artculo The New Product Development Game (Takeuchi y Nonaka, 1986). Jeff Sutherland fue el 1ro en implementarlo en para desarrollo de software (1993, Ken Schwaber es su principal difusor)
error: Socializar
63
Juan Palacio
Diseo
Cdigo
Prueba
Conclusiones& Resumen
A
Construir y revisar la maqueta
D A
C D A A
P C D D
Escuchar al cliente
Ent4
MODELO INCREMENTAL
64
Conclusiones
Por qu utilizar uno de los modelos que ya existen ? En qu se concreta el compromiso de calidad? Planificacin? Para planificar el proceso de desarrollo se debe instanciar un modelo de procesos.
Este modelo puede ser propio o tomar uno de los que ya existen.
Sin importar el modelo de proceso que utilicemos debemos basarnos en un compromiso de calidad.
65