Is clase 13_metodos_y_procesos

download Is clase 13_metodos_y_procesos

If you can't read please download the document

Transcript of Is clase 13_metodos_y_procesos

Mtodos de Desarrollo de Software(o bien, como desarrollar software sin morir en el intento...)

Universidad de los AndesDemin GutierrezJulio 2011

mtodo?

Mtodos / Metodologas

Mtodo: Es un conjunto de herramientas, tcnicas y procesos que brindan soporte y facilitan el logro u obtencin de una meta

Cmo Construir un Reactor Nuclear?

Mtodos / Metodologas

Mtodo: que hacer, a lo largo de todo el ciclo de vida del software, para construir un producto bueno, de calidad, dentro del presupuesto y a tiempo

Cmo Construir un Reactor Nuclearsoftware?

software

ciclo de vida?ciclo de desarrollo?

Ciclo de Vida / Ciclo de Desarrollo

Describe la vida de un producto de software desde su definicin, pasando por su diseo, implementacin, verificacin, validacin, entrega, y hasta su operacin y mantenimiento

por qu esnecesario un mtodopara desarrollarsoftware?

Ciclo de Vida / Ciclo de Desarrollo

por lo complejo que resulta desarrollar software

Ciclo de Vida / Ciclo de Desarrollo

Costo del Cambio

Requerimientos / Anlisis / Diseo / Implementacin / Pruebas / Produccin(aunque los mtodos giles pueden cambiar esta visin)

Fuente: Adaptado de Kent Beck / Extreme Programming Explained, Embrace the Change

por el costo del cambio, la naturaleza del softwarey otras razones

qu aportaun mtodo?

Mtodos / Metodologas

Fuente: Eclipse Process Framework Composer / April 2007 / Peter Haumer / IBM Rational Software

Productos, Subproductos, Insumos, Entregable(definicin)Roles,Actores(definicin)Tareas(Genrico)(definicin)ProcesosActividadesGuas, HerramientasBuenas Prcticasy otros elementos adicionales...

Mtodos / Metodologas
(Herramientas)

y muchas otras...

Casos de Uso, Plantillas de Documentos, UML: Diagramas de Clases, de Casos de Uso, de Actividades, de Secuencia, etctera.

Grafos de navegacin, lenguajes de programacin, bibliotecas, armazones de aplicacin (frameworks), entornos integrados de desarrollo (IDEs), armazones de pruebas, etctera.

Software de gestin, herramientas de gestin, etctera

Mtodos / Metodologas
(Buenas Prcticas)

Fuente: Joel on Software / http://www.joelonsoftware.com/articles/fog0000000043.html

entre otras, y no necesariamente en este orden...

Su empresa usa control de cdigo fuente? Control de versiones?Se hacen compilaciones (builds) e integraciones diarias?Se tiene algn tipo de base de datos de defectos (bugs)?Arreglan los defectos existentes antes de escribir cdigo nuevo?Se mantiene un calendario de proyecto actualizado?Trabajan en base a especificaciones de algn tipo?Los programadores tienen condiciones adecuadas y tranquilas de trabajo?Se utilizan las mejores herramientas que el dinero puede comprar?Se tienen probadores? Se tienen probadores dedicados slo a las pruebas?Los nuevos candidatos a programadores escriben cdigo durante su entrevista de trabajo?Se realizan pruebas de usabilidad?

proceso?modelo de proceso?

Mtodos / Metodologas
Qu es el Proceso?

Un proceso define quien est haciendo qu, cundo y cmo lograr cierta meta.The three Amigos

Un proceso es "una serie de pasos que involucra actividades, restricciones y recursos que producen una salida de algn tipo"Pfleeger

...

Los "procesos de desarrollo de software" poseen reglas preestablecidas, y deben ser aplicados en la creacin del software de mediano y gran porte, ya que en caso contrario lo ms seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos, y con variedad de fallos inaceptables (fracasan, en pocas palabras).

Tomado de:http://es.wikipedia.org/wiki/Software

Mtodos / Metodologas
Qu es el Proceso?

...en realidad, esta definicin se refiere a un modelo de proceso...

