Documentos de Académico
Documentos de Profesional
Documentos de Cultura
(ADS) (Apunte) Resumen 1
(ADS) (Apunte) Resumen 1
Conjunto de elementos dinámicamente relacionados entre si que realizan una actividad para llegar a una meta, operando
sobre entradas y produciendo salidas al medio circundante. Cada sistema está compuesto por subsistemas, y es, a su vez,
subsistema de un sistema mayor.
El comportamiento de cada elemente de un sistema afecta al sistema y cada una de las partes. Ningún sistema está totalmente
aislado, por lo tanto ningún subsistema tiene un efecto independiente sobre el sistema.
El comportamiento del sistema esta definido por el comportamiento de sus partes y sus interacciones.
La jerarquía de los sistemas establece que un sistema es de mayor jerarquía que otro, cuando necesita que este último alcance
sus objetivo para poder alcanzar los propios.
Principales niveles:
Macrosistema: Es determinado universo o contexto o medio ambiente
Subsistema: Es un sistema de nivel inclusión inferior o parte del sistema.
Sistema elemental: Es de menor jerarquía y no es necesita factorizarlo.
Sistema de caja negra: Sistema que no puede ser factorizado. Ej.: competencia
Según su naturaleza:
o Físicos
o Abstractos
Frontera o Límite:
El limite determina unívocamente todo lo que esta bajo el control del sistema y lo que no pertenece a el. Como ningún sistema
esta totalmente aislado, mientras no se defina sus fronteras se corre el peligro de definir uno demasiado grande para los
propósitos del estudio.
Limite Interno es el conjunto de subsistemas que desde el punto de vista del diseño deben considerarse como partes. El límite
interno separa los subsistemas entre sí.
Ambiente o Medio:
Se refiere al conjunto de objetos exteriores que rodean y contienen al sistema en cuestión. Esta integrado por todos los
sistemas sobre los cuales no se tiene control y no están incluidos en el sistema.
SISTEMA DE INFORMACIÓN
Es el conjunto de recursos humanos, tecnológicos, materiales, financieros, metodológicos, organizados para brindar a quienes
toman decisiones en una organización, la información necesaria para llevar a cabo sus respectivas funciones.
Un sistema de información es capaz de recolectar, almacenar, procesar y distribuir todos los datos relativos a la información de
la Empresa.
Clasificación de la SI
Nivel
Estratégico
DSS
Decisiones No Estructuradas
Nivel Táctico
MIS
Decisiones Estructuradas
Nivel Operativo
TPS
Decisiones Acotadas
Decisiones:
No Estructuradas: Cuando no existen procedimientos claros para tomarla y tampoco es posible identificar con anticipación
todos los factores que deben tenerse en cuenta.
Estructurada: Se conocen de antemano los factores a tener en cuenta, como así también las variables con influencia en el
resultado de la decisión.
Acotadas: Cuando se tiene poco tiempo para tomarlas y tienen poco alcance.
Objetivos de la Organización
Dato e Información
Dato: Es una representación de un hecho o de cifras en bruto. El dato representa un termino de un mensaje que en si mismo
no lleva ninguna información.
Información: Es cualquier conocimiento o mensaje útil para la decisión y la acción, o bien, el significado derivado de los datos.
Cuando un conjunto de datos posee significado tenemos información.
La información reduce la incertidumbre y brinda el conocimiento necesario para la orientación en una decisión.
La principal diferencia entre la información y el dato es que este ultimo no por si solo no tiene significado.
Economía de la información
Es la forma en que la información añade valor a la empresa y la relación entre el valor y el coste de la información.
La información añade valor a través de medios como reducción de costos de producción, unos ingresos incrementados y
mejores decisiones. Pero a su vez cuesta dinero en forma de salarios, equipo, compra de programas, lugar físico, etc.
Eficiencia y Eficacia
La eficiencia depende del equilibrio entre el valor y el coste de un sistema. La eficacia depende solamente del costo de
alcanzar un determinado conjunto de especificaciones. La eficiencia es una cuestión de gestión. La eficacia es una cuestión
técnica.
EFICIENCIA EFICACIA
Objetivos del SI
Todo sistema organizacional depende, en mayor o menor medida, de un sistema de información que es el medio por el cual
los datos fluyen de una persona o departamento hacia otros.
Los sistemas de información proporcionan servicio a todos los demás sistemas de una organización y enlazan todos los
componentes en forma tal que estos trabajen con eficiencia para alcanzar el mismo objetivo.
Alcance: Es todo lo que forma parte del estudio del análisis de sistemas.
Diferencias entre Estrategia y Táctica: En la estrategia se define el objetivo, la meta. En la táctica se define que se va a hacer
para alcanzar o lograr esos objetivos.
Factores Críticos para el Éxito (FCE): Son actividades que si o si deben cumplirse para lograr los objetivos y estos cambian con
el tiempo.
PROYECTO
Es un conjunto de etapas, actividades y tareas para alcanzar un objetivo que implica un trabajo no inmediato, a un plazo
relativamente largo. Todo proyecto tiene un principio, un final y un objetivo. Sus actividades son únicas y esencialmente no
repetitivas y requieren de un jefe de proyecto, así como también de personal de desarrollo.
Todo proyecto está planificado, y su progreso se mide en comparación al plan. Existen fuerzas internas y externas, que deben
identificarse y tratarse, ya que influyen en él. Un proyecto suele coexistir con otros proyectos contra los cuales compite por
recursos. Esto se debe a que usa diversos recursos finitos y cuenta con un presupuesto.
Un proyecto se diferencia de una operación, en que esta está en constante existencia y son repetitivas.
Proyecto de Software
La finalidad del proyecto es iniciar, administrar, dirigir y controlar las actividades asociadas con el desarrollo de sistemas, para
conseguir mejores resultados por el aprovechamiento óptimo de los recursos de tiempo, capacidad humana y presupuesto. El
software no se fabrica en un sentido clásico, sino que se desarrolla y su construcción es un proceso de resolución de problemas
que implica la transformación de una necesidad en una solución automatizada que satisface la necesidad
Generalmente, las razones para comenzar un proyecto de sistemas de información se pueden dividir en tres categorías,
pudiendo darse más de una a la vez:
Resolver un problema: Las actividades, procesos o funciones actuales no funcionan (o quizá en el futuro) dentro de los
estándares establecidos o no satisfacen las expectativas, debiendo emprender una acción que resuelva las dificultades.
Este motivo de inicio de proyecto no siempre se debe a que haya certeza de que existe un problema, bien pudiendo ser que se
presuma que existe un problema, ó que se lo quiere prevenir.
Aprovechar una oportunidad: El sistema sería un cambio para ampliar o mejorar la capacidad económica del negocio y
aumentar la competitividad de la empresa en el mercado.
Dar repuestas a directivos: El sistema servirá para proporcionar información en respuesta a ordenes, solicitudes o mandados
de una autoridad legislativa o administrativa; llevar a cabo tareas de cierta manera; ó también cambiar la información o el
desempeño.
Las cinco C:
•Mayor exactitud y mejora de la consistencia. Llevar a cabo los pasos de computo de una modo correcto y
estructurado.
Control •Proveer mayor seguridad. Resguardar datos importantes y sensibles tal que solo sea accesible por personal
autorizado.
•Monitoreo de costos. Seguimiento de costos de todo tipo para determinar su evolución en relación con los
esperados.
Costos •Reducción de costos. Usar la capacidad de cómputo para procesar los datos con un bajo costo y
manteniendo o mejorardo el nivel de desempeño.
•Atraer Clientes. Modificar los servicios proporcionados y la relación con lso clintes de modo que estos
no opten por cambiar de proveedores..
•Dejar fuera a la competencia. Disminuir las chances de que competidores tengan acceso al mismo
mercado como consecuncia del uso que la organización les de a sus sistemas de información.
Competitividad •Mejorar acuerdos con proveedores. Cambios en precios, servicios, condiciones, etc. para el beneficio de
la organización.
•Desarrollo de nuevos productos. Introducir nuevos productos cuyas caracteristicas están influenciadas
por las nuevas tecnologías de información.
Hay varias fuentes que pueden solicitar el comienzo de un proyecto de sistemas e información, entre ellas:
Jefes de departamento. Frecuentemente, las personas relacionadas con las actividades cotidianas de la empresa buscan
ayuda dentro de sus propios departamentos.
Altos ejecutivos. Usualmente, éstos tienen información que no está disponible para los gerentes y a su vez tienen influencia
sobre la solicitud de un sistema de información.
Analista de sistemas. Ocasionalmente, el analista busca áreas donde debe desarrollarse un sistema de información o anima a
un gerente para que este autorice la elaboración de uno.
Grupos Externos. Los acontecimientos externos a la organización también pueden conducir a la formulación de proyectos.
Diagnostica Sirven para identificar el
problema
El proceso de Software
Un proceso de software proporciona la estructura desde la que se puede establecer un detallado plan para desarrollar el
software. Un pequeño número de actividades estructurales se pueden aplicar a todos los proyectos de software, sin importar el
tamaño o complejidad. Diferentes conjuntos de tareas (hitos, entregas, tareas y garantía de calidad) permiten a las actividades
estructurales adaptarse a las características del proyecto de software y a los requisitos del equipo del proyecto.
Gestores superiores: definen los aspectos de negocio que a menudo tienen una significativa influencia en el proyecto.
Gestores (técnicos) de proyecto: deben planificar, motivar, organizar y controlar a los profesionales que realizan el trabajo de
software.
Profesionales: proporcionan las capacidades técnicas necesarias para la ingeniería de un producto o aplicación.
Clientes: especifican los requisitos para la ingeniería de software.
Usuarios finales: interactúan con el software una vez que se ha entregado para la producción.
Equipo de proyecto
El jefe del proyecto
Es la persona que tiene la responsabilidad de planificar, controlar y dirigir las actividades del proyecto. Muchas veces, estas
responsabilidades suponen la coordinación e integración de actividades a través de distintas unidades organizativas y
departamentos. El jefe de proyecto debe poseer ciertas habilidades para el correcto desempeño de éste: habilidades técnicas
(conocimiento y pericia para trabajar con herramientas y técnicas específicas), habilidades humanas (para trabajar con gente y
conseguir el esfuerzo cooperativo del trabajo en equipo), habilidades conceptuales (para ver un panorama completo, reconocer
los elementos relevantes de una situación y entender las relaciones entre los elementos) habilidades de diseño (para ser capaces
de más que sólo ver un problema sino que generar una solución práctica a un problema).
Usuarios
Es aquél (aquellos) para quien se construye el sistema. El analista tendrá que entrevistar con gran detalle a fin de conocer las
características que deberá tener el nuevo sistema. Se puede hacer referencia a ellos con Clientes también.
Generalmente es fácil identificar a los usuarios: característicamente es aquél que formalmente solicita un sistema. Sin
embargo, hay situaciones en las que no se conoce la verdadera identidad del usuario y hay poca oportunidad de que éste
interactúe con el analista. Tales situaciones dan lugar a una gran posibilidad de malos entendidos debido a fallos de
comunicación. Siempre que sea posible el analista debe intentar comunicarse directamente con el usuario, aún si existen
intermediarios. Es mejor si el usuario forma parte activa del equipo encargado del proyecto.
De no ser posible, entonces la documentación generada por el analista toma mayor importancia ya que describe el
comportamiento del sistema de modo riguroso y formal. El uso de estas herramientas es vital para evitar malos entendidos
costosos.
Hay dos maneras de clasificar a lo usuarios:
Por categoría de trabajo: Un analista habitualmente debe interactuar con individuos de tres categorías de trabajo: usuarios
operacionales, usuarios supervisores y usuarios ejecutivos.
Los primeros son oficinistas, administradores y operadores, quienes probablemente tendrán contacto diario con el nuevo
sistema. Estos se preocupan mucho por las funciones del nuevo sistema pero se preocupan aun mas por los detalles de la
interfaz humana, detalles que son vitales para el éxito del sistema y que deben ser abordados. Además este tipo de usuarios
tienden a poseer un panorama local de su papel en la organización y les cuesta decir como es que su actividad encaja dentro de
la misma, es decir un panorama global. Consecuentemente el analista debe poder desarrollar modelos de sistemas que
permitan ambos panoramas.
Los usuarios supervisores son personas que administran a usuarios operacionales y son responsables de sus logros. Suelen ser
usuarios operacionales que han sido promovidos y, por lo tanto, están al tanto del trabajo de sus subordinados y por lo tanto
están de acuerdo con sus necesidades, preocupaciones y perspectivas; aunque no siempre es así.
Generalmente este tipo de usuario se interesa en un nuevo sistema de información por la posibilidad de incrementar el
volumen de trabajo disminuyendo el costo del procesamiento de las transacciones y los errores en el trabajo.
Generalmente, es el usuario supervisor quien ve al nuevo sistema como una forma de reducir el número de usuarios
operacionales, creando conflicto en los cuales el analista puede encontrarse en el medio.
El usuario supervisor suele actuar de intermediario entre los operacionales y el analista. Esto es peligroso, ya que si este no
atiende las preocupaciones de sus subordinados, nada garantizara que la interfaz humana sea la correcta para ellos.
Es el usuario supervisor con quien el analista tendrá contacto cotidiano primario, y es quien definirá los requerimientos y las
políticas de la empresa que el sistema deberá realizar. Puede ser desde un miembro pasivo del equipo hasta el gerente del
proyecto.
Los usuarios de nivel ejecutivo no se suelen involucrar directamente con el proyecto de desarrollo del sistemas si es que este
no están amplio ni importante como para tener un impacto primordial en al empresa.
Pueden proporcionar la iniciativa para el proyecto pero es más probable que tomen el rol de financiadores de solicitudes que
se dan en niveles inferiores. No se encuentran en una posición que les permita poder definir los requerimientos del sistema ya
que no poseen la experiencia, excepto de que se trate de sistemas orientados a niveles altos de la organización.
Estos usuarios están más preocupados por los detalles estratégicos, las ganancias y pérdidas a largo plazo. A su vez, se
interesan mas por el panorama global del sistema, no se interesan por los detalles. Prefieren de las herramienta de modelados
que dan un panorama global del sistema.
Al usuario no siempre le agrada la perspectiva de un nuevo sistema, y a menudo se opondrán a el.
Por nivel de experiencia: Amateur es aquel que jamás vio una computadora y que no le agrada el contacto con ellas. Es un
reto para el analista debido a que éste no puedo utilizar su jerga para comunicarse con él. Aun cuando se evita la terminología
puede que le resulte difícil comprender las características y las funciones del sistema. Si el usuario no puede entender ni un
modelo del sistema, hay poca probabilidad de que le satisfaga el sistema cuando éste esté terminado.
Otro tipo de usuario es el novato presuntuoso, y es aquél que ha tenido que ver con uno o dos proyectos de desarrollo de
sistemas o que posee una computadora y que ha desarrollado uno o dos programas. Alega saber exactamente que quiere que el
sistema haga y suele señalar todos los errores del analista anterior, pero peca de querer señalar prematuramente las tecnologías
a utilizar.
El restante es el pequeño (pero creciente) grupo de verdaderos expertos.
Auditores
Según el tamaño del proyecto y su naturaleza, puede haber auditores, personal de control de calidad o miembros del
departamento de normas o estándares participando del proyecto. Sin embargo sus objetivos y perspectivas son los mismos.
Sus objetivos son asegurar que el sistema se desarrolle dentro de diverso normas y estándares, los cuales pueden estar
impuestos por la organización y sus miembros o pueden ser gubernamentales, entre otros.
Se deben prever tres problemas al trabajar con este tipo de participantes:
1. Generalmente no se involucran sino hasta el final del proyecto, luego de que se hay finalizado con el trabajo del
análisis, el diseño y la programación., cuando se ha comenzado con la prueba formal. A estas alturas suele ser muy
complicado realizar cambio en el sistema.
2. A menudo están familiarizados con notaciones antiguas para la documentación de requerimiento de sistemas. Debido
a esto, es necesario asegurarse que los modelos de sistemas desarrollados sean comprensibles.
3. Generalmente están más interesados en la forma que en el contenido, por lo que si los documentos no tienen la
presentación exacta podrían ser rechazados.
El analista de sistemas
Personaje clave en todo proyecto de desarrollo de sistemas, el cual desempeña varios roles:
Arqueólogo y escribano: Descubre detalles y documenta la política de un negocio que pueden existir solo como tradiciones
tribales transmitidas entre generaciones de usuarios.
Innovador: Debe distinguir entre síntomas y problemas del usuario y causas. Valiéndose de sus conocimientos de
computación, debe ayudar al usuario a explorar aplicaciones novedosas y útiles tecnológicas así como nuevas maneras de hacer
negocios.
Mediador: A menudo se encuentra entre usuarios, administradores, programadores y otros participantes, que
frecuentemente están en desacuerdo entre si. Puede serle tentador imponer u propia opinión pero su deber principal es
obtener consenso debiendo valerse de la diplomacia y la negociación.
Jefe de proyecto: Dado que posee más experiencia que los programadores que trabajan en el proyecto, y dado que se lo
asigna al mismo antes de que éstos comiencen a trabajar, hay una tendencia natural a asignar al analista las responsabilidades
de la administración integra.
Se requiere facilidad en el manejo de personas para poder entrevistar a los usuarios, mediar en desacuerdo y sobrevivir a las
inevitables batallas políticas que se dan en todos los proyectos excepto en los triviales. Se necesita tener conocimientos de
aplicación para entender y apreciar los asuntos del usuario. Se requiere habilidad en computación para entender los usos
potenciales de hardware y software en los asuntos del usuario.
Diseñadores de sistemas
Es quien recibe los resultados del trabajo de análisis y su labor es transformar la petición en un diseño arquitectónico de alto
nivel que servirá de base para el trabajo de los programadores.
El analista y el diseñador suelen ser la misma persona o el mismo grupo de personas, y aún cuando no lo fueran es importante
que se mantengan en contacto directo durante el proyecto, debido a que es necesario que el analista ofrezca información
detallada suficiente como para que el diseñador pueda elaborar un diseño tecnológicamente superior, y a su vez es necesario
que el diseñador provea de suficiente información al analista para que este se de cuenta de si los requerimientos que el usuario
esta documentando son tecnológicamente posibles. Mucha retroalimentación rápida y constante entre ambas partes.
Los programadores
Posiblemente no haya comunicación entre el analista y los programadores, siendo los diseñadores quienes probablemente
funcionen como puente o nexo entre ambos. Esta falta de comunicación se debe a que a menudo, se lleva a cabo el trabajo
siguiendo una secuencia estricta en algunos proyectos de desarrollo de sistemas, por lo que el trabajo del analista se hace
primero y se termina por completo antes que comience la labor de programación; siendo probable que el analista ya este
asignado a otro proyecto antes de que el programador intervenga en el actual.
Aún así es probable que exista contacto por los siguientes motivos:
En proyectos pequeños, los papeles de analista, diseñador y programador se combinan de modo que una sola
persona o grupo de personas realicen todo el trabajo.
El analista a veces sirve de administrador del proyecto, por lo que, aun cuando su labor como analista haya concluido,
aun estará involucrado en el proyecto y tendrá algún contacto con el programador.
Generalmente, es el programador quien descubre errores y ambigüedades en la propuesta de requerimientos que
entrega el analista. Entonces el programa puede pedirle aclaraciones al analista o bien hablar con el usuario.
A la hora de cambiar un sistema anterior, puede ser necesario comunicarse con el programador encargado del
mantenimiento del sistema.
Administración
Existen diversos tipos de administradores:
Administradores usuarios: Son los que están a cargo de varias personas en el área operacional donde se implantara el sistema.
Son, generalmente, administradores de nivel medio que desean sistemas que produzcan una variedad de informes internos y
análisis a corto plazo.
Administradores de informática: Son las personas encargadas del proyecto en si de sistemas, y los encargados de la
administración a nivel global y distribución de recursos al personal técnico de la organización de creación/desarrollo de
sistemas.
Administración general: Administradores de nivel superior que no están involucrados con la organización de informática ni
son de la organización usuaria. Se interesan más por los sistemas de planeación estratégica o d apoyo a las decisiones y se
concentran más en la información externa.
La principal interacción entre el analista y los administradores tiene que ver con los recursos a asignar al proyecto. El deber del
analista es identificar y documentar los requerimientos del usuario y las limitaciones dentro de las que se implementará el
sistema, que generalmente son los recursos.
Generalmente los administradores, cuanto más alto sea el nivel que ocupen, menos probable es que sepan de computación.
Además las metas de lo administradores suelen entrar en conflicto con las de los usuarios pudiendo llegar a imponerles un
nuevo sistema.
El personal de operaciones
El Analista no necesitaría tener contacto con el personal de operaciones encargado del centro de cómputo, la red de
telecomunicaciones, la seguridad del hardware y del software, además de la ejecución de los programas, el montaje de los
discos y de la salida de las impresoras; ya que todo esto sucede luego de que tanto la labor del analista como la del diseñados y
de los programadores ha finalizado. Sin embargo el analista debe comprender las restricciones impuestas al nuevo sistema por
el personal de operaciones ya que tiene un gran impacto. En algunos casos, los detalles operacionales del sistema pueden
reducirse a una cuestión de negociación entre el usuario y el grupo central de operaciones de la computadora.
Todos los asuntos operacionales se documentan como parte de la tarea del análisis.
Participación del Equipo en las etapas de ciclo de vida
El cliente participa en el análisis y la planificación
El análisis de requerimientos se va a realizar con el usuario
El diseño lo define el diseñador con las restricciones propuestas por el usuario
En la codificación es todo propio del equipo del proyecto.
En las pruebas participan todos
7. 1. Identificación
Implementación de problemas,
y evaluación del oportunidades y
sistema. objetivos.
2. Determinación
6. Pruebas y
de los
mantenimiento
requerimientos
del sistema.
de información.
4. Diseño del
sistema
recomendado
Debe hacerse hincapié en que frecuentemente el trabajo de sistemas es cíclico. Cuando el analista da por concluida una fase
del SDLC y avanza a la siguiente, el surgimiento de un problema puede obligarlo a regresar a la fase previa y modificar el trabajo
realizado.
Problemas en la administración
A los administradores no les agrada aceptar que su organización tiene problemas. Sin embargo, un buen administrador es
consiente que para mejorar el rendimiento y mantener a la empresa funcionando se debe ser capaz de reconocer los síntomas
de problemas, diagnosticar problemas y ser capaz de hacerles frente..
Los problemas surgen de distintas maneras. Se los puede considerar como situaciones en las que no se alcanzan las metas
fijadas. Una buena realimentación puede hacer notar la brecha entre el desempeño real y el desempeño pretendido. Aun así hay
problemas ocultos al analista ya que no se realizaron mediciones del desempeño. Pueden notarse problemas también, cuando
se notan cambios malos y bruscos en lo empleados.
La retroalimentación externa también juega un papel importante, ya sea como quejas de los clientes o reclamos. Todo esto
ayuda a la detección de problemas.
Selección de proyectos
Los proyectos surgen de diversas fuentes y por muchas razones, pero no todos deben seleccionarse para un estudio mas
profundo. Para poder seleccionar con que proyecto avanzar se debe tener en cuenta que éste no debe servir para mejorar su
propia imagen política o poder, o del grupo que la proponga, ya que es probable que el proyecto sea mal concebido y, con el
tiempo, no tenga una buena aceptación.
Los proyectos potenciales se examinan con una perspectiva sistémica, tomando en cuenta el impacto que éste tendrá en la
organización.
Existen cinco criterios específicos para la selección de proyectos:
1. El respaldo de los directivos de la organización.
2. Un periodo adecuado de compromiso para terminar el proyecto.
3. La posibilidad de mejorar la consecución de las metas organizacionales.
4. Factibilidad en cuanto a recursos para el analista de sistemas y la organización.
5. La rentabilidad del proyecto en comparación con otras formas en que la organización podría invertir sus recursos.
El criterio principal es el respaldo de los directivos, ya que no se puede lograr sin el consentimiento de éstos, aunque ellos no
intervengan en el proyecto.
Determinación de la vialidad
Cuando la cantidad de proyectos a considerar se redujo en la etapa anterior, queda por determinar la viabilidad si los
proyectos seleccionados son viables. El estudio de viabilidad se trata de recopilar suficientes datos para que los directivos, a su
vez, tengan los elementos necesarios para decidir si debe procederse a realizar un estudio de sistemas.
Los datos para este estudio se recopilan mediante entrevistas.
Es importante que el analista de sistemas invierta demasiado tiempo en los estudios de viabilidad, porque son muchos los
proyectos a estudiar. Aun así este proceso abarca diversas actividades.
Definición de objetivos. El analista es catalizador y experto de soporte técnico, identificando en primer lugar donde se pueden
mejorar los procesos. Se puede que considerar que las oportunidades son la contraparte de los problemas, pero más aún un
problema para un gerente puede convertirse en una oportunidad para un analista.
Las mejoras pueden ser de muchos tipos:
1. Aceleración de un proceso.
2. Optimización de un proceso al eliminar pasos innecesarios o duplicados.
3. Combinación de procesos.
4. Reducción de errores en la captura de información modificando las interfaces.
5. Reducción de almacenamiento redundante
6. Reducción de salidas redundantes.
7. Mejora en la integración de sistemas y subsistemas.
Aunque es importante que el analista tenga habilidad para reconocer las oportunidades de mejora, quienes están en contacto
diario con el sistema podrían ser más eficaces para brindar información sobre las mejorar por realizar. Si ya están sugeridas las
mejoras, el analista debe juzgar si valen la pena y como se deben implementar.
El analista puede realizar una cuadrícula de impacto de viabilidad (CIV) la cual sirve para comprender o evaluar los impactos
que tendrían las mejoras en el sistema existente.
Los rótulos laterales corresponder a sistemas existentes o propuestos, organizados en tres categorías: de comercio
electrónico, de información general (MIS) y de procesamiento de transacciones (TPS). En la parte estas los siete objetivos de los
procesos.
También es importante la manera en que las mejoras a los sistemas afectan a los objetivos corporativos, los cuales son:
1. Mejora de las ganancias corporativas.
2. Apoyo a la estrategia competitiva.
3. Mayor cooperación con distribuidores y socios.
4. Incremento del apoyo a las operaciones internas con el fin de producir bienes u servicios de manera mas eficiente.
5. Incremento del apoyo a la toma d decisiones internas para que estas sean mas eficaces.
6. Mejora del servicio al cliente.
7. Incremento en la moral.
Se puede modificar la CIV de modo que en la parte superior estén dispuestos los siete objetivos corporativos y estudiar el
impacto del sistema en ellos.
Reducción de
Aceleración errores en la Reducción de Mejora de la
Componentes de un Optimización Combinación captura de salidas integración de
del sistema proceso de un proceso de procesos información redundantes sistemas
Catálogo en línea
Sistemas de comercio
Procesamiento de
pedidos en línea
electrónico
Soporte técnico en
línea
Anuncios en línea
Agente inteligente de
actualización
automática en Web
Administración de
inventarios
Programación de la
producción
Informes de ventas
MIS
mensuales
Análisis de ventas
regionales
Administración de la
logística
Nómina
Procesamiento de
pedidos
TPS
Seguimiento de
Pedidos
Cuentas por pagar
Cuentas por cobrar
Determinación de recursos. Un proyecto debe satisfacer tres criterios de viabilidad para pasar a la fase de desarrollo. Los
recursos se analizan desde tres área de viabilidad:
Viabilidad Técnica: El analista debe ver si es posible actualizar o incrementar los recursos técnicos actuales de modo
que puedan satisfacer los requerimientos bajo consideración. En ocasiones los “agregados” a los sistemas existentes
suelen ser costosos y no son eficientes. De ser así, el analista debe preguntarse si existe tecnología que cumpla las
especificaciones.
Viabilidad Económica: Los recursos a considerar son el tiempo del analista y del equipo, el costo de realizar un estudio
completo de sistemas completo, el costo del tiempo de los empleados de la empresa, el costo estimado del hardware y
del software comercial o desarrollado. La empresa interesada debe ser capaz de calcular tales valores antes de
comprometerse al estudio completo de sistemas. Si los costos a corto plazo no son opacados por las ganancias a largo
plazo o no producen una reducción inmediata de los costos operativos, el sistema no será económicamente viable.
Viabilidad Operativa: Depende de los recursos humanos disponibles para el proyecto e implica determinar si el sistema
funcionará o se usará una vez instalado. Todo esto suele depende de la predisposición de lo usuarios a que exista un
nuevo sistema de información. Determinar la viabilidad operativa requiere creatividad por parte del analista y de
persuasión.
En otras bibliografías se agregan los estudios de tres viabilidades más: Viabilidad Financiera (separándose se de la viabilidad
económica, su estudio nos indica si se posee el capital necesario para el proyecto); Viabilidad Legal (si el proyecto se desarrolla
dentro de las leyes gubernamentales y empresariales); Viabilidad de Programa (si el proyecto se puede realizar en un lapso de
tiempo conveniente para el usuario).
Evaluación de la viabilidad. La viabilidad de un proyecto no está a cargo del analista sino de los directivos de la organización.
El estudio de la viabilidad se debe realizar en el menor tiempo posible de modo que los recursos asignados a esta tarea sean
mínimos.
Los proyectos que cumplen todos los criterios anteriores deben tomarse en cuenta para un estudio de sistemas detallado.
Cálculo del tiempo requerido. La primera decisión del analista de sistemas es determinar el nivel de detalle necesario para
definir las actividades. El nivel más bajo de detalle es el ciclo de vida del desarrollo de aplicaciones y el nivel mas alto incluye
cada paso en detalle. El punto óptimo para la planeación y la programación se encuentra en algún punto medio.
Al considerar tareas y dividirlas en tareas mas pequeñas que las componen, el analista puede estimar mejor el tiempo que
tomará realizar el trabajo completo.
Para una buena planificación hay que tener en cuenta que se deben fijar objetivos y metas, cuantificando el tiempo y espacio
en el que se desea lograr el objetivo. El analista debe poder identificar las actividades que se deben realizar para obtener el
resultado, determinar las actividades críticas y las relaciones entre ellas. También debe poder determinar el tipo y la cantidad de
recursos que requieren tales actividades. El analista debe determinar grandes hitos y objetivos específicos en el desarrollo de
sistemas y establecer la duración de las actividades, fechas de entrega y responsables de los productos.
Entrevistas
Antes de la entrevista, el analista debe conocer sus prejuicios y como estos afectaran sus precepciones, así como también
debe tomar en cuenta su educación, intelecto, formación, y emociones. Necesita visualizar las preguntas, lo que va a hacer, y lo
que a su juicio hará que la entrevista sea exitosa. Debe también tener en cuenta los factores que harán que la entrevista sea
satisfactoria para el individuo entrevistado.
En la entrevista, el analista debe buscar las opiniones de los entrevistados, ya que estas son más reveladoras que los hechos
en sí. Además debe buscar captar los sentimientos de los entrevistados, lo cual puede servir para comprender la cultura
organizacional de manera más completa. Las metas son información importante que se puede recabar de las entrevistas, ya que
las metas reflejan el futuro del negocio.
Las entrevistas implican entablar una relación con alguien que probablemente sea desconocido para el analista, debiendo
establecer confianza y entendimiento rápidamente pero manteniendo el control de la entrevista. Mientras tanto, debe intentar
vender el sistema, brindándole la información necesaria al entrevistado. Todo esto lo puede conseguir planificando la entrevista,
de modo que la conducción de la misma resulte natural.
Cinco pasos para preparar la entrevista:
Leer los antecedentes: Leer y entender tanto como sea posible los antecedentes de los entrevistados y de la organización. Este
material se puede obtener del sitio web de la organización, de un boletín corporativo, de un informe anual o de cualquier
publicación. Debe prestar atención al lenguaje que usan los miembros de la organización para describirse a si mismos y su
organización. Tal lenguaje conformará el vocabulario con el que expresará las preguntas de manera comprensible. Además, se
ahorra el tiempo de preguntar cosas que podría obtener de leyéndolo.
Establecer los objetivos de la entrevista: Usar los antecedentes recopilados y la propia experiencia para establecer los
objetivos de la entrevista. Debe haber de cuatro a seis áreas clave referentes al procesamiento de la información y el
comportamiento relacionado con la toma de decisiones, sobre las cuales el analista deberá hacer preguntas.
Decidir a quién entrevistar: Es importante incluir gente clave de todos los niveles que vayan a ser afectadas por el sistema,
esforzándose por atender las necesidades de tantos usuarios como sea posible. La persona de contacto dentro de la
organización también tendrá ideas sobre quien debería ser entrevistado.
Preparar al entrevistado: Se puede comunicar de varias maneras anticipadamente con la persona que va a ser entrevistada
para que ésta se prepare para la entrevista. Si el analista va a realizar una entrevista en profundidad, puede enviar sus preguntas
por correo electrónico, así el entrevistado tiene tiempo suficiente de pensar en sus respuestas. Sin embargo, como la entrevista
tiene muchos objetivos que incluyen la interacción directa con el entrevistado, normalmente se evita realizarlas por correo
electrónico. La duración de la entrevista debe ser de 45 minutos a 1 hora como mucho (se debe tener en cuenta que mientras
están siendo entrevistados no están trabajando).
Decidir el tipo de preguntas y su estructura: Escribir preguntas que abarquen áreas clave de la toma de decisiones que haya
descubierto al determinar los objetivos de la entrevista. Las técnicas apropiadas para preguntar son fundamentales en la
entrevista. Las preguntas tienen formas básicas que el analista debe conocer. Cada tipo de pregunta puede lograr resultados
diferentes tienen sus ventajas y desventajas.
Preguntas Abiertas Preguntas Cerradas
Son las preguntas cuya gama de respuestas
Son las preguntas gama de respuestas
es mucho menor, siendo respuestas que limitan
es bastante amplia para el entrevistado
las opciones del entrevistado.
Ventajas:
·Hacen que el entrevistado se
sienta a gusto. Desventajas:
·Permiten al entrevistador ·Pueden dar muchos detalles
entender el vocabulario del
Ventajas:
irrelevantes.
entrevistado, lo cual refleja ·Ahorrar tiempo. Desventajas:
muchas cosas. ·Posible pérdidad de control
de la entrevista. ·Comparar entrevistas ·Aburren al entrevistado.
·Proporcionan muchos fácilmente.
·La relación entre el tiempo ·No permiten ahondar n
detalles
de la respuesta y la cantidad ·Ir al grano. detalles.
·Revelan preguntas que útil de información es muy ·Mantener el control de la ·Olvidar las ideas principales.
pudieron pasar mala. entrevista. ·No fomenta una relación
desapercibidad por el
analista. ·Dan la impresión de que el ·Cubrir el terreno cercana entre el entrevistado
entrevistador es inexperto o rápidamente. y el entrevistador.
·Hacen más interesante la que no tiene sus objetivos
entrevista y permiten más bien claros. ·Conseguir datos relevantes.
espontaneidad.
·Son un buen recurso si el
ntrevistador no está
preparado para la entrevista.
Sondeos
Son preguntas que se utilizan para recabar más información, yendo más allá de la respuesta del individuo. Pueden constar
de preguntas abiertas o cerradas.
El sondeo es fundamental, por lo que no se debe ser reticente a uso.
Quién está involucrado. Las sesiones de JAD incluyen varios participantes, que aportarán su experiencia y habilidades. El
principal interés del analista es que todos se comprometan e involucren con el enfoque JAD. Debe escoger un patrocinador
ejecutivo, quien presentará y concluirá la sesión de JAD. Esta persona será un símbolo visible e importante del compromiso de la
organización con el proyecto de sistemas.
Al menos un analista del área de sistemas de información debe estar presente, pero tomando un rol pasivo. El analista del
proyecto debe estar presente en la sesión para escuchar lo que dicen los usuarios y lo que necesitan, además deberá dar una
opinión especializada en caso de que en la sesión se proponga una solución de costo desproporcionado, ya que de otro modo las
soluciones poco realistas de costos excesivos podrían colarse en la propuesta y ser difíciles de eliminar posteriormente.
Es conveniente seleccionar de ocho a doce usuarios de cualquier nivel para participar de las sesiones JAD. Debe procurar
seleccionar usuarios por encima del nivel operativo, que tengan capacidad para explicar que información requieren para realizar
sus trabajos, así como las características que le agradarían en un sistema de cómputo nuevo o mejorado.
El líder de la sesión debe ser alguien con habilidades de comunicación excelentes para facilitar las interacciones apropiadas. No
es conveniente seleccionar a un líder de sesión que le reporte a una persona del grupo. Se puede contratar a un consultor
externo como líder de sesión. Debe ser una persona que atraiga la atención del grupo a tratar las cuestiones importantes de los
sistemas, negociar satisfactoriamente y resolver los conflictos, y ayudar a los miembros del grupo a alcanzar un acuerdo general.
La sesión debe incluir a uno o dos observadores que sean analistas o expertos técnicos de otras áreas funcionales áreas para
ofrecer explicaciones y consejos técnicos al grupo durante las sesiones. Además, un miembro del departamento de sistemas de
información debe asistir para redactar formalmente todo lo que se haga.
Dónde realizar las sesiones JAD. Es recomendable que sean sesiones de dos a cuatro días, fuera de las oficinas de la
organización en ambientes cómodos, con el objetivo de minimizar las distracciones y responsabilidades cotidianas inherentes al
trabajo de los participantes. Además se debe tomar en cuenta el equipo de apoyo a la presentación que incluiría un pizarrón,
proyectores, punteros laser, acceso a una fotocopiadora, etc. Las salas deberían tener PCs conectadas a una red, un sistema de
proyección, y software que facilite la interacción de grupos y que minimice su comportamiento improductivo.
Las sesiones de JAD se programan de modo que los participantes puedan comprometerse a asistir. Pueden realizarse
reuniones previas de carácter informativo.
Realización de un análisis estructurado de las actividades del proyecto. Las sesiones deben examinar los siguientes puntos en
el proyecto de sistemas propuesto: Planeación, recepción, procesamiento y seguimiento de recibos, supervisión y asignación,
procesamiento, registro, envío y evaluación. Se deben plantear y responder para cada tema las preguntas quién, qué, cómo,
dónde y porqué. El analista debe recibir las notas del redactor y debe preparar un documento de especificaciones técnicas con
base en lo que haya ocurrido en la reunión. Presentará sistemáticamente los objetivos de los directivos, el alcance y los límites
del proyecto, incluyendo las partes específicas del sistema como detalles sobre los diseños de pantallas e informes.
Beneficios potenciales del JAD contra las entrevistas tradicionales. El primer beneficio potencial es el ahorro de tiempo sobre
las entrevistas tradicionales uno a uno, llegando a estimarse un ahorro del 15% del tiempo. También está la posibilidad de un
desarrollo rápido a través de JAD ya que las entrevistas personales no se realizan consecutivamente, el desarrollo procede con
mayor rapidez.
El tercer beneficio es poder mejorar el concepto de propiedad del sistema, ya que JAD es de naturaleza interactiva y posee alta
visibilidad, por lo que se logra que los usuarios estén más involucrados y como adición le da más seriedad a la retroalimentación
que proporcionan. JAD ayuda a reflejar bien las ideas del usuario en el diseño final.
El beneficio final es el desarrollo de diseños creativo los cuales pueden evolucionar a través de interacciones simplificadas.
Desventajas potenciales del JAD contra las entrevistas tradicionales. Existen tres desventajas a considerar. La primera es que
requiere que todos los participantes dispongan de una gran cantidad de tiempo, ya que el compromiso requiere de dos a cuatro
días.
El segundo peligro se puede manifestar siempre que la preparación de las sesiones sea inadecuada o si el informe de
seguimiento y la documentación de especificaciones están incompletos. En estos casos los diseños resultantes pueden ser poco
satisfactorios.
Por último, tal vez las habilidades y la cultura que requiere la organización no están totalmente desarrolladas, peligrando el
compromiso de ésta ante el enfoque JAD.
Uso de cuestionarios
Permite a los analistas de sistemas estudiar las actitudes (lo que dicen que quieren), creencias (lo que creen que es verdad),
comportamiento (lo que hacen) y características (atributos) de muchas personas importantes en la organización que podrían
resultar afectadas por los sistemas actuales y los propuesto.
Se puede cuantificar las respuestas conseguidas mediante encuestas que usen preguntas cerradas. Si la encuesta se realiza
mediante un medio computarizado, se puede usar software que convierta las respuestas directamente a tablas de datos para su
análisis. Las respuestas a cuestionarios con preguntas abiertas se analizan de modo distinto.
El analista puede usar el cuestionario como medio para cuantificar lo que se infirió de las entrevistas, permitiendo observar
que tan extendido es en realidad un sentimiento expresado en la entrevista. También se pueden usar las encuestas para
detectar problemas o manifestar cuestiones importantes antes de realizar las entrevistas. Hay muchas similitudes entre las
encuestas y las entrevistas, y lo ideal sería que se las usase en conjunto, aunque no siempre es necesario o conveniente.
Planeación del uso de cuestionarios. Aunque se puede recopilar mucha información a través de los cuestionarios sin invertir
tiempo en entrevistas personales, el desarrollo de una encuesta útil implica mucho tiempo de planeación. Cuando se encuesta a
los usuarios por medio Web o e-mail, el analista se enfrenta a aspectos de planeación adicionales acerca de la confidencialidad,
la autenticación de identidad y problemas de múltiples respuestas.
Primero se debe decidir que fin se persigue al realizar una encuesta, y luego considera si la encuesta es el mejor medio para
obtener la información buscada. Se debe considerar el uso de cuestionarios si:
1. Las personas que necesita encuestar están dispersas.
2. Muchas personas involucradas en el proyecto y se quiere conocer que porcentaje de ellas aprueba o no cierta
característica del sistema propuesto.
3. Durante el estudio preliminar se desea conocer la opinión general antes de que se determine el rumbo que tomara el
proyecto de sistemas.
4. Se quiere tener la certeza de que en las entrevistas de seguimiento se identificará y abordará cualquier problema
relacionado con el sistema actual.
Redacción de preguntas. Las preguntas realizadas en una entrevista permiten la interacción entre las preguntas y sus
significados. En el cuestionario estas oportunidades son casi nulas, por lo que el analista debe formular preguntas claras, el flujo
del cuestionario debe ser convincente, se deben anticipar las preguntas de los encuestados y la aplicación del cuestionario debe
planearse en detalle.
Los tipos de preguntas para los cuestionarios pueden ser tanto abiertas como cerradas. Sabemos que las preguntas abiertas
permiten al encuestado disponer de todas las opciones de respuesta. Aún así, el analista se debe poder anticipar a la respuesta
del encuestado ya que puede suceder que no sea posible el análisis de la respuesta. Cuando se redacta una pregunta abierta,
ésta debe ser lo suficientemente específica para guiar al encuestado a responder de un modo particular. Estas preguntas son
adecuadas para descubrir opiniones de miembros de la organización sobre algún aspecto del sistema.
Las preguntas cerradas limitan las opciones de respuesta, y deben usarse cuando el analista puede listar eficazmente todas las
posibles respuestas a la pregunta, y estas respuestas son mutuamente excluyentes. Se utilizan cuando se desea encuestar una
cantidad considerable de personas, facilitando el procesamiento de las respuestas.
Elección del vocabulario. Es conveniente que el analista redacte las preguntas de modo que reflejen la terminología del
negocio, ya que esto hará más ameno el proceso para los encuestados y facilitará la interpretación precisa de las respuestas,
logrando que los encuestados se muestren más entusiasmados.
Un modo de lograr esto es mediante un cuestionario sobre un grupo piloto, quién cambiará las palabras y frases. Hay que
considerar los siguientes puntos al realizar un cuestionario:
1. Usar la jerga de los encuestados siempre que sea posible junto con una redacción sencilla.
2. Ser específico en la redacción, pero evitar las preguntas demasiado específicas.
3. Hacer preguntas breves.
4. No ser condescendiente con los encuestados ni subestimarlos con lenguaje de bajo nivel.
5. Evitar la parcialidad en la redacción, en especial las preguntas ofensivas.
6. Dirigir las preguntas a los encuestados adecuados. No dar por sentado que estos poseen demasiado conocimiento.
7. Antes de incluir aspectos técnicos en las preguntas, asegurarse que es realimente preciso.
8. Usar software para cerciorarse de que el nivel de redacción de las preguntas es el adecuado.
Uso de escalas en los cuestionarios. El escalamiento es un proceso que consiste en asignar números u otros símbolos a un
atributo con propósitos de medición. Las escalas son a menudo arbitrarias y a veces no son únicas.
Validez y confiabilidad. La validez es el grado en el que la pregunta mide lo que el analista pretende medir. La confiabilidad
mide la consistencia, es decir, el grado en el que dos aplicaciones del cuestionario en momentos diferentes dan los mismos
resultados, para la consistencia externa y los mismos resultados en los apartados para la consistencia interna.
Construcción de escalas. Una construcción negligente de una escala podrí causar: condescendencia (problema causado por
encuestados que califican a la ligera), tendencia central (problema surgido de encuestados que califican todo como promedio) y
efecto de halo (problema surgido cuando la impresión generada por una pregunta influye en la próxima).
La condescendencia se soluciona moviendo la categoría promedio a izquierda o derecha del centro. La tendencia central se
puede solucionar haciendo más pequeñas las diferencias en los extremos, ajustando la fuerza de los descriptores o creando una
escala con más puntos. La solución al efecto de halo es cambiar el enfoque de cada pregunta.
Diseño de cuestionarios. Un cuestionario bien diseñado puede ayudar a superar parte de la reticencia a responder, si se
siguen algunas reglas:
Dejar bastante espacio en blanco.
Proporcionar suficiente espacio para responder las preguntas.
Facilitar a los encuestados el marcado claro de sus respuestas.
Mantener un estilo consistente.
Estas reglas también son válidas para cuestionarios Web.
El orden de las preguntas. No existe una manera considerada como la mejor. Conforme se ordenan las preguntas, se deben
pensar en los objetivos que persigue el cuestionario y luego determinar la función de cada pregunta en la consecución de los
objetivos. Es importante considerar el cuestionario desde el punto de vista del encuestado. Algunos lineamientos para ordenar
las preguntas son:
Colocar primero las preguntas más importantes para los encuestados.
Agrupar los elementos de contenido similar.
Incorporar primero las preguntas menos polémicas.
Encuestados. La decisión sobre quién recibirá el cuestionario se toma en conjunto con la tarea de establecer los objetivos que
persiguen los resultados del mismo. Los destinatarios se escogen como representativos por su jerarquía, tiempo en la compañía,
deberes, o interés especial en el sistema actual o propuesto. Se deben incluir una cantidad razonable de encuestados por si se
pierden hojas, o se completan encuestas de manera incorrecta y deben desecharse.
Métodos para aplicar el cuestionario. Hay varias opciones, y el método de administración es determinado por el estado de la
empresa. Entre las opciones se encuentran las siguientes:
Citar al mismo tiempo a todos los encuestados.
Entregar y recoger personalmente los cuestionarios.
Permitir que los encuestados llenen el cuestionario por sí mismos en su trabajo y que lo dejen en una
caja colocada en algún punto central.
Mandar por correo los cuestionarios a los empleados de las sucursales e indicar una fecha límite para
la entrega.
Aplicar el cuestionario por e-mail o la Web.
Recopilación de información: Métodos no intrusivos
Los métodos no intrusivos como el muestreo, la investigación y la observación del comportamiento y el entorno físico de un
tomador de decisiones, son métodos menos molestos, pero se consideran deficientes si se usan por sí solos para recopilar
información. La combinación de métodos intrusivos y no intrusivos ofrece un panorama mas completa de los requerimientos de
información.
Muestreo
Consiste en seleccionar sistemáticamente elementos representativos de una población, examinarlos cuidadosamente y
obtener información de la población en general.
El analista debe elegir que información de la disponible (sitios web, informes, memorandos, documentos de resultados, etc.)
debe ignorar o prestar atención. Hay muchos empleados afectados por el sistema propuesto, por lo que el analista debe
considerar a qué personas entrevistar, de cuáles debe buscar información mediante cuestionarios o a cuáles debe observar
durante sus roles de toma de decisiones.
Necesidad del muestreo. Hay varias razones, entre ellas: reducir costos, acelerar la recopilación de datos, mejorar la
efectividad y reducir la parcialidad. El muestreo ayuda a acelerar el proceso de análisis de información mediante la recopilación
de datos seleccionados, ahorrando tiempo de los trabajadores y del analista. La efectividad en la recopilación es importante. El
muestreo puede ayudar a mejorar la efectividad si se pude obtener información mas precisa. También es posible reducir la
parcialidad en la recopilación de datos mediante el muestreo.
Diseño del muestreo. El analista debe seguir cuatro pasos para diseñar una buena muestra:
1. Determinar que datos van a ser recopilados o descritos. Es necesario un plan realista sobre lo que se hará con lo
datos recopilados, para evitar perdidas de tiempo y dinero. El deber del analista es identificar las variables, atributos y
los elementos relacionados con los datos que necesitan recopilarse en la muestra, considerando los objetivos del
estudio y el método de recopilación de datos que se usará.
2. Determinar de que población se van a tomar muestras. El analista de sistemas debe determinar la población, así
como la cantidad y temporalidad de la información que solicitará.
3. Escoger el tipo de muestra. El analista puede escoger de cuatro tipos principales de muestras: de conveniencia,
intencional, aleatoria simple y aleatoria compleja. Las muestras de conveniencia son irrestrictas y no probabilísticas,
es decir que pueden ser fáciles de conseguir pero no muy fiables. La muestra intencional se basa en juicios, es decir
que el analista puede escoger un grupo de personas que crea conocedor e interesado en el nuevo sistema, por lo que
el analista basa la muestra en criterios pero sigue siendo no probabilística y moderadamente confiable.. Una muestra
aleatoria simple requiere una lista numerada de la población para asegure que cada documento o persona en la
población tiene la misma posibilidad de ser seleccionado, lo cual no es práctico. Las muestras aleatorias complejas
más apropiadas para el analista son: el muestreo sistemático, el muestreo estratificado y el muestreo por
conglomerados.
4. Decidir el tamaño de la muestra. Es obvio que el tamaño debe ser mayor a uno pero menor que el tamaño de la
población. En el muestreo se debe tener en cuenta que los números son más importantes que los porcentajes.
El tamaño de la muestra depende del costo involucrado o el tiempo requerido.
Investigación
Consiste en descubrir y analizar datos. Conforme el analista se esfuerza por entender la organización y sus requerimientos de
información, debe examinar los diferentes tipos de datos reales que ofrecen información no disponible mediante otro método
de recopilación de datos. Los datos reales muestran donde se encuentra la organización y hacia donde creen sus miembros que
se dirige, por lo que el analista debe analizar datos reales cualitativos y cuantitativos.
Análisis de documentos cuantitativos. Incluyen informes usados para la toma de decisiones, informes de desempeño, registros
y una variedad de formularios. Cada uno tiene un propósito y un público hacia el que está dirigido.
Informes usados para la toma de decisiones. El analista requiere documentos que se usan para dirigir el negocio.
Muchos de ellos no son complejos, pero sirven como retroalimentación para tomar medidas inmediatas y ayudan al
tomador de decisiones a identificar fácilmente las tendencias.
Aparte de los informes clave, los tomadores de decisiones se vale de muchos informes resumidos para extraer
información histórica, identificar eventos excepcionales y obtener un panorama estratégico de los planes de la
organización.
Informes de desempeño. Reflejan el desempeño real versus el desempeño deseado, sirviendo para determinar si la
brecha entre ambos se expande o contrae. El analista necesitará determinar si el desempeño medido es accesible y
adecuado para las áreas importantes de la organización.
Registro. Proporcionan actualizaciones periódicas de lo que ocurre en el negocio. Si están apropiadamente actualizados
le darán información muy útil al analista. Hay varias formas en que un analista revisa un registro:
Buscar errores en cifras y sumas totales.
Buscar oportunidades para mejorar el diseño del formulario del registro.
Observar el número y el tipo de las transacciones.
Buscar puntos donde una computadora pueda simplificar el trabajo.
Formularios de captura de datos. El analista debe recolectar y catalogar copias en blanco de cada formulario que esté
en uso. Comparando estos formularios en blanco junto con sus instrucciones de llenado y su distribución, contra los
formularios contestados, el analista puede ver que elementos quedan regularmente sin respuesta, y determinar si las
personas que reciben los formularios siguen los procedimientos estandarizados al usarlos, almacenarlos y desecharlos.
Al crear un catalogo de formularios, el analista debe recolectar ejemplos de todos los formularios en uso (oficiales y
extra-oficiales), observar el tipo de formulario, documentar el modelo de distribución deseado y compararlo con quien
realmente recibe el formulario. Otro método consiste en tomar muestras de formularios de captura de datos ya
contestados. Para transacciones de comercio electrónico, el analista debe revisar las bases de datos donde se almacena
la información sobre el cliente.
Análisis de documentos cualitativos. Incluyen correos electrónicos, memorandos, anuncios en carteles, páginas Web,
manuales de procedimientos y de políticas. Muchos de estos son bastante detallados y manifiestan las expectativas de sus
autores en relaciones con el comportamiento que deben observar los demás. Para analizar estos documentos, el analista debe
ver los siguientes detalles:
Examinar metáforas clave u orientadoras.
Buscar las mentalidades de internos contra externos.
Listar los términos que caractericen lo bueno o lo malo, que aparezcan repetidamente en los documentos.
Buscar mensajes y gráficos significativos.
Identificar sentido del humor, si lo hay.
Memorandos. Debe considerar quien los envía y quien los recibe. El flujo común de información de una organización es
hacia abajo o hacia los costados, no hacia arriba. El análisis de memorandos proporciona una idea clara de los valores,
actitudes y creencias de los miembros de la organización.
Carteles, pancartas, etc. En tableros de anuncios o en las área de trabajo. Pueden parecen circunstanciales pero sirven
como reforzadores sutiles de valores para los que los leen.
Sitios Web corporativos. El analista debe prestar atención tanto a los sitios de comercio electrónico B2C como a los sitios
de transacciones B2B. Debe examinar el sitio bajo tres dimensiones: estética, técnica y administrativa.. También debe
tomar en cuenta el nivel de interactividad del sitio, la accesibilidad de los mensajes y el nivel de seguridad.
Manuales. Los manuales se deben analizar con los cinco lineamientos previamente mencionados. Hay que recordar que
los manuales indican el ideal, y además, que los manuales impresos generalmente están desactualizados, acumulados en
librerías sin usar.
Manuales de políticas. Abarcan grandes áreas del comportamiento de los empleados y la organización. El analista puede
ocuparse de los que tratan sobre los servicios, uso, acceso, seguridad y cargas de las computadoras. Este examen permite
comprender los valores, actitudes y creencias que guían a la corporación.
Observación de las actividades de toma de decisiones de un gerente típico. La observación permite ver personalmente la
manera en que el gerente recopila, procesa, comparte y usa la información en su trabajo. El método usado para esta labor se
conoce como guión del analista. Aquí, el actor es quien toma las decisiones y todas las acciones se registran con verbos
conjugados en presente continuo.
El guión es un método organizado y sistemático que exige al analista entender y estructurar las acciones que asume el
tomador de decisiones. Sirve para que el analista pueda determinar que información necesitan las personas observadas para
tomar las decisiones más importantes o frecuentes.
Observación estructurada del entorno (STROBE). El STRuctured OBservation of the Environment requiere que el analista
observe siete elementos concretos que generalmente se encuentran en las oficinas. Tales elementos pueden revelar mucho
sobre la forma en que el tomador de decisiones recopila, procesa, almacena y comparte información, así como también sobre su
credibilidad en el lugar de trabajo.
Ubicación de la oficina. Las oficinas accesible tienden a aunmentar la frecuencia de interacción y los
mensajes informales, mientras que las inaccesibles disminuyen estos aspectos y aumentan los mensajes
orientados a las tareas. Si las oficinas están distribuidas por todo el edificio, los informes y memorandums
quedan detenidos en algunas oficinas, mientras que en edificios con oficinas agrupadas se favorece el
compartir la información. Es posible que para personas cuyas oficinas estén separadas de las de los demás
pudieran ver la organización de forma diferente y sus objetivos podrían alejarse de los de otros miembros
de la organización.
Colocación del escritorio. Ofrece pistas sobre como el tomador de decisiones ejerce su autoridad. Aquellos
ejecutivos que proveen al visitante de un espacio contra la pared, reducido, mucho menor al que ellos
poseen, son quienes adoptan una posición de autoridad más fuerte. El analista debe observar la
distribución de los muebles en la oficina.
Equipo fijo de oficina. Archivos, librería y otros equipos grandes de alamacenamiento de artículo se
incluyen en esta categoría. Si estos no están presentes, es probable que el tomador de decisiones no
almacene muchos artículos de información por sí mismo. Si los hay, se asume que el tomador de decisiones
almacena mucha información y la valora.
Accesorios. Se refiere a todo equipo pequeño usado para almacenar información. La presencia de
Elementos computadoras de bolsillo, calculadoras y PCs sugiere que el tomador de decisiones no sale de su oficina
para procesar los datos.
a Fuentes externas de información. El analita precisa saber que tipo de información usa el tomador de
decisiones. La observación del tipo de artículos almacenados en la oficina revela si el gerente recurre a
observar fuentes externas o se basa más en información interna. También debe observar si el tomador de decisiones
usa información externa de la Web.
Iluminación y color de la oficina. Juegan un rol importante en el modo en el que el gerente recopila
información. Una oficina cálida y radiante indica una inclinación a la comunicación más personal. Un
ejecutivo en esta oficina tien a recopilar información de modo informal. En una oficina más fría la
recopilación se hace con memorandos formales e informes oficiales.
Vestimenta de los tomadores de decisiones. Puede inferirse sobre la credibilidad de los gerentes al
observar la vestimenta que usan en el trabajo. Los líderes que se visten de modo más casual, aparentan que
se da una toma de decisiones más párticipativa, pero se pierde credibilidad en la organización si la cultura
predominante valora la ropa tradicional y conservativa.
Definiciones de requerimientos
Capacidad o función que el usuario espera que el sistema posea para poder resolver un problema o lograr un
objetivo.
Capacidad o función que necesariamente debe poseer el sistema, o un módulo del mismo, para cumplimentar con los
términos del contrato, satisfacer estándares, especificaciones, o cualquier otro tipo de documento formalmente
impuesto.
Hay que tomar en cuenta que las especificaciones y requerimientos residen en la “cabeza” de las personas y que cualquier
documentación de las mismas es una representación, sujeta a malinterpretarse.
Niveles de requerimientos
Los requerimientos de software incluyen tres niveles: requerimientos de negocio, requerimientos de usuario y requerimientos
funcionales, así como también varios requerimientos no funcionales. Los requerimientos de negocio representan a los objetivos
de alto nivel de la organización. Se registran en documentos que detallan la visión y alcance del proyecto. Los requerimientos de
usuario describen las funcionalidades que el sistema debe poseer, es decir, las tareas que los usuarios deben poder realizar
usando el sistema. Se registran en casos de uso o descripciones de escenarios. Los requerimientos funcionales definen las
funciones de software que los programadores deben desarrollar para que el producto permita a los usuarios realizar las tareas, y
de ese modo, satisfacer los requerimientos de negocio.
Requerimientos
de negocio
Atributos de
Documento de Visión y
calidad
Alcance
Requerimientos
no funcionales
Requerimientos
de usuario
Restricciones
Requerimientos Requerimientos
del sistema funcionales
Especificaciones de
requerimiento de software
Los requerimientos funcionales se documentan en las especificaciones de requerimientos de software (SRS), la cual describe
del modo más completo posible la conducta externa esperada del sistema de software. La SRS se utiliza en varias etapas como
en el desarrollo, testeo, prueba de calidad, etc. Además de los requerimientos funcionales, que describen la conducta que el
sistema debe exhibir y las operaciones que realiza, la SRS contiene los requerimientos no funcionales: los estándares,
regulaciones y contratos a los cuales un producto debe adherirse; descripciones de las interfaces; requerimientos de
desempeño; restricciones al desarrollo y al diseño.
Es posible que los gerentes o personal de marketing sean capaces de definir los requerimientos de negocio para el software
que ayudará a que la organización opere de un modo más eficiente, o mejorará su competitividad en el mercado. Los
requerimientos de usuario deben estar alineados con los requerimientos de negocio. Los requerimientos de usuario permiten al
analista obtener los lineamientos generales de las funciones que permitirán a los usuarios desempeñar las tareas con el
producto. Los desarrolladores utilizan los requerimientos funcionales para diseñar soluciones que implementen las
funcionalidades necesarias.
Hay que separar el entendimiento de requerimientos de los detalles de diseño e implementación así como también de la
información de la planificación del proyecto, o del testeo. Esto se hace de modo que las actividades de requerimiento se puedan
concentrar en entender lo que hay que desarrollar.
“…if we don’t write down even our implicit and assumed requirements, we shouldn’t be surprised if the software doesn’t meet our
expectations.”
Búsqueda de
información
Desarrollo de los
requermientos
Análisis
Ingeniería de los
requrimientos
Gestión de los Especificaciones
requerimientos
Verificación
El desarrollo de requerimientos se subdivide en: búsqueda de información, análisis, especificaciones, y verificación. Estas
actividades incluyen lo siguiente:
Identificar las clases de usuarios que usarán el producto, e individuos que representen a cada clase.
Entender las tareas de los usuarios, así como los objetivos y las necesidades del negocio que son satisfechas por tales
tareas.
Analizar la información recibida por el usuario para distinguir sus necesidades de trabajo respecto de los
requerimientos funcionales, reglamentaciones del negocio, atributos de calidad, soluciones sugeridas e información
complementaria.
Particionar los requerimientos de sistema en subsistemas y asignar una porción de esos requerimientos a
componentes de software.
Entender la importancia de los atributos de calidad del software.
Las prioridades de la negociación la implementación.
Traducir los requerimientos de usuario en especificaciones escritas y modelos.
Revisar las especificaciones de los requerimientos para asegurar un acuerdo común respecto de los requerimientos
establecidos por los usuarios y corregir cualquier posible problema antes que el grupo de desarrollo comience su
trabajo.
La gestión de requerimientos se basa en establecer y mantener un acuerdo con el cliente respecto de los requerimientos para
el proyecto de software. Tal acuerdo toma forma en las especificaciones escritas y los modelos. El Sí de los clientes es solo la
mitad de esta etapa. Los desarrolladores también deben aceptar el acuerdo y transformarlo en un producto. Las actividades de
esta etapa son:
Definir las bases de los requerimientos y controlar los cambios que se les hacen.
Revisar los requerimientos propuestos y evaluar el posible impacto de los cambios que se le apliquen antes de decidir
si se aplicarán o no.
Si se incorporan cambios a los requerimientos, hacerlo de un modo controlado.
Mantener la planificación en sincronía con los requerimientos.
Rastrear el estado y los cambios durante el proyecto.
El Usuario
Es muy probable que el sistema falle en el futuro si no se le permite al analista obtener los requerimientos de usuario
directamente de los usuarios mismos. Esto suele ocurrir porque el ejecutivo que solicita el proyecto no comprende, o no quiere
comprender las diferencias entre los requerimientos del negocio y los requerimientos del usuario.
¿Quién es el cliente? Es el individuo u organización que se beneficia directa o indirectamente de un producto. El cliente que
pide y paga por el sistema es, generalmente, el responsable de especificar los requerimientos de negocio. Aún así estos
requerimientos no proveen de suficiente detalle al analista como para que este pueda decir que se debe desarrollar.
El siguiente nivel de requerimientos (requerimientos de usuario) debe recolectarse de la gente que utilizará el producto. Tales
usuarios, también conocidos como usuarios finales, constituyen otro tipo de clientes de software. Los usuarios describen tanto
las funciones que precisan en el sistema para realizar sus tareas, como las características no funcionales que son importantes
para la aceptación del producto.
Desafortunadamente, ambos tipos de clientes pueden sentir que no tienen tiempo para trabajar en el análisis de
requerimientos. Puede ocurrir que esperen que el analista sea quien pueda descifrar lo que los usuarios necesitan sin charla ni
documentación.
La sociedad cliente-desarrollador. Los mejores productos de software son resultado de un diseño bien ejecutado basado en
excelentes requerimientos. Los requerimientos de mejor calidad son resultado de una comunicación efectiva y colaboración
entre el analista/desarrolladores y los clientes. Generalmente esta relación es de carácter adversa. El esfuerzo conjunto solo
funciona cuando ambos equipos saben lo que se necesita para alcanzar el éxito, y cuando respetan y comprender lo que el otro
equipo necesita para llegar al éxito. Los clientes ocupados pueden no querer estar íntimamente involucrados con la ingeniería de
los requerimientos. La falta de compromiso del cliente incrementa el riesgo de desarrollar el producto equivocado. Al menos, se
debe estar seguro de que todos los participantes están al tanto de las consecuencias y pueden asumir las responsabilidades.
Un aspecto importante que deben considerar ambos equipos es que suele ser imposible determinar de antemano todos los
requerimientos. El sistema y su planificación deben ser lo suficientemente flexibles como para aceptar los cambios que se
agreguen en la marcha, siempre que estos estén controlados y aceptados por ambos grupos.
Etiquetar requerimientos
Para satisfacer los criterios de calidad de las SRS de rastreable (poder buscar y encontrar elementos dentro del documento) y
de modificable, cada requerimiento de software debe tener su identificador único, lo que permite hacer referencia a
requerimientos específicos en pedidos de cambio, historiales de modificación, etc. Hay varios métodos para poder etiquetar los
requerimientos:
Numeración secuencial. La manera más simple es darle a cada requerimiento un número único secuencial que puede estar
compuesto de letras y números. Un prefijo compuesto de letras indica el tipo de requerimiento (UR, FR y BR). Los números no se
reutilizan incluso si se elimina un requerimiento de la base de datos. Este método no provee ningún agrupamiento basado en
jerarquías o lógica para relacionar los requerimientos, y las etiquetas no dan indicios sobre el contenido del requerimiento.
Numeración jerárquica. Es la convención más usada. Por ejemplo, si los requerimientos funcionales aparecen en la sección
3.2, entonces todos tendrán etiquetas que empiecen con tal numeración como 3.2.4 o 3.2.5.2. Más dígitos en la etiqueta indican
un requerimiento mas detallado de menor nivel. Este método es simple y compacto, sin embargo, las etiquetas pueden llegar a
expandirse por muchos dígitos y no dicen nada sobre el propósito de cada requerimiento. También puede producirse cierto caos
cuando se inserta un nuevo requerimiento, ya que la numeración cambia radicalmente.
Una manera de mejorar este método consiste en numerar las secciones mayores de los requerimientos jerárquicamente y
luego identificar los requerimientos funcionales individualmente en cada sección agregando un texto corto seguido de una
secuencia numérica, por ejemplo: “Sección 3.2.5- Funciones del editor,“ y los requerimientos en esa sección pueden etiquetarse
como FE-1, FE-2, y así. De este modo se logra mantener las etiquetas cortas y además se puede dar una idea al lector sobre que
trata el requerimiento.
Etiquetas textuales jerárquicas. Si se considera el siguiente requerimiento: “El sistema deberá pedir al usuario que confirme
cualquier solicitud para imprimir más de diez copias”. Este requerimiento se etiquetaría como IMPRIMIR.COPIAS.CONFIRMAR, lo
cual indica que es parte de las funciones de impresión y se relaciona con la eventual configuración de la cantidad de copias a
imprimir.
Esta jerarquía es estructurada y tiene sentido semánticamente, además no se ve afectada por la adición y remoción de
requerimientos. Su inconveniente más notable es su aspecto burdo.
Como los requerimientos se escriben jerárquicamente se puede descomponer un requerimiento ambiguo en especificaciones
de menor nivel que clarifican y eliminan la ambigüedad. Se deben escribir los requerimientos detalladamente para evitar malos
entendidos. Se debe evitar combinar requerimientos y el uso de “y/o” o “etc.”
Se debe evitar la declaración redundante de requerimientos, ya que al actualizar el documento es fácil olvidarse de actualizar
alguna de esas apariciones.
Priorización de Requerimientos
Cuando las expectativas de los clientes son altas, y sin embargo los recursos y el tiempo son pocos, hay que asegurar que el
producto entregado tendrá las funcionalidades más esenciales lo antes posible. Si se establece la importancia relativa de cada
función, se puede planificar un desarrollo que provea un producto con el mayor valor al menor costo.
El gerente del proyecto debe equilibrar el alcance del proyecto deseado contra las restricciones de tiempo, presupuesto,
recursos de personal, y metas. Una manera de lograrlo es eliminar o dejar para próximas entregas a las funciones de menor
prioridad. Si los clientes no son capaces de diferenciar las prioridades de sus requerimientos y urgencia, esa decisión recae en el
gerente del proyecto. Como los clientes pueden no estar de acuerdo con las decisiones del gerente, deben indicar cuales
requerimientos son necesitados desde un comienzo y cuales pueden esperar.
Los clientes son quienes deciden que funciones son las más importantes en cuanto a su satisfacción. El desarrollador debe
señalarle al cliente el costo, dificultad, riego técnico y otros inconvenientes y detalles asociados a cada requerimiento, de modo
que el cliente reconsidere si tal recurso es esencial o no. El desarrollador también puede señalar al cliente que funciones que
éste considera menores son vitales.
Escalas de prioridad
Se pueden agrupar los requerimientos en cada grupo de las tablas a continuación, para simplificar la tarea de organizar por
prioridades. Se debe tener en cuenta que estas son subjetivas e imprecisas, por lo que se necesita el consenso de todos para
poder decidir el significado de cada nivel de agrupamiento.
La prioridad de cada requerimiento debe estar incluida en las SRS, indicando las convenciones usadas de modo que el lector
sepa si la prioridad asignada a un requerimiento de alto nivel es heredada por todos sus requerimientos subordinados, o si cada
requerimiento individual debe tener su propio atributo de prioridad. Se debe tomar en cuenta que las prioridades pueden
cambiar mientras avanza el proyecto.
Nombres Significados
Alta Un requerimiento critico para la misión del proyecto que se necesita disponible en la siguiente
entrega.
Media Operaciones necesarias para el sistema que son requeridas eventualmente pero pueden
esperar a una próxima entrega de ser necesario.
Baja Una función o atributo que sería bueno tenerlo en algún momento si los recursos lo permiten.
Esencial El producto no sería aceptable a menos que estos requerimientos sean provistos del modo
acordado.
Condicional Mejoraría el producto, pero su ausencia no lo haría inaceptable.
Opcional Un tipo de función que puede o no ser útil.
3 Debe ser implementado a la perfección.
2 Debe funcionar, pero no de un modo espectacular.
1 Puede contener Bugs
Rastreabilidad de requerimientos
Los vínculos de rastreabilidad permiten rastrear la “vida” de un requerimiento anterior y posterior. Para lograr la
rastreabilidad, cada requerimiento debe tener su etiqueta única para poder referirse a el sin riesgo de ambigüedad.
La mayoría de las aplicaciones incluyen código que no se relaciona directamente con los requerimientos especificados por el
usuario, pero el desarrollador debe saber porque escribe cada línea de código. Si no se puede rastrear un elemento hacia un
requerimiento, entonces puede que algún desarrollador haya querido agregar una característica más al sistema, pero, si estos
elementos representan una funcionalidad legítima, entonces puede que las SRS estén incompletas.
Los vínculos de rastreabilidad ayudan a rastrear parentescos, interconexiones y dependencias entre requerimientos
individuales. Esta información sirve para identificar la ola de cambios que se producirían de eliminarse o modificar algún
requerimiento especifico.
La figura ilustra cuatro tipos de vínculos de rastreabilidad. Las necesidades de los
Necesidades de clientes se rastrean adelante hacia los requerimientos, de modo que se puede ver
Clientes como tales requerimientos se ven afectados si tales necesidades cambian, y además
da la confianza de que la especificación ha atendido todas las necesidades de los
Adelante hacia los Atrás desde los clientes declaradas. También se puede rastrear atrás desde los requerimientos hacia
requerimientos requerimientos las necesidades de los clientes, para poder identificar el origen de cada
requerimiento de software. Mientras los requerimientos de sistema fluyen hacia los
Requerimientos requerimientos de software, diseños, código y otros artefactos durante el desarrollo,
se puede rastrear adelante desde los requerimientos definiendo vínculos entre los
Adelante desde los
requerimientos y elementos específicos del producto, lo cual indica que se han
Atrás hacia los
requerimientos satisfecho todos los requerimientos ya que se sabe a que componente del producto
requerimientos
le corresponde cada uno. El último tipo de vínculo rastrea cada elemento específico
del producto atrás hacia los requerimientos para saber porque se creó cada
Productos
elemento.
Trabajados
Si se mapearon requerimientos específicos en tareas dentro de la estructura del producto, tales tareas van a verse afectadas
cuando un requerimiento cambie o sea borrado.
Hay varios tipos de relaciones de rastreabilidad directa que se pueden definir en un producto, aunque no es necesario
manejarlos todos, se pueden seleccionar cuales vínculos son pertinentes para el proyecto y contribuyen al desarrollo exitoso y al
mantenimiento eficiente.
Procedimiento del análisis del impacto. Es conveniente tener una primera lista de control con preguntas diseñadas a ayudar al
analista a comprender las implicaciones de aceptar un cambio. Una segunda lista de control contiene preguntas para ayudar a
identificar los elementos de software que el cambio afectará. Luego de adquirir cierto nivel de experiencia, el analista a puede
modificar o crear sus propias listas de control para adaptarlas a la naturaleza de sus proyectos.
Ejemplos de preguntas de la primera lista de control:
¿Algún requerimiento existente entra en conflicto con el cambio propuesto?
¿Cuáles son las consecuencias técnicas y del negocio de no adoptar el cambio?
¿Acaso el cambio propondrá demandas inaceptables en los recursos de cualquier computadora requerida para el
desarrollo, testeo, entre otras?
¿Causará un aumento en el costo unitario del producto?
Muchos de los problemas de estimación surgen cuando el encargado no considera todos los pasos para completar una
actividad. El procedimiento para el impacto de análisis puede ser el siguiente:
1. Completar la primera lista de control.
2. Completar la segunda lista de control usando toda la información de rastreo disponible.
3. Usar una lista de trabajo para estimar el esfuerzo requerido para las tareas anticipadas.
4. Estimar el esfuerzo total.
5. Identificar la secuencia en que las tareas deben ser realizadas y como pueden entreverarse con las tareas ya
planificadas.
6. Determinar si el cambio se realiza sobre el sendero crítico del proyecto. Si se realiza un cambio allí el proyecto puede
sufrir un desliz y retrasarse.
7. Estimar el impacto del cambio propuesto en la agenda del proyecto y su costo.
8. Evaluar la prioridad del cambio estimando el beneficio relativo, costo, riesgo técnico, entre otros, comparado con
otros requerimientos.
9. Reportar los resultados del análisis de impacto a quienes toman las decisiones para que decidan si este se acepta o
no.
Requisitos de software
Son las cualidades que debe tener el software para ser aceptado por el usuario, es decir, lo que hará para satisfacer los
requerimientos de éste.
La parte más difícil de la construcción de un sistema de software es decidir qué se quiere construir. Ninguna parte del trabajo
conceptual es más difícil, ni afecta tanto al sistema resultante como la definición de los requisitos.
Los requisitos pueden ser:
Requisitos funcionales. Aquellos que describen los servicios o funciones que se esperan del sistema.
Requisitos no funcionales. Son más que nada restricciones sobre los requisitos funcionales, y se pueden subdividir en:
requisitos del producto, que son cualidades del software; requisitos del proceso, que son el tiempo y la forma en que se
implementan los estándares a cumplir; y requisitos externos, que son las leyes, la ética, las políticas, entre otros, a los que el
software se debe adherir.
Hay dos modos de ver a los requisitos. Es importante notar que, a pesar que nos indican lo que se debe hacer, implícitamente
nos dicen lo que no se debe hacer. Cuando los requisitos nos limitan el ámbito del sistema, en realidad nos muestran donde no
se deben emplear los recursos. Mantener la distinción liveness/safety (lo que se debe hacer/lo que no se debe hacer) es
fundamental para sistemas críticos.
El proceso de requisitos
La ingeniería de requisitos es un conjunto estructurado de actividades de cuya ejecución de obtiene, valida y mantiene el
documento de requisitos del sistema. Tal proceso consta de cuatro etapas:
1. Educción de requisitos. Capturar y descubrir cuales son los requisitos. Las fuentes de información pueden ser las
metas o factores críticos de éxito, el conocimiento del dominio de la aplicación, los interesados y afectados por el
sistema, el entorno físico que rodeará al sistema, el entorno organizacional, etc.
Algunos de los problemas que pueden surgir durante la educción pueden ser que los usuarios no puedan o sepan
describir muchas de sus tareas, o que se omita información importante durante una charla porque no se la considera
importante. Debido a esto puede que se tengan que inventar los requisitos. Siempre hay que tomar en cuenta que la
educción es un proceso cooperativo y hay muchas técnicas para lograrlo efectivamente como entrevistas,
brainstorming, escenarios, etc.
2. Análisis y negociación de requisitos. Esta etapa se subdivide en varias partes más:
a. Análisis. Se debe detectar los conflictos entre requisitos e intentar resolverlos, además de su límite y su
relación con el entorno.
b. Clasificación. Se los clasifican según su:
i. Funcionalidad: Funcionales (capacidades) o no funcionales (restricciones).
ii. Importancia: Obligatorios o esenciales, condicionales o deseados, y opcionales.
iii. Prioridad: Alta, baja o media.
iv. Estabilidad relativa: Volátiles (cambian constantemente), estables, o moderados.
v. Costo.
c. Modelación conceptual. Algunos aspectos de los requisitos se deben expresar mediante modelos de datos,
de objetivos, etc. Para entender claramente el problema. Esto depende de la naturaleza del problema y de la
experiencia del modelador, de la disponibilidad de herramientas, y de la imposición del cliente.
d. Negociación de requisitos. En todo el proceso de requisitos intervienen individuos con distintos intereses.
Esto deriva en una negociación para determinar que requisitos se tomarán en cuenta y cuales no. Cuando se
resuelven todos los conflictos se tiene un URD (Documento de requisitos de usuario) completo
3. Documentación de requisitos. Es el modo habitual de almacenar y comunicar requisitos. Se usan dos documentos
que se diferencian únicamente en el nivel de detalle que contienen.
i. URD: Se lo escribe desde el punto de vista del usuario/cliente. No posee un alto nivel de detalle. En el, se
incluye la descripción del problema actual junto con las razones por la cual el sistema actual es
insatisfactorio, y las metas que se quieren lograr con el desarrollo del nuevo sistema. En síntesis, es un
documento que describe el dominio del problema.
ii. SRS. Contiene el dominio de la solución.
4. Validación de requisitos. El objetivo de esta parte del proceso es descubrir problemas en el documento de requisitos
antes de comprometer recursos en su implementación. El documento se revisa para descubrir omisiones, conflictos
ambigüedades y comprobar la calidad del mismo junto con su grado de adhesión a los estándares.
La fórmula más empleada para validar el documento es la revisión del mismo, y consta de tres fases: la búsqueda de
problema, reunión y acuerdo.
Gestión de requisitos
Consiste en gestionar cambios a los requisitos, asegurando la consistencia entre estos y el sistema desarrollado. Esto consume
mucho tiempo y esfuerzo y abarca todo el ciclo de vida del producto. Aún así s necesario debido a varios motivos: los requisitos
son volátiles, así también como cambia el entorno físico; trasladar un sistema de un entorno a otro requiere modificaciones; si el
entorno organizacional cambia también lo harán las políticas. También se debe considerar que cambios en las reglas y procesos
del negocio generaran cambios en el sistema, pero lo más importante es que la presencia misma del sistema generará cambios
en los usuarios.
La gestión de requisitos implica:
Definir procedimientos de cambios: definir los pasos y los análisis a realizar antes de aceptar propuestas.
Cambiar los atributos de los requisitos modificados.
Mantener la rastreabilidad del sistema.
Controlar las versiones de los documentos de requisitos.
Modelado de los sistemas
Gran parte del trabajo del analista involucra el modelado del sistema que desea el usuario. Hay muchos tipos de modelos que
se pueden elaborar, la mayoría de ellos son representaciones abstractas de lo que al final será una combinación de hardware y
software.
Los modelos se construyen para enfatizar aspectos críticos del sistema y darle menos importancia a otros aspectos que se
considera que son más triviales, lo cual permite una comunicación enfocada con el usuario. Además, resulta mucho más sencillo
realizar cambios sobre el modelo cuando se lo presenta que sobre el sistema mismo, resaltando la importancia de que primero
conviene modelar y luego, cuando todas las partes están de acuerdo, desarrollar el sistema. Es decir que el analista puede usar
el modelado para discutir cambios y correcciones de los requerimientos del usuario a bajo costo y con el mínimo riesgo, y para
verificar que se comprendió correctamente el ambiente del usuario y se lo respaldó con información documentada para que los
diseñadores y programadores puedan realizar el sistema.
No todas las herramientas de modelado cumplen con esto objetivos, por lo que el analista debe ser cuidadoso al elegir el
modo en que modelará el sistema. Un buen modelo debe tener las siguientes características: ser gráfico y con apoyo textual, ser
posible de ver en forma segmentada, ser lo menos redundante, ser transparente al lector, tener poca variedad de simbología y
reglas simples de escritura.
Flujo Almacén
Procesos Terminador
El proceso de construcción de un DFD.
1. Ponerle nombres significativos a los procesos, flujos, almacenes y terminadores.
2. Numerar los procesos.
3. Redibujar el DFD las veces que sea necesario para que esté organizado y sea comprensible.
4. Evitar DFDs complejos.
5. Asegurar la consistencia interna del DFD.
6. Tomar las siguientes precauciones:
Evitar bucles de flujos en los procesos.
Evitar sumideros infinitos (burbujas con entradas y sin salidas).
Evitar burbujas de generación espontanea (burbujas con salidas y sin entradas).
No dejar flujos y procesos sin etiquetar.
Tener cuidado con los almacenes de solo lectura o solo escritura. Un almacén típico debe poder ser tanto
escrito como leído, excepto por los almacenes externos, que sirve de interfaz entre en el sistema y algún
terminador.
El DFD proporciona una visión global bastante conveniente de los componentes funcionales del sistema, pero no da detalles de
éstos. Para detallar qué información se transforma y cómo se transforma se pueden usar dos herramientas textuales de
modelado adicionales.
Dado que generalmente las personas son tipos de objetos en un sistema, hay que saber que una persona, u otra cosa material,
pudiera ser distintos tipos de objetos en distintos modelos de datos, o incluso en el mismo modelo. Como convenio, los tipos de
objetos se notan con sustantivos.
Tipo de Objeto
Las relaciones representan un conjunto de conexiones entre objetos. Se dibujan con un rombo. Cada instancia de la relación
representa una asociación entre cero o más ocurrencias de un objeto y cero o más ocurrencias del otro, es decir que una
relación conecta dos o más instancias del mismo objeto.
Una notación alternativa muestra tanto la cardinalidad como la ordinalidad. El círculo en extremo izquierdo indica que ese tipo
de objeto es el punto de ancla u objeto primario, desde cuyo punto de vista debe leerse la relación. En el ejemplo de abajo,
solamente una instancia de A se puede relacionar con N instancias de B; excluyendo la posibilidad de que varios A se relacionen
con un solo B.
1 N
Tipo de Objeto A Tipo de Objeto B
Una notación especial en el DER es el indicador asociativo de tipo de objeto, que representa una relación de la cual se quiere
mantener alguna información. Por ejemplo, si tenemos la siguiente relación:
Podemos inferir que un CLIENTE realiza una COMPRA de un ARTÍCULO, pero si queremos mantener información del tipo de
COMPRA, o de la hora, ¿dónde se almacena tal información? Ya que la hora no es atributo ni de cliente ni del ARTÍCULO. Si
asociamos la hora del día con la COMPRA misma bajo el siguiente esquema:
Cliente Artículo
Compra
COMPRA ahora se escribe dentro de un rectángulo conectado a la relación CLIENTE-ARTÍCULO mediante una flecha. De esto
podemos inferir que COMPRA funciona como un tipo de objeto capaz de almacenar información, en este caso la hora; a su vez,
COMPRA es una relación que conecta a los tipos de objetos CLIENTE y ARTÍCULO, por lo que ambos existirían con o sin la
COMPRA pero ésta no puede existir sin ambos.
Los tipos de objeto de subtipo/supertipo son tipos de objeto de una o más subcategorías, conectados por una relación. La
siguiente figura muestra un ejemplo típico:
Empleado
Los subtipos se conectan al supertipo mediante una relación sin nombre, y el supertipo se conecta a la relación mediante una
línea con una barra. En esta notación el supertipo se describe por dato que se aplican a todos los subtipos, sin embargo, cada
subtipo se describe por media de datos diferentes; de otro modo no tendría sentido distinguirlos.
Reglas para la construcción del DER.
1. Añadir tipos de objetos adicionales. Ya sea por descubrir nuevos datos aplicables a determinadas instancias de un tipo
de objeto pero no a otros, descubrir datos aplicables todas las instancias, ó datos que describan relaciones entre
tipos de objetos.
2. Eliminar tipos de objetos que consisten en un solo identificador, los que poseen solo una instancia, los tipos asociados
de objetos flotantes, las relaciones derivadas o calculadas. El proceso de eliminar objetos incluidos en otros es parte
de una actividad llamada normalización.
Normalización del DER. Consiste en simplificar el contenido dentro del almacén de datos buscando y eliminando los
elementos de datos redundantes. Hay tres tipos de formas normales establecidas:
1. Primera forma normal (1FN). No deben haber atributos repetitivos.
2. Segunda forma normal (2FN). Los atributos que aparezcan en una clave deben depender de toda la clave y no sólo de
parte de ella.
3. Tercera forma normal (3FN). Todos los atributos deben depender de la clave primaria
Estado A
Cada rectángulo representa un estado en el que se puede encontrar el sistema. Que el sistema se encuentre en un estado
dado suele indicar que está esperando la ocurrencia de algún evento. Las acciones ocurren instantáneamente en el modelo. Un
estado representa una condición observable en la que el sistema se puede encontrar y que dura un tiempo finito.
Un sistema de un solo estado se conoce como sistema estático. Los sistemas que generalmente se modelan tienen varios
estados. Si un sistema tiene reglas ordenadas que gobiernan su comportamiento, entonces generalmente sólo algunos tipos de
cambio de estado serán significativos y válidos. Los cambios de estado se simbolizan con las flechas que unen los estados, las
cuales además muestran a qué estados puede pasar un sistema cuando se encuentra en un estado dado. La mayoría de los
sistemas tienen un estado inicial reconocible y un estado final reconocible, aunque no son obligatorios. Lo que los identifica es
que el estado inicial tiene una flecha cuyo extremo apunta hacia el pero no tiene ningún estado origen, y el estado final es aquel
que no es origen de ninguna flecha.
Para completar el DTE se añaden las condiciones que causan el cambio de estado y las acciones que el sistema toma cuando
cambia de estado
Estado A
Condición
Acción
Estado B
Una condición es un acontecimiento en el ambiente externo que el sistema es capaz de detectar y usualmente hace que el
sistema cambie de un estado de espera X a un estado de espera Y, o de realizar la actividad X a realizar la actividad Y. Como
parte del cambio de estado, normalmente el sistema hará una o más actividades. Las acciones mostradas en el DTE son
respuestas regresadas al ambiente externo o bien cálculos cuyos resultados el sistema recuerda para poder responder a un
acontecimiento futuro.
Guía de construcción de un DTE.
1. Se identifican todos los estados posibles del sistema y se representa cada uno. Luego se exploran todas las conexiones
significativas entre estados.
2. Se identifica el estado inicial y luego se desarrolla un camino.
3. Se debe verificar:
Si se definieron todos los estados.
Si se pudieron alcanzar todos los estados.
Si todos los estados tienen salidas.
¿En qué estado el sistema responde adecuadamente a todas las condiciones posibles? Es preciso identificar
el comportamiento del sistema en condiciones inesperadas.
Generalmente el DTE se usa como herramienta de modelado para las especificaciones de procesos de una burbuja de control,
pero también se puede usar como herramienta de modelado de alto nivel siempre que se lo auxilie con otras herramientas.
Herramientas textuales:
Diccionario de datos (DD)
Es una de las herramientas más importantes. Sin el diccionario de datos cualquier modelado está desde incompleto hasta mal.
Es un listado organizado de todos los datos pertinentes al sistema, con definiciones precisas y rigurosas para que tanto el
usuario como el analista tengan un entendimiento común de todas las entradas, salidas, componentes de almacenes y cálculos
intermedios. El diccionario de datos define los datos de varias maneras:
Describiendo el significado de los flujos y almacenes que se muestran en los DFD.
Describe la composición de los agregados de paquetes de datos que se mueven a lo largo de los flujos, paquetes
completos que pueden descomponerse en unidades más elementales.
Describe la composición de los paquetes de datos en los almacenes de datos.
Especifica los valores y unidades relevantes de piezas elementales de información en los flujos de datos y en los
almacenes de datos.
Describe los detalles de las relaciones entre almacenes que se enfatizan en un DER.
Existen varios esquemas de notación para un DD, uno de los más comunes es el siguiente:
= está compuesto de
+ y
() el contenido dentro de los paréntesis es opcional
{} el contenido dentro de las llaves es iterado, si se conoce el ´numero mínimo y/o máximo de repeticiones, se lo
antepone a las llaves de la forma m : M, o m { } M
[] se debe escoger una de varias alternativas contenidas dentro de los corchetes
| separa las alternativas dentro de los corchetes
** se incluyen comentarios dentro de los asteriscos
@ se usa como identificados de un campo clave
Para definir un dato, se lo coloca a izquierda del símbolo = para indicar a derecha la composición del dato, es decir: A = B + C
(A se compone de B y C). La definición completa de un dato incluye:
El significado del dato dentro del contexto de la aplicación de este usuario. Generalmente, para profundizar la
aclaración se realizan comentarios entre **.
La composición del dato, si se compone de partes elementales con significado.
Los valores que puede tomar el dato, si es un dato elemental que no puede descomponerse más.
Las partes elementales de los datos son aquellas para las cuales ya no existe una descomposición con significado dentro del
contexto del ambiente del usuario. Al identificar datos elementales se los debe introducir al diccionario, con una breve narrativa
que describa el significado del término en el contexto del usuario. Puede haber términos que se definan solos, o donde el
analista crea que no hace falta aclarar más.
Un dato opcional es aquel que puede estar o no presente en un formato compuesto. Las situaciones de este tipo se deben
verificar con cuidado con el usuario y se deben documentar precisamente en el diccionario de datos.
La notación de iteración se usa para indicar la ocurrencia repetida de un componente de un dato. Se lee como “cero o más
ocurrencias de”. En muchas situaciones el usuario querrá especificar los límites inferior y superior de la iteración, lo cual se
puede indicar de varias formas, siendo las más comunes A = m : M { B } ó A = m { B } M.
La notación de selección indica que un dato consiste en exactamente un elemento de entre un conjunto de opciones
alternativas. La notación es: A = [ B | C | D ]. Es importante revisar las opciones de selección con el cliente para asegurar que se
han abarcado todas las posibilidades.
Un alias es una alternativa de un nombre para un dato, y es una ocurrencia común cuando se trata con diversos grupos de
usuarios en diferentes departamentos o ubicaciones geográficas que usan distintos nombres para llamar a lo mismo. El alias se
incluye en el DD por cuestiones de completitud y se relaciona con el nombre oficial del dato del siguiente modo: A = * alias
de B *. Todos los detalles deben darse para el nombre primario del dato, para minimizar la redundancia en el modelo. Se debe
evitar el uso del alias hasta donde sea posible para ayudar a la lectura simple del documento.
Especificaciones de proceso
Es la descripción de que lo que sucede en cada burbuja primitiva de nivel más bajo en un DFD. El proceso se basa en definir lo
que debe hacerse para transformar entradas en salidas. Hay varias herramientas para producir una especificación de proceso.
La especificación del proceso debe expresarse de una manera que puedan verificar tanto el usuario como el analista. Se evita
el lenguaje narrativo debido a su naturaleza ambigua, y a que causa gran confusión cuando expresa condiciones booleanas.
El proceso debe especificarse en una forma que pueda ser comunicado efectivamente al público involucrado. En gran medida
esto depende de la personalidad, humor y otros factores de los usuarios con los que se trata.
La mayoría de los analistas usan el lenguaje estructurado como método para escribir las especificaciones de proceso. Esto no
siempre es lo mejor.
Una buena herramienta de especificación de proceso no debe imponer decisiones de diseño e implantación arbitrarias, lo cual
suele ser difícil, porque el usuario, suele escribirla en los términos en los que la lleva a cabo en la realidad.
Las especificaciones de proceso solo se desarrollan para los procesos de más bajo nivel en un conjunto de diagramas por
niveles en un DFD. Los procesos de mayor nivel se definen por medio de la red de procesos de nivel de inmediato inferior.
Hay tres herramientas principales de especificación de proceso:
Lenguaje estructurado. Es un subconjunto de todo idioma con importantes restricciones sobre el tipo de frases que pueden
usarse y la manera en que se pueden juntar dichas frases. Su propósito es hacer un balance razonable entre la precisión del
lenguaje formal de programación y la formalidad y legibilidad del lenguaje cotidiano.
Una frase de lenguaje estructurado puede consistir en una ecuación algebraica o una sencilla frase imperativa que esté
formada por un verbo y un objeto. Los verbos deben escogerse de entre un pequeño grupo de verbos orientados a la acción. En
muchas organizaciones se concluye e que entre 40 y 50 verbos bastan para describir cualquier política dentro de una
especificación de proceso.
Los objetos (el tema de las frases imperativas) deben consistir solo en datos definidos en el diccionario o en términos locales,
que son aquellos que se definen explícitamente en una especificación de proceso individual; solo son conocidos, relevantes y
con significado dentro de dicha especificación.
El lenguaje estructurado permite combinar frases en unas cuantas formas limitadas que se toman de las construcciones
acostumbradas de la programación estructurada:
La construcción SI-ENTONCES-SINO se usa para describir frases alternativas que se deben realizar según el resultado
de la decisión binaria.
SI condición_1 ENTONCES
frase_1
SINO
frase_2
FIN SI
La construcción SEGÚN-CASO se usa para describir frases alternativas que se efectuarán basándose en los resultados
de una decisión multivaluada.
SEGÚN variable HACER
CASO variable = valor_1 : frase_1
…
CASO variable = valor_n : frase_n
SINO
frase_i
FIN SEGÚN
La construcción MIENTRAS se usa para describir una frase que deberá llevarse a cabo repetitivamente hasta que
alguna condición booleana se verifique.
MIENTRAS condición_1 HACER
frase_1
FIN MIENTRAS
Otra construcción posible para representar la iteración es la estructura REPETIR que se caracteriza por que la
repetición se realiza al menos una vez
REPETIR
frase_1
HASTA condición_1
Se pueden componer frases a partir de combinación de frases sencillas y las estructuras sencillas presentadas anteriormente,
siguiendo algunas reglas:
1. Una secuencia lineal de frases sencillas equivale a una frase sencilla.
2. Toda construcción se considera estructuralmente equivalente a una frase única sencilla, lo que permite anidarlas unas
dentro de otras.
Esto permite construir descripciones complejas de políticas de negocios que mantienen un control estricto sobre el
vocabulario, organización y estructura de la descripción. La complejidad en si puede ser una desventaja en cuanto a la legibilidad
del documento.
Pre/post condiciones. Son una manera conveniente de describir la función que debe realizar el proceso. Resulta ser un
enfoque útil cuando el usuario tiene tendencia a expresar la política llevada a cabo por la burbuja en términos de un algoritmo
particular que uso por mucho tiempo, o cuando el analista está seguro de que hay muchos algoritmos distintos que pueden
usarse y desea que el programador explore varios de ellos no quiere involucrarse personalmente con tales detalles ni tener
discusiones con el usuario sobre el merito relativo de cada uno.
Existen dos partes principales del proceso: precondiciones y postcondiciones. Las precondiciones describen todas las cosas que
deben darse antes de que el proceso pueda empezar a ejecutarse, es decir que describen que entradas están disponibles. Tales
entradas llegan mediante un flujo conectado con un proceso. No todos los flujos que entren a un proceso serán precondición
necesaria para que este se active. Las precondiciones también describen la relación entre las entradas, si es que más de una es
necesaria para que proceso comience. A su vez, también describe que relaciones deben existir entre entradas y almacenes de
datos, así como también las relaciones que debe haber entre almacenes o dentro de un mismo almacén.
Las postcondiciones describen lo que debe darse cuando el proceso ha concluido, es decir que describen las salidas que
generará el proceso, las relaciones que existirán entre los valores de salida y los valores originales de entrada, las relaciones
entre valores de salida y los valores en uno o más almacenes, y los cambios que hayan ocurrido en los almacenes.
Cuando se esté construyendo una especificación de pre/post condiciones se empieza por describir cada situación normal del
proceso, cada una de las cuales se expresa como precondición distinguible e individual. Para cada precondición se describe la
condición del proceso cuando se han producido las salidas y se han modificado los almacenes. Luego de describir las situaciones
normales del proceso, se incluyen las pre/post condiciones para los casos de error y los casos anormales.
Aunque este enfoque sea útil y tenga muchas ventajas, puede no ser apropiado debido a la falta de pasos intermedios entre
entradas y salidas, lo cual lo vuelve difícil de comprender para lectores que sean incapaces de visualizar los procesos de
transformación tácitamente.
PRECONDICION i
Ocurre el dato X
POSTCONDICION I
Se genera dato Y
Tablas de decisión. Si las decisiones se basan en diversas variables que pueden tomar distintos valores entonces es preferible
el uso de una tabla de decisiones. Ésta se crea listando todas las variables relevantes y todas las acciones relevantes en el lado
izquierdo. Suele ser preferible expresar las variables como binarias, pero no por eso no puede ocurrir que se deba realizar una
tabla de variables multivaluadas. Luego se listan en columnas separadas cada combinación posible de valores de las variables; a
cada columna se la suele llamar regla, la cual describe una acción o acciones que deben llevarse a cabo para una combinación
específica de valores de las variables. Se debe especificar al menos una acción por cada regla. Tales reglas se discuten con el
usuario para asegurarse de que se identificaron las acciones correctas para cada combinación de variables. Se debe calcular el
número de combinaciones de las condiciones. Si estas son binarias, entonces hay 2 N combinaciones de N variables. Se debe
identificar cada posible acción que se pide en la especificación. La tabla se crea listando todas las condiciones y acciones en el
lado izquierdo y numerando las combinaciones de las condiciones en la parte superior de la tabla. Se examina cada columna
para identificar las acciones apropiadas que se deben tomar. Finalmente, junto al usuario, identificar las omisiones, restricciones
y ambigüedades.
Se puede usar un árbol de decisión para acompañar y aclarar una tabla de decisión.
Balanceo de modelos
No todos los errores en el modelado ocurren por una mala interpretación de lo que el usuario quería, los errores más difíciles
suelen ocurrir entre modelos, es decir inconsistencia entre un modelo y otro. Cuando todas las herramientas de una
especificación estructural están verificadas entre si para comprobar su consistencia, se dice que está balanceada. Los errores
más comunes de balanceo involucran las definiciones faltantes.
Es importante enfocarse en la inconsistencia de modelos, ya que tarde o temprano todos los errores se detectan pero la
dificultad de corrección crece a medida que el proyecto avanza. Siempre es más económico corregir un error en la etapa de
análisis que en la de diseño.
Tipos de balanceo.
Balanceo de DFD y DD. Cada flujo y cada almacén que aparece en el DFD debe estar definido en el DD. Cada dato y
cada almacén definido en el DD debe aparecer en el DFD, de lo contrario se los considera fantasmas.
Balanceo de DFD y EP. Cada burbuja del DFD debe asociarse con un DFD de nivel inferior ó con una EP, pero no con
ambos. Si ambos existen se considera al modelo como redundante. Cada EP debe tener una burbuja de nivel inferior
asociada en el DFD. Las entradas y salidas deben coincidir. Para las burbujas de control en un DFD existe
correspondencia entre las burbujas y los diagramas de transición de estados asociados.
Balanceo de las EP con el DFD y el DD. Cada referencia de un dato en la especificación de proceso debe satisfacer una
de las siguientes reglas:
o Coincide con el nombre de un flujo de datos o un almacén conectado a la burbuja descrita por la
especificación de proceso.
o Es un término local, definido explícitamente en la especificación de proceso.
o Aparece como componente en una entrada del diccionario de datos para un flujo o almacén conectado con
la burbuja
Balanceo del DD con el DFD y las EP. El diccionario es consistente con el resto del modelo si cada entrada del
diccionario de datos debe tener referencia en una especificación de proceso, un DFD u otro DD. Esto supone que se
modela el comportamiento esencial de un sistema. Un DD complejo y exhaustivo de una implantación existente de un
sistema puede contener algunos datos que ya no se usan. Puede argumentarse que el DD se planea de forma que
permita una expansión futura, y que por eso contiene elementos que no se ocupan en este momento pero que pueden
ser útiles en el futuro.
Balanceo del DER con el DFD y las EP. Cada almacén del DFD debe corresponder con un tipo de objeto, una relación o
un tipo asociativo de objeto en el DER. Los nombres de objetos en el DER y los nombres de almacenes de datos en el
DFD deben coincidir. Las entradas del diccionario de datos deben aplicarse tanto al DFD como al DER. Hay reglas que
aseguran que el DER sea consistente con la porción de la especificación de proceso del modelo orientado a las
funciones. Tales reglas son que el conjunto combinado de todas las especificaciones de proceso deben, en su totalidad:
o Crear y eliminar instancias de cada tipo de objeto y relación que se muestra en el DER.
o Alguna burbuja del DFD define valores para cada dato asignado a cada instancia de cada tipo de objeto, y
algún proceso de DFD usa valores de cada dato.
Balanceo del DFD y el DTE. Cada burbuja de control del DFD se asocia con un DTE como su EP. Cada DTE en el modelo
global del sistema debe asociarse con un proceso de control en el DFD. Cada condición del DTE debe corresponder con
un flujo de datos de entrada al proceso de control asociado con el DTE. Cada flujo de control que entra en la burbuja de
control debe asociarse con una condición apropiada en el diagrama de transición de estados correspondiente. Cada
acción en el DTE debe corresponder con un flujo de control de salida del proceso de control asociado con dicho
diagrama. Cada flujo de control de salida de la burbuja de control debe asociarse con una acción apropiada en el DTE
correspondiente.
Es importante que las reglas de balanceo puedan automatizarse, existen usualmente herramientas que efectúan partes o toda
revisión de errores.
El enfoque del modelo clásico
Se compone de cuatro modelos de sistemas:
Modelo físico actual. Es un modelo del sistema que actualmente está empleando el usuario.
Modelo lógico actual. Es el modelo de los requerimientos esenciales que necesita el sistema actual del usuario.
Muestra lo que el sistema haría con tecnología ideal.
Modelo lógico nuevo. Es el modelo de los requerimientos esenciales del sistema que el usuario quiere que se
desarrolle. Puede ocurrir que idealmente sea igual al sistema lógico actual, ya que el usuario solo está disconforme con la
implantación del sistema actual. Lo común es que el usuario desee nuevas funcionalidades.
Modelo físico nuevo. Modelo que muestra las limitaciones de implantación impuestas por el usuario.
Tales suposiciones ignoran algo muy importante: el proceso de desarrollar un modelo del sistema actual puede requerir
mucho tiempo y esfuerzo pudiendo hacer que el usuario se frustre e impaciente, cancelando el proyecto. Esto es debido a que
muchos usuarios y administradores consideran al análisis de sistemas como una pérdida de tiempo, y que el usuario duda de los
beneficios del modelado cuidadoso de un sistema.
El problema ocurre con mayor frecuencia porque el analista se distrae con el modelado del sistema actual, perdiendo tiempo,
llegando a poder desecharse un 75% del modelo físico en la transición hacia el modelo lógico actual debido a la redundancia y a
la verificación, validación y revisión de errores apropiada en el sistema físico actual pero no en el lógico actual. Los analistas se
involucran tanto en el modelado que olvidan que el objetivo del usuario es producir un nuevo sistema.
Yourdon recomienda que el analista evite el modelado del sistema actual de ser posible, y que se usen las herramientas de
modelado para comenzar tan pronto como sea posible a desarrollar el modelo del nuevo sistema que el usuario desea. A este
modelo se lo conoce como modelo esencial.
El enfoque moderno propone no modelar el sistema actual, aplicando un diseño de tipo top-down (de lo general a lo
específico) y no tiene etapas definidas. Ni siquiera está definido un punto de partida, ya que depende de la situación. Lo único
importante es disponer de los recursos para desarrollar el sistema.
El modelo esencial
Es un modelo de lo que el sistema debe hacer para satisfacer los requerimientos de usuario, diciendo lo mínimo posible acerca
de cómo se implantará; es decir que el modelo supone que se posee una tecnología ideal.
Al hablar con el usuario, el analista debe evitar describir implantaciones específicas de procesos en el sistema. Lo mismo
ocurre con los flujos y almacenes de datos. El modelo esencial debe describir su contenido sin describir el medio u organización
física de los datos.
Resulta difícil eliminar todos los detalles de la implantación en el modelo. Se deben evitar:
Las secuencias arbitrarias de las actividades en un DFD. El único secuenciado debe ser el que requieren los datos o
acontecimientos externos al sistema.
Los archivos innecesarios (almacenes innecesarios si se posee una tecnología perfecta).
La revisión de errores y validación innecesaria de datos y procesos dentro del sistema.
Los datos redundantes o derivados (los que se pueden calcular u obtener a partir de otros).
Componentes del modelo esencial.
Declaración de
propósito
Lista de
acontecimientos
Modelo esencial
Modelo preliminar
Modelo de
comportamiento
Modelo terminal
El modelo ambiental define la frontera del sistema y el ambiente. Consiste en un diagrama de contexto, una lista de
acontecimientos y una declaración de propósito.
El modelo de comportamiento describe el comportamiento que se requiere del sistema para que interactúe de modo exitoso
con el ambiente. Consiste en los DFD, DER, DTE, EP y el DD.
Puede que sea necesario construir un modelo de implantación antes del modelo esencial, porque el usuario no esta
convencido de que se entendió su labor en el negocio lo suficientemente bien como para comenzar a modelar el sistema nuevo,
o porque el analista precisa estudiar el ambiente actual antes de realizar el sistema. Hay que recordar que el objetivo primario
es llegar a un entendimiento y a la visión general del sistema existente, no de documentar detalladamente el sistema actual.
Modelo ambiental
Define las interfaces entre el sistema y el ambiente, es decir que modela el exterior del sistema.
Es importante definir que información entra al sistema y cual se produce como salida. Los sistemas que se construyen son
racionales su propósito es producir una salida en respuesta a un acontecimiento que ocurre en el ambiente del sistema, por lo
que otro aspecto crítico del modelo ambiental consiste en identificar los acontecimientos que ocurren en el ambiente.
Generalmente el usuario tiene una idea de la frontera entre el sistema y el ambiente, pero existe un área gris, de la cual el
usuario no estará seguro o no la había considerado.
El ambiente
El sistema
Es importante escoger una perspectiva adecuada o el proyecto estará condenado a fracasar, ya que si se escoge una
demasiado pequeña, el usuario puede haber identificado sin darse cuenta el síntoma del problema en lugar de la causa, y si
escoge una perspectiva demasiado amplia se tratará con una situación política mucho más compleja, intentando desarrollar un
sistema demasiado grande.
Es importante dedicar el tiempo y tener la suficiente participación del usuario en la declaración de una frontera. En un sistema
grande se pueden tomar en cuenta varios factores para escoger la perspectiva del proyecto. Los más importantes suelen ser: El
deseo del usuario de lograr una cierta participación en el mercado para el producto o incrementarla a más de su nivel actual; la
legislación establecida por alguna agencia gubernamental; deseo del usuario de minimizar gastos operativos de algún área de su
negocio; deseo del usuario por lograr alguna ventaja estratégica para la línea de productos o área de negocios que opera.
El área dentro de la frontera del sistema a veces se conoce como el dominio de cambios, ya que todo lo que se encuentra
dentro del sistema está sujeto a cambios, mientras que lo externo no es de mucha incumbencia para el analista.
Herramientas usadas para definir el ambiente.
La declaración de propósitos. Declaración textual breve y concisa del propósito del sistema, dirigida al nivel administrativo
superior, la administración de los usuarios y otros que no están directamente involucrados con el desarrollo del sistema. Puede
constar de una o varias frases pero no debe superar el párrafo. La declaración debe ser deliberadamente vaga en cuanto a
detalles.
Aunque el documento de declaración de propósitos no responde las preguntas detalladas sobre el comportamiento,
generalmente basta con responder a una serie de preguntas de alto nivel. Algunos analistas consideran que el documento
también debe resumir los beneficios tangibles y cuantificables que se logren con el nuevo sistema, lo cual es fácil para proyectos
pequeños y no tanto para proyectos grandes, en su lugar se suele requerir un análisis de costo-beneficio.
El diagrama de contexto. Es un caso especial de DFD, en donde una sola burbuja representa todo el sistema enfatizando varias
características importantes del sistema:
Las personas, organizaciones y sistemas con los que se comunica el sistema (terminadores).
Los datos que el sistema recibe del mundo exterior y debe ser procesado de alguna manera.
Los datos que el sistema produce y que se envían al mundo exterior.
Los almacenes de datos que el sistema comparte con los terminadores (almacenes externos).
La frontera entre el sistema y el resto del mundo.
La lista de acontecimientos. Es una lista narrativa de los estímulos que ocurren en el mundo exterior a los que el sistema debe
responder. Cada acontecimiento se etiqueta como F, T o C; para indicar si se lo asocia con un flujo de datos (F), es decir que el
sistema se da cuenta de que el acontecimiento ocurrió cuando llegan uno o varios datos ; para indicar si se asocian con
acontecimientos temporales (T), es decir que los acontecimientos arrancan con la llegada de un momento dado en el tiempo; o
para indicar si se los asocia con un acontecimiento de control (C), que son un caso especial del acontecimiento temporal: un
estimulo externo que ocurre en algún momento impredecible.
Para la mayoría de los proyectos estos componentes bastan, pero dependiendo de la complejidad y la naturaleza del sistema,
pueden ser útiles dos componentes adicionales: el diccionario de datos inicial, que define todos los flujos y almacenes externos;
y el modelo de entidad-relación de los almacenes externos. Aún cuando los flujos de datos se definen en el modelo de
comportamiento, puede ser importante comenzar antes la construcción del DD si, por ejemplo, las interfaces entre el sistema y
los diversos terminadores están sujetas a cambios y a negociación, por lo que cuanto antes se comiencen a definir formalmente
las interfaces más rápido se finalizarán. Del mismo modo se puede hacer un DER de los almacenes externos (si los hay), lo que
puede ayudar a dejar al descubierto las relaciones entre almacenes, que de otro modo no serían evidentes hasta que se
desarrollara el modelo de comportamiento. Esto permite revisar las interacciones entre los terminadores y el sistema mismo.
Construcción del diagrama de contexto. La parte del DC es el proceso, el cual es una única burbuja con el nombre del sistema
completo (o un acrónimo convenido). Los terminadores se comunican con el sistema a través de flujos de datos o de control, o a
través de almacenes externos. Las comunicaciones entre terminadores son irrelevantes para el sistema. Cuando se tienen
terminadores con muchos flujos se pueden dibujar duplicados de esos terminadores (indicados con un * al lado de su nombre), a
los cuales se les asignarán algunos flujos como para no sobrecargar un solo terminador. Si el terminador es una sola persona,
conviene más indicar su rol que su nombre ya que esta persona puede realizar varios trabajos distintos. Los terminadores deben
indicar la fuente de datos y no el medio que los genera. Se deben tener en cuenta todas las consideraciones que se hacen al
construir un DFD.
Construcción de la lista de acontecimientos. El analista debe asegurarse de distinguir los acontecimientos de los flujos
relacionados a un acontecimiento. Se debe tratar de describir los acontecimientos desde el punto de vista del ambiente (de
afuera hacia adentro) y no desde el punto de vista del sistema, ya que se pueden identificar erróneamente flujos entrantes que
no son acontecimientos.
La manera más fácil identificar los acontecimientos relevantes para un sistema es visualizándolo en acción, es decir, examinar
cada terminador y preguntar que efecto pueden tener sus acciones en el sistema.
La lista de acontecimientos no solo debe contener las interacciones normales entre el sistema, y los terminadores, sino que
también debe incluir situaciones de falla causada por terminadores.
No es relevante si se realiza primero la lista de acontecimientos o si se empieza con el DC, siempre que al final se produzcan
ambos componentes y estén revisados de modo que sean consistentes.
Al finalizar con ambos componentes, el analista debe cerciorarse de que:
El sistema necesita cada flujo de entrada del DC para reconocer que ocurrió un acontecimiento, para producir una
respuesta a un acontecimiento, o ambas cosas.
Cada flujo de salida debe ser respuesta a un acontecimiento.
Cada acontecimiento no temporal debe tener entradas a partir de las cuales el sistema pueda detectarlo.
Cada acontecimiento debe producir salidas inmediatas como respuesta o bien almacenar los datos que luego serán
salidas, o deberá ocasionar un cambio en el estado del sistema.
El modelo de comportamiento
Diferencias con el enfoque clásico. El enfoque clásico supone que el diagrama de contexto ya está dibujado y que se
procederá directamente de la burbuja única del DC a un DFD de nivel superior (Figura 0), donde cada burbuja representa un
subsistema principal. Cada burbuja de la figura de nivel 0 se divide en burbujas de nivel inferior, las cuales se puede dividir más,
hasta alcanzar burbujas atómicas indivisibles.
Aunque ese enfoque es útil presenta los siguientes inconvenientes:
Parálisis del análisis. En sistemas grandes y complejos, simplemente no existe una guía para que el analista dibuje la
figura 0 apropiada a partir del DC.
El fenómeno de los seis analistas. En un sistema grande y complejo suele haber más de un analista viendo el DC, y
resulta difícil dividir las tareas equitativamente sin estorbarse entre sí, llevando a que arbitrariamente cada uno cree
una figura 0.
Una partición física arbitraria. Un sistema nuevo se basa en uno existente o representa la computarización de una
organización existente. La partición del sistema actual debe usarse como parámetro para la partición del nuevo
sistema, aún cuando esta no sea la manera más eficaz de partir al sistema.
El enfoque que Yourdon describe no es puramente descendente, ni ascendente; sino intermedio, ya que después de
desarrollar el modelo ambiental, requiere nivelación ascendente y luego podría requerir una descendente.
Modelo Esencial
Modelo de Comportamiento
Modelo
Ambiental
Nivelación Figura de nivel Nivelación
Particionados
ascendente 0 descendente
Identificación de respuestas a acontecimientos. El enfoque de partición por acontecimientos incluye los siguientes cuatro
pasos:
1. Se dibuja una burbuja o proceso para cada acontecimiento de la lista.
2. La burbuja se nombra describiendo la respuesta que el sistema debe dar al acontecimiento asociado.
3. Se dibujan las entradas y salidas apropiadas de modo que cada burbuja pueda dar la respuesta requerida, y se dibujan
los almacenes para la comunicación entre burbujas.
4. El borrador de DFD resultante se compara con el DC y la lista de acontecimientos para asegura su consistencia y
completitud.
Conexión de las respuestas a acontecimientos. Las burbujas se comunican entre sí a través de otros almacenes de datos
debido a que las burbujas del DFD preliminar representan respuestas a un acontecimiento, y aquellos que ocurren en el
ambiente externo no están sincronizados. Y, dado que las respuestas a un acontecimiento pueden requerir datos producidos por
otro, y que no hay manera de saber cuando ocurrirán; además, se supone en el modelo esencial que cada proceso realiza su
tarea instantáneamente y cada flujo de datos los transmite instantáneamente; la única forma de sincronizar múltiples
acontecimientos interdependientes es mediante un almacén.
Desarrollo del modelo inicial de datos. Mientras que se realiza el DFD preliminar, alguien debería haber comenzado a
construir la versión inicial del DER independientemente y en paralelo al desarrollo del DFD inicial. Al realizarlos paralelamente,
se pueden usar para revisarse entre sí. Los almacenes definidos en el DFD puede servir para sugerir objetos en el DER; y esos
objetos se pueden usar para elegir almacenes apropiados en el DFD. Ninguno predomina sobre el otro, cada uno provee de
asistencia invaluable al otro.
La lista de acontecimientos puede ser similarmente útil para crear el DER inicial. Los sustantivos de la lista serán objetos del
DER. Similarmente, se puede usar una lista de acontecimientos para verificar el DER inicial, todos los tipos de objetos del DER se
deben corresponder con los sustantivos de la lista.
La agrupación de datos en torno a datos comunes y la búsqueda de oportunidades para esconder almacenes locales son los
parámetros principales para la nivelación ascendente, y no alguna regla aritmética.
Descendente: Este paso solo es necesario si las burbujas de la figura de nivel 0 no son elementales y es necesario explotar las
burbujas a un nivel inferior. Las reglas a tener en cuenta son:
Si una burbuja de proceso realiza una función compleja trate de identificar sus funciones, cada una de las cuales puede
ser echa por una burbuja de nivel inferior.
Los flujos de datos de entrada y salida proporcionan una guía para la nivelación descendente.
p
X
X p
Y q
Y q
Z r
r
Z
Al realizar esta actividad de nivelación ascendente y descendente se debe tener en cuenta que el balanceo es importante, es
decir, se debe asegurar que las entradas y salidas de la burbuja de alto nivel sean consistntes con las del diagrama de nivel
inferior.
Completado del DD. Se debe continuar completando el diccionario de datos que inicialmente se empezó en el modelo
preliminar. Al realizar esto se debe verificar que este completo y sea consistente, que ninguna parte contradiga a otra, que este
balanceado con los DFD, con el DER y las EP
Completado de las EP. No es aconsejable realizar EP al desarrollar los particionados, ya que el mismo esta sujeto a muchos
cambios, correcciones y revisiones, lo ideal es empezar a hacerlo cuando el DFD empieza a estabilizarse, luego de haber pasado
la nivelación ascendente y no se hayan descubierto fallas importantes en el modelo. Esto a menudo es un esfuerzo largo que
consume mucho tiempo, ya que cada burbuja elemental debe especificarse, teniendo en cuanta que están balanceadas con
todos los demás.
Terminado de los modelos de datos. Como dijimos el DER se desarrolla al mismo tiempo que es DFD por lo que se debe ir
refinando y mejorando a lo lardo del modelado. Los conocimientos que se obtienen del DFD deben usarse para refinar y mejorar
el DER. Por ultimo se debe tener en cuanta las reglas de normalización del DER.
Terminado del DTE. Si un sistema tiene características de tiempo real estará desarrollando un DTE, el conocimiento detallado
del comportamiento del sistema ayudara a refinar el DTE siguiendo las reglas apropiadas para su construcción
Una vez concluido todos estos pasos se llaga al final del modelo esencial, el cual debe tener un modelo completo, detallado,
formal y riguroso de todo lo que el sistema tiene que hacer para lograr los requisitos del usuario.
Implantación ascendente. Es una de las grandes debilidades del CVP clásico. Se espera que los programadores lleven a cabo
primero las pruebas modulares, luego las pruebas del subsistema y finalmente las pruebas del sistema mismo. Esto se conoce
como ciclo de vida de cascada.
La implantación ascendente presenta muchas dificultades para organización es que producen sistemas únicos:
No se hace nada hasta que todo esté terminado.
Las fallas más triviales se encuentran al comienzo del periodo de prueba y las más graves al final. Esto es malo para,
debido a que detectar grandes fallas al final e intentar eliminarlas puede llevar a modificaciones muy grandes que
llevarían a rehacer el proyecto.
La necesidad de prueba con la computadora aumenta exponencialmente en las últimas etapas de prueba, lo cual
retrasa mucho el proyecto.
Progresión secuencial. Querer que las fases sucedan secuencialmente es una tendencia natural humana, es decir que se
espera que al terminar una fase del sistema nunca más se tendrá que preocupar por ella. Esto se conoce como congelar la
especificación o congelar el documento de diseño. El único problema que trae esto que no es nada realista. Particularmente, no
permite el tratamiento de fenómenos como los relacionados con el personal, la política de la organización, o la economía.
Comúnmente surgen otros problemas asociados: durante el tiempo que toma desarrollar el sistema el usuario puede cambiar
de parecer al respecto a aspectos del sistema, o pueden cambiar aspectos del ambiente que interactúa con el sistema. Un
problema adicional, es que el CVP clásico se apoya en técnicas antiguas, aunque esto no significa que no se puedan usar técnicas
modernas.
El ciclo de vida semiestructurado. La tendencia a usar el diseño y programación estructurada y la implantación descendente
crece, lo cual ha llevado al CVP semiestructurado, que presenta dos detalles que no están en el enfoque clásico:
La secuencia ascendente de codificación, la prueba de módulos y prueba de sistema se reemplazan por una
implantación top-down, en el que los módulos de alto nivel se codifican y prueban primero, luego se prueban los de
menor nivel. También hay fuertes indicios de que la programación estructurada debe usarse para codificar el sistema.
El diseño clásico se reemplaza por uno estructurado, que es un enfoque de diseño formal de sistemas.
La implantación descendente implica el tener que realizar partes de la codificación y las pruebas en paralelo, lo cual genera
retroalimentación entre la codificación, las pruebas, y la eliminación de fallas. Además, tienta a los miembros del proyecto a no
hablar con los usuarios hasta después de haberse congelado las especificaciones, por lo que el usuario puede señalar errores o
malentendidos en la especificación, o incluso deseo de cambiarla.
El ciclo de vida estructurado del proyecto.
8.
Especificación CONVERSION
Documento estructurada
1. 2. 3. DE BASES DE
ENCUESTA ANALISIS DISEÑO DATOS
Especificación
Reporte del de diseño
Informe
costo-beneficio
tentativo de Especificación Bases de
costo-beneficio Restricciones estructurada datos
7.
4. convertida
DESCRIPCION
DE PROCE- IMPLANTACION
ADMINISTRACION DIMIENTOS
5.
Sistema
GENERACION
Sistema instalado
DE PRUEBA
Manual del integrado
DE usuario
ACEPTACION
6.
Conjunto de 9.
Pruebas de CONTROL
INSTALACION
control de DE
CALIDAD
calidad
Los terminadores del CVP estructurado son individuos o grupos que proporcionan las entradas al equipo del proyecto y son los
beneficiados finales del sistema. Ellos interactúan con las nueve actividades que se listan a continuación:
1. La encuesta. Estudio de factibilidad o inicial de negocios. Empieza cuando el usuario solicita que una o más partes de su
sistema se automaticen. Los principales objetivos de la encuesta son los siguientes:
Identificar a los usuarios responsables y crear un campo de actividad inicial del sistema, lo cual comprende una
serie de actividades de recolección de.
Identificar las deficiencias actuales en el ambiente del usuario.
Establecer metas y objetivos para el sistema nuevo.
Determinar si es factible automatizar el sistema y de ser así sugerir escenarios aceptables, lo que implica
estimaciones del costo y tiempo necesarios y de los beneficios.
Preparar el esquema que se usará para guiar el resto del proyecto e identificar al administrador responsable del
proyecto.
Generalmente esta etapa ocupa en 5-10% del tiempo y de los recursos de todo el proyecto. Para proyectos pequeños esta
etapa es casi imperceptible, pero en proyectos grandes y complejos esta etapa es crítica y debe realizarse con mucho
detalle.
2. El análisis de sistemas. El propósito principal de esta actividad es transformar sus dos entradas principales, las políticas
del usuario y el esquema del proyecto, en una especificación estructurada. Esto implica modelar el ambiente del usuario
con DFDs, DERs, DTEs y otras herramientas de modelado.
Esta etapa también implica el desarrollo del modelo esencial, y la descripción de los requerimientos del usuario mediante
la preparación de un conjunto de presupuestos y cálculos de costos y beneficios más precisos y detallados al final de la
actividad.
3. El diseño. Esta actividad se dedica a asignar porciones de la especificación a procesadores adecuados y a labores
apropiadas dentro de cada procesador. Dentro de cada labor, la actividad de diseño se dedica a la creación de una
jerarquía apropiada de módulos de programas e interfaces entre ellos para implantar la especificación creada durante el
análisis. Además se ocupa de la transformación de modelos de datos de entidad-relación en un diseño de base de datos.
El analista estará interesado durante esta etapa en el desarrollo del modelo de implantación del usuario, que describe los
asuntos relacionados con la implantación que le importa al usuario al grado que no se los quiera confiar al diseñador o al
programador. Estos son los asuntos relacionados con la especificación de la frontera humano-máquina y su interfaz. Tal
frontera separa las partes del modelo esencial que llevara a cabo una persona, de las partes que se implantarán en una o
más computadoras. Similarmente, la interfaz hombre-maquina es una descripción del formato y de la secuencia de
entradas que los usuarios proporcionan a la computadora, además del formato y la secuencia de salidas que la
computadora proporción al usuario.
4. La implantación. Esta actividad incluye la codificación y la integración de módulos en un esqueleto progresivamente mas
completo del sistema final, por lo que incluye tanto la programación estructurada como implantación descendente.
El analista típicamente no se verá involucrado en esta actividad, salvo que todo el trabajo lo haga una sola persona.
5. Generación de pruebas de aceptación. La especificación estructurada debe contener toda la información necesaria para
definir un sistema que sea aceptable para el usuario. Una vez generada la especificación, comienza la producción de un
conjunto de casos de prueba de aceptación desde la especificación estructurada.
Esto puede suceder simultáneamente a las actividades de diseño e implantación, por lo que el analista puede ser asignado
a esta labor.
6. Garantía de calidad. Prueba final o de aceptación. Requiere como entradas los datos de la actividad 5 y el sistema
integrado producido en la actividad 4. Generalmente el analista no esta involucrado en esta actividad.
7. Descripción del procedimiento. Una de las actividades importantes a realizar es la generación de una descripción formal
de las partes del sistema que se harán en forma manual, lo mismo que la descripción de cómo interactuarán los usuarios
con la parte automatizada del nuevo sistema. El resultado de esta actividad es un manual para el usuario.
Esta es una actividad en la que el analista puede participar.
8. Conversión de bases de datos. Esta actividad requiere como entrada la base de datos actual del usuario, al igual que la
especificación del diseño producida por la actividad 3.
Según la naturaleza del proyecto, el analista podría tener que ver con esta actividad.
9. Instalación. Esta es la actividad final. Sus entradas son el manual de la actividad 7, la base de datos de la actividad 8 y el
sistema aceptado por la actividad 6. Este puede ser un proceso gradual o instantáneo, todo depende del analista y del
usuario.
Concepto de Orientación a objetos
La programación orientada a objetos (OOP) es un paradigma cuyo mayor beneficio es la reutilización de código. Se basa en:
Objeto: Un objeto es cualquier cosa, real o abstracta, acerca de la cual almacenamos datos y los métodos que controlan dichos
datos. Puede estar compuesto por otros objetos, lo cual permite definir objetos muy complejos.
Tipo de objeto: Un tipo de objeto es una categoría de objeto. Un objeto es una instancia de un tipo de objeto. El mundo
orientado a objetos define tipos de objetos e instancias de ellos. Un objeto se refiere a los datos y los métodos mediante los
cuales se controlan. La estructura de datos y los métodos de cada tipo de objeto se manejan juntos. No se puede acceder o
controlar la estructura sino es mediante un método que forme parte del tipo de objeto.
Métodos: Especifican la forma en que se controlan los datos de un objeto. Los métodos de un tipo de objeto solo hacen
referencia a las estructuras de datos de ese tipo de objeto. Para acceder a las estructuras de datos de otro tipo de objeto deben
de enviarle un mensaje. Un objeto tiene sus atributos representados por tipos de datos y su comportamiento definido por
métodos. Una característica particular de los métodos es el polimorfismo, el cual permite que dentro de una clase existan
métodos con el mismo nombre, cuya única diferencia está en el contexto de su aplicación.
Encapsulado: El empaque conjunto de datos y métodos se llama encapsulado, y es el resultado de ocultar los detalles de
implantación de un objeto respecto de su usuario. El objeto esconde sus datos de los demás y permite el acceso a ellos
mediante sus métodos. A esto se lo conoce como ocultamiento de la información. El encapsulamiento evita la corrupción de los
datos de un objeto. A su vez, oculta los detalles del desarrollo de las actividades a los usuarios, quienes pueden notar que las
operaciones se llevan a cabo, pero tienen modo de saber como.
El encapsulado es importante porque separa el comportamiento de un objeto de su implantación, lo que permite modificarla
sin modificar las aplicaciones que lo utilizan, permitiendo aislar el área de efecto de un cambio.
Mensajes: Para que un objeto haga algo se le envía una solicitud. Una solicitud invoca una operación específica, con uno o más
objetos como parámetros. Esto hace que se produzca una operación, que ejecuta el método apropiado y, de manera opcional,
produce una respuesta. El mensaje que constituye la solicitud contiene el nombre del objeto, el nombre de un método y a veces
un grupo de parámetros. Un mensaje es una solicitud para que se lleve a cabo la operación indicada y se produzca el resultado.
CLASE Clases: Se refiere a la implantación en software de un tipo de objeto. Especifica una estructura de
datos y los métodos operativos posibles que se aplican a cada uno de sus objetos. El tipo de objeto es
·Atributo_1
·Atributo_2
una noción de concepto, que especifica una familia de objetos sin estipular la forma en que se
·Atributo_n implanten. La implantación de clases especifica la estructura de datos para cada uno de sus objetos.
Los métodos y los atributos se almacenan una sola vez en una clase y todos los objetos instanciados a
+Método_1 partir de ella los comparten. Llamamos bibliotecas de clases a los depósitos de las clases existentes
+Método_2
que un analista o diseñador podría usar.
+Método_3
Herencia: Una subclase hereda de una clase de mayor jerarquía, llamándose clase hija de esta última, y a ésta se conoce por
superclase. Cuando una clase hereda, obtiene las propiedades de la clase padre, es decir que puede heredar la estructura de
datos y los métodos, aunque también puede tener sus propios métodos e incluso tipos de datos. Cuando una clase hereda
propiedades de más de una superclase tenemos un caso de herencia múltiple. También puede ocurrir u caso de anulación, en el
cual los métodos heredados son modificados según las necesidades de la clase que los hereda. No todas las clases se ven
obligadas a heredar. Una clase puede surgir de la nada.
1 B
A
2
D
3 C
Representa
tipos de objetos
Número Letra
Representa
una asociación
Aunque la figura ilustra las asociaciones entre ambos tipos de objetos, no muestra el significado de tal asociación, ni la
cantidad de objetos con los que un objeto dado puede y debe asociarse. En el análisis es útil nombrar de alguna manera a las
asociaciones e indicar la cantidad de objetos de un tipo dado que se deben asociar con los objetos de otro tipo, ya que esto le
da significado y comprensión a la asociación.
Un pedido es ordenado por
Cliente un solo cliente
Un cliente ordena desde
Producto
cero hasta n pedidos
Ordena Un pedido contiene desde uno
Pedidos hasta varios artículos de línea
Ordenado por
Contiene Elementos
del renglón
Jerarquías de generalización. Una de las manera más comunes de organizar la información es jerarquizándola de los más
general a lo más específico. Para el caso del AEO, la jerarquía establece que de un supertipo parten subtipos, que a la vez pueden
ser supertipos de subtipos de menor jerarquía. Todas las propiedades de un tipo de objeto también se aplican a sus subtipos.
La generalización es el acto de distinguir un tipo de objeto como más general, o incluso, que es más que otro. Todo lo que se
aplique a un tipo de objeto también se aplica a sus subtipos. Cada instancia de un tipo de objeto es también una instancia de sus
supertipos.
Puede ocurrir que un tipo tenga más de un supertipo y por lo tanto no todas las jerarquías serán de árbol. Las jerarquías de
generalización son importantes para el desarrollador OO por dos razones: primero, el uso de supertipos y subtipos proporciona
una herramienta útil para describir el mundo del sistema de aplicación; segundo, indica las direcciones de herencia entre las
clases en los lenguajes de OOP.
Jerarquías compuestas. Algunos tipos de objetos se pueden considerar como complejos, es decir que están formados por
otros. En el análisis OO, la composición de un objeto nos ayuda a describir el hecho de que todo está compuesto por partes más
pequeñas y la división depende del analista.
Una forma de representar el aspecto compuesto de los objetos es mediante sus diagramas, como se ve en la figura.
Unidad de línea
de iluminación
Símbolo de
composición
Pantalla de
Fuente lámpara
Porta-
lámparas Lámpara
Diagramas de relación entre los objetos. Los tipos de objetos se relacionan con otros tipos de objetos. Los DER se son muy
usados en el análisis convencional de sistemas, y muestran la relación entre los tipos de entes. Un diagrama de relación entre
objetos es muy similar al DER. En la figura se puede suponer que cada cuadro es un tipo de objeto en el AEO.
Cliente Pedidos
Línea de
pedidos
Esquemas de objetos. La comprensión de un modelo suele ser más sencilla si los tipos de objetos y las relaciones se
representan mediante un diagrama de relación de objetos; los supertipos y subtipos se representan en un diagrama de jerarquía
de generalización y las estructuras compuestas en un diagrama compuesto. Para usuarios mas sofisticados lo más conveniente
sería presentarlo todo en un mismo diagrama, al cual se conoce como esquema de objetos.
Estados de un objeto. Un objeto puede existir en varios estados. Un objeto puede ser instancia de distintos tipos de objeto, y
tales tipos de objetos se suelen percibir como estados posibles del ciclo vital de un objeto. Sin embargo un objeto puede tener
una gran variedad de perspectivas de ciclos vitales, es decir que el mismo objeto podría ser instancia de varios tipos de objeto al
mismo tiempo. El estado de un objeto es la colección de los tipos de objeto que se aplican a el.
Al implantarlo en un lenguaje OOP, el estado se registra en los datos almacenados con relación al objeto. Se determina
mediante las clases y valores de los campos de los datos asociados con el objeto. Generalmente los programadores OO usan
otra definición de estados: el estado de un objeto es la colección de asociaciones que tiene un objeto. En la OOP, las solicitudes
se envían y provocan la activación de métodos, los cuales cambian el estado del objeto, y este se registra en los datos del objeto.
Eventos. En el análisis OO el mundo se describe en términos de los objetos y sus estados, así como de los eventos que cambian
tales estados. Llamamos eventos al cambio del estado de un objeto.
Los eventos sirven como indicadores de los instantes en que ocurren los cambios de estado. Como se desea saber de esos
cambios y reaccionar en forma adecuada ante ellos, debemos entender y modelar los eventos.
Tipos de eventos. Al analista OO no le sirve conocer todos los eventos que ocurren en la organización, más bien quiere
conocer los tipos de eventos. Los tipos de eventos indican los cambios sencillos en el estado de un objeto, indicando las
siguientes formas:
Un objeto se crea.
Un objeto se termina.
Un objeto se clasifica como instancia de un tipo de objeto.
Un objeto se desclasifica como una instancia de un tipo de objeto.
Un objeto cambia de clasificación.
El atributo de un objeto se cambia.
Los eventos pueden asociar un objeto con otro.
Algunos eventos requieren que ocurra otro antes de que poder ocurrir ellos mismos.
A veces un objeto puede crear una reacción en cadena de otros eventos.
Una operación hace que los eventos ocurran.
Las operaciones se representan como un cuadro con esquinas redondas, ya que los eventos indican los puntos en el tiempo en
que se da el cambio de estado de un objeto. Los tipos de eventos se representan como triángulos negros generalmente unidos a
la operación.
Según el área que se modele, puede ocurrir más de un evento al terminar una operación, y cada uno de estos puede activar
operaciones independientes.
El ciclo vital de un objeto. La mayoría de los objetos tiene un ciclo vital en el que una sucesion de eventos pueden ocurrirle y
cada uno de estos modifica su estado. En el analisis OO, se dibuja un diagrama que muestre el ciclo vital de un objeto. La figura
expresa el ciclo vital de un objeto. Además de mostrar los estados posibles del objeto, el diagrama también muestra los cambios
de estados permisibles.
A
Interacciones entre tipos de objetos. Los DTE son útiles para representar el ciclo de vida de un objeto particular. Sin embargo
la mayoría de los procesos requieren la interacción de varios objetos. El diagrama de red muestra como los distintos tipos de
objetos cambian de estado y pueden solicitar a otros objetos que cambien su estado en el proceso.
Cuando los diagramas se expresan así es fácil ver la forma de implantarlos como estructuras de un programa OO: los tipos de
objetos se implantan como clases y las operaciones se convierten en métodos del programa OO. Si durante el análisis el usuario
puede expresar los requisitos de procesamiento de esta forma, se facilita el trabajo del diseñador de lenguajes OOP. Sin
embargo, los usuarios no piensan en el procesamiento de aplicación en términos de tipos de objetos, saturados de operaciones
y que hacen distintos tipos de solicitudes. Es preferible un formato de guión cuando se dan eventos que activan operaciones, las
cuales a su vez producen eventos que activan otras operaciones, etc. Ese formato de guión, llamado esquema de eventos,
representa los cambios en el ciclo vital de un objeto particular, el cual activa cambios en el ciclo vital de otro objeto.
Operaciones. En el análisis OO, el término operación hace referencia a una unidad de procesamiento que puede ser solicitada.
El procedimiento se implanta mediante un método, el cual es la especificación de cómo llevar a cabo la operación., es decir que
es el guión de la operación. A nivel programa, el método es el código Que implanta la operación.
Las operaciones se invocan, y son una instancia de una operación. Una operación puede cambiar o no el estado de un objeto,
pero si lo cambia ocurre un evento.
Fuentes externas de eventos. Los eventos son cambios de estado que un sistema debe conocer y poder reaccionar ante ellos
de algún modo. Muchas operaciones que producen eventos suelen ser externas al sistema. En tales casos, el símbolo de
operación se representa con una caja sombreada con esquinas redondeadas.
Un reloj externo es una forma particular de fuente externa. Indica que un proceso externo emitirá señales de reloj con cierta
frecuencia determinada con anterioridad. De modo que el evento se da cuando tal señal aparece. Se los representa con un
dibujo de reloj, indicando la periodicidad de la señal.
Reglas de activación. Cuando un evento ocurre, lo usual es que el cambio de estado active el llamado a una o más
operaciones. Así, las reglas de activación definen la relación entre la causa y el efecto. Siempre que ocurra un evento de cierto
tipo, la regla de activación invoca a una operación ya definida. Un tipo de evento puede tener varias reglas de activación, cada
una de las cuales invoca a su operación en paralelo, que pueden producir diferentes cambios de estado en forma simultanea.
Una operación puede ser invocada por varias reglas de activación, es decir que cualquier forma de activación hace que se
ejecute la operación.
Condiciones de control. Siempre que haya que verificar una condición de control antes de invocar a una operación, esta se
representa mediante un rombo antes de la operación.
Condición Tipo de
de control evento
Las condiciones de control también pueden actuar como puntos de sincronización para el procesamiento en paralelo, ya que
garantizan que un conjunto de eventos este completo antes de proceder con una operación.
Subtipos y supertipos de eventos. Los tipos ajenos se expresan como particiones de tipo, es decir que son mutuamente
excluyentes. La palabra partición implica la división de algo en subconjuntos ajenos. En OOP, ese algo es un supertipo. Las
particiones de eventos no son operaciones independientes que coordinan las condiciones de bifurcación para las formas de
activación ajenas, sino que indican los objetivos y distintos subobjetivos de las operaciones a las que están asociadas.
Esquemas jerárquicos. La operación que hace que ocurra un evento puede ser compleja, es decir que pude estar compuesta
por suboperaciones. Esto permite descomponer jerárquicamente los esquemas de eventos. Se pueden colocar fronteras en
torno a un esquema complejo de eventos y considerarlo como operación de alto nivel. Así, el esquema de eventos de bajo nivel
se convierte en el método para la operación que descompone.
Aislamiento de la causa y el efecto. Cada operación lleva a cabo su tarea sin importar lo que ocurra en otra parte. Una
operación es invocada por varios mecanismos de activación, ejecuta su método y se espera que esta modifique el estado de un
objeto. Una operación no sabe que evento la activo ni porque, ni si se activaran otras operaciones a partir de su evento. Este
aislamiento de las consideraciones de causa y efecto es necesario para que la operación pueda volver a utilizarse en muchas
otras aplicaciones.
En el AEO se hacen diagramas para representar la estructura de los tipos de objetos, en el ACO se trazan diagramas que
muestran la interacción dinámica de los eventos. Un esquema de objetos expresa el tipo de objeto y sus asociaciones en un
sistema dado. Los esquemas de eventos deben expresarse en términos de los esquemas de objetos, ya que los eventos se
expresan al cambiar el estado de determinados tipos de objetos.
Modularización clara. Las técnicas OO proporcionan dos maneras importantes de dividir el software complejo en
procedimientos sencillos. Primero, los métodos deben producir cambios en el estado de un objeto, el cual es fácil y sencillo de
programar: segundo, cada operación se puede volver a usar en distinto software y en varios procesadores que interactúen entre
sí.
Las técnicas OO proporcionan una clara modularización, más sencilla y precisa que la de las técnicas estructuradas
convencionales. Los objetos de gran complejidad se pueden usar mediante solicitudes simples, e interactúan en una parte del
software o en las maquinas de una red. El mantenimiento del software OO es mucho más sencillo.
La analogía del análisis y del diseño. Los analistas, diseñadores y técnicos deben poseer el mismo modelo del sistema. Con las
técnicas OO, se utiliza el mismo paradigma en el análisis, diseño e implantación. El analista identifica los tipos de objetos y su
herencia y piensa en los eventos que cambian los estados de los objetos. El diseñador añade detalles a este modelo, diseñando
pantalla, interacción con el usuario, etc. El proceso fluye tan naturalmente, que es difícil definir donde termina el análisis y
empieza el diseño.
Los usuarios finales deberían pensar también en términos de tipos de objetos, de eventos, de cambios de estado en los
objetos y las reglas de la empresa que activan y controlan los eventos; aunque es difícil que logren pasar a un pensamiento OO.
Es importante que los esquemas diseñados ayuden al usuario a poder pensar de esa manera.
Los analistas y los usuarios, en conjunto deberían crear un modelo de la empresa donde se muestre la forma en que se desea
que funcione la organización y que ayude a reinventar los procedimientos.
Diagrama de flujo de objetos (DFO). Los esquemas de eventos son adecuados para describir procesos en términos de eventos,
de reglas de activación, de condiciones, y de operaciones. Sin embargo puede no ser adecuado expresar de esa manera los
procesos grandes y complejos, y en cambio se opte por usar el DFO. Éstos son parecidos a los DFD, ya que muestran las
actividades que interactúan con otras. El diagrama debe representar cualquier cosa que se transfiera de una actividad a otra.
El DFO indica los objetos que se producen y las actividades que los producen e intercambian. EL producto es el resultado final
que satisface el propósito de la actividad, sin embargo no se producen solamente en aras de la producción. Se producen para el
consumo de otras actividades que le añaden valor al producto consumido. De esta manera el DFO se puede usar para la
planificación estratégica de la empresa.
El DFO es muy útil para los modelos de organizaciones en forma descendente a nivel estratégico. Sin embargo, n un nivel mas
detallado del ACO, también es correcto expresar los aspectos dinámicos de los esquemas de eventos. Una actividad puede
expresarse en términos de un DFO, de un esquema de eventos, o de ambos.
Para expresar un proceso de manera más rigurosa y poder generar un código, lo adecuado es un esquema de eventos. Un DFO
es útil para representar las estructuras básicas de control y el flujo de procesamiento.
Casos de uso
Es una descripción de un conjunto de secuencia de acciones, incluyendo variantes, que ejecuta un sistema para producir un
resultado observable de valor para un actor. Cada secuencia de acciones representa la interacción de los elementos externos al
sistema (los actores) con el propio sistema.
Los casos de uso se emplean para capturar el comportamiento del sistema, de un subsistema o de una clase, sin tener que
especificar como se implementa ese comportamiento. Los casos de uso bien estructurados denotan solo comportamientos
esenciales del sistema o de un subsistema, y nunca deben ser excesivamente genéricos ni demasiado específicos.
Un caso de uso siempre describe tres cosas: un actor que inicia un evento; el evento que activa un caso de uso, y el caso de uso
que desempeña las acciones activadas por el evento. El actor que usa el sistema comienza un evento que empieza una serie
relacionada de interacciones en el sistema. Los casos de uso se utilizan para documentar una sola transacción o evento.
Es conveniente crear no incluir consultas e informas y crear pocos casos de uso. 20 casos de uso (y nos mas de 40 o 50) son
suficientes para un sistema grande. Los casos de uso también se podrían anidar, de ser necesario. Se puede incluir un caso de
uso en varios diagramas, pero el caso de uso real se define una única vez en el diccionario.
Un caso de uso se nombra con un verbo y un sustantivo.
Actores
El termino actor se refiere a un papel particular de un usuario del sistema, por lo que si una persona realiza más de un trabajo,
estará representada por más de un actor. El actor existe fuera del sistema e interactúa con éste de una forma específica. Un
actor puede ser humano, otro sistema o un dispositivo. Los actores pueden iniciar una instancia de caso de uso, y podría
interactuar con uno o más casos de uso y viceversa.
Los actores se pueden dividir en dos grupos. Los actores principales proporcionan datos o reciben información del sistema y se
benefician de éste. Los actores secundarios ayudan a mantener el sistema en ejecución o proporcionan ayuda, es decir que
actúan de forma pasiva y no obtienen beneficios directos del sistema.
Comunica. Se usa para conectar a un actor con un caso de uso. La tarea del caso es dar alguna clase de resultado benéfico para
el actor en el sistema.
Un actor se comunica
con un caso de uso por Matricularse en
una línea sin puntas el curso
Estudiante
Incluye. Describe la situación en que un caso de uso contiene un comportamiento que es común para más de un caso de uso,
es decir que al caso de uso común se lo incluye en otros casos de uso. La secuencia común es un caso de uso abstracto y no
puede instanciarse por sí mismo, lo casos que incluyen a esta secuencia común son casos de uso concretos y pueden
instanciarse. Esta relación es una relación de dependencia.
Matricularse en
el curso
<<Incluir>>
Un caso de uso contiene un comportamiento
que es más común que otro caso de uso.
Pagos de cuotas La flecha apunta al caso de uso común y es
del estudiante una flecha compuesta por guiones y rotulada.
<<Incluir>>
Arreglar
residencia
estudiantil
Extiende. Describe la situación en el que un caso de uso posee el comportamiento que permite al nuevo caso de uso manejar
una variación o excepción del caso de uso básico. Siempre se instancia un caso de uso base, mientras que las extensiones son
instanciadas bajo determinadas condiciones. Las extensiones modelan comportamientos opcionales a los comportamientos
obligatorios de los casos de usos. Representan una parte de la funcionalidad del caso que no siempre ocurre, pero son un caso
de uso en sí mismos y no necesariamente provienen de un error o excepción.
Generaliza. Implica que una cosa es más típica que otra. Esta relación podría existir entre dos actores o dos casos de uso. Un
caso de uso se puede especializar en uno o más casos de uso hijos (también aplicable a los actores). La relación de
generalización también se puede llamar como “es un tipo de” con el nombre del elemento hijo a izquierda y del elemento
general a derecha. Para este tipo de relación se verifican las propiedades de herencia.
Estudiante de Estudiante
tiempo parcial
Diferencias entre casos de uso y eventos. Los eventos se centran en describir que hace el sistema cuando el evento ocurre,
mientras que los casos de uso describen como es el dialogo usuario-sistema. Además, los eventos se pueden considerar como
atómicos: Entrada Proceso Salida, mientras que un caso de uso se prolonga a través del tiempo. Para los eventos, lo más
importante los las entradas y las salidas del sistema cuando el evento ocurre, mientras que para los casos de uso esto es
secundario.
Escenarios
Un escenario es una secuencia específica de acciones que ilustra un comportamiento, siendo básicamente una instancia de un
caso de uso. En otras palabras, es una combinación exacta de lo que hace el actor en un momento determinado, es una
secuencia específica de un caso de uso.
Una vez desarrollados los escenarios de caso de uso, hay que asegurarse de revisar los resultados con los expertos de negocios
para verificar y refinar los casos de uso si es necesario. Luego de finalizar el proceso de verificación y de que todos los expertos
de negocios coincidan en que los casos de uso son precisos, puede procederse a usar técnicas de diagramación de UML para
completar el análisis y diseño de sistemas.
Diagramas de UML
Diagramas de casos de uso. Se emplean para visualizar el comportamiento de un sistema, un subsistema, o una clase, de
modo que los usuarios puedan comprender como usar tal elemento y que los desarrolladores puedan implementarlo.
Tales diagramas muestran un conjunto de casos de uso, actores y sus relaciones. Además se usan para modelar la vista estática
de los casos de uso un sistema (la cual cubre principalmente el comportamiento del sistema). Cuando se modela esta vista,
normalmente se emplean los diagramas de casos de uso de una de las dos formas siguientes:
Para modelar el contexto de un sistema.
Para modelar los requisitos de un sistema.
Nombre del
caso de uso
Cliente
Nombre del
caso de uso
Nombre del
Cliente Cliente caso de uso
individual Corporativo
Diagrama de interacción. Muestra una interacción que consiste en un conjunto de objetos y sus relaciones, incluyendo los
mensajes que se pueden enviar entre ellos. Hay dos tipos de diagramas de interacción.
Diagrama de secuencia. Destacan la ordenación temporal de los mensajes. Estos se forman colocando en primer
lugar los objetos que participan en la interacción en la parte superior del diagrama a los largo de un eje horizontal.
Normalmente se coloca a la izquierda el objeto que inicia la interacción, y los objetos subordinados a la derecha. A
continuación se colocan los mensajes que estos objetos envían y reciben a lo largo del eje vertical, en orden de
sucesión temporal, desde arriba hasta abajo
Tienen dos características: la línea de vida, la cual es una línea discontinua vertical que representa la existencia de un
objeto a lo largo de un periodo de tiempo; y el foco de control, que es un rectángulo delgado y estrecho que
representa el periodo de tiempo durante el cual un objeto ejecuta una acción.
Diagrama de colaboración. Destaca la organización de los objetos que participan en una interacción. Estos se forman
colocando en primer lugar los objetos que participan en la colaboración como nodos del grafo, luego se representan
los enlaces que conectan esos objetos como arcos del grafo. Por ultimo, estos enlaces se adornan con los mensajes
que envían y reciben los objetos.
Tienen dos características: el camino, que indica el enlace de un objeto a otro; y el número de secuencia, que indica
el orden temporal de un mensaje, se precede de un numero que crece secuencialmente por cada nuevo mensaje en
el flujo de control.
Los diagramas de secuencia y de colaboración muestran las mismas interacciones pero enfatizan distintos aspectos El primero.
Enfatiza la secuencia en el tiempo de los mensajes intercambiados pero no pone relevancia en la relación entre objetos, cosa
que el segundo pone en manifiesto descuidando las secuencias temporales.
Diagramas de actividades. Muestran las secuencias de actividades de un proceso, incluyendo las actividades secuenciales,
paralelas y decisiones que se toman. Generalmente, se elabora un diagrama de actividades para un caso de uso y podría reflejar
distintos escenarios posibles.
Un rectángulo de esquinas redondeadas representa una actividad, ya sea manual o automatizada. Una flecha representa un
evento, los cuales ocurren en un momento y lugar determinado. Un diamante representa una rama de decisión o una fusión. Las
decisiones tienen una flecha que entra en el diamante y varias que salen de él. Una fusión representa varios eventos que se
combinan para formar uno solo. Un rectángulo largo y plano representa una barra de sincronización, utilizada para representar
actividades paralelas y podría representar u n evento entrando en ella y varios saliendo, lo cual se llama bifurcación. Una
sincronización en la que varios eventos se fusionan en uno solo se conoce como unión. Dos símbolos representan el inicio y el
final del diagrama: el estado inicial es un círculo solido y el final como un círculo negro rodeado por uno blanco. Los rectángulos
que rodean otros símbolos llamados carriles indican un particionamiento y se usan para mostrar cuáles actividades se realizan
en qué plataformas, o para mostrar actividades realizadas por distintos grupos de usuarios. Los carriles son útiles para mostrar
como deben transmitirse o convertirse los datos.
Se crean preguntando la sucesión de eventos que ocurre. Se debe determinar se las actividades se realizan en secuencia o en
paralelo. Una guía útil son los DFDs. Conviene observar cada lugar en el que se toma una decisión y las consecuencias de tales
decisiones. Los diagramas de actividades se pueden crear observando todos los escenarios posibles para un caso de uso dado.
Cada ruta a través de las diversas decisiones incluidas en el caso de uso es un escenario diferente.
Diagramas de estados. Son otra manera de determinar los métodos de una clase. Se usan para examinar los diferentes
estados que puede tener un objeto. Un diagrama de estados se crea para una sola clase. Los objetos existen en cualquiera de
estos estados, que son las condiciones de un objeto en un momento determinado. El estado esta definido por lo valores de los
atributos del objeto. Cada estado tiene su propio nombre único y significativo. También, tiene acciones de entrada salida.
Los eventos causan cambios en el estado de un objeto disparando una transición cada vez que se cumple una condición, las
cuales se muestran entre corchetes junto a la etiqueta del evento. Los estados separan eventos. También hay eventos diferidos
o eventos que solo ocurren cuando un objeto cambia a un estado que puede aceptarlos. Hay tres tipos de eventos: señales o
mensajes asincrónicos, que ocurren cuando el programa no espera un mensaje de respuesta; mensajes sincrónicos, que son
llamadas a funciones o subrutinas; y eventos temporales.
Los objetos materiales tienen persistencia (existen durante un largo periodo de tiempo), algunos objetos son temporales, es
decir que no duran mucho tiempo.
Cuando un objeto cambia de estado, algunos atributos cambian sus valores, y esto ocurre mediante un método, lo cuales
pueden precisar de una interfaz para realizar el cambio convirtiéndose en los objetos de la interfaz.
Los diagramas de estados no se crean para todas las clases, sino cuando:
Una clase tiene ciclo de vida complejo.
Una instancia de una clase podría actualizar sus atributos de varias maneras a través de su ciclo de vida.
Una clase tiene ciclo de vida operacional.
Dos clases son interdependientes.
El comportamiento actual del objeto depende de lo que haya ocurrido antes.
Al examinar el diagrama de estados se pueden encontrar errores y excepciones, viendo si los eventos ocurren en momentos
equivocados, si todos los eventos y estados están representados.
Un diagrama de estado solo debe lidiar con dos problemas: que un estado no tenga todas las transiciones dirigidas hacia el
estado o todas sus transiciones saliendo del mismo. Todo estado debe tener al menos una transición saliendo y entrando en el.
Historia del proceso unificado.
Es un proceso equilibrado, producto de varias décadas de desarrollo y uso práctico. Su desarrollo fue influenciado por varias
fuentes especialmente por los métodos Ericsson y Rational.
El método de Ericsson. Ericsson modelaba el sistema entero como un conjunto de bloques interconectados (en UML son
subsistemas implementados mediante componentes). Luego ensamblaba los bloques de más bajo nivel en subsistemas de más
alto nivel, para hacer al sistema más manejable. Identificaba los bloques estudiando los casos de negocio (hoy casos de uso),
previamente especificados, identificando para cada uno los bloques con los que debía cooperar. Con los conocimientos de las
responsabilidades de cada bloque, realizaba su especificación. Sus actividades de diseño producían un conjunto de diagramas de
bloques (que corresponden a los diagramas de clases) estáticos con sus interfaces, agrupados en subsistemas. Para cada caso de
uso se preparaba un diagrama de secuencia o colaboración que mostraban la comunicación entre bloques para llevar a acabo el
caso de uso. La especificación se preparaba como un grafo de estados y un grafo de transición de estados. Con este método se
podía crear una nueva configuración del sistema cambiando bloques que proporcionasen las mismas interfaces. Esencialmente
este método se conoce hoy como desarrollo basado en componentes. El creador de este método fue Ivar Jacobson.
EL lenguaje de descripción y especificación (SDL). Este estándar influenciado por el método de Ericsson, especificaba un
sistema como un conjunto de bloques interconectados que se comunicaban con otros solo mediante mensajes. Cada bloque
tenía un conjunto de procesos (término SDL para designar a las clases activas), el cual tenia instancias que interactuaban
mediante mensajes. SDL proponía Diagramas que eran especializaciones de los diagramas de clases, diagramas de actividad, de
colaboración y de secuencia. SDL sería sustituido por UML.
Objectory. Empresa fundada por Jacobson en la que desarrollaría el método del mismo nombre. En el se le daba un nombre al
concepto de caso de uso, se había desarrollado una técnica de representación y la idea se amplio para abarcar varias
aplicaciones
Los flujos de trabajo sucesivos se representaron en una serie de modelos: requisitos-casos de uso, análisis, diseño,
implementación y prueba. Se concibió al modelo como perspectiva del sistema, dándole importancia a las relaciones entre
modelos. La trazabilidad se volvió un requisito del desarrollo dirigido por casos de uso.
El método Rational. Rational compró Objectory con la tarea de unificar los principios básicos subyacentes en los procesos de
desarrollo existentes. En su trabajo decían que eran importantes el diseño OO, la abstracción, el encapsulamiento, la
reutilización y el prototipado.
Rational puso énfasis en la arquitectura y en el desarrollo iterativo. La idea de tener un conjunto de vistas en vez de meter
todo en un único diagrama, también vio la luz. Las vistas múltiples permitieron encontrar tanto a los usuarios como a los
desarrolladores lo que necesitaban para realizar sus objetivos con la vista adecuada.
El desarrollo iterativo fue visto como caótico y anárquico. El método de cuatro fases (comienzo, elaboración, construcción y
transición) se diseño para estructurar mejor y controlar el proceso durante las iteraciones.
Cuando se realizó la adquisición, se creo el proceso Objectory de Rational, añadiéndose sus características para
complementarse, principalmente ampliando el concepto de desarrollo iterativo pasando a ser un método dirigido por los riesgos
que consideraba la arquitectura en primer lugar, la cual obtuvo una definición precisa, considerada como la parte mas
significativa de la organización del sistema.
El lenguaje unificado de modelado. Este permitía expresar los resultados de las numerosas metodologías de OO existentes.
El proceso unificado
Es un proceso de desarrollo de software y un marco de trabajo genérico que puede especializarse para una gran variedad de
sistemas de software, para diferentes áreas de aplicación, diferentes tipos de organizaciones, diferentes niveles de aptitud y
diferentes tamaños de proyecto. Se basa en componentes, lo que quiere decir que el sistema de software a construir esta
formado por componentes de software interconectados mediante interfaces bien definidas. Utiliza UML para preparar todos los
esquemas de un sistema de software.
Los verdaderos aspectos definitivos del PU son: dirigido por casos de uso, centrado en la arquitectura, e iterativo e
incremental.
Centrado en la arquitectura. El concepto de arquitectura de software incluye los aspectos estáticos y dinámicos más
significativos del sistema. Surge de las necesidades de la empresa, como la perciben usuarios e inversores, y se refleja en los
casos de uso, aunque también está influenciada por otros factores, como la plataforma sobre la que funcionará el software, los
bloques de construcción reutilizables disponibles, consideraciones de implantación, sistemas heredados y requisitos no
funcionales. La arquitectura es una vista del diseño completo con las características más importantes resaltadas, dejando de
lado los detalles. El valor de la arquitectura esta dado por su comprensibilidad, adaptabilidad y reutilización.
Todo producto tiene función y forma. Ambas se deben equilibrar para el éxito del producto. La función corresponde a los casos
de uso y la forma a la arquitectura. Los primeros deben encajar en la arquitectura cuando se llevan a cabo, y la arquitectura
debe permitir el desarrollo de todos los CU requeridos, por lo que ambos deben evolucionar en paralelo. La forma debe
diseñarse para permitir al sistema evolucionar en todo momento. Para hallar tal forma se trabaja sobre la comprensión general
de los casos de uso claves del sistema (generalmente son el 5-10% de los CU).
Los arquitectos crean esquemas preliminares de la arquitectura comenzando por la parte que no es específica de los casos de
uso. Aunque se debe poseer una comprensión general de los casos de uso antes de comenzar la creación del esquema
arquitectónico. Luego se trabaja con un subconjunto de los casos de uso especificados con aquellos que representen las
funciones clave del sistema en desarrollo. Cada caso de uso seleccionado se especifica en detalle y se realiza en términos de
subsistemas, clases y componentes. A medida que los casos de uso se especifican y maduran, se descubre mas de la arquitectura
lo cual lleva a la maduración de mas casos de uso. Generando un proceso continúo.
Iterativo e incremental. Debido a que el proyecto puede durar mucho tiempo, es práctico dividir el trabajo en partes más
pequeñas o miniproyectos, cada uno de los cuales es una iteración que resulta en un incremento. Las iteraciones hacer
referencia a pasos en el flujo de trabajo y los incrementos al crecimiento del producto. Las iteraciones deben estar controladas,
es decir deben seleccionarse y ejecutarse de forma planificada.
Los desarrolladores basan la selección de los que se implementara en una iteración en dos factores. Primero, la iteración trata
un grupo de casos de uso que juntos amplían la utilidad del producto. Segundo, la iteración trata riesgos más importantes. Las
iteraciones sucesivas se construyen sobre los artefactos de desarrollo tal como quedaron al final de la última iteración. Al ser
miniproyectos, comienzan con los casos de uso y continúan a través del trabajo de desarrollo siguiente, que termina
convirtiendo en código ejecutable lo casos de uso que se desarrollaban en la iteración. Los incrementos no siempre son aditivos,
también pueden reemplazar los diseños anteriores.
En cada iteración se identifican y especifican los casos de uso relevantes, se crea un diseño utilizando la arquitectura
seleccionada como guía, se implementa el diseño mediante componentes, y se verifica que los componentes satisfacen los casos
de uso. Si una iteración cumple con sus objetivos el desarrollo sigue con la siguiente iteración.
Para tener el mayor grado de economía en el desarrollo, un equipo de proyecto debe seleccionar solo las iteraciones
requeridas para lograr el objetivo del proyecto, luego secuenciarlas en un orden lógico. Un proyecto exitoso solo debe tener
pequeñas desviaciones planificadas. Luego se irán añadiendo iteraciones nuevas junto con más desviaciones.
Hay muchos beneficios de un proceso iterativo controlado:
Reduce el costo de riesgo a los costos de un solo incremento. Al repetir una iteración se pierde solo el esfuerzo de esa
única iteración.
Reduce el riesgo de no sacar el producto a tiempo. Mediante la identificación temprana de riesgos es más fácil
resolverlos.
Acelera el ritmo del esfuerzo de desarrollo en su totalidad debido a que los desarrolladores trabajan de manera más
eficiente para tener resultados claros a corto plazo.
Reconoce que las necesidades y requisitos de los usuarios no se pueden definir completamente al principio. Hace más
fácil la adaptación de requisitos en iteraciones sucesivas.
Nacimiento Muerte
Cada ciclo se desarrolla a lo largo del tiempo en cuatro fases. Mediante una secuencia de modelos,
Tiempo se visualiza lo que sucede
en tales fases. En cada fase se puede descomponer más el trabajo en iteraciones con sus incrementos correspondientes. Cada
fase termina con un hito, el cual se determina por la disponibilidad de un conjunto de artefactos; es decir, ciertos modelos o
documentos han sido desarrollados hasta alcanzar un estado predefinido.
Disciplinas. Conjunto de actividades relacionadas (flujos de trabajo) vinculadas a un área especifica dentro del proyecto total.
Las más importantes son: requerimientos, análisis, diseño, implementación y prueba. El agrupamiento de actividades en
disciplinas ayuda a comprender el proyecto en una visión de cascada.
Cada disciplina está asociada con un conjunto de modelos que se desarrollan, los cuales están compuestos por artefactos. Los
artefactos más importantes que cada disciplina realiza son:
El PU consiste en una serie de disciplinas o flujos de trabajo que van desde los requisitos hasta las pruebas. Los flujos de
trabajo desarrollan modelos desde el de casos de uso hasta el modelo de prueba.
Hitos. Puntos de control en que los participantes del proyecto revisan el progreso del proyecto. Cada fase finaliza con un hito,
el cual se determina por la disponibilidad de un conjunto de artefactos. Los hitos tienen muchos objetivos. El más crítico es que
los directores deben tomar ciertas decisiones antes de que el trabajo continúe con la siguiente fase. También permite controlar
dirección y progreso del trabajo según pasa por los puntos clave. Los distintos tipos de hitos son: principales, los que se obtienen
al final de cada fase; y secundarios, los que se obtienen al final de cada iteración.
Al final se obtiene un conjunto de datos a partir del seguimiento del tiempo y esfuerzo consumido en cada fase, los cuales son
útiles para estimar tiempos y recursos en otros proyectos, en la asignación de recursos durante el transcurso del proyecto y para
el control del proyecto contrastado con las planificaciones.
La figura muestra en la columna izquierda los flujos de trabajo, las curvas son aproximaciones de hasta donde se llevan a cabo
los flujos de trabajo en cada fase
Durante la fase de inicio se desarrolla una descripción del producto final a partir de una buena idea y se presenta el análisis de
negocio para el producto. Se crea un modelo de casos de uso simplificado que contenga los casos de uso más críticos. La
arquitectura consiste típicamente en un simple esbozo que muestra los subsistemas más importantes. En esta fase se identifican
y priorizan los riesgos mas importantes, se planifica detalladamente la fase de elaboración y se estima el proyecto.
Durante la fase de elaboración, se especifican en detalle la mayoría de los casos de uso del producto y se diseña la arquitectura
del sistema, ya que la relación entre ésta y el sistema es primordial. La arquitectura se expresa en forma de vistas de todo los
modelos del sistema representados junto al sistema entero. Durante esta fase se realizan los casos de uso más críticos
identificados en la primera fase. El resultado de esta fase es una línea base de la arquitectura. Al final de esta fase, se podrán
planificar las actividades y estimar los recursos necesarios para terminar el proyecto. Se debe considerar si la arquitectura, el
plan y los casos de uso son lo suficientemente estables y los riesgos están bien controlados.
Durante la fase de construcción se crea el producto. La línea base de la arquitectura crece hasta convertirse en un sistema
completo. La descripción evoluciona hasta convertirse en un producto preparado para ser entregado a los usuarios. Al final de
esta fase, el producto contiene todos los casos de uso acordados para el desarrollo de la versión del producto correspondiente,
aunque puede no estar libre de defectos, la mayoría de los cuales se descubrirán y eliminaran en la fase de transición. La
pregunta clave en esta fase es si el sistema cumple suficientemente las necesidades de algunos usuarios como para realizar la
entrega.
La fase de transición cubre el periodo durante el cual el producto se convierte en versión beta. Los desarrolladores corrigen los
defectos y se incorporan algunas mejoras en una versión general que se dirige a toda la comunidad de usuarios. Esta fase
consiste en la fabricación, formación del cliente, proporcionar ayuda y asistencia, y la colección de los defectos. Los defectos se
dividen en dos categorías: los que tienen suficiente impacto como para justificar una nueva versión incrementada (versión delta)
y los que se pueden corregir en una próxima entrega normal.
Proceso
Plantilla
Proceso Participantes
Proceso Automatización Proceso
Resultado
Proceso
Personas. Hay muchas personas implicadas en el desarrollo del producto durante toda su vida, de distintas maneras, como
financiándolo, planificándolo, desarrollándolo, etc. Por lo tanto, el proceso que guía tal desarrollo debe estar orientado a las
personas que lo utilizan.
El modo en que se organiza y gestiona un proyecto de software afecta profundamente a las personas implicadas en él. Hay
conceptos que tienen un papel muy importante, como:
Viabilidad del proyecto. La mayoría de la gente no disfruta de trabajar en proyectos imposibles. Una aproximación
iterativa en el desarrollo permite juzgar la viabilidad del proyecto tempranamente, lo cual es bueno para descartar los
imposibles rápidamente.
Gestión del riesgo. Cuando la gente siente que los riesgos no están analizados y reducidos, se genera cierta
incomodidad. Explorar riesgos significativos en fases tempranas atenúa el problema.
Estructura de los equipos. Las personas trabajan más eficientemente en grupos pequeños (6-8 personas). Una buena
arquitectura, con interfaces bien definidas entre subsistemas y componentes hace posible una división del esfuerzo
de este tipo.
Planificación del proyecto. La moral de la gente tiende a caer si siente que la planificación no es realista. Las técnicas
usadas en las fases de inicio y elaboración permiten a los desarrolladores tener una buena noción de cual debería ser
el resultado del proyecto. Esto permite crear un plan de proyecto realista para el esfuerzo requerido y una definición
del tiempo necesario para lograr los objetivos.
Facilidad de comprensión del proyecto. La gente quiere saber lo que está haciendo. La descripción de la arquitectura
da una visión general para cualquiera que esté implicado en el proyecto.
Sensación de cumplimiento. En un ciclo de vida iterativo, las personas reciben retroalimentación frecuentemente, lo
cual hace que lleguen a conclusiones. Esto acelera el ritmo de trabajo generando una sensación de progreso.
Convertir recursos en trabajadores. Las personas pueden ocupar muchos puestos diferentes en una organización de
desarrollo de software. Una organización se enfrenta con una tarea esencial siempre que haga que una persona pase de recurso
latente aun puesto de trabajador.
El término trabajador denomina a los puestos a los que se pueden asignar personas. Un trabajador también puede representar
a un grupo de personas que trabajan juntas. Una persona puede ser muchos trabajadores durante la vida del proyecto. Un tipo
de trabajador es un papel que un individuo puede desempeñar en el desarrollo de software. El término rol hace referencia a los
papeles que cumple un trabajador.
Cada trabajador es responsable de un conjunto de actividades. Para trabajar eficazmente, los trabajadores necesitan, la
información requerida para llevar a cabo sus actividades, comprender sus roles en relaciones con los de otros trabajadores. Las
herramientas que emplean deben ser las adecuadas y no solo deben ayudar a los trabajadores a realizar sus actividades, sino
también deben aislarles de la información que no les es relevante.
Al asignar los trabajadores a un proyecto, el líder del proyecto debe identificar las aptitudes de las personas y emparejarlas con
las aptitudes requeridas de los trabajadores. Algunas aptitudes se pueden conseguir mediante formación, otras mediante
experiencia.
Al asignar recursos se debería minimizar el trasiego de artefactos de un recurso a otro de modo que el flujo del proceso sea lo
más continuo posible.
Los proyectos construyen el producto. Un proyecto en desarrollo da como resultado una nueva versión del producto. A través
de su ciclo de vida, un equipo de proyecto debe preocuparse del cambio, las iteraciones y el patrón organizativo dentro del cual
se conduce el proyecto:
Una secuencia de cambio. Los proyectos de desarrollo de sistemas obtienen productos como resultados, pero el
camino hasta ellos es una serie de cambios. Cada ciclo, fase e iteración, modifica el sistema.
Una serie de iteraciones. Dentro de cada fase de un ciclo, los trabajadores llevan a cabo las actividades de la fase a
través de una serie de iteraciones, cada una de las cuales implementa un conjunto de casos de uso relacionados o
atenúa algunos riesgos. Cada iteración se considera un miniproyecto.
Un patrón organizativo. Un proyecto requiere que un equipo logre un resultado dentro de las restricciones del
negocio (tiempo, costo y calidad). La idea de proceso es proporcionar un patrón dentro del cual las personas en su
papel de trabajadores ejecutan un proyecto, el cual indica los tipos de trabajadores que el proyecto necesita y los
artefactos por lo cuales hay que trabajar. El proceso también ofrece un montón de guías heurísticas y practicas de
documentación que ayudan a las personas a realizar su trabajo.
El producto. En el contexto del PU, el producto es un sistema de software. El término producto se refiere al sistema entero y
no solo al código que se entrega.
El sistema de software son todos los artefactos necesarios para representarlo de forma comprensible para máquinas u
hombres. Las maquinas son las herramientas, compiladores u ordenadores destinatarios. Los hombres son los trabajadores y los
interesados. Entre los trabajadores están los directores, arquitectos, analistas, diseñadores, etc. Entre los interesados se
encuentran los inversores, usuarios, jefes de proyecto, personal de producción, etc.
Artefactos. Cualquier tipo de información creada, cambiada, producida o utilizada por los trabajadores en el desarrollo del
sistema.
Hay dos tipos de artefactos: artefactos de ingeniería y artefactos de gestión. Los artefactos de ingeniería se crean durante las
distintas fases del proceso, sin embargo el desarrollo de software también requiere de artefactos de gestión. Varios de estos
artefactos tienen un tiempo de vida corto. Los artefactos de gestión incluyen las especificaciones del entorno de desarrollo.
El tipo de artefacto más usado en el PU es el modelo. Cada trabajador necesita una perspectiva diferente del sistema. Cuando
se diseña el PU se identifican todos los trabajadores y cada una de las perspectivas que podrían necesitar, las cuales se
estructuran en unidades más grandes, de modo que un trabajador puede tomar una perspectiva concreta del conjunto de
modelos.
La construcción de un sistema es un proceso de construcción de modelos, usados para describir todas las perspectivas
diferentes del sistema. El PU proporciona un conjunto de modelos cuidadosamente seleccionados con el cual empezar, el cual
hace claro el sistema para los trabajadores, incluyendo a los clientes, usuarios y jefes de proyecto. El modelo no se preocupa por
la composición del sistema sino por lo que este puede hacer para los usuarios, además el usuario de un modelo no precisa de
otros modelos para interpretarlo. Debe describir las interacciones entre el sistema y su entorno.
El proceso. El término proceso se refiere a los procesos de negocio claves en una empresa de desarrollo de software. Hace
referencia a un contexto que sirve como plantilla que puede reutilizarse para crear instancias de ella. Se considera que el
proyecto es una instancia del proceso.
El proceso de desarrollo de software es una definición del conjunto completo de actividades necesarias para convertir los
requisitos de usuario en un conjunto consistente de artefactos que conforman un producto software, y para convertir los
cambios sobre esos requisitos en un nuevo conjunto consistente de artefactos.
El resultado del proceso es un conjunto de artefactos, una línea base que conforma una aplicación o una familia de ellas que
forman un producto de software.
Un proceso es una definición de un conjunto de actividades, no su ejecución.
Un proceso cubre todos los ciclos más comunes de desarrollo. En versiones posteriores, una instancia del proceso toma
cambios incrementales en los requisitos y produce cambios incrementales en el conjunto de artefactos. Se describe en términos
de flujos de trabajo. Describe como fluye el proceso a través de los diferentes trabajadores, y como ellos crean, producen y usan
los artefactos de los demás.
Las herramientas. Sin soporte de las herramientas un proceso debe sostenerse por mucho trabajo manual, será difícil
mantener actualizados los modelos y la implementación. El desarrollo iterativo e incremental será más difícil y terminará siendo
inconsistente. Todo esto terminaría disminuyendo la productividad del equipo aumentando los tiempos.
Las herramientas se desarrollan para automatizar los procesos, para incrementar la productividad y la calidad, y para reducir el
tiempo de desarrollo. A medida que se introduce el soporte por herramientas se tiene un proceso más formal. Se pueden incluir
nuevas actividades que no serían prácticas de realizar sin herramientas.
El proceso dirige las herramientas. El proceso especifica la funcionalidad de las herramientas. La existencia del proceso es el
único motivo para necesitar las herramientas.
Un proceso automatizado proporciona un medio eficiente de permitir el trabajo concurrente del conjunto completo de los
trabajadores, y proporciona una forma de comprobar la consistencia de todos los artefactos. Las herramientas deben ser fáciles
de usar, sencilla de comprender y de manejar para los trabajadores.
Debe haber un equilibrio entre proceso y herramientas. El desarrollo del proceso y su soporte por herramientas debe ser
simultáneo. El proceso debe aprender de las herramientas y las herramientas deben soportar un proceso bien pensado.
El objeto del flujo de trabajo de los requisitos
El propósito fundamental del flujo de trabajo de los requisitos es guiar el desarrollo hacia el sistema correcto a partir de una
descripción de los requisitos del sistema suficientemente buena como para llegar a un acuerdo entre el cliente y los
desarrolladores sobre que debe y que no debe hacer el sistema.
El cliente debe ser capaz de leer y entender el resultado de la captura de requisitos, para lo cual se debe usar el lenguaje del
cliente para describir esos resultados, cuidándose a la hora de introducir formalidad y estructura, y detalles del funcionamiento
del sistema.
Visión general de la captura de requisitos. Así como cada sistema es diferente, hay diferentes puntos de partida para la
captura de requisitos. Ciertos pasos son factibles en la mayoría de los casos, lo que permite sugerir un flujo de trabajado
arquetípico, que incluye los siguientes pasos que en realidad no se llevan a cabo separadamente:
Enumerar los requisitos candidatos. Durante la vida del sistema, los clientes, usuarios, analistas y desarrolladores
aparecen con muchas ideas que pueden convertirse en requisitos candidatos, por lo que se los lista. Esa lista crece a
medida que se añaden nuevos elementos y decrece cuando alguno de ellos se convierten en requisitos y se
transforman en artefactos como casos de uso.
Comprender el contexto del sistema. Un modo de expresar el contexto es mediante el modelo del dominio, que
describe los conceptos importantes del contexto como objetos del dominio, y los enlaza entre sí. Otra manera de
expresar el contexto es el modelo de negocio que se describe como un supraconjunto de un modelo del dominio cuyo
objetivo es describir los procesos para entenderlos. Especifica que procesos de negocio soportará el sistema.
Capturar requisitos funcionales. Los casos de uso capturan tanto los requisitos funcionales como los no funcionales.
Cada casos de uso representa una forma de usar el sistema y cada usuario necesita de varios casos de uso distintos.
Capturar requisitos no funcionales. Especifican propiedades del sistema como restricciones del entorno o de la
implementación, rendimiento, dependencias de la plataforma, facilidad de mantenimiento, etc. Un requisito de
rendimiento impone condiciones sobre los requisitos funcionales y afectan solo a ciertos casos de uso.
Requisitos adicionales. Son requerimientos no funcionales que no pueden asociarse a ningún caso de uso en
particular. Se capturan de forma muy parecida a como se hacía en la especificación de requisitos tradicional, es decir
con una lista de requisitos. Luego se utilizan durante el análisis junto al modelo de casos de uso.
Diagramas de casos de usos: Dibujar casos de uso, identificando actores. Muestra las relaciones de dependencia, herencia y
asociación. Se utiliza para modelar los requerimientos (captura requisitos funcionales) y el contexto del sistema (determina la
frontera).
Diagramas de Roles: Identifica los roles, significa que varios usuarios distintos desempeñan ese rol.
Diagrama de Secuencia: Se instancian los roles y se crea un escenario y se muestran las colaboraciones entre objetos.
Diagrama de Proceso: Muestra en detalle la información que necesita.
Hay varias diferencias importantes entre el modelado del negocio y el modelado del dominio que hacen que sea más
recomendable la realización completa del modelo del negocio:
Las clases del dominio se obtienen mediante el conocimiento de varios expertos del dominio o del conocimiento
asociado con sistemas similares al que se desarrolla. Las entidades se derivan de los clientes del negocio,
identificando los casos de uso del negocio y luego buscando las entidades. Cada entidad debe venir motivada por su
uso en un caso de uso del negocio.
Las clases del dominio tiene atributos pero normalmente pocas o ninguna operación. Las entidades del negocio son
identificadas junto con los trabajadores que participaran en la realización de los casos de uso que utilizan a las
entidades. Además se identifican como usaran los trabajadores las entidades mediante operaciones que ofrece cada
entidad, las cuales se derivan de los clientes y se las pueden rastrear hasta ellos.
Los trabajadores identificados se usan como punto de partida para derivar un primer conjunto de actores y casos de
uso para el sistema en desarrollo. Esto permite el rastreo de cada caso de uso.
Artefactos
Los artefactos fundamentales que se usan en la captura de requisitos son el modelo de casos de uso, que incluye a los casos de
uso y a los actores; aunque también puede haber otros artefactos como prototipos de interfaz de usuario.
Modelo de casos de uso. Permite a los desarrolladores de software y a los clientes llegar a un acuerdo sobre los requisitos, o
sea las condiciones y posibilidades que debe cumplir el sistema; y proporciona la entrada fundamental para el análisis, el diseño
y las pruebas.
Básicamente es un modelo del sistema que contiene actores, casos de uso y sus relaciones. Se puede hacer bastante grande y
difícil de comprender a primera vista, de modo que es necesario un medio para abordarlo en partes más pequeñas. UML
permite presentar el modelo en diagramas que muestran los actores y los casos de uso desde distintos puntos de vista con
diferentes propósitos.
Actor. El modelo de casos de uso describe lo que hace el sistema para cada tipo de usuario, los cuales se representan
mediante uno o más actores. Cada sistema externo que interactúa con el sistema también esta representado por uno o más
actores. Es decir que los actores representan terceros fuera del sistema que colaboran con el, y una vez se los identifica, se
tendrá identificado el entorno externo al sistema.
Los actores suelen corresponderse con trabajadores. Los roles que desempeña un trabajador pueden emplearse para obtener
los roles que cumple el actor del sistema correspondiente. Luego, se dota a cada trabajador con un casos de uso del sistema
para cada uno de sus roles. Tal caso de uso proporciona un valor al actor cuando representa el papel del trabajador.
Un actor juega un papel por cada caso de uso con el que colabora. Cuando un usuario concreto interactúa con el sistema, la
instancia correspondiente del actor está desarrollando ese papel. Cualquier entidad que se ajuste a un actor puede actuar como
una instancia del actor.
Caso de uso. La forma en que un actor usa el sistema se representa con un caso de uso, que son fragmentos de funcionalidad
que el sistema ofrece para aportar un resultado de valor para sus actores. Especifica una secuencia de acciones que el sistema
puede llevar a cabo interactuando con sus actores, incluyendo alternativas dentro de la secuencia.
Especifica el comportamiento de instancias de los casos de uso.
Según el vocablo UML, un caso de uso es un clasificador, por lo que contiene operaciones y atributos. Una descripción de un
caso de uso puede incluir diagramas de estados, de actividad, colaboración, y secuencia.
Una instancia de caso de uso es la ejecución de un caso de uso, es decir lo que el sistema lleva a cabo al obedecer a un caso de
uso. Cuando se lleva a cabo una instancia de un caso de uso, ésta interactúa con instancias de actores, y ejecuta una secuencia
de acciones según se especifica en el caso de uso. Tal secuencia puede tener alternativas, y son distintos caminos a lo largo del
caso de uso, pudiendo ser similar a lo siguiente:
1. La instancia del caso de uso se inicia y pasa a estado de comienzo.
2. El caso de uso es invocado por un mensaje externo de un actor.
3. Transita a otro estado mediante una secuencia de acciones, la cual contiene cálculos internos, selección del camino y
mensajes de salida hacia un actor.
4. Queda a la espera de otro mensaje externo.
5. Es invocado por un nuevo mensaje. Esto puede continuar sobre muchos estados hasta que se termina la instancia del
caso de uso.
Generalmente es una instancia de un actor la que invoca a la instancia del caso de uso, pero también puede ser un evento
interno la que la invoque.
Los atributos de los casos de uso representan los valores que las instancias de casos de uso manipulan durante su ejecución.
Tales valores son locales a la instancia.
Las instancias de casos de uso no interactúan entre sí, más bien lo hacen a través de instancias de actores. Esto se hace para
mantener la simplicidad del modelo de casos de uso, su legibilidad y comprensión.
Descripción de la arquitectura. La descripción de la arquitectura contiene una vista de la arquitectura del modelo de casos de
uso, que representa los casos de uso significativos para la arquitectura. Ésta debería incluir los casos de uso que describan
alguna funcionalidad importante y crítica, o que impliquen algún requisito importante a desarrollarse pronto dentro del ciclo de
vida del software. Esa vista de la arquitectura funciona como entrada cuando se priorizan los casos de uso para su desarrollo
dentro de cada iteración.
Glosario. El glosario se usa para definir términos comunes importantes que el equipo usa al describir el sistema. Esto es muy
útil para alcanzar un consenso entre los desarrolladores relativo a la definición de conceptos y reducir el riesgo de confusiones.
El glosario se suele obtener a partir de un modelo del negocio o del dominio, pero al ser mas informal, es mas fácil de
mantener y mas intuitivo a la hora de ser usado. El glosario debe centrarse más en el sistema que en su contexto.
Prototipo de interfaz de usuario. Ayudan a comprender y especificar las interacciones entre actores humanos y el sistema
durante la captura de requisitos. No solo ayuda a desarrollar una interfaz grafica mejor, sino también a comprender mejor los
casos de uso.
Trabajadores
Es un puesto al cual se puede asignar a una persona. Con cada trabajador hay una descripción de las responsabilidades y
comportamiento esperado del mismo. Cuando se asignan los recursos humanos a un proyecto, un trabajador representa el
conocimiento y las habilidades que alguien necesita para hacerse cargo del trabajo como trabajador del proyecto. Se pueden
identificar tres trabajadores que participan en el modelado de casos de uso, cada uno con su conjunto de operaciones y con
diferentes responsabilidades requeridas:
Analista de sistemas. Responsable del conjunto de requisitos que están modelados en los casos de uso, lo que incluye todos
los requisitos funcionales y no funcionales que son casos de uso específicos. El analista de sistemas es responsable de delimitar
el sistema, hallando los actores y los casos de uso y asegurando que el modelo de casos de uso es completo y consistente. Para
la consistencia, el analista de sistemas puede utilizar un glosario para acordar términos.
Aunque el analista de sistemas es responsable del modelo de casos de uso y de los actores que contiene, no es responsable de
cada caso de uso en particular. Esto es una responsabilidad aparte. El analista también dirige el modelado y coordina la captura
de requisitos.
Hay un analista de sistemas para cada sistema. No obstante está respaldado por un equipo.
Especificador de casos de uso. Habitualmente la captura de requisitos puede no estar dirigida por un solo individuo. El analista
suele estar asistido por otros trabajadores que asumen las responsabilidades de las descripciones detalladas de uno o más casos
de uso. Estos trabajadores son los especificadores de casos de uso.
Cada especificador de casos de uso necesita trabajar estrechamente con los usuarios reales de sus casos de uso.
Diseñador de interfaz de usuario. Dan forma visual a las interfaces de usuario, lo que puede implicar el desarrollo de
prototipos de interfaces de usuario para algunos casos de uso, habitualmente un prototipo para cada actor. Es conveniente que
de forma a las interfaces de usuario de uno o más actores.
Arquitecto. Participa en el flujo de trabajo de requisitos para describir la vista de la arquitectura del modelo de casos de uso.
Esta vista es una entrada importante para planificar las iteraciones.
Flujo de trabajo
El diagrama muestra qué trabajadores ejecutan qué actividades, cada una situada en el mismo campo que el trabajador que la
ejecuta. Cuando los trabajadores ejecutan las actividades, crean y modifican artefactos. Los flujos de trabajo son una secuencia
de actividades que están ordenados, así que una actividad produce una salida que le sirve de entrada a la siguiente actividad. El
diagrama muestra solo el flujo lógico. En la realidad no es necesario trabajar mediante actividades en secuencia, se puede
trabajar por múltiples vías que producen un resultado final equivalente.
Una actividad puede ser retomada varias veces, y cada una de estas puede acarrear la ejecución de una sola fracción de la
actividad.
Primero el analista ejecuta la actividad encontrar actores y casos de uso para preparar una primera versión del modelo de
casos de uso, con los actores y casos de uso identificados. Debe asegurar que el desarrollo del modelo captura todos los
requisitos que son entradas del flujo de trabajo, es decir, la lista de características y el modelo de dominio/negocio. Entonces el
arquitecto identifica los casos de uso relevantes arquitectónicamente para dar entradas a la priorización de casos de uso que
van a ser desarrollados en la iteración actual. Luego los especificadores de casos de uso describen todos los casos de uso
priorizados, mientras que los diseñadores de interfaz de usuario sugieren las interfaces adecuadas para cada actor basándose en
los casos de uso. Luego el analista reestructura el modelo definiendo generalizaciones entre los casos de uso para hacerlo lo más
comprensible posible.
Los resultados de la primera iteración a través de este flujo de trabajo son una primera versión del modelo de casos de uso, los
casos de uso y cualquier prototipo de interfaz de usuario asociado. Las siguientes iteraciones generaran nuevas versiones,
recordando que los artefactos se completan y mejoran en cada iteración.
Actividades
Encontrar actores y casos de uso. Se identifican los actores y los casos de uso para: delimitar el sistema de su entorno; esbozar
quién y qué (actores) interactuaran con el sistema y que funcionalidad se espera del sistema; y capturar y definir el glosario para
la creación de descripciones detalladas de las funcionalidades del sistema.
La identificación de actores y casos de uso es decisiva para obtener los requisitos y es responsabilidad del analista, aunque no
hará todo el trabajo solo, ya que requiere entradas de un equipo que incluye al cliente, los usuarios, y otros analistas.
Consta de 4 pasos: encontrar los actores, encontrar los casos de uso, describir brevemente los casos de uso, y describir el
modelo de casos de uso completo. Estos pasos no tienen que seguir ningún orden y pueden hacerse simultáneamente.
El resultado de esta actividad es una nueva versión del modelo de casos de uso con actores y casos de uso nuevos o
modificados.
Priorizar casos de uso. Su propósito es dar entradas a la priorización de los casos de uso para determinar cuales son necesarios
para el desarrollo. Los resultados se recogen en la vista de la arquitectura del modelo de casos de uso, la cual es revisada y usada
como entrada al planificar una iteración. La vista de la arquitectura del modelo de casos de uso debe mostrar los casos de uso
significativos arquitectónicamente.
Detallar un caso de uso. El objetivo es describir el flujo de sucesos de cada casos de uso en detalle, es decir, su comienzo, final
e interacciones con actores.
Con el modelo de casos de uso y los diagramas de casos de uso asociados como punto de comienzo, el especificador de u caso
de uso individual puede ya describir cada caso de uso en detalle. Debe trabajar estrechamente con los usuarios reales de los
casos de uso, necesita entrevistarse con usuarios, tomar notas de su comprensión de los casos de uso, discutir propuestas con
ellos, y solicitarles que revisen las descripciones de los casos de uso.
El resultado de la actividad es la descripción detallada de un caso de uso en particular en forma de texto y diagramas.
Prototipar la interfaz de usuario. Su objetivo es construir un prototipo de interfaz de usuario, la cual les permitirá llevar a cabo
los casos de uso de modo eficiente. Esto se hace en varios pasos, comenzando con los casos de uso e intentamos discernir que
se necesita de las interfaces de usuario para habilitar los casos de uso para cada actor. Este es el diseño lógico de la interfaz de
usuario. Luego se crea el diseño físico y se desarrollan prototipos que ilustren como pueden usar el sistema los usuarios para
ejecutar los casos de uso. Mediante la especificación de que se necesita antes de decidir como realizar la interfaz de usuario, se
llegan a comprender las necesidades antes de intentar realizarlas.
El resultado final de esta actividad es un conjunto de esquemas de interfaces de usuario y prototipos de interfaces de usuario
que especifican la apariencia de esas interfaces de cara a los actores más importantes.
Antes de que tenga lugar esta actividad, el analista ya identificó los actores y los casos de uso, dibujándolos en diagramas, y
explicando el modelo de casos de uso como un todo. Los especificadores de casos de uso desarrollaron una descripción
detallada de cada caso de uso. En este punto el analista de sistemas puede reestructurar el conjunto completo de casos de uso
para hacer que el modelo sea más fácil de entender y de trabajar con él. El analista debe buscar comportamientos compartidos y
extensiones.
Todos los resultados obtenidos son un buen punto de partida para los siguientes flujos de trabajo: análisis, diseño,
implementación, y prueba. Los casos de uso dirigirán el trabajo a lo largo de estos flujos de trabajo iteración por iteración. Po
cada caso de uso del modelo de casos de uso, se identifica una realización de casos de uso correspondiente en las fases de
análisis y diseño y un conjunto de casos de prueba en la fase de pruebas. Entonces, los casos de uso enlazaran directamente los
diferentes flujos de trabajo.
Modelo de análisis
Nos ayuda a refinar los requisitos. Analizar los requisitos en la forma de un modelo de análisis es importante ya que:
Un modelo de análisis ofrece una especificación más precisa de los requisitos que la que tenemos como resultado de
la captura de requisitos, incluyendo al modelo de casos de uso.
Un modelo de análisis se describe utilizando el lenguaje de los desarrolladores, y se puede por tanto introducir un
mayor formalismo y ser utilizado para razonar sobre los funcionamientos internos del sistema.
Un modelo de análisis estructura los requisitos de un modo que facilita su comprensión, su preparación, su
modificación, y en general, su mantenimiento.
Un modelo de análisis puede considerarse como una primera aproximación al modelo de diseño (aunque es un
modelo por sí mismo), y es por tanto una entrada fundamental cuando se da forma al sistema en el diseño y en la
implementación.
Creación del modelo de análisis a partir de los casos de uso. En él, se describen un conjunto de Clases del Análisis que se
utilizan para realizar una descripción abstracta de la realización de los casos de uso del modelo de casos de uso. Las clases del
análisis luego evolucionan hacia otras clases más detalladas en el Modelo del Diseño. El modelo de análisis crece
incrementalmente a medida que se analizan más y más casos de uso. En cada iteración elegimos un conjunto de casos de uso y
los reflejamos en el modelo de análisis. Construimos el sistema como una estructura de clasificadores (clases del análisis) y
relaciones entre ellas. También describimos las colaboraciones que llevan a cabo los casos de uso, es decir las realizaciones de
los casos de uso.
Tipo de clases
Entidad: Representan algo real o abstracto sobre el cual el sistema necesita almacenar datos.
Representan la memoria esencial del negocio. Los objetos del negocio (business objects) son normalmente objetos
entidad. Ejemplos de objetos entidad pueden ser empleado, alumno, etc.
Interfaz: Representan lo objetos técnicos requeridos para vincular la aplicación con el entorno. Representan el vínculo a
través del cual el sistema recibe o suministra datos e información al entorno. Típicamente incluyen interfaces con el
usuario (pantallas, reportes, etc.) e interfaces con otras aplicaciones.
Control: Contienen comportamiento que no pertenece naturalmente ni a objetos entidad ni de interfaz. Son
normalmente objetos transitorios, como ser un controlador de reportes.
Desarrollo ágil del Software
Los procesos de desarrollo del software rápido se diseñan para producir rápidamente un software útil. El software se
desarrolla como una serie de incrementos, cada uno de los cuales agrega funcionalidades al sistema. Las siguientes son las
características compartidas por los distintos enfoques del desarrollo ágil:
1. La especificación, el diseño y la implementación están entrelazadas. La especificación no es detallada y la
documentación del diseño es mínima o autogenerada por el IDE. El documento de requerimientos de usuario solo
define las características más importantes del sistema.
2. El sistema se desarrolla en diferentes versiones. Los usuarios finales y otros colaboradores intervienen en la
especificación y evaluación de cada versión, proponiendo cambios y nuevos requerimientos a implementar en
versiones posteriores.
3. Las UI de usuario se desarrollan usando un sistema interactivo, que permita que el diseño de la interfaz se realice
rápidamente.
Los métodos agiles son métodos de desarrollo incremental donde los incrementos son mínimos, y las versiones nuevas se
liberan cada dos o tres semanas. Implican un alto involucramiento de los clientes para conseguir una retroalimentación rápida
de los requerimientos. Minimizan la documentación con el uso de comunicación informal.
Métodos Ágiles
En la década de 1980 y a inicios de la siguiente, había una visión difundida sobre cual forma era la mas adecuada para lograr un
mejor software. Usando métodos de análisis y diseño apoyados por herramientas CASE, así como procesos de desarrollo
rigurosos y controlados. Requerían grandes equipos que incluso podían estar geográficamente dispersos, y tardaban mucho en
especificar e implementar el software. Tales enfoques incluyen costos operativos significativos, que se ven recompensados
siempre que el trabajo se realice entre diversas compañías y el sistema sea de gran porte.
Esto no resulta conveniente cuando se aplica a sistemas de negocios pequeños y medianos. Los costos monetarios y de tiempo
no justifican el producto final.
En la década de 1990 el descontento generado por los enfoques existentes condujo a que se propusieran métodos agiles para
enfocar el desarrollo en el software en vez del diseño y la documentación. Los métodos agiles se apoyan universalmente en el
enfoque incremental para la especificación, el desarrollo y la entrega de software. Son adecuados para el desarrollo de
aplicaciones en la que los requerimientos cambian rápidamente durante el proceso de desarrollo. Tienen la intención de
entregar con prontitud el software a los clientes, quienes a cambio propondrán nuevos requerimientos para incluir en
posteriores implementaciones del sistema. Estos métodos simplifican la burocracia y eliminan la documentación que nunca se
empleará.
Los métodos agiles son muy exitosos para ciertos tipos de desarrollos de sistemas:
1. Una compañía de software desarrolla un producto pequeño o mediano para su venta.
2. Diseño de sistemas a la medida dentro de una organización con un claro compromiso del cliente por intervenir en el
proceso de desarrollo y en un ambiente con pocas reglas y restricciones que afecten al software.
Manifesto ágil.
Estamos descubriendo formas mejores de desarrollar software tanto por nuestra propia experiencia como ayudando a
terceros. A través de este trabajo hemos aprendido a valorar:
Individuos e interacciones sobre procesos y herramientas.
Software funcionando sobre documentación extensiva.
Colaboración con el cliente sobre negociación contractual.
Respuesta ante el cambio sobre seguir un plan.
Esto es, aunque valoramos los elementos de la derecha, valoramos más los de la izquierda.
Mantenimiento y Evolución.
¿Los sistemas que se desarrollan usando un enfoque ágil se mantienen, a pesar del énfasis en el proceso de desarrollo de
minimizar la documentación formal?
¿Los métodos ágiles pueden usarse con efectividad para evolucionar un sistema como respuesta a requerimientos de cambio
por parte del cliente?
En la práctica, frecuentemente, la documentación se mantiene desactualizada y no refleja con precisión al código del sistema.
Algunos de los metodólogos sugieren que escribir la documentación es una perdida de tiempo y que la clave del éxito está en
producir un código legible de alta calidad. Así es que las prácticas ágiles enfatizan la importancia de escribir un código bien
estructurado y destinar los esfuerzos a mejorar el código. Es por esto que la falta de documentación nunca debe ser un
problema. Sin embargo, la documentación que nunca debe faltar es el documento de requerimientos del sistema. Sin él, es
difícil valorar el efecto de los cambios propuestos al sistema. Llevar una documentación incremental e informal puede hacer que
el mantenimiento del sistema sea muy difícil.
Seleccionar
Desglosar la Planear la
historia de
historia en liberacion
usuario para la
tareas
liberación.
Desarrollar/integr
Evaluar el Liberación ar/poner a
sistema del software prueba el
software
En la programación extrema, los requerimientos se expresan como escenarios llamados historias de usuario, que se
implementan de modo directo como una serie de tareas. Los programadores trabajan de a pares y antes de escribir el código
desarrollan pruebas para cada tarea. Entre liberaciones del sistema existen lapsos breves.
El desarrollo incremental se apoya en pequeñas y frecuentes liberaciones del sistema. Los requerimientos se fundamentan en
simples historias de cliente o en escenarios que se usan como base para decidir que funcionalidad incluir. La inclusión del cliente
se apoya a través de un enlace continuo entre él y el equipo de desarrollo. El representante del cliente participa activamente,
definiendo las pruebas de aceptación para el sistema. Las personas, no los procesos, se basan en la programación en pares, en la
propiedad colectiva del código del sistema y en un proceso de desarrollo sustentable que no incluya jornadas laborales largas. El
cambio se acepta mediante liberaciones regulares del sistema a los clientes, desarrollo de primera prueba, refactorización para
evitar degeneración del código e integración continua de nueva funcionalidad. La simplicidad se mantiene mediante la
refactorización constante, que mejora la calidad del código, y con el uso de diseños simples que no anticipan innecesariamente
futuros cambios al sistema.
El cliente discute los cambios con el equipo de desarrollo, debatiendo los posibles escenarios. En conjunto, desarrollan una
tarjeta de historia que encapsula las necesidades del cliente. Luego, el equipo de desarrollo implementa dicho escenario en una
liberación futura del software. Las tarjetas de historia son las entradas principales al proceso de planeación XP. Una vez
diseñadas, las descomponen en tareas y se estiman los esfuerzos. En conjunto con el cliente se deciden las prioridades, y luego
se llevan a cabo. Conforme cambian los requerimientos, las historias no desarrolladas se cambian o desechan.
Si durante el desarrollo surgen preguntas que no se pueden responder fácilmente y requieren trabajo adicional para explorar
posibles soluciones, se pueden elaborar prototipos para tratar de entender tanto el problema como la solución. En XP esto se
conoce como spike, o sea un incremento donde no se realiza programación. También suelen ocurrir a la hora de diseñar la
arquitectura o la documentación del sistema.
Unos de los preceptos fundamentales de la ingeniería del software tradicional es que se debe diseñar para cambiar. La
programación extrema desecha esta idea ya que al diseñar para el cambio con frecuencia se desperdicia esfuerzo. Los cambios
anticipados casi nunca se materializan y en realidad pueden hacerse pedidos de cambios opuestos a los anticipados. En XP se
acepta que los cambios sucederán, y cuando ocurran, se reorganizará el software.
Otro de los problemas con el desarrollo incremental es su tendencia a degradar la estructura del software, de modo que los
cambios se vuelven cada vez más difíciles de implementar. XP aborda el problema sugiriendo una continua refactorización del
software. El equipo busca inmediatamente mejoras para realizar al software y las implementa al instante. En principio, el
software debe ser fácil de comprender y de cambiar a medida que se implementan nuevas historias.
Pruebas en XP.
Para evitar problemas de prueba y validación del sistema, XP enfatiza la importancia de la prueba de programa. Su enfoque de
prueba reduce las posibilidades de introducir errores no detectados en la versión actual del sistema. Las características clave de
poner a prueba en XP son:
1. Desarrollo de primera prueba.
2. Desarrollo de pruebas incrementales a partir de escenarios.
3. Involucramiento del usuario en el desarrollo y la validación de pruebas.
4. El uso de marcos de pruebas automatizadas.
El desarrollo de la primera prueba y las pruebas automatizadas por lo general dan por resultado un gran número de pruebas
que se escriben y ejecutan. Sin embargo, esto no conduce a pruebas minuciosas del programa por tres razones:
1. Los programadores prefieren programar que probar, y suelen tomar atajos a la hora de escribir pruebas.
2. Algunas pruebas pueden ser muy difíciles de escribir de forma incremental.
3. Es difícil juzgar la totalidad de un conjunto de pruebas.
Programación en pares.
Los programadores trabajan en la misma estación para desarrollar el software, aunque los mismos pares no siempre
programan juntos. Los pares se crean dinámicamente de modo que todos los miembros del equipo trabajen ente si durante el
proceso de desarrollo.
La programación de a pares tiene ciertas ventajas:
1. Apoya la idea de propiedad y responsabilidad colectiva.
2. Actúa como proceso informal de revisión, ya que al menos dos personas observan cada línea de código, lo cual
aumenta en mucho la taza de detección de errores.
3. Ayuda a refactorizar, ya que todos se benefician de la refactorización del código.
Los estudios muestran resultados mixtos en cuanto a la efectividad de esta técnica, de modo que es difícil de juzgar si es útil o
no.
Cuatro valores.
Comunicación. Los proyectos de sistemas que requieren actualización constante y un diseño técnico son muy propensos a
errores. Las prácticas como la programación en parejas, estimación de las tareas y el desarrollo de pruebas requieren de una
buena comunicación. Todo tipo de error y problema es más fácil de solucionar si existe interacción entre las partes.
Simpleza. Significa que uno no debe abrumarse por las tareas que se deben realizar, y tener en mente que se debe empezar
por lo más simple, sabiendo que mañana se puede cambiar un poco. La simpleza lleva tiempo y requiere un enfoque claro de as
metas del proyecto.
Retroalimentación. Se relaciona con el concepto de tiempo. Una buena retroalimentación, útil para el desarrollador y el
cliente, puede ocurrir en el marco de tiempo que sea necesario dependiendo de lo que se necesita, quien se comunica y lo que
se hará con dicha retroalimentación. Ayuda a los desarrolladores a hacer los ajustes y permite a los negocios tener una
experiencia a tiempo de lo que el nuevo sistema será.
Valentía. Tomar un decisión basándose en presentimientos cuando se cree tener una forma mas simple y*o rápida de alcanzar
una meta. Es un valor de alto riesgo que anima a la experimentación. Implica confianza mutua entre desarrolladores y clientes.