Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DESARROLLO DE SOFTWARE
INTRODUCCIN
La comunidad de desarrollo de software necesita una forma
controlada de trabajar, un proceso que:
proporcione una gua para el orden de las actividades del
equipo;
dirija las tareas de los desarrolladores individuales y del
equipo como un todo;
especifique qu artefactos deben ser desarrollados y cundo;
ofrezca criterios para supervisar y medir los productos y
actividades del proyecto.
1
El RUP es:
un proceso de desarrollo de software el conjunto de
actividades necesarias para transformar los requisitos de un
cliente/usuario en un sistema de software;
ms que un proceso individual un armazn genrico para
procesos que puede ser especializado para una clase grande
de sistemas de software, para diferentes dominios de
aplicacin, tipos de organizaciones, niveles de competencia,
y tamaos de proyectos.
Adems, el RUP:
es un proceso basado en componentes el sistema de
software que se construye est hecho de componentes de
software interconectadas via interfaces bien definidas;
usa UML para preparar todos los planos del sistema de
software UML y el RUP fueron desarrollados
conjuntamente.
2
LAS MEJORES PRCTICAS
DE INGENIERA DE SOFTWARE
3
SNTOMAS. Cmo nos va?
muchos proyectos de software son exitosos a pesar de los
problemas lo demuestran los muchsimos sistemas de los
que dependemos a diario
nuestra tasa de fallas es an demasiado alta necesitamos
cambiar nuestras prcticas.
4
CAUSAS. Tratar los sntomas no cura la enfermedad:
p.ej., el descubrimiento tardo de fallas serias en el proyecto es
slo un sntoma de un problema ms grande realizacin
inadecuada de pruebas.
5
LAS MEJORES PRCTICAS:
un conjunto de enfoques para desarrollo de software proba-
dos comercialmente que, cuando se usan combinadamente,
atacan las races de los problemas del desarrollo de software;
son mejores no tanto porque podamos cuantificar en forma
precisa su valor, sino porque se ha observado que son
usadas habitualmente por organizaciones exitosas.
6
P.ej., el desarrollo iterativo mejora
la gestin de requisitos asegura que los usuarios se
involucran a medida que los requisitos evolucionan
el uso de arquitecturas de componentes valida
tempranamente las decisiones arquitectnicas
el modelamiento visual aborda incrementalmente la
complejidad del diseo e implementacin
la verificacin de la calidad mide la calidad tempranamente
y a menudo
el control de cambios hace evolucionar incrementalmente
las lneas bases
7
UN PROCESO DIRIGIDO POR CASOS DE USO
Un sistema de software es creado para servir a sus usuarios.
8
En cambio, el modelo de casos de uso
contesta la pregunta qu se supone que el sistema hace
para cada usuario?
nos obliga a pensar en el valor para los usuarios, no slo en
funciones que sera bueno tener.
9
UN PROCESO CENTRADO EN LA ARQUITECTURA
El rol de la arquitectura en la construccin de edificios:
el edificio es visto desde distintos puntos de vista: estructura,
servicios, conductos para calefaccin, caeras de agua,
electricidad, etc.
esto permite al constructor tener un cuadro completo antes de
que comience la construccin.
10
Todo producto (de software) tiene funcin (casos de uso) y forma
(arquitecura):
una u otra por s sola no es suficiente;
deben ser balanceadas para crear un producto exitoso;
es necesario que se influyan mutuamente problema del
huevo y la gallina y que evolucionen en paralelo;
los casos de uso, una vez realizados, deben calzar en la
arquitectura;
la arquitectura debe permitir las realizaciones de todos los
casos de uso, ahora y en el futuro.
11
UN PROCESO ITERATIVO E INCREMENTAL
El desarrollo de un producto de software puede durar meses o
aos; conviene dividir el trabajo en miniproyectos:
cada miniproyecto es una iteracin que resulta en un
incremento;
las iteraciones son los pasos en el flujo de trabajo, y deben
ser controladas elegidas y ejecutadas planificadamente;
los incrementos se refieren al crecimiento del producto.
Si una iteracin
satisface sus objetivos lo que ocurre normalmente el
desarrollo prosigue con la prxima iteracin;
no satisface sus objetivos, hay que revisar decisiones
anteriores e intentar un nuevo enfoque.
12
Para economizar durante el desarrollo, el equipo debe:
seleccionar slo las iteraciones requeridas para alcanzar el
objetivo del proyecto;
secuenciar las iteraciones en un orden lgico;
proceder a lo largo de un curso bien establecido, permitiendo
slo pequeas desviaciones.
13
Beneficios de un proceso iterativo controlado:
14
LA VIDA DEL PROCESO UNIFICADO
INTRODUCCIN. Hemos presentado los tres conceptos claves
dirigido por casos de uso, centrado en la arquitectura, e iterativo
e incremental; ahora miremos al proceso en su totalidad:
ciclos de vida fases
artefactos iteraciones
flujos de trabajo
nacimiento muerte
releases
15
EL PRODUCTO. El resultado de cada ciclo es un nuevo
producto listo para entregar:
cdigo fuente componentes compilables y ejecutables;
manuales.
16
Los desarrolladores necesitan todas las representaciones:
modelo de casos de uso todos los casos de uso, sus
relaciones con los usuarios;
modelo de anlisis refina los casos de uso, asigna
inicialmente el comportamiento del sistema a un conjunto
de objetos que proporciona tal comportamiento;
modelo de diseo estructura esttica del sistema en
trminos de subsistemas, clases, e interfaces, y casos de
uso realizados como colaboraciones entre subsistemas,
clases, e interfaces;
modelo de implementacin componentes (cdigo
fuente), correspondencia entre clases y componentes;
modelo de instalacin nodos fsicos (computadores),
correspondencia entre componentes y nodos;
modelo de pruebas casos de prueba que verifican los
casos de uso; y
por supuesto, una representacin de la arquitectura.
17
LAS FASES EN UN CICLO. Cada ciclo transcurre en el tiempo y
est dividido en 4 fases inicio, elaboracin, construccin, y
transicin :
Visualizamos lo que pasa en estas fases a travs de una
secuencia de modelos.
En cada fase el trabajo se descompone en iteraciones e
incrementos.
Cada fase termina en un hito
un conjunto de artefactos est disponible
ciertos modelos o documentos han alcanzado un
estado preestablecido.
18
Fase de inicio:
Una buena idea es convertida en una visin del producto
final, para el cual se elabora el caso de negocio.
Contesta las preguntas:
Qu va a hacer el sistema para cada usuario?
Cmo sera una arquitectura para ese sistema?
Cul es el plan y cunto costar desarrollar el producto?
Se construye un modelo de casos de uso simplificado, slo
con los casos ms crticos.
La arquitectura es tentativa un esbozo con los subsistemas
cruciales.
Se identifica y prioriza los riesgos ms importantes.
Se planifica la fase de elaboracin en detalle.
Se hace una estimacin aproximada de todo el proyecto.
19
Fase de elaboracin:
Se especifica en detalle la mayora de los casos de uso del
producto
Se realiza los casos de uso ms crticos.
Se disea la arquitectura del sistema vistas de todos los
modelos: casos de uso, anlisis, diseo, etc.
La vista del modelo de implementacin incluye componentes
para demostrar que la arquitectura es ejecutable.
El resultado de la fase es una fundacin arquitectnica.
Al finalizar la fase, se puede planificar las actividades y
estimar los recursos necesarios para completar el proyecto.
La pregunta es
son los casos de uso, la arquitectura y los planes suficien-
temente estables y estn los riesgos suficientemente bajo
control para comprometerse a todo el trabajo de desarrollo
en un contrato?
20
Fase de construccin:
Se construye el producto queda listo para ser transferido a
la comunidad de usuarios.
La fundacin arquitectnica crece y se convierte en un
sistema completo.
Se gasta la mayor parte de los recursos necesarios.
Al finalizar la fase, el producto contiene todos los casos de
uso que la gerencia y el cliente acordaron desarrollar para
este release.
El producto an puede contener defectos que sern
corregidos durante la fase de transicin.
La pregunta es
satisface el producto las necesidades de los usuarios
suficientemente como para entregarlo a algunos clientes?
21
Fase de transicin:
El producto pasa a una versin que es puesta a prueba por
unos pocos usuarios experimentados
Los desarrolladores
corrigen los problemas informados
incorporan las mejoras sugeridas
en un release general para la comunidad de usuarios.
Incluye
manufacturacin
capacitacin del personal del cliente
habilitacin de ayuda en lnea
correccin de defectos encontrados despus de la
entrega.
Los defectos pueden ser divididos en dos categoras:
los que, por sus efectos sobre las operaciones, justifican
un release delta inmediato; y
los que pueden ser corregidos en el prximo release
regular.
22
FLUJOS DE TRABAJO
Model.
Requis.
A&D
Implem.
Test
Instal.
C&CM
Gestin
Entorno
Inicial iter.n
23
MODELAMIENTO DEL NEGOCIO. Un paso opcional; sus objetivos
son:
Entender la estructura y dinmica de la organizacin.
Asegurar que clientes, usuarios, y desarrolladores tengan un
entendimiento comn de la organizacin.
Derivar requisitos de sistemas para apoyar la organizacin.
Participan:
Analista del Proceso de Negocio: () captura vocabulario
comn; () determina actores y casos de uso; () estructura el
modelo de casos de uso del negocio
Diseador del Negocio: () detalla caso de uso del negocio; ()
determina y detalla ejecutantes y entidades del negocio
Revisor del Modelo del Negocio: () revisa los modelos
24
REQUISITOS. Sus objetivos son:
Llegar a un acuerdo con los clientes y usuarios acerca de qu
debera hacer el sistema.
Proporcionar a los desarrolladores del sistema un mejor
entendimiento del sistema.
Delimitar el sistema.
Proporcionar una base para planificar el contenido tcnico de
las iteraciones.
Definir una interfaz de usuario para el sistema.
Participan:
Analista de Sistema: () desarrolla visin, () extrae
necesidades de interesados, () maneja dependencias, ()
captura vocabulario comn, () determina actores y casos de
uso, () estructura modelo de casos de uso
Especificador de Casos de Uso: () detalla casos de uso
Diseador de Interfaz de Usuario: () modela y construye
prototipo de interfaz de usuario
Arquitecto: () prioriza casos de uso
Revisor de Requisitos: () revisa requisitos
25
ANLISIS Y DISEO. Sus objetivos son:
Transformar los requisitos en un diseo del futuro sistema.
Desarrollar una arquitectura robusta para el sistema.
Adaptar el diseo al entorno de implementacin.
Participan:
Arquitecto: () anlisis y diseo arquitectnicos, () describe
concurrencia y distribucin
Diseador: () anlisis de casos de uso, () diseo de
subsistemas, clases, y casos de uso
Diseador de Base de Datos: () disea base de datos
Revisor de Arquitectura: () revisa arquitectura
Revisor de Diseo: () revisa diseo
26
IMPLEMENTACIN. Sus objetivos son:
Definir la organizacin del cdigo, en trminos de
subsistemas y estratos o niveles.
Implementar clases y objetos en trminos de componen-tes
(archivos fuentes, binarios, ejecutables, otros).
Probar individualmente las componentes desarrolladas.
Integrar los resultados, producidos por individuos o equipos
de implementadores, para formar un sistema ejecutable.
Participan:
Arquitecto: () estructura el modelo de implementacin
Integrador de Sistemas: () planifica y realiza la integracin
del sistema
Implementador: () planifica y realiza la integracin de
subsistemas, () implementa clases, () realiza pruebas
unitarias, () corrige defectos
Revisor de Cdigo: () revisa el cdigo
27
PRUEBAS. Calidad es ms que satisfacer los requisitos, o las
necesidades y expectativas de los usuarios.
Probar software:
es muy difcil, y
tpicamente se hace sin una metodologa clara y sin la
automatizacin o el apoyo de herramientas necesario.
28
El desarrollo iterativo permite hacer pruebas continuamente:
cada iteracin produce un release ejecutable;
el release es integrado y probado exhaustivamente dentro de
la iteracin en que es producido, contra los requisitos
abordados en esa iteracin;
a medida que el desarrollo avanza a travs de varias
iteraciones, ms partes del sistema se completan, integran, y
prueban al final de cada iteracin;
al terminar la ltima iteracin, toda la funcionalidad est en su
lugar y el sistema completo se prueba como un todo;
muchos errores se encuentran temprano en el ciclo de vida,
cuando son mucho menos caros de corregir;
como las primeras iteraciones se enfocan en validar
decisiones arquitectnicas la ms caras de cambiar
solucionamos temprano los problemas ms caros.
29
Los objetivos del flujo de trabajo Pruebas son:
Verificar la interaccin entre objetos.
Verificar la integracin de todas las componentes.
Verificar que todos los requisitos han sido implementados
correctamente.
Identificar los defectos y asegurarse que sean abordados con
anterioridad a la instalacin del software.
Participan:
Diseador de Pruebas: () planifica, disea, implementa, y
evala las pruebas
Verificador de Integracin: () ejecuta pruebas de integracin
Verificador de Sistema: () ejecuta pruebas del sistema
Verificador de Desempeo: () ejecuta pruebas de
desempeo
Diseador: () disea clases y paquetes de pruebas
Implementador: () implementa componentes y subsistemas
de pruebas
30
GESTIN DEL PROYECTO. Sus objetivos son:
Proporcionar un marco de referencia para gestionar
proyectos intensivos en software.
Proporcionar pautas prcticas para planificar, asignar
personal, ejecutar, y supervisar proyectos.
Proporcionar un marco de referencia para manejar riesgos.
Participa:
Gerente de Proyecto: () desarrolla caso de negocio,
() identifica riesgos, () desarrolla plan del proyecto,
() asigna personal al proyecto, () desarrolla y ejecuta plan
de iteraciones, () revisa riesgos, () evala iteraciones
31
GESTIN DE CAMBIOS Y CONFIGURACIN. No podemos impe-dir
que se introduzcan cambios en un proyecto, pero debe-mos
controlar cmo y cundo se introducen y por quin.
mltiples desarrolladores organizados en diferentes equi-pos
localizados en diferentes sitios, trabajando juntos en mltiples
iteraciones, releases, proyectos, y plataformas.
Problemas tpicos:
actualizaciones simultneas cuando dos o ms ejecu-
tantes modifican el mismo artefacto por separado, el ltimo en
hacer cambios destruye el trabajo del primero
notificaciones incompletas al corregir un problema en
artefactos compartidos, algunos de sus usuarios no son
informados
versiones mltiples y simultneas de un artefacto en
diferentes estados de desarrollo, debido al desarrollo iterativo
32
Los componentes principales de un Sistema de CM son:
Gestin de Solicitudes de Cambios aborda la
infraestructura organizacional necesaria para evaluar los
impactos en costo y tiempo de un cambio solicitado para un
producto existente.
Gestin de la Configuracin
describe la estructura de los productos de software e
identifica los tems de configuracin que la conforman
(considerados entidades individuales sometidas a
versiones en el proceso de CM);
define configuraciones, construye e identifica, y
colecciona artefactos (sometidos a versiones) en
conjuntos que conforman configuraciones, y mantiene un
seguimiento entre sus versiones.
Mediciones describe el estado de un producto a base del
tipo, nmero, tasa, y seriedad de los defectos encontrados o
corregidos durante el desarrollo.
33
Conceptos de la gestin de cambios y configuracin; hay que:
Descomponer la arquitectura en subsistemas y asignar la
responsabilidad de cada subsistema a un equipo.
Establecer espacios de trabajo seguros para cada
desarrollador, que:
lo aislan de los cambios hechos en otros espacios de
trabajo, y
controlan todos los artefactos de software requisitos,
modelos, cdigos, etc.
Establecer un espacio de trabajo para integracin.
Establecer un mecanismo obligatorio de control de cambios.
Priorizar las solicitudes de cambios, evaluar sus impactos, y
establecer un plan para introducirlos en una iteracin y
release particular.
Supervisar las tasas de ocurrencias de los cambios
requisitos inestables, interfaces inestables de componentes,
trabajo que hay que rehacer por cada reparacin de un
defecto.
Saber qu cambios aparecen en cules releases.
Poder identificar la versin particular de cada artefacto al que
aplican informes de problemas o solicitudes de mejoras.
Liberar una baseline probada al trmino de cada iteracin,
con la informacin necesaria para poder determinar
exactamente qu contiene un release.
34
Un Sistema de CM permite:
manejar mltiples variantes de sistemas de software en
evolucin,
saber cules versiones son usadas en determinados armados
de software,
producir armados de programas individuales o de releases
completos segn especificaciones de versin definidas por
los usuarios, y
hacer cumplir polticas de desarrollo especficas.
35
Participan:
Gerente de Proyecto: () establece proceso para cambios
de productos, () define informacin de status y requisitos
para lnea base
Arquitecto: () estructura modelo de implementacin
Gerente de CM: () escribe plan de CM, ()
Integrador de Sistema: () crea espacios de trabajo para
integracin, () construye producto
otros: () crean espacios de trabajo privados, () chequean
artefactos in/out
36
ENTORNO:
Configuracin del proceso adaptar el PROCESO UNIFICADO
a las necesidades de una organizacin o proyecto
Mejoramiento del proceso hacer evolucionar el proceso a
base de las lecciones aprendidas a medida que un proyecto
se lleva a cabo
Seleccin y adquisicin de herramientas
Fabricacin de herramientas para () apoyar necesi-dades
especiales, () proporcionar automatizacin de tareas
tediosas o propensas a errores, y () proporcionar mejor
integracin entre herramientas
Apoyo al desarrollo () mantenimiento del entorno de
desarrollo, () administracin del sistema, () telecomuni-
caciones, y () creacin y reproduccin de documentos
Capacitacin
37