Mtodos / Metodologas
(Diferencia entre Proceso y Modelo de Proceso)

Un modelo de proceso de software es una representacin abstracta de un proceso de software.Sommerville

P1...P2Pn

...

Proceso Real (lo que ocurre)

Modelo de Proceso (lo que debera ocurrir)

Algunas Caractersticas de los Procesos
(Modelos de...)

Visibilidad: Puedo Ver lo que Ocurre en el Proceso?

Fiabilidad: Probabilidad de Buen Funcionamiento

Facilidad de Soporte

Facilidad de Mantenimiento

Claridad: Es fcil de comprender?

Robustez: Es Difcil de Perturbar?

Aceptacin: Se vende? Los Usuarios lo Consideran Viable?

Rapidez: Permite Entregar Rpido el Producto?

Conveniencia: Es el mtodo conveniente para lo que vamos a hacer?

Adaptabilidad: Lo puedo cambiar segn las necesidades?

Procesos Livianos vs Pesados

Procesos Pesados(O de peso pesado)

Procesos Livianos(O de peso liviano)

entregables,subproductos,hitos, etc

Mtodos / Metodologas
(Hitos)

Fuente: Adaptado de EPS Informtica UAM (T3: 18/19)

Estudio deViabilidadPerfilarRequisitosDesarrollo dePrototiposEspecificacinde RequisitosInformedeViabilidadDefinicindeRequisitosPrototiposInformedeEvaluacinde PrototiposEspecificacindeRequisitos

La definicin y verificacin de Hitos es una forma de darle visibilidad al proceso

Mtodos / Metodologas
(Hitos)

Se consigue un hito cuando se ha revisado la calidad de uno o ms productos y se han aceptado

Tras cada hito se debera generar un informe de progreso del proyecto

Producto intermedio enseable

Definir Qu, Quin, Cundo y Cmo se va a evaluar

Coincidiendo con el final de una fase (al menos)

Definir los productos correspondientes a cada hito

Fuente EPS Informtica UAM (T3: 18/19)

rolesactores

Mtodos / Metodologas
(Roles)

Los roles sirven para definir quin hace que (y probablemente cuando), son una forma de asignar y definir responsabilidades a personas, sin tener que nombrar a las personas en particular

Mtodos / Metodologas
(Roles)

Un cerdo y un pollo van caminando por la carretera. El pollo le dice al cerdo:*-Oye, por qu no abrimos un restaurante?El cerdo se vuelve y le responde:-Buena idea, cmo quieres que lo llamemos?El pollo se lo piensa y propone:-Por qu no lo llamamos Huevos con jamn.

Rol: Las acciones o actividades asignadas o requeridas de una persona o grupo (La funcin del maestro, El gobierno debe de...)

Rol: Un personaje o parte escenificada por un actor; El comportamiento esperado de un individuo en la sociedad. La funcin o posicin de algo.

* Fuente: Tomado de SCRUM

-No cuentes conmigo -responde el cerdo-. En ese caso, t slo estaras IMPLICADO, mientras que yo estara realmente COMPROMETIDO.

Mtodos / Metodologas
(Roles)

importanteNo confundir los roles en los procesos de desarrollo con los actores o roles del sistema o con los interesados o stakeholdersSon dos cosas totalmente distintas!Ej: Describir al desarrollador como actor del sistema en el documento de casos de uso probablemente ser un error en la mayora de los casos

modelos bsicosde procesos?

...modelos de procesos muy generales (algunas veces llamados paradigmas de proceso) ... Esto es, vemos el marco de trabajo del proceso, pero no los detalles de actividades especficas. Estos modelos generales no son descripciones definitivas de los procesos del software. Ms bien, son abstracciones de los procesos que se pueden usar para explicar diferentes enfoques del desarrollo de software...Ian Sommerville

lo quealgunas vecespasa(y no debera)

Ciclo de Vida / Ciclo de Desarrollo
(Lo que usualmente pasa, y no debe pasar)

PruebasDiseoAnlisisCodificacin

proceso encascada

Proceso en Cascada?

Definicin deRequerimientosDiseo de Sistemay de SoftwareImplementaciny Pruebas deUnidadesIntegracin yPrueba delSistemaOperacin yMantenimientoEl resultado de cada etapa son documentos firmados y aprobados por las partes involucradas

