Professional Documents
Culture Documents
Se debe analizar si el prototipo a desarrollar cumple con los requerimientos y objetivos que se pide, todo esto con el
visto bueno del cliente.
Dado un prototipo aceptable el analista debe hacer una representacin abreviada de sistema.
El software prototipo se prueba y refina, normalmente ello se hace con una hoja y papel definiendo la interaccin que
existir hoja-mquina.
La prueba del prototipo debe ser realizado por el cliente, para mejorar, quitar o aumentar algunos aspectos del
sistema.
10. ESPECIFICACIN
La especificacin tiene mucho que ver con la calidad de solucin ya que de ello depende como trabajar el sistema, que
requerimientos y objetivos realizar; la especificacin es muy importante ya que de ello depende el xito del proyecto.
11. PRINCIPIOS DE ESPECIFICACIN
Baltzer y Goldman proponen los siguientes principios para una buena especificacin:
En funcin una especificacin es una descripcin de lo que se realiza en ves de cmo se implementa.
El problemas puede ser dividido en partes tal que estas partes se relaciones y trabajen colectivamente, es por ello
que nuestro sistema tambin debe estar compuesto por elementos que estn relacionados.
La especificacin del sistema se debe realizar desde el punto de vista del grupo de usuarios que manipularn el
sistema.
La especificacin debe ser operacional, se refiere a que debe ser completa y cumplir con el conjunto de
requerimientos y objetivos.
Nuestra especificacin debe estar aumenta a cambios y aumentos que se puedan realizar de acuerdo al avance.
ESARROLLO EN CASCADA
Este tipo de desarrollo lleva ese nombre debido a la similitud que tiene su esquematizacin
con una cascada y es que es de la siguiente forma.
El diseo del software se enfoca en cuatro atributos distintos del programa: la estructura de
los datos, la arquitectura del software, el detalle procedimental y la caracterizacin de la
interfaz.
CODIFICACIN
Una ves diseado el software en todos los aspectos mencionados se debe pasar a traducir
este diseo a lenguaje mquina, sta tarea ser ms fcil de realizar si se hizo un buen
diseo.
PRUEBA
Es recomendable que sta etapa la realice el usuario ya que ste debe constatar si al
ingresar los datos establecidos al sistema, ste arroja el resultado esperado.
MANTENIMIENTO
Una ves entregado el sistema al cliente, el sistema sufrir pequeos cambios por peticin
del cliente como puede ser agregar pequeos mdulos, optimizar y obtener ms
rendimiento, etc.
VENTAJAS
Se tiene todo bien organizado y no se mezclan las fases.
Es perfecto para proyectos que son rgidos, y adems donde se especifiquen muy bien
los requerimientos y se conozca muy bien la herramienta a utilizar.
DESVENTAJAS
Un proyecto rara vez sigue una secuencia lineal, esto crea una mala implementacin
del modelo, lo cual hace que lo lleve al fracaso.
El proceso de creacin del software tarda mucho tiempo ya que debe pasar por el
proceso de prueba y hasta que el software no est completo no se opera
DESARROLLO EN ESPIRAL
ste es un tipo de desarrollo evolutivo, las versiones de cada etapa van evolucionando, madurando de acuerdo a cada
iteracin que se haga cabe recalcar que en cada iteracin se desarrollar todas las etapas en orden.
CARACTERSTICAS:
Es ideal para crear productos con diferentes versiones mejoradas como se hace con el software moderno de
microcomputadoras.
puede desarrollarse a travs del ciclo de vida clsico o el de construccin de prototipos.
Se debe identificar los riesgos relacionados con el proyecto, todas aquellas eventualidades que pueden ocurrir, y tratar de
que estos riesgos no se den o en el caso de que lleguen a pasar establecer acciones para resolverlas.
INGENIERA
Las tarea necesarias para construir la aplicacin (la representacin del sistema y debidamente estructurada).
CONSTRUCCIN Y ADAPTACIN
Luego se debe construir el software, realizar las pruebas correspondientes y brindar soporte al usuario.
EVALUACIN DEL CLIENTE
El cliente es quien debe dar la conformidad del avance y si el resultado del trabajo cumple con las expectativas del usuario.
VENTAJAS
A medida que progresa el proceso, el desarrollador y el cliente comprenden y reaccionan mejor ante riesgos en cada uno de
los niveles.
Reduce los riesgos antes de que se conviertan en problemticos.
Etapa de inicializacin
Etapa de iteracin
Etapa de inicializacin
Se crea una versin del sistema. La meta de esta etapa es crear un producto con el que el usuario pueda interactuar, y por
ende retroalimentar el proceso. Debe ofrecer una muestra de los aspectos claves del problema y proveer una solucin lo
suficientemente simple para ser comprendida e implementada fcilmente.
Lista de control de proyecto
Para guiar el proceso de iteracin, se crea una Lista de Control de Proyecto, esta lista contiene un historial de todas las
tareas que necesitan ser realizadas. Incluye cosas como nuevas funcionalidades para ser implementadas, y reas de
rediseo de la solucin ya existente. Esta lista de control se revisa peridica y constantemente como resultado de la fase de
anlisis.
Etapa de iteracin
Esta etapa involucra el rediseo e implementacin de una tarea de la lista de control de proyecto, y el anlisis de la versin
ms reciente del sistema. La meta del diseo e implementacin de cualquier iteracin es ser simple, directa y modular, para
poder soportar el rediseo de la etapa o como una tarea aadida a la lista de control de proyecto. El cdigo puede en ciertos
casos, representar la mayor fuente de documentacin del sistema. El anlisis de una iteracin se basa en la
retroalimentacin del usuario y en el anlisis de las funcionalidades disponibles del programa. Involucra el anlisis de la
estructura, modularidad, usabilidad, confiabilidad, eficiencia y eficacia (alcanzar las metas). La lista de control del proyecto
se modifica bajo la luz de los resultados del anlisis.
Cualquier dificultad en el diseo, codificacin y prueba de una modificacin debera apuntar a la necesidad de
redisear o recodificar.
Las modificaciones deben ajustarse fcilmente a los mdulos fciles de encontrar y a los aislados. Si no es as,
entonces se requiere algn grado de rediseo.
Las modificaciones a las tablas deben ser especialmente fciles de realizar. Si dicha modificacin no ocurre
rpidamente, se debe aplicar algo de rediseo.
Las modificaciones deben ser ms fciles de hacer conforme avanzan las iteraciones. Si no es as, hay un problema
primordial usualmente encontrado en un diseo dbil o en la proliferacin excesiva de parches al sistema.
Los parches normalmente deben permanecer solo por una o dos iteraciones. Se hacen necesarios para evitar el
rediseo durante una fase de implementacin.
La implementacin existente debe ser analizada frecuentemente para determinar que tan bien se ajusta a las metas
del proyecto.
Las facilidades para analizar el programa deben ser utilizadas cada vez para ayudar en el anlisis de
implementaciones parciales.
La opinin del usuario debe ser solicitada y analizada para indicar deficiencias en la implementacin referida por l.
Caractersticas
Usando anlisis y mediciones como guas para el proceso de mejora es una diferencia mayor entre las mejoras iterativas y el
desarrollo rpido de aplicaciones, principalmente por dos razones:
Provee de soporte para determinar la efectividad de los procesos y de la calidad del producto.
Estas mediciones y actividades de anlisis pueden ser aadidas a los mtodos de desarrollo rpido existentes.
De hecho, el contexto de iteraciones mltiples conlleva ventajas en el uso de mediciones. Las medidas a veces son difciles
de comprender en su totalidad, aunque en los cambios relativos en las medidas a travs de la evolucin del sistema puede
ser muy informativo porque proveen una base de comparacin. Por ejemplo, un vector de medidas m1, m2,..., mn puede ser
definido para caracterizar varios aspectos del producto en cierto punto, como pueden ser el esfuerzo total realizado, los
cambios, los defectos, los atributos lgico, fsico y dinmico, consideraciones del entorno, etc., as el observador puede decir
como las caractersticas del producto como el tamao, la complejidad, el acoplamiento y la cohesin incrementan o
disminuyen en el tiempo. Tambin puede monitorearse el cambio relativo de varios aspectos de un producto o pueden
proveer los lmites de las medidas para apuntar a problemas potenciales y anomalas.
VENTAJAS
Los clientes no esperan hasta el fin del desarrollo para utilizar el sistema. Pueden empezar a usarlo desde
el primer incremento.
Los clientes pueden aclarar los requisitos que no tengan claros conforme ven las entregas del sistema.
Se disminuye el riesgo de fracaso de todo el proyecto, ya que se puede distribuir en cada incremento.
Las partes ms importantes del sistema son entregadas primero, por lo cual se realizan ms pruebas en
estos mdulos y se disminuye el riesgo de fallos.
DESVENTAJAS
Algunas de las desventajas identificadas para este modelo son:
Debido a la interaccin con los usuarios finales, cuando sea necesaria la retroalimentacin hacia el grupo de
desarrollo, utilizar este modelo de desarrollo puede llevar a avances extremadamente lentos.
Por la misma razn no es una aplicacin ideal para desarrollos en los que de antemano se sabe que sern grandes
en el consumo de recursos y largos en el tiempo.
Al requerir constantemente la ayuda de los usuarios finales, se agrega un costo extra a la compaa, pues mientras
estos usuarios evalan el software dejan de ser directamente productivos para la compaa.
METODOLOGAS ESTRUCTURADAS
Los mtodos estructurados comenzaron a desarrollarse a fines de los 70s con la Programacin
Estructurada, luego a mediados de los 70s aparecieron tcnicas para el Diseo (por ejemplo: el
diagrama de Estructura) primero y posteriormente para el Anlisis (por ejemplo: Diagramas de Flujo de
Datos). Estas metodologas son particularmente apropiadas en proyectos que utilizan para la
implementacin lenguajes de 3ra y 4ta generacin.
Ejemplos de metodologas estructuradas de mbito gubernamental: MERISE (Francia), MTRICA
(Espaa), SSADM (Reino Unido). Ejemplos de propuestas de mtodos estructurados en el mbito
acadmico: Gane & Sarson, Ward & Mellor, Yourdon & DeMarco e Information Engineering.
OPEN,
MTRICA (que tambin soporta la notacin estructurada).
METODOLOGAS TRADICIONALES
Las metodologas no giles son aquellas que estn guiadas por una fuerte planificacin durante
todo el proceso de desarrollo; llamadas tambin metodologas tradicionales o clsicas, donde se
realiza una intensa etapa de anlisis y diseo antes de la construccin del sistema.
Todas las propuestas metodolgicas antes indicadas pueden considerarse como metodologas
tradicionales. Aunque en el caso particular de RUP, por el especial nfasis que presenta en
cuanto a su adaptacin a las condiciones del proyecto (mediante su configuracin previa a
aplicarse), realizando una configuracin adecuada, podra considerarse gil.
METODOLOGAS GILES
Un proceso es gil cuando el desarrollo de software es incremental (entregas pequeas de
software, con ciclos rpidos), cooperativo (cliente y desarrolladores trabajan juntos
constantemente con una cercana comunicacin), sencillo (el mtodo en s mismo es fcil de
aprender y modificar, bien documentado), y adaptable (permite realizar cambios de ltimo
momento).
Entre las metodologas giles identificadas son:
Extreme Programming
Scrum
SCRUM
Es una metodologa cuyo fin es entregar un producto de software. Se estructura todos los procesos y se mide la eficiencia de
la organizacin.
Es un proceso de desarrollo de software el cual utiliza el lenguaje unificado de modelado UML, constituye la metodologa
estndar ms utilizada para el anlisis, implementacin y documentacin de sistemas orientados a objetos.
El RUP es un conjunto de metodologas adaptables al contexto y necesidades de cada organizacin.
Describe como aplicar enfoques para el desarrollo del software, llevando a cabo unos pasos para su realizacin.
Se centra en la produccin y mantenimiento de modelos del sistema.
Principales caractersticas
Forma disciplinada de asignar tareas y responsabilidades (quin hace qu, cundo y cmo)
Desarrollo iterativo
Administracin de requisitos
Control de cambios
No es confiable la informacin por que se puede editar. Atte. Rebeca Ramrez Ramos
-ya veo, ummmmmm es verdad
El RUP es un producto de Rational (IBM). Se caracteriza por ser iterativo e incremental, estar centrado en la arquitectura y
guiado por los casos de uso. Incluye artefactos (que son los productos tangibles del proceso como por ejemplo, el modelo de
casos de uso, el cdigo fuente, etc.) y roles (papel que desempea una persona en un determinado momento, una persona
puede desempear distintos roles a lo largo del proceso).
CICLO DE VIDA
Ingeniera o modelado del negocio: Analizar y entender las necesidades del negocio para el cual se est
desarrollando el software.
Requisitos: Proveer una base para estimar los costos y tiempo de desarrollo del sistema.
Anlisis y diseo: Trasladar los requisitos analizados anteriormente a un sistema automatizado y desarrollar una
arquitectura para el sistema.
Implementacin: Crear software que se ajuste a la arquitectura diseada y que tenga el comportamiento deseado.
Pruebas: Asegurarse de que el comportamiento requerido es correcto y que todo lo solicitado est presente.
Configuracin y administracin del cambio: Guardar todas las versiones del proyecto.
Administracin del proyecto: Administrar los horarios y recursos que se deben de emplear.
Artefactos: Herramientas empleadas para el desarrollo del proyecto. Puede ser un documento, un modelo, un
elemento del modelo.
Artefactos
RUP en cada una de sus fases (pertenecientes a la estructura esttica) realiza una serie de artefactos que sirven para
comprender mejor tanto el anlisis como el diseo del sistema (entre otros). Estos artefactos (entre otros) son los siguientes:
Inicio:
Documento Visin
Especificacin de Requerimientos
Elaboracin:
Construccin:
VISTA LOGICA:
Diagrama de clases
VISTA DE IMPLEMENTACION:
Diagrama de Secuencia
Diagrama de estados
Diagrama de Colaboracin
VISTA CONCEPTUAL
Modelo de dominio
VISTA FISICA
METODOLOGA SCRUM
Scrum es una metodologa gil de desarrollo, aunque surgi como modelo para el desarrollo de
productos tecnolgicos, tambin se emplea en entornos que trabajan con requisitos inestables y
que requieren rapidez y flexibilidad; situaciones frecuentes en el desarrollo de determinados
sistemas de software.
Es una metodologa de desarrollo muy simple, que requiere trabajo duro porque no se
basa en el seguimiento de un plan, sino en la adaptacin continua a las circunstancias
de la evolucin del proyecto.
Scrum es una metodologa gil, y como tal:
Se comienza con la visin general del producto, especificando y dando detalle a las
funcionalidades o partes que tienen mayor prioridad de desarrollo y que pueden llevarse a cabo
en un periodo de tiempo breve (normalmente de 30 das).
Cada uno de estos periodos de desarrollo es una iteracin que finaliza con la produccin de un
incremento operativo del producto.
Estas iteraciones son la base del desarrollo gil, y Scrum gestiona su evolucin a travs de
reuniones breves diarias en las que todo el equipo revisa el trabajo realizado el da anterior y el
previsto para el da siguiente.
Caractersticas
Equipos autodirigidos
Utiliza reglas para crear un entorno gil de administracin de proyectos
No prescribe prcticas especficas de ingeniera
Los requerimientos se capturan como tems de la lista Product Backlog.
El producto se construye en una serie de Sprints de un mes de duracin.
Herramientas y Prcticas
Scrum no requiere ni provee prcticas de Ingeniera. En lugar de eso, especifica prcticas y
herramientas de gerencia que se aplican en sus distintas fases para evitar el caos originado
por la complejidad e imposibilidad de realizar predicciones.
Product Backlog List
Es una lista priorizada que define el trabajo que se va a realizar en el proyecto. Cuando un
proyecto comienza es muy difcil tener claro todos los requerimientos sobre el producto. Sin
embargo, suelen surgir los ms importantes que casi siempre son ms que suficientes para
un Sprint.
El objetivo es asegurar que el producto definido al terminar la lista es el ms correcto, til y
competitivo posible y para esto la lista debe acompaar los cambios en el entorno y el
producto.
Existe un rol asociado con esta lista y es el de Product Owner. Si alguien quiere realizar
cualquier modificacin sobre la lista por ejemplo: agregar o incrementar la prioridad de sus
elementos tiene que convencer al Product Owner.
Sprints
Un Sprint es el procedimiento de adaptacin de las cambiantes variables del entorno
(requerimientos, tiempo, recursos, conocimiento, tecnologa). Son ciclos iterativos en los
cuales se desarrolla o mejora una funcionalidad para producir nuevos incrementos. Durante
un Sprint el producto es diseado, codificado y probado. Y su arquitectura y diseo
evolucionan durante el desarrollo.
El objetivo de un Sprint debe ser expresado en pocas palabras para que sea fcil de recordar
y est siempre presente en el equipo.
Burn down Chart
La burn down chart es una grfica mostrada pblicamente que mide la cantidad de requisitos en
el Backlog del proyecto pendientes al comienzo de cada Sprint. Dibujando una lnea que conecte
los puntos de todos los Sprints completados, podremos ver el progreso del proyecto. Lo normal
es que esta lnea sea descendente (en casos en que todo va bien en el sentido de que los
requisitos estn bien definidos desde el principio y no varan nunca) hasta llegar al eje
horizontal, momento en el cual el proyecto se ha terminado (no hay ms requisitos pendientes
de ser completados en el Backlog). Si durante el proceso se aaden nuevos requisitos la recta
tendr pendiente ascendente en determinados segmentos, y si se modifican algunos requisitos
la pendiente variar o incluso valdr cero en algunos tramos.
Sprint Backlog
Es el punto de entrada de cada Sprint. Es una lista que tiene los tems de la Product Backlog
List que van a ser implementados en el siguiente Sprint.
Los tems son seleccionados por el Scrum Team, el Scrum Master y el Product Owner en la
Sprint Planning Meeting a partir de la priorizacin de los tems y los objetivos que se
marcaron para ese Sprint. A partir de los objetivos a cumplir durante el Sprint el Scrum Team
determina que tareas debe desempear para cumplir el objetivo. De esto surge el Sprint
Backlog.
Stabilization Sprints
Los roles gallina en realidad no son parte del proceso Scrum, pero deben tenerse en cuenta.
Un aspecto importante de una aproximacin gil es la prctica de involucrar en el proceso a
los usuarios, expertos del negocio y otros interesados (stakeholders). Es importante que esa
gente participe y entregue retroalimentacin con respecto a la salida del proceso a fin de
revisar y planear cada sprint.
Usuarios
Es el destinatario final del producto. Como bien lo dice la paradoja, El rbol cae en el bosque
cuando no hay nadie Hace ruido? Aqui la definicion sera Si el software no es usado fue
alguna vez escrito?.
Stakeholders (Clientes, Proveedores).
Se refiere a la gente que hace posible el proyecto y para quienes el proyecto producir el
beneficio acordado que lo justifica. Slo participan directamente durante las revisiones del
sprint.
Managers
Es la gente que establece el ambiente para el desarrollo del producto.
Reuniones en Scrum
Daily Scrum
La reunin comienza puntualmente a su hora. A menudo hay castigos -acordados por el equipo- para
quin llega tarde (por ejemplo: dinero, flexiones, llevar colgando una gallina de plstico del cuello, etc)
Todos son bienvenidos, pero solo los "cerdos" pueden hablar.
La reunin tiene una duracin fija de 15 minutos, de forma independiente del tamao del equipo.
Todos los asistentes deben mantenerse de pie (esto ayuda a mantener la reunin corta)
La reunin debe ocurrir en la misma ubicacin y a la misma hora todos los das.
Scrum de Scrum
Estas reuniones permiten a los grupos de equipos discutir su trabajo, enfocndose especialmente en
reas de solapamiento e integracin.
Asiste una persona asignada por cada equipo.
La agenda ser la misma como del Daily Scrum, adems de las siguientes cuatro preguntas:
Al inicio del ciclo Sprint (cada 15 o 30 das), una Reunin de Planificacin del Sprint se
lleva a cabo.
Al final del ciclo Sprint, dos reuniones se llevaran a cabo: la Reunin de Revisin del
Sprint y la Retrospectiva del Sprint
Despus de cada sprint, se lleva a cabo una retrospectiva del sprint, en la cual todos los
miembros del equipo dejan sus impresiones sobre el sprint recin superado. El propsito de
la retrospectiva es realizar una mejora continua del proceso. Esta reunin tiene un tiempo
fijo de cuatro horas.
Visin general del modelo SCRUM
METODOLOGIA XP
3. Entregas pequeas: colocan un sistema sencillo en produccin rpidamente que se actualiza de forma rpida y
constante permitiendo que el verdadero valor de negocio del producto sea evaluado en un ambiente real. Estas entregas no
pueden pasar las 2 o 3 semanas como mximo.
Entendimi
1. Diseo simple: se basa en la filosofa de que el mayor valor de negocio es entregado por el programa ms sencillo que
cumpla los requerimientos. Simple Design se enfoca en proporcionar un sistema que cubra las necesidades inmediatas del
cliente, ni ms ni menos. Este proceso permite eliminar redundancias y rejuvenecer los diseos obsoletos de forma sencilla.
2. Metfora: desarrollada por los programadores al inicio del proyecto, define una historia de cmo funciona el sistema
completo. XP estimula historias, que son breves descripciones de un trabajo de un sistema en lugar de los tradicionales
diagramas y modelos UML (Unified Modeling Language). La metfora expresa la visin evolutiva del proyecto que define el
alcance y propsito del sistema. Las tarjetas CRC (Clase, Responsabilidad y Colaboracin) tambin ayudarn al equipo a
definir actividades durante el diseo del sistema. Cada tarjeta representa una clase en la programacin orientada a objetos y
define sus responsabilidades (lo que ha de hacer) y las colaboraciones con las otras clases (cmo se comunica con ellas).
3. Propiedad colectiva del cdigo: un cdigo con propiedad compartida. Nadie es el propietario de nada, todos son el
propietario de todo. Este mtodo difiere en mucho a los mtodos tradicionales en los que un simple programador posee un
conjunto de cdigo. Los defensores de XP argumentan que mientras haya ms gente trabajando en una pieza, menos
errores aparecern.
4. Estndar de codificacin: define la propiedad del cdigo compartido as como las reglas para escribir y documentar el
cdigo y la comunicacin entre diferentes piezas de cdigo desarrolladas por diferentes equipos. Los programadores las han
de seguir de tal manera que el cdigo en el sistema se vea como si hubiera estado escrito por una sola persona.
Bienestar del programador.
1. La semana de 40 horas: la programacin extrema sostiene que los programadores cansados escriben cdigo de menor
cualidad. Minimizar las horas extras y mantener los programadores frescos, generar cdigo de mayor calidad. Como
dice Beck, est bien trabajar tiempos extra cuando es necesario, pero no se ha de hacer durante dos semanas seguidas.
PROCESO DE DESARROLLO
La programacin extrema parte del caso habitual de una compaa que desarrolla software normalmente a medida, en la
que hay diferentes roles: un equipo de gestin (o diseo), uno de desarrollo y los clientes finales. La relacin entre el equipo
de diseo, los que desarrollan el software y clientes es totalmente diferente al que se ha producido en las metodologas
tradicionales, que se basaba en una fase de captura de los requisitos previa al desarrollo, y de una fase de validacin
posterior al mismo.
1. Interaccin con el cliente.
En este tipo de programacin el cliente pasa a ser parte implicada en el equipo de desarrollo. Su importancia es mxima en
el momento de tratar con los usuarios y en efectuar las reuniones de planificacin. Tiene un papel importante de interaccin
con el equipo de programadores, sobre todo despus de cada cambio, y de cada posible problema localizado, mostrando las
prioridades, expresando sus sensaciones... En este tipo de programacin existirn pruebas de aceptacin de la
programacin que ayudarn a que su labor sea lo ms provechosa posible.
Al fin y al cabo, el cliente se encuentra mucho ms cerca del proceso de desarrollo. Se elimina la fase inicial de recopilacin
de requerimientos, y se permite que stos se vayan cogiendo a lo largo del proyecto, de una manera ordenada. De esta
forma se posibilita que el cliente pueda ir cambiando de opinin sobre la marcha, pero a cambio han de estar siempre
disponibles para solucionar las dudas del equipo de desarrollo.
En XP aparece un nuevo concepto llamado Historia de usuario. Se trata de una lista de caractersticas que el cliente
necesita que existan en el producto final. Estas constan de dos fases:
o En la primera fase, el cliente describe con sus propias palabras las caractersticas y, es el responsable del equipo, el
encargado de informarlo de las dificultades tcnicas de cada una de ellas y de su coste. A consecuencia de este dilogo, el
cliente deja por escrito un conjunto de historias y las ordena en funcin de la prioridad que tienen pera l. De esta manera ya
es posible definir unas fechas aproximadas para ellos.
o En la segunda fase, el cliente coger las primeras historias a implementar y las dividir en trabajos a realizar. El cliente
tambin participa, pero hay ms peso por parte del equipo de desarrolladores, esto dar como resultado una planificacin
ms exacta. Este mtodo se repetir para cada historia.
A diferencia de otras tcnicas, como puede ser UML, en el caso de XP, se exige que sea el cliente el encargado de escribir
los documentos con las especificaciones de lo que realmente quiere, como un documento de requisitos de usuario.
En esta fase, el equipo tcnico ser el 'encargado de catalogar las historias del cliente y asignarles una duracin. La norma
es que cada historia de usuario tiene que poder ser realizable en un espacio entre una y tres semanas de programacin. Las
que requieran menos tiempo sern agrupadas, y las que necesiten ms sern modificadas o divididas.
Finalmente decir que las historias de los usuarios sern escritas en tarjetas, lo que facilitar que el cliente pueda especificar
la importancia relativa entre las diferentes historias de usuario, as como el trabajo de los programadores que podrn
catalogarlas correctamente. Este formato tambin es muy til en el momento de las pruebas de aceptacin.
PLANIFICACIN DEL PROYECTO
En este punto se tendr que elaborar la planificacin por etapas, donde se aplicarn diferentes iteraciones. Para hacerlo
ser necesaria la existencia de reglas que se han de seguir por las partes implicadas en el proyecto para que todas las
partes tengan voz y se sientan realmente partcipes de la decisin tomada.
Las entregas se tienen que hacer cuanto antes mejor, y con cada iteracin, el cliente ha de recibir una nueva versin. Cuanto
ms tiempo se tarde en introducir una parte esencial, menos tiempo se tendr para trabajar con ella despus. Se aconseja
muchas entregas y muy frecuentes. De esta manera un error en la parte inicial del sistema tiene ms posibilidades de
detectarse rpidamente.
Una de las mximas a aplicar es, los cambios, no han de suponer ms horas de programacin para el programador, ya que
el que no se termina en un da, se deja para el da siguiente.
Se ha de tener asumido que en el proceso de planificacin habrn errores, es ms, sern comunes, y por esto esta
metodologa ya los tiene previstos, por lo tanto se establecern mecanismos de revisin. Cada tres o cinco iteraciones es
normal revisar las historias de los usuarios, y renegociar la planificacin.
Cada iteracin necesita tambin ser planificada, es lo que se llama planificacin iterativa, en la que se anotarn las historias
de usuarios que se consideren esenciales y las que no han pasado las pruebas de aceptacin. Estas planificaciones tambin
se harn en tarjetas, en las que se escribirn los trabajos que durarn entre uno y tres das.
Es por esto que el diseo se puede clasificar como continuo. Aade agilidad al proceso de desarrollo y evita que se mire
demasiado hacia delante, desarrollando trabajos que an no han estado programados.
Este tipo de planificacin en iteraciones y el diseo iterativo, hace que aparezca una prctica que no exista en la
programacin tradicional. Se trata de las discusiones diarias informales, para fomentar la comunicacin, y para hacer que los
desarrolladores tengan tiempo de hablar de los problemas a los que se enfrentan y de ver cmo van con sus trabajos.
DISEO, DESARROLLO Y PRUEBAS
El desarrollo es la parte ms importante en el proceso de la programacin extrema. Todos los trabajos tienen como objetivo
que se programen lo ms rpidamente posible, sin interrupciones y en direccin correcta.
Tambin es muy importante el diseo, y se establecen los mecanismos, para que ste sea revisado y mejorado de manera
continuada a lo largo del proyecto, segn se van aadiendo funcionalidades al mismo.
La clave del proceso de desarrollar XP es la comunicacin. La mayora de los problemas en los proyectos son por falta de
comunicacin en el equipo.
En XP, aparece un nuevo concepto llamado Metfora. Su principal objetivo es mejorar la comunicacin entre todos los
integrantes del equipo, al crear una visin global y comn de lo que se quiere desarrollar. La metfora tiene que ser
expresada en trminos conocidos por los integrantes del equipo, por ejemplo comparando el sistema que se desarrollar con
alguna cosa de la vida real.
Antes de empezar a codificar se tienen que hacer pruebas unitarias, es decir:
Cada vez que se quiere implementar una parte de cdigo, en XP, se tiene que escribir una prueba sencilla, y despus
escribir el cdigo para que la pase. Una vez pasada se ampla y se contina. En XP hay una mxima que dice "Todo el
cdigo que puede fallar tiene que tener una prueba".
Con estas normas se obtiene un cdigo simple y funcional de manera bastante rpida. Por esto es importante pasar las
pruebas al 100%.
Respecto a la integracin del soft, en XP se ha de hacer una integracin continua, es decir, cada vez se tienen que ir
integrando pequeos fragmentos de cdigo, para evitar que al finalizar el proyecto se tenga que invertir grandes esfuerzos
en la integracin final. En todo buen proyecto de XP, tendra que existir una versin al da integrada, de manera que los
cambios siempre se realicen en esta ltima versin.
Otra peculiaridad de XP es que cada programador puede trabajar en cualquier parte del programa.
De esta manera se evita que haya partes "propietarias de cada programador". Por esto es tan importante la integracin
diaria.
Para terminar, otra peculiaridad que tiene la XP. La de fomentar la programacin en parejas, es decir, hacer que los
programadores no trabajen en solitario, sino que siempre estarn con otra persona. Una pareja de programadores ha de
compartir el teclado, el monitor y el ratn. El principio fundamental de este hecho es realizar de manera continua y sin parar
el desarrollo de cdigo. Las parejas tienen que ir cambiando de manera peridica, para hacer que el conocimiento se difunda
en el grupo. Est demostrado que de esta manera el trabajo es ms eficaz y tambin se consigue ms y mejor cdigo.
1.
2.
3.
4.
5.
Diagramas de Actividad para modelar el comportamiento de los Casos de Uso, objetos u operaciones.
6.
7.
8.
9.
UML es una consolidacin de muchas de las notaciones y conceptos ms usadas orientados a objetos.
Empez como una consolidacin del trabajo de Grade Booch, James Rumbaugh, e Ivar Jacobson,
creadores de tres de las metodologas orientadas a objetos ms populares.
Extensiones UML
Los mecanismos de de extensibilidad incorporados permiten a UML ser una especie de especificacin
abierta que puede cubrir aspectos de modelado no especificados en el documento 1.1. Estos mecanismos
permiten extender la notacin y semtica de UML.
Esteroetipos
Los estereotipos son el mecanismo de extensibilidad incorporado ms utilizado dentro de UML. Un estereotipo respresenta
una distincin de uso. Puede ser aplicado a cualquier elemento de modelado, incluyendo clases, paquetes, relaciones de
herencia, etc. Por ejemplo, una clase con estereotipo actor es una clase usada como un agente externo en el modelado de
negocio. Una clase patrn es modelada como una clase con estereotipo parametrizado, lo que significa que puede contener
parmetros.
Extensiones de Modelado de Negocio
Un documento separado dentro de la especificacin UML define clases y estereotipos de asociacin especficos que
extienden UML hasta cubrir conceptos de modelado de negocio. Esto incluye stereotyping una clase como un actor, un
trabajador (both internal and case), o una entidad, y stereotyping una asociacin como una comunicacin simple, o una
subcripcin entre un origen y un objetivo.
Lenguaje restrictivo (constraint) de objetos (OCL)
Una imagen puede describir muchas palabras. De igual modo, un modelo grfico puede describir una cierta parte del
comportamiento, despus de la cual es necesario rellenar detalles adicionales con palabras. Describiendo algo con palabras,
sin embargo, casi siempre desemboca en ambiguedades; por ejemplo, "que quera decir cuando escribi eso?". El
Lenguaje Restrictivo (constraint) de Objetos (OCL) est incorporado en UML como un estndar para especificar detalles
adicionales, o precisar detalles en la estrucutura de los modelos.
Desarrollado dentro de la IBM Insurace Division como un lenguaje de modelado de negocio, el OCL es
un lenguaje formal diseado para ser fcil de leer y de escribir. OCL es ms funcional que el lenguaje
natural, pero no tan preciso como un lenguaje de programacin - no puede ser usado para escribir lgicas
de lgica de programacin o control de flujo. Puesto que OCL es un lenguaje para la expresin pura, sus
declaraciones estn garantizadas de no tener efectos laterales - simplemente transportan un valor y nunca
pueden cambiar el estado del sistema.
Una perspectiva general de UML
Una vuelta por un caso de uso
Una vez ms, UML es una notacin, no un mtodo. No preescribe un proceso para modelar un sistema.
No obstante, como UML incluye los diagramas de casos de uso, se le considera estar dotado de una aproximacin al diseo
centrada en el problema con los casos de uso. El Diagrama de Caso de Uso nos da el punto de entrada para analizar los
requisitos del sistema, y el problema que necesitamos solucionar.
Casos de Uso y Diagramas de Interaccin
Un caso de uso se modela para todos los procesos que el sistema debe llevar a cabo. Los procesos se describen dentro de
el caso de uso por una descripcin textual o una secuencia de pasos ejecutados. Los Diagramas de Actividad se pueden
usar tambin para modelar escenarios grficamente. Una vez que el
comportamiento del sistema est captado de esta manera, los caos de uso se examinan y amplian para mostrar qu objetos
se interrelacionan para que ocurra este comportamiento. Los Diagramas de Colaboracin y de Secuencia se usan para
mostrar las relaciones entre los objetos.
Clases y Diagramas de Implementacin
Conforme se van encontrando los objetos, pueden ser agrupados por tipo y clasificados en un Diagrama de Clase. Es el
diagrama de clase el que se combierte en el diagrama central del anlisis del diseo orientado a objetos, y el que muestra la
estructura esttica del sistema. El diagrama de clase puede ser dividido en capas: aplicacin, y datos, las cuales muestran
las clases que intervienen con la interfaz de usuario, la lgica del software de la aplicacin, y el almacentamiento de datos
respectivamente. Los Diagramas de Componentes se usan para agrupar clases en componentes o mdulos. La distribucin
general del hardware del sistema se modela usando el Diagrama de Implementacin.
Tarjetas CRC (CRC cards) - Una extensin informal de UML
Como una extensin informal a UML, la tcnica de las tarjetas CRC se puede usar para guiar el sistema a travs de anlisis
guiados por la responsabilidad. Las clases se examinan, se filtran y se refinan en base a sus responsabilidades con respecto
al sistema, y las clases con las que necesitan colaborar para completar sus responsabilidades.
Diagramas de Estado
El comportamiento en tiempo real de cada clase que tiene comportamiento dinmico y significativo, se modela usando un
Diagrama de Estado. El diagrama de actividad puede ser usado tambin aqu, esta vez como una extensin del diagrama de
estado, para mostrar los detalles de las acciones llevadas a cabo por los objetos en respuesta a eventos internos. El
diagrama de actividad se puede usar tambin para representar grficamente las acciones de mtodos de clases.
Implementando el diseo
La implementacin del sistema trata de traducir informacin desde mltiples modelos UML en cdigo y estructura de bases
de datos. Cuando se modela un sistema grande, es til fragmentar el sistema en su capa business (incluyendo los objetos
de la interfaz de usuario), su capa de aplicacin (incluyendo los objetos de implementacin), y su capa de datos (incluyendo
la estrucutra de la base de datos y el acceso a objetos).
Implementando la aplicacin
El Diagrama de Clase se usa para generar una estructura base del cdigo en el lenguaje escogido. Informacin de los
diagramas de interaccin, estado, y actividad, puede ofrecer detalles de la parte procedimental del cdigo de
implementacin.
Implementando el diseo de Bases de Datos
La capa de datos del diagrama de clase se puede usar para implementar direcatmente un diseo orientado a objetos de una
base de datos, o, como extensin de UML, puede ser referenciado en un diagrama de relacin de entidad para ms anlisis
de relaciones de entidad. Est en el diagrama de relacin de entidad (ER diagram, entity relationship) el cual relaciona entre
entidades que pueden ser modeladas basadas en atributos clave. El diagrama de relacin de entidad lgico ofrece una base
desde la cual construir un diagrama fsico representando las tablas y relaciones actuales de la base de datos relacional.
Probar teniendo en cuenta los requisitos
Los casos de uso se utilizan tambin para probar el sistema y ver si satisface los requisitos iniciales. Los pasos de los casos
de uso van llevando a cabo para determinar si el sistema est satisfacciendo los requisitos del usuario.
Un estudio a fondo de UML
Las siguientes secciones presentan una vista ms detallada al modelado con UML. Un sistema de reserva de aerolneas
simple se va a usar para mostrar los diagramas y tcnicas de modelado con UML. Se cubren los siguientes puntos:
Modelando con Casos de Uso, y usndolos para averiguar los requisitos del sistema
Analizando y diseando con el Diagrama de Clase, y extendiendo UML con la tcnica de las tarjetas CRC
Una de las tareas clave para modelar un sistema de sofware de grandes dimensiones es dividirlo primero en reas
manejables. Aunque estas reas se llaman dominios, categoras o subsistemas, la idea es la
misma: dividir el sistema en reas que tengan competencias parecidas.
UML introduce la nocin de un paquete como el tem universal para agrupar elementos, permitiendo a los modeladores
subdividir y categorizar sistemas. Los paquetes pueden ser usados en cualquier nivel, desde el nivel ms alto, donde son
usados para subdividir el sistema en dominios, hasta el nivel ms bajo, donde son usados para agrupar casos de uso
individuales, clases, o componentes.
aplicacin satisface los requisitos de negocio y de sistema. Cuando has llegado al caso de uso del nivel ms bajo, podras
crear un Diagrama de Secuencia para el Caso de Uso. Con los Diagramas de Secuencia y de Colaboracin puedes modelar
la implementacin del escenario.
Diagramas de Secuencia
El Diagrama de Secuencia es uno de los diagramas ms efectivos para modelar interaccin entre objetos en un sistema. Un
diagrama de secuencia se modela para cada caso de uso. Mientras que el diagrama de caso de uso permite el modelado de
una vista business del escenario, el diagrama de secuencia contiene detalles de implementacin del escenario, incluyendo
los objetos y clases que se usan para implementar el escenario, y mensajes pasados entre los objetos. Tpicamente uno
examina la descripcin de un caso de uso para determinar qu objetos son necesariospara la implementacin del escenario.
Si tienes modelada la descripcin de cada caso de uso como una secuencia de varios pasos, entonces puedes "caminar
sobre" esos pasos para descubrir qu objetos son necesarios para que se puedan seguir los pasos.
Un diagrama de secuencia muestra los objetos que intervienen en el escenario con lneas discontinuas verticales, y los
mensajes pasados entre los objetos como vectores horizontales. Los mensajes se dibujan cronolgicamente desde la parte
superior del diagrama a la parte inferior; la distribucin horizontal de Durante el anlisis inicial, el modelador tpicamente
coloca el nombre business de un mensaje en la lnea del mensaje. Ms tarde, durante el diseo, el nombre business es
reemplazado con el nombre del mtodo que est siendo llamado por un objeto en el otro. El mtodo llamado, o invocado,
pertenece a la definicin de la case instanciada por el objeto en la recepcin final del mensaje.