Documentos de Académico
Documentos de Profesional
Documentos de Cultura
:6 ; < =
20
:
: "
Software
Unificado
21
: 8 !/.>.*.&(& &# -%#' ($.A-
: : * #- #C!*,$.A-
23
:9
24
A continuación se explicará brevemente cada una de las fases del
RUP:
25
• Tener en cuenta todos los riesgos significativos de la arquitectura.
• Producir un prototipo evolutivo de los componentes de
producción.
• Demostrar que la arquitectura escogida soportará los
requerimientos del sistema, dentro de un plazo de tiempo y un costo
razonable.
• Establecer un entorno de soporte.
La meta de esta fase es llamada “Arquitectura del ciclo de vida” y
básicamente mide la estabilidad de la visión, los requerimientos y la arquitectura.
26
:98 (/# &# (-/.$.A-
27
::
@
28
::6 !&#*(&! &#* #'!$.!
:: #D,./.%!/
::8 0)*#0#-%($.A-
::9 ,#>(/
::: #/)*.#',#
Según el CMM9 del SEI10, ésta disciplina controla los cambios y mantiene la
integridad de los artefactos de un proyecto. Para la administración de cambios y
configuración se debe tomar en cuenta cuales elementos serán eventualmente
sujetos a configuración y cambios, posteriormente se deberá restringir los
cambios solo a esos elementos, auditar los cambios realizados y finalmente
definir y administrar las configuraciónes de esos elementos. Esta disciplina es
esencial para controlar los numerosos artefactos resultantes de un proyecto y su
equipo de trabajo. Este control es sumamente útil para evitar la confusión y
futuros conflictos.
::I -%! -!
32
:G6 ./$.)*.-(/
:G !-$#)%!/
:G !*#/
Es uno de los conceptos más importantes, y tal vez el más céntrico de todo
el proceso. Un rol define el comportamiento y responsabilidades de un individuo
o equipo de trabajo en un proyecto. Es importante distinguir que un rol no es un
individuo, más bien, describe cómo los individuos o personas deberían
comportarse en la organización, y sus responsabilidades. Es decir, dentro de un
proyecto es común que una sola persona desempeñe diferentes roles. Dentro del
RUP existen muchos tipos de rol predeterminados. Las macro categorías que
los
• Analistas
• Desarrolladores
• Probadores (o testers)
• Administradores
• Roles varios (ej. Escritor técnico, diseñador gráfico, administrador
del sistema, especialista de productos, etc.)
33
:G8 $%.C.&(&#/
:G9 %#4($%!/
34
provee modelos para los reportes, puesto que algunos artefactos pueden tener
como salida alguno de ellos.
35
:H 7
38
G
G6
Siendo este proyecto uno nuevo, es claro que se le debe hacer especial
énfasis a esta fase. Inicialmente, y con el fin de entender la estructura y la
dinámica de la organización en la que se va a trabajar en el futuro, se decidió
hacer el modelado del negocio como primer paso.
Con el fin de compartir una visión holística del negocio y de sus procesos
con los clientes, el primer paso en la fase inicial del ciclo de ingeniería de
software sugerido por el RUP fue este.
39
Figura 6: Modelamiento del Negocio
40
G6 *$(-$#J $ !-!' (0( " 0( $! &# ($$.A-
Figura 7: Requisitos
Críticos
Tenemos como requisito funcional global «realizar una aplicación
web
interactiva que les permita a los clientes web de la compañía revisar el catálogo
completo a través de Internet, navegar por los productos, conocer los detalles y
especificaciones completas de los mismos, agregar estos productos a una orden, y
realizar el pedido cuando la orden esté completa. El sistema deberá enviar un
41
formato de XML para el departamento de pedidos, para que el pedido
realizado
sea actualizado correctamente en la base de datos de la empresa.»
Se logran identificar en principio tres grandes requisitos: Implementar
seguridad, hacer pedidos en línea y administrar el sistema. Para Implementar
Seguridad, tenemos que «el sistema deberá contar con un esquema de seguridad
que permita sesiones de usuarios recurrentes y la validación de cada usuario
mediante un esquema de nombre de usuario/contraseña».
En el requisito Hacer pedidos en línea, se tiene que «el usuario deberá
poder ver y navegar por el catálogo de productos de la empresa. Igualmente,
deberá ver y administrar su pedido (agregar productos, eliminar, etc.) y
finalmente podrá hacer su pedido a la compañía».
Por último, en Administrar el Sistema, se enuncia que «el sistema podrá ser
administrado por un usuario de tipo administrador, el cual podrá administrar
usuarios, productos, líneas, y pedidos».
Teniendo ya los requisitos críticos a nivel global, se puede crear una idea
más clara sobre el desarrollo de software en el proyecto que se pretende llevar a
cabo, y sirve como punto de partida hacia un modelo de casos de uso más
detallado junto con sus respectivos requisitos. También con estos requisitos, se
puede sacar al menos una arquitectura candidata para el desarrollo del
sistema,
Para empezar con el desarrollo del sistema, se debe tener una idea sobre
la
arquitectura a utilizar. Una primera aproximación a la arquitectura sería
utilizando el modelo de dos capas, una para servidor de aplicaciones que maneje
la lógica del negocio y presentación, y otra para el servidor de bases de datos. Se
usaría GNU/Linux como sistema operativo para ambos servidores, mySQL como
manejador de bases de datos, Apache como servidor web y PHP como lenguaje de
programación. Se realizó un diagrama de distribución donde se
enumerará
42
Figura 8: Arquitectura inicial con GNU/Linux
14
UCP: Use Case Points, o Puntos de Casos de
Uso
45
Enterprise Architect de nuevo se lleva el premio en el aspecto
de
documentación. Aunque ambos soportan la web, el Enterprise Architect
proporciona un módulo completo de documentación, flexible y con una impecable
salida en varios formatos de documentación y gráficas. El Rose por otra parte,
necesita de SoDa para tener documentación. Igualmente, el Architect proporciona
soporte nativo para el manejo de pruebas, mientras que el Rose necesita de
software adicional para lograrlo.
En cuanto a precio, el Enterprise Architect se lleva con creces el mejor
puesto. Sus U$149 representan apenas una pequeña fracción del cuantioso
precio del Rational Rose, que se vende a un precio de aproximadamente U$5,000.
Concluyendo, optamos por elegir al Enterprise Architect, de Sparx
Systems, puesto que es una completa herramienta para el modelado en UML y
que soporta al proyecto durante todo su ciclo. Además, soporta funcionalidades
muy importantes para el proyecto en curso, como son estimación, ingeniería de
requisitos y gestión de riesgos. Proporciona además muy buenas capacidades de
documentación, facilidad de manejo y aunque el Rose pueda expandirse y
complementarse con más software adicional, el Enterprise Architect es lo
apropiado para nuestro proyecto. Y, su relación precio – beneficio es mucho
mejor
46
G6G #/%.A- &# .#/'!/
48
No se han definido y empleado reglas 3 30
específicas para la documentación del código
No se emplean métodos específicos para el 3 70
diseño de casos de prueba
No se emplean herramientas CASE en 4 20
diferentes etapas del proyecto
No se emplean métricas de calidad y 4 30
productividad en el proyecto
Riesgos por la Tecnología
Es muy nueva para su organización la 3 40
tecnología a construir
Los requisitos demandan nuevos métodos de 4 40
análisis, diseño o pruebas
Riesgos por el Entorno de Desarrollo
No se cuenta con una herramienta de gestión 3 20
de proyectos de SW
No existen herramientas de análisis y diseño 4 10
adecuadas para el SW a crear
No hay disponibles compiladores o 2 40
generadores de código apropiados para el SW
a crear.
No existen herramientas de pruebas 4 60
adecuadas para el SW a crear
No existen expertos disponibles para aclarar 4 20
dudas sobre las herramientas
No es adecuada la ayuda en línea de esas 4 10
herramientas
Riesgos por el Personal
No disponemos de la mejor gente 2 30
El personal no tiene todos los conocimientos 4 50
adecuados
No se ha asignado el personal para toda la 4 30
duración del proyecto
49
Tabla 2: Lista de riesgos en el proyecto
Se observa que los riesgos más importantes tienen que ver con las
categorías de Riesgos por el Cliente y Riesgos por el Impacto en el Negocio. Con
estos riesgos ya identificados, el paso a seguir sería realizar un plan con el fín de
evitar que ocurran tales riesgos o de mitigar el impacto de los mismos en el
proyecto. Si se quisiera evaluar más profundamente el tema de los riesgos, se
pudiera plantear la ejecución de una matriz costo – beneficio, con el fin de saber
si se justifica hacer planes RSGR.
A grandes rasgos, en nuestro caso se identificó que los principales
problemas pueden surgir por la falta de comunicación con el cliente, el tiempo, y
la capacidad del usuario final. Como estrategias se podrían sugerir:
Mejorar la comunicación con el cliente
50
Conscientizar al cliente de la importancia de su actuación activa dentro
del proceso de desarrollo de software y los inconvenientes que surgirían
por la falta de su apoyo.
Realizar un nuevo cronograma con mejores técnicas de estimación, o
contratar más personal capacitado.
Generar manuales más didácticos e informativos, y realizar talleres de
capacitación más extensos a los usuarios finales.
Crear ayuda interactiva en el software con el fín de hacerlo más
amigable al usuario.
51
G
52
G !&#*! &# (/!/ &# /!
53
Número Caso de Uso Categoría
3.7. Modificar Producto Esencial
3.8. Modificar Usuario Esencial
3.9. Ver Pedidos Esencial
54
G !&#*! &# (%!/
55
G 8 .(' (0( &# *(/#/
*(/# (%#'! +(
Tipo: public Class
Estado Propuesto.Versión 1.0.Fase 1.0.
:
56
Paquete: Diagrama de Clases
Detalles Creado el 14/08/2003. Modificado el
: 03/09/2003.
Clase para manejar las
categorías
Trazabilidad
Enlace de asociación desde la clase
Categoría
Enlace de asociación desde la clase Producto
Categoría -
Atributos
Atributo Tipo Notas
código private: int
nombre private: string
descripción private: string
categoríaPadre private: int
58
*(/# #&.&!
59
*(/# !&,$%!
Tipo: public Class
Estado: Propuesto.Versión 1.0.Fase 1.0.
Paquete: Diagrama de Clases
Detalles Creado el 14/08/2003. Modificado el
15/10/2003.
Clase para manejar los productos.
Trazabilidad
Enlace de asociación a la clase Categoría
Enlace de asociación a la clase
Orden_Compra
Enlace de asociación desde la clase Pedido
Atributo Tipo Notas
código private: int
nombre private: string
descripción private: string
precio private: int
especial private: int
palabrasClave private: string
foto private: string
*(/# /,( .!
Tipo: public Class
Estado: Propuesto.Versión 1.0.Fase 1.0.
60
Paquete: Diagrama de Clases
Detalles Creado el 14/08/2003. Modificado el
: 15/10/2003.
Clase para manejar las
categorías
Trazabilidad
Enlace de asociación a la clase Orden_Compra
Enlace de asociación desde la clase
Configuración
Atributo Tipo Notas
username private: string
nombre private: string
apellido private: string
email private: string
teléfono private: string
dirección private: string
privilegios private: int
61
G 9 /%.0($.A- " 02% .$(/
Para la obtención del cálculo de Horas por UCP, se realizó una prueba
piloto en el desarrollo de un solo módulo del proyecto, en nuestro caso, el de
administración y se tomaron las métricas de tiempo, así como el resultado de los
UCP de dicho módulo. Partiendo de la ecuación básica de cálculo de las horas
totales de un proyecto, tenemos que:
HorasTotales
HorasTotales = UCP * HorasPorUCP = HorasPorUCP
UC
P
63
Por tanto, en el módulo de administración que tardó cerca de 100 horas en
completar (HorasTotales), con un valor de UCP de 32, se tiene:
100
HorasPorUCP = ≈ 3.0
32
Entonces, es claro que el valor de HorasPorUCP en nuestro proyecto, es de
3.0, lo cual va a proporcionar una entrada muy precisa a la ecuación de cálculo
de la estimación por UCP, y servirá en proyectos futuros que tengan un modelado
de casos de uso a un nivel similar. En este caso, el modelado por casos de uso se
llevó a un nivel explícito y granular, casi al de funciones CRUD (Crear,
Recuperar, Actualizar y Eliminar).
Observemos la manera como se calculó la estimación para el proyecto
en
cuestión:
Ítem Valor
Fecha de Estimación 15-Ago-2003
Numero de Casos de Uso 22
Puntos de Casos de Uso Unicos (UUCP) 125.00
Complejidad Tecnica (TCF) 0.92
Complejidad del Entorno (ECF) 0.71
Puntos de Casos de Uso (UUCP * TCF * ECF) = UCP 81.00
Horas por UUCP (HRS) 3.00
Horas Totales (HRS * UCP) 243.00
64
TCF02 Tiempo de respuesta 1,00 3,00 3,00
(rendimiento)
TCF03 Eficiencia del usuario final (en 1,00 2,00 2,00
linea)
TCF04 Procesamiento interno complejo 1,00 3,00 3,00
TCF05 El código debe ser reutilizable 1,00 2,00 2,00
TCF06 Fácil de instalar 1,00 1,00 1,00
TCF07 Fácil de usar 1,00 3,00 3,00
TCF08 Portable 2,00 4,00 8,00
TCF09 Fácil de cambiar 1,00 3,00 3,00
TCF010 Concurrente 1,00 1,00 1,00
TCF011 Incluir capacidades de 1,00 2,00 2,00
seguridad especiales
TCF012 Acceso directo a SW de terceros 1,00 0,00 0,00
TCF013 Necesidad de entrenamiento 1,00 0,00 0,00
especial
Total: 32.00
Factor Valor
Valor TCF sin ajustar (UTV) 32.00
Peso del TCF (TWF) 0.01
Constante del TCF (TC) 0.60
Factor de Complejidad Técnica (TCF) = TC + (UTV * TWF) 0.92
Factor Valor
Valor del ECF sin ajustar (UEV) 23.00
Peso del ECF (EWF) -0.03
Constante del ECF (EC) 1.40
Factor de Complejidad del Entorno (ECF) = EC + (UEV * EWF) 0.71
67
«Si un sistema va a ser descrito como N-Tier, deberá cumplir con las
siguientes reglas:
• Cada capa deberá poder existir en un sistema físicamente
independiente.
• Cada capa solo deberá intercambiar información con las
capas inmediatamente superior e inferior
• Cada capa podrá ser intercambiable»19
70
•Librerías de abstracción de acceso a datos, nativas de
PHP
Teniendo en cuenta que se optó por el entorno PHP en la anterior capa, no
tiene mucho sentido elegir JDBC como capa de acceso de datos. Por tanto, se
tienen ODBC y las librerías nativas de PHP como alternativas. Aunque PHP tiene
soporte completo para ODBC, igualmente tiene una cantidad importante de
librerías nativas de acceso a los datos, que proporcionan más velocidad. Por ello,
se eligió la alternativa de utilizar las librerías de abstracción de acceso a
datos
72
G G #C./.A- ( *( #/%.A- &# .#/'!/
73
De los diagramas de interacción existentes (secuencia y colaboración), se
optó por seleccionar el diagrama de secuencia como preferido, puesto que
demuestra claramente a través del tiempo la interacción entre los diferentes
componentes del sistema. Veamos pues el diagrama de secuencia del módulo
más
74
Figura 12: Diagrama de Secuencia - Módulo de pedidos
75
El diagrama también se puede apreciar en forma de tabla, como se
muestra a continuación:
Cod Mensaje Desde Hacia
1 verCatálogo Interfaz de catálogo
2 listar() Interfaz de catálogo
3 listarProductos
4 verDetallesProducto Interfaz de catálogo
5 ver() Interfaz de catálogo
6 mostrarDetallesProduc
to
7 agregarProductoAPedi Interfaz de catálogo
do
8 agregar(int, int) Interfaz de catálogo
9 recalcular()
10 confirmarAgregarProd Interfaz de catálogo
ucto
11 hacerPedido Interfaz de catálogo
12 verificarPrivilegios() Interfaz de catálogo
13 completarPedido() Interfaz de catálogo
14 recalcular()
15 confirmarPedido Interfaz de catálogo
16 hacerPedido() Interfaz de catálogo
17 ver() Interfaz de catálogo
18 mostrarDetallesPedido
19 cambiarPedido Interfaz de catálogo
20 cantidad(int, int) Interfaz de catálogo
76
G
Fue importante en esta fase rectificar y clarificar tanto los requisitos como
el diseño que fueron necesarios, desarrollar o implementar los subsistemas o
componentes, e integrarlos. Dicha integración se realizó en el llamado modelo
operacional, el cual representa una composición física de la implementación en
términos de subsistemas y elementos (directorios, archivos, código fuente
y
77
G 6 #C./.A- ( *( #/%.0($.A- " 02% .$(/
78
identificar adicionalmente potenciales riesgos en los que el proyecto pueda caer,
desde las primeras fases del desarrollo del mismo.
El plan de pruebas que se realizó incluye diferentes tipos de riesgos dentro
de los cuales hay varios tipos de pruebas que fueron ejecutadas por el grupo de
desarrollo e integración, o por terceras partes ajenas al proceso de construcción.
Este plan de pruebas es basado en algunas pruebas sugeridas por el
mismo RUP.
.#/'!1 ,-$.!-(*.&(&
Este riesgo abarca los posibles problemas relacionados con la misma
funcionalidad del sistema. Para probar este riesgo y sus posibles problemas, se
ejecutaron tres tipos de pruebas:
Prueba de
Funcionalidad
Fue utilizada con el fin de validar que la unidad examinada funcione como
se espera, es decir, que trabaje conforme a los casos de uso, requisitos, servicios,
etc. Cada unidad examinada puede ser desde un método o función, hasta un
sistema completo.
Prueba de
Seguridad
Se verificó que la información solo puede ser accedida por aquellos
actores
que en realidad tienen los privilegios y credenciales para hacerlo.
Prueba de
Volúmen
Este examen probó la capacidad del sistema de recibir/devolver cantidades
de información muy grandes o vacías. Se usaron consultas que devolvieran
grandes cantidades de información, o información que fuera difícil para el motor
de búsqueda encontrar.
79
.#/'!1 /(>.*.&(&
.#/'!1 !-4.(>.*.&(&
80
LinkChecker, el cual fue de gran ayuda para encontrar problemas de tipo
estructurales en la aplicación web.
Prueba de
Adversión
Busca evaluar como se desempeñó el sistema en situaciones extremas y
adversas, tales como sobrecarga de procesador, servicios no disponibles, falta de
memoria, fallas en la comunicación, y falta de cualquier tipo de recurso que sea
necesario. Más que para corregir situaciones, este tipo de prueba se realiza con
el fin de identificar cómo funciona el sistema en condiciones anormales, para así
poder sacar los debidos planes de contingencia y de mitigación de riesgos, con su
debido presupuesto para el futuro. Para estas pruebas, se hizo uso del software
de pruebas automáticas OpenSTA, el cual sirvió para simular el comportamiento
de clientes y así sobrecargar la aplicación, para finalmente dar los
resultados
.#/'!1 #-&.0.#-%!
Prueba de
Carga
Varía la cantidad de entradas de operación normal al sistema (número
de
consultas, usuarios, etc.) manteniendo constante la configuración. Se usó la
aplicación de pruebas automáticas OpenSTA para este tipo de pruebas.
Prueba de Perfiles de
Funcionamiento
Varía las configuraciónes del sistema, mientras las entradas de operación
normal del sistema permanecen constante. Se observa el comportamiento de la
aplicación bajo estos cambios.
81
Pruebas de Comparación
(benchmarking)
Compara los valores mesurables de la unidad a probar, con los de una
unidad estándar ya conocida.
Pruebas de
Configuración
Se pretendió evaluar y asegurar que el sistema funcionara en diferentes
configuraciones tanto de software como de hardware.
Pruebas de
Instalación
Se buscó probar cómo era la instalación de la aplicación en diferentes
configuraciones tanto de software como de hardware. Se utiliza para identificar
posibles errores y realizar planes de contingencia y mitigación.
82
G 8 #)! %# &# ! #/
Una vez efectuados los casos de prueba para llevar a cabo el plan de
pruebas, en caso tal que hayan casos de prueba cuya ejecución haya dejado
como resultado que no pasa el criterio de aceptación los resultados esperados, se
debe emitir un reporte de errores en el cual estarán plasmados de manera clara y
concisa los errores y los problemas que deberán ser solucionados con el fin que
los elementos evaluados logren pasar los criterios de aceptación definidos.
Algunos ejemplos de documentos de reporte de errores, están en el Anexo
II del presente documento.
83
G8
84
G8 .%# .!/ &# C(*,($.A-
Para terminar la última fase del ciclo del RUP, y por ende la iteración, es
necesario responder a unas preguntas o criterios de evaluación con el fín de
saber si los objetivos fueron alcanzados y si es necesario o no realizar otro ciclo
del RUP.
Los criterios de evaluación en este caso son:
85