Altos costos, especialmente si se requieren cambios

Se hacen compromisosen las etapas iniciales

Que voy a hacer?

Cmo lo voya hacer?

Cmo se vecompleto?Lo hice bien?

se parece al proceso de solucin de problemas en ingeniera?

Cliente...

Modelo en V

Definicin deRequerimientosDiseo deSistema y deSoftwareDiseo deProgramaPruebas deSistemaOperacin yMantenimientoCodificacinPruebas deunidades eintegracinPruebas deAceptacin

Valida Requerimientos

Verifica Diseo

Verifica Diseo

Es una variacin del modelo de cascada que hace explcito el proceso de Verificacin (V) en las fases de anlisis y diseo

Proceso en Cascada?

Definicin deRequerimientosDiseo de Sistemay de SoftwareImplementaciny Pruebas deUnidadesIntegracin yPrueba delSistemaOperacin yMantenimiento

Lo que sucede en realidad...

Por qu falla el proceso en cascada?

Suele ser difcil para el cliente establecer TODOS los requisitos de manera explicita (y al principio del proceso). Naturaleza del software: Cambio

Se producen estados de bloqueo, en los que algunos miembros del equipo deben esperar a otros para terminar tareas dependientes

El producto / resultado slo se ve al final (para el cliente). Si existe algn error (diferencia) sto tiene un resultado catastrfico

Es el modelo ms simple, conocido

Proceso en Cascada?

Suele ser difcil para el cliente establecer TODA las arquitectura del software de manera explicita al principio del proceso.

proceso / modeloen espiral

Modelo de Riesgos o de Espiral

Fuente; http://es.wikipedia.org/wiki/Espiral_de_Boehm

En general se puede asociar cada giro a una fase del proceso de desarrollo. Ej. 1er giro: objetivos, alternativas restricciones; 2do giro: especificacin de requisitos; 3er giro: diseo; 4to giro: implementacin, etctera.

Modelo de Riesgos o de Espiral

Fuente; http://en.wikipedia.org/wiki/Spiral_model

Modelo de Riesgos o de Espiral

En cada giro se construye un nuevo modelo del sistema.

Incluye de forma explcita en cada giro la especificacin de objetivos, definicin de alternativas y restricciones y evaluacin de riesgos (verdaderamente importante)

Hasta los momentos, se considera el mejor modelo para el desarrollo de sistemas grandes (El ms fiable)

No es aconsejable para sistemas pequeos debido a su alta complejidad

procesos

iterativosincrementales

Modelos Incrementales
(Modelo Incremental)

qu es un incremento?(incrementar algo)qu es una iteracin?(iterar)

Modelos Incrementales
(Modelo Incremental)

Incrementos

Incremento 1

Incremento 2

Incremento 3

Incremento N

...

Cliente

Las fases se dividen en incrementos, en cada incremento se desarrolla una parte de la funcionalidad y se validan los productos resultantes

En general, una vez los productos de una fase se consideran listos, estos no se modifican ms a lo largo de las siguientes fases

Modelos Incrementales
(Modelo Incremental)

actor

CU

actor

actor

actor

CUCUCUCUCUCUCUCUCU

CUCU

Incremento 1

Incremento 2

Incremento 3

Incremento 4

En general, cada incremento aade funcionalidad nueva al sistema, de manera que el usuario puede ir utilizando (validando) la funcionalidad antes de terminar el sistema completo

Modelos Incrementales
(Modelo Incremental)

Los usuarios pueden experimentar con los productos resultantes de cada iteracin, y usualmente el equipo de desarrollo puede continuar con el trabajo mientras que los usuarios experimentan con el sistema

El sistema se desarrolla como una secuencia de pasos e iteraciones una vez establecida la arquitectura global

En general, la idea es combinar lo mejor de las estrategias orientadas a prototipos con una buena gestin

En general, luego de que se valida y se termina un componente, este no se cambia (o se procura no cambiarlo) a menos que se encuentren errores (Bugs)

Modelos Incrementales
(Modelo Iterativo)

Iteraciones

Iteracin 1

Iteracin 2

Iteracin 3

Iteracin N

...

Cada iteracin refina lo realizado en la iteracin anterior. De esta forma se produce una dinmica en la que se van mejorando los productos (entregables) obtenidos en la iteracin anterior. Eventualmente se realizarn todas las iteraciones planificadas, o se llegar al nivel de refinamiento deseado

Modelos Incrementales
(Modelo Incremental)

un proceso puede ser iterativo e incremental?...generalmente si

Modelos Incrementales
(Modelo Iterativo)

Cada fase se repite cierta cantidad de veces

Modelo Iterativo-Incremental

Tambin se puede iterar sobre todo el proceso de desarrollo, aunque esto est mas asociado a los procesos evolutivos que a los procesos iterativos

Ojo con los trminos y las confusiones en relacin a la concepcin de los modelos iterativos, incremetales y evolutivos

Modelos Incrementales
(Modelo Incremental / UP)

Iteraciones para cada una de las fasesLa visin de UP (Unified Process)

White Watch,
Iterativo o Incremental?

Modelos Incrementales
(Modelo Incremental)

Excelente artculo de Alistair Cockburn sobre desarrollo incremental y desarrollo iterativo:

http://alistair.cockburn.us/Incremental+versus+iterative+development

Bsicamente aclara bastante la confusin existente entre los dos trminos

Modelos Incrementales
(Modelo Incremental)

Incremental development definedBy incremental development, I specifically mean a staging and scheduling strategy in which the various parts of the system are developed at different times or rates, and integrated as they are completed. It neither implies, requires nor precludes iterative development or waterfall development both of those are rework strategies. The alternative to incremental development is to develop the entire system with a big bang integration. Incremental development helps you improve your process. Each time around the process, you get to change and improve your work habits.

Alistair Cockburn:http://alistair.cockburn.us/Incremental+versus+iterative+development

Modelos Incrementales
(Modelo Incremental)

Iterative development definedBy iterative development, I specifically wish to mean a rework scheduling strategy in which time is set aside to revise and improve parts of the system. It does not presuppose incremental development, but works very well with it. As shown in the figures, the difference is that an increment may actually ship, whereas an iteration is examined for modification. Iterative development helps you improve your product. Each time around the process you get to change and improve the product itself (and maybe some of your work habits)

Alistair Cockburn:http://alistair.cockburn.us/Incremental+versus+iterative+development

procesos evolutivosybasados enprototipos

Modelos Evolutivos

La definicin y especificacin de requerimientos y el desarrollo de software es un proceso evolutivo que demanda la experimentacin previa con algn componente (o la totalidad) del Sistema Programado (Ej. Interfaz U-S, funcin o subsistema) antes de desarrollar la totalidad del sistema.

qu es evolucionar?

Modelos Evolutivos

BosquejoInicial

EspecificacinDiseoDesarrolloValidacin

VersinInicialVersionesIntermediasVersinFinal

Fuente; Sommerville / Ingeniera del Software

Logran su objetivo por medio del desarrollo de una serie de prototipos que van evolucionando a medida que se tiene realimentacin del cliente

Pretende vencer las limitaciones del modelo en cascada debidas a la deficiente realimentacin entre sus fases

Modelos Evolutivos

qu es un prototipo?

Modelos Basados en Prototipos

Prototipos EvolutivosPoner un sistema a disposicin de los usuarios finales. El proceso comienza con una serie de requisitos, se desarrollan una serie de prototipos, se exponen al usuario y se van refinando paso a paso

Prototipos ExperimentalesPrototipos Desechables / ExploratoriosSe desarrollan prototipos (que luego se desecharan) para aclarar aspectos particulares de los requerimientos del usuario. Este conocimiento se utilizar para especificar/disear/desarrollar la aplicacin

Modelos Basados en Prototipos

Requisitos(Versin Inicial)PrototiposEvolutivoPrototiposExperimentalSistemaPrototiposEjecutables+EspecificacinDefinitiva

Desarrollo

Un prototipo se puede ver como una especificacin de lo que se desea desarrollar...

Esta estrategia suele ser til y prctica para sistemas pequeos (