DIIS U2 Contenido
DIIS U2 Contenido
DIIS U2 Contenido
Programa de la asignatura
Introducción a la ingeniería de software
Unidad 2
Análisis y modelado de requerimientos
Clave:
Ingeniería: TSU:
15142318 / 16142318
Índice
Presentación de la unidad
Los requerimientos son las necesidades o especificaciones que tiene el cliente respecto a
un producto. Para fines de esta asignatura, se entiende que ese producto es el software.
En esta unidad, es importante que se logre la comprensión de cómo obtener una
adecuada descripción de las necesidades que el cliente pretende cubrir con las funciones
del software, para poder transformarlas en requerimientos claros y bien definidos para el
equipo de trabajo y para el mismo cliente. Los conjuntos de requerimientos serán
desarrollados y gestionados a través de las etapas del proceso de desarrollo y poco a
poco serán transformados en un software que reunirá todas esas características
solicitadas. A continuación, se mostrará un ejemplo para mejor comprensión:
Cuando un cliente solicita que se le desarrolle un software para llevar el control de las
existencias de su almacén de materia prima, ya que la empresa ha crecido y por lo tanto
el almacén cada vez tiene una mayor cantidad de materiales, y provoca que la actual
forma de trabajo, realizada con hojas de cálculo, resulte cada vez más difícil de actualizar
y mantener. Por lo que ha decidido que un software construido para este fin podría ser
una solución a esta necesidad.
Propósito
Competencia específica
Sofware
por ejemplo, puede haber duplicidad de requerimientos por un mal manejo de nombres
que se han registrado varias veces, pero en esencia son los mismos; otro ejemplo sería la
inconsistencia en revisiones de lo que se requiere; es decir, a veces con una revisión
puede parecer entendible, pero en el momento de tratar de traducirla para generar algo,
no es posible por falta de datos o porque simplemente no se comprende.
Ahora bien, en la obtención de requerimientos, se tiene que las tareas del cliente y del
analista serán llegar a la definición adecuada de requerimientos procurando que las
necesidades del cliente respecto al software se cumplan y se puedan describir en
términos entendibles para el equipo de desarrollo (líder, analista, diseñadores,
programadores, encargados de pruebas). Por ello, la función del analista o ingeniero de
requerimientos es ser un interrogador-consultor, que será de ayuda al cliente para
determinar la completa definición de requerimientos.
De esta manera, se puede decir que los requerimientos son la base del desarrollo de
software, porque servirán para entender qué es lo que se va a producir, por lo que éstos
deberán describirse de manera clara, concreta, completa y sin ambigüedades (evitar que
sean confusos, mal escritos, redundantes). Se debe tener presente que los lectores de los
requerimientos serán personas que posiblemente no conocen aspectos técnicos, por
ejemplo, el cliente, usuarios, contratistas y, por otra parte, personal altamente
especializado como diseñadores, programadores, arquitectos de software, encargados de
pruebas y de implantación, el líder, y el mismo analista. Para describirlos, se puede
comenzar a clasificarlos como requerimientos del usuario y requerimientos del sistema, tal
como se muestra a continuación:
Requerimientos
Usuario Sistema
Escenarios: son descripciones del usuario de lo que se espera que el software realice.
Estas descripciones se realizan como una historieta y son consideradas como
requerimientos. Generalmente se utilizan en modelos de desarrollo ágiles.
A veces forma parte del contrato entre el comprador del software y el equipo de
desarrollo.
De cualquier manera, aun y con todo el cuidado que se haya tenido al detectar los
requerimientos, éstos podrán presentar cambios durante el desarrollo del software. Sin
embargo, un adecuado control mantendrá el proyecto dentro del margen de lo planeado
en tiempo, costo y recursos.
Requerimientos
Usuario Sistema
Funcionales No funcionales
Será un software pequeño Se espera que el archivo que se genere no exceda los
(grande, mediano) 10,000 KB para que pueda ser descargado fácilmente
por el usuario desde internet.
Bits, Kb, B, KB, TB, GB, etc.
Que sea fácil de usar El software contará con un módulo de ayuda de cada
(sencillo, amigable, uno de los procesos y ventanas.
lógico) También se puede disminuir la ambigüedad del
requerimiento indicando que el personal será capacitado
por un cierto periodo de tiempo estimado para que pueda
aprender a utilizarlo.
La información que genere El software deberá realizar procesos de eliminación de
debe ser fiable (veraz, registros incompletos cuando estos no hayan sido
oportuna) completados cuando el software se haya apagado por
fallos eléctricos. Conservando de esta manera, solo los
registros completos.
Otras consideraciones son la probabilidad de que el
sistema no esté disponible (si se hacen respaldos o
migraciones a otro servidor).
Que el software sea Cuando el software detecta algún error de autentificación,
robusto (potente) por ejemplo la pérdida de variables de sesión o cookies,
lanzará una página indicando al usuario que vuelva a
introducir su número y contraseña.
Otros casos podrían ser indicar si se requiere el reinicio
después de una falla e incluso podría indicar en qué
porcentaje los datos están corruptos por un error o falla.
El software debe ser Se espera que el software pueda ser visible en los
portable (portátil, navegadores iExplorer v. 9, Chrome v. 18, Mozilla 6.
transportable, movible) La idea es que describa exactamente en qué otros
sistemas o equipos debe funcionar el software.
Tabla para describir requerimientos no funcionales
“El software debe ser fácil de usar para el personal del almacén.”
“El personal del almacén tomará una capacitación de 3 horas en el uso del software,
además el software contará con videos explicando la funcionalidad del mismo como
apoyo extra.”
Los requerimientos son la base del desarrollo de un sistema de software, es por ello que
se hace un especial énfasis en su obtención, especificación, clasificación y buena
redacción. Pero no siempre se cuenta con la información necesaria a la mano, para ello
habrá que utilizar algunas técnicas de recolección para identificar y priorizar los
requerimientos. Este tema se abordará en el siguiente punto.
Otra dificultad para el equipo de desarrollo es cuando, a la mitad del proceso de creación
del software, se realizan cambios en la organización por nuevos participantes que no se
habían involucrado desde el inicio del proyecto, lo cual puede afectar en tener que volver
a realizar otras descripciones en los requerimientos o incluso insertando nuevos
requerimientos. Llevar una gestión adecuada del cambio puede ayudar para atenuar el
problema.
La observación
Partiendo de la idea de que todo software es un modelo de un modelo del usuario, se
debe identificar cómo es que el usuario opera su modelo para entonces poder simular
esto con un software. Es por ello que la observación es una técnica sencilla, pero
poderosa, debido a que permite ser testigos de cómo operan las cosas en una
organización.
Entrevistas
Las entrevistas son importantes, porque permiten estar en contacto con el cliente y se
pueden combinar con otras técnicas de recolección de información, como son la
observación o escenarios, entre otras. Las entrevistas se pueden realizar de dos
maneras: cerradas y abiertas
Escenarios
Se utilizan para comprender como funcionaría el sistema de software en un escenario
real. Los analistas utilizarán esta información como requerimientos del sistema. Los
escenarios consisten en ejemplos sobre las descripciones de las sesiones de cada
interacción, comienzan con el bosquejo de una iteración y se va detallando en cada una.
Esta técnica se aplica generalmente en la programación extrema. Cada escenario debe
incluir la descripción de:
1. El evento que dispara el proceso corresponde con la explicación de la actividad
que genera el uso del proceso que posteriormente será realizado en el software.
2. Flujo normal, se refiere a la secuencia de actividades que se realizan para operar
el proceso que se pretende automatizar por medio del software.
3. Qué puede salir mal, describir aquellas actividades que no están incluidas en el
flujo normal, pero que si llegasen a ocurrir alterarían la secuencia del proceso o
causarían algún error.
4. Otras actividades, actividades que pueden o deben ejecutarse al mismo tiempo,
es decir, actividades paralelas.
5. Estado final del sistema, describir el estado del software cuando las actividades
del proceso llegan al fin.
Todos los lunes desde las 8:00 am llegan los proveedores con diferentes materias
primas, este proceso es el resultado de las compras que se generaron durante el
viernes de la semana anterior. Otros tipos de entradas es la materia prima de
importación, ésta puede llegar en cualquier momento del día y cualquier día de la
semana.
Flujo normal:
El almacenista revisa que el proveedor haya llegado con la orden de compra y
factura. Posteriormente, hace la inspección física revisando que se haya surtido lo
que se indicó en la orden de compra, tanto en cantidad como en las características
del producto. Por último, revisa que la factura contenga exactamente lo que se
pidió y que esté correctamente escrita. Cuando termina procede a dar la entrada
física al almacén y genera el registro de entrada en el sistema. Realizando una
búsqueda con las primeras tres palabras del artículo para ubicar su código y
capturar la cantidad que está recibiendo.
Otras actividades
Mientras se realizan estas actividades, las consultas y generación de reportes del
sistema del almacén podrán estarse realizando sin ningún problema.
Cuestionario
Esta técnica resulta útil cuando es necesario captar un gran volumen de información en
poco tiempo. También cuando la separación geográfica impide que la información sea
captada por otras técnicas. Para que un cuestionario sea útil, éste debe ser conciso y
estar enfocado en pocos aspectos del sistema. Su redacción debe estar bien definida,
debe ser precisa y clara. Se pueden combinar preguntas abiertas (puede redactar
libremente una respuesta) y cerradas (la respuesta queda limitada a una cantidad de
opciones); además, se puede incluir una descripción para explicar el objetivo del
cuestionario y favorecer que el usuario conteste lo más objetivamente posible. Por último,
puede contener una frase de agradecimiento (Piattini et al. 2004, p. 184).
A continuación, presta atención al siguiente tema que describe el documento de
requerimientos.
Como se puede observar, el documento SRS tiene algunas ventajas; sin embargo, de
acuerdo con el enfoque de las metodologías ágiles se considera que no se debe llenar un
documento tan extenso, porque al momento en que se inicia con su elaboración comienza
a hacerse obsoleto, así que este documento se desperdicia en gran medida, por ejemplo,
en el enfoque que presenta la programación extrema se recopila de manera incremental
requerimientos del usuario y se escriben en tarjetas como historias de usuario. De esta
manera, el usuario da prioridad a los requerimientos para su implementación en el
siguiente incremento del sistema.
Ya sea que decida o no utilizar un documento tan específico como lo es un SRS o que se
decidan por las metodologías ágiles cuya especificación es mínima, en ambas
metodologías deberá existir la validación de los requerimientos para asegurar que están
correctos. En el siguiente tema se explicará con mayor detalle el proceso de validación,
pero antes realiza la primera actividad para la unidad.
Traducir las peticiones del cliente en un lenguaje más técnico y formal, resulta ser una
actividad a veces complicada, por lo que convendría apoyarse de alguna herramienta que
pueda ser fácil de usar y comprender. Esto se cubre con los casos de uso que son
diagramas del lenguaje unificado de modelado (UML) y también se consideran como una
técnica de recolección de requerimientos. Se describe en un diagrama todas las
iteraciones posibles entre los usuarios y el sistema.
Son muy útiles para representar las funciones que el sistema debe tener y sus elementos
son los siguientes:
o Actor. Se refiere a cualquier elemento que interactúa con el sistema. Éste puede
ser un usuario, otro sistema o algún hardware. Se representa con un “monigote”
con su nombre en la parte inferior. Dicho nombre debe comenzar con mayúscula.
Almacenista
Alta de materia
prima
o Las líneas entre los actores y los casos de uso se denominan arcos de
comunicación o relaciones.
Alta de materia
prima
Almacenista
<< Extiende>>
Extiende. Comportamiento adicional de un caso de uso
base. También se puede poner la palabra <<Utiliza>>
Los diagramas de caso de uso deben tener una descripción en la que se detallen las
especificaciones de su comportamiento en flujo de actividades de secuencia normal y
excepciones. Para lo cual se puede utilizar una tabla como la siguiente:
[Id requerimiento] Nombre del requerimiento
Descripción Lo que el sistema debe permitir con [actores] en un [tiempo] la
[funcionalidad]
Requerimientos [id requerimiento] [Nombre del requerimiento]
asociados [id requerimiento] [Nombre del requerimiento]
…
Secuencia normal [# paso] [Acción]
[# paso] Si [situación que produce alternativa]
realizar [acción]
…
Excepciones [# paso] En el caso de que [situación que provoca la excepción] el
sistema deberá [acción]
…
Frecuencia Cantidad de veces en que se lleva a cabo
Prioridad Con respecto a otros requerimientos [Alta, media, baja]
Observaciones Otras especificaciones necesarias
Tabla. Descripción de los casos de uso. Adaptada de Sommerville (2011, p. 125).
Ejemplo
RF-01 Registro de materia prima al almacén
Descripción El sistema debe permitir al almacenista cada vez que exista una
materia prima nueva registrarla como un nuevo material al almacén.
Requerimientos RF-01-01 Alta materia prima
asociados RF-01-02 Baja lógica de materia prima
RF-01-03 Modificar materia prima
RF-01-04 Consultar materia prima
RF-02 Registro de movimientos al almacén
Los diagramas de caso de uso pueden ser útiles para descubrir requerimientos en los
procesos de los usuarios, pero también son de gran ayuda para describir a los
requerimientos funcionales del software. Hay otros diagramas que también sirven para
mostrar con otra vista a los requerimientos. Estos son los que a continuación se verán en
el modelado del dominio y de la interacción.
El modelado de sistemas es una disciplina útil para representar la visión que se tiene del
software que se va a construir o la descripción técnica del software terminado. El
modelado de sistema consiste en la construcción de diferentes tipos de diagramas y el
estándar que más se utiliza es UML, que cuenta con aproximadamente trece diagramas
para describir diferentes perspectivas del software. En este tema se verán dos categorías
de diagramas: de dominio del sistema y los de interacción.
Los modelos de dominio se pueden representar por medio de diagramas de clases donde
puedes delimitar la frontera de un software y mostrar su entorno, que puede incluir o no, a
otros sistemas automatizados y las relaciones que pueden tener. Un modelo de dominio
consta de un conjunto de diagramas de clases con sus atributos, pero omitiendo la
definición de sus operaciones. Los diagramas de clases se verán en el siguiente tema.
Modelos de interacción:
Los sistemas tienen interacciones de algún tipo, por ejemplo, con el usuario que implican
entradas y salidas del mismo. También hay interacciones entre el sistema a desarrollar y
otros sistemas o interacciones entre los componentes del sistema. En el modelado de
caso de uso y los de secuencia muestran interacciones con diferentes niveles de detalle y
es posible utilizarlos juntos. El diagrama de colaboración es otro ejemplo de este tipo de
modelos de interacción. A continuación se explicará cómo puede modelarse la estructura
de un sistema por medio de los diagramas de clases.
Por ejemplo, la siguiente figura es un diagrama de clase simple que muestra dos clases:
Materia_prima y Movimientos_E_S (movimientos de entrada y salida) con una asociación
entre ellos. Además, muestra cuántos objetos intervienen en la asociación, en este caso
es 1:* lo que significa que 1 materia prima puede tener muchos movimientos de entrada y
salida. Esto es denominado multiplicidad.
1 *
Materia_prima Movientos_E_S
- Cada línea de relación tiene dos multiplicidades (una para cada extremo de la
relación).
- Para especificar hay que indicar la multiplicidad mínima y máxima
(mínima...máxima).
- Cuando a multiplicidad es 0, la relación es opcional.
- Cuando es 1 indica que la relación es obligatoria.
Para especificar con mayor detalle las clases, se puede agregar las características de
éstas. Por ejemplo, un objeto artículo tendrá atributos como un identificador, la
descripción, existencias y costo unitario, sus operaciones podrían ser Alta, Baja, Consultar
y Modificar principalmente. En UML los atributos y operaciones se muestran en un
rectángulo con tres secciones. De esta manera se tiene que:
1. El nombre de la clase-objeto aparece en la parte superior.
2. Los atributos aparecen en la parte media y de manera opcional tienen el tipo de
dato de cada atributo.
3. Las operaciones o comportamientos (llamadas métodos en algunos lenguajes de
programación como Java) están en la sección inferior del rectángulo.
Algunas veces se encontrarán objetos que pertenecen a un mismo tipo y por lo tanto,
pueden compartir atributos o comportamientos que les son comunes. Estos pueden ser
asociados por medio de la relación llamada herencia.
Composición. La composición es una relación en donde el tiempo de vida del objeto está
condicionado por el tiempo de vida del que lo incluye. El objeto base depende del objeto
que lo compone o sea es parte de un todo.
Agregación. La agregación es una relación donde el tiempo de vida del objeto incluido no
depende del que lo incluye. El objeto base utiliza al objeto incluido para su
funcionamiento.
DespliegaPantallaRegistroArtículo
RegistroUsuario
GeneraEvento(RegistroUsuario)
Ejecuta(Inserción SQL)
Retroalimenta Retroalimenta
DespliegaPantallaRegistroArtículo
RegistroArtículo
Ejecutar(Inserción SQL)
Retroalimenta
Retroalimenta
DespliegaPantallaRegistroArtículo
Salir
Diagrama de secuencia de alta de artículo del almacén de materia prima. Tomada de Booch, Rumbaugh, y Jacobson (1999, p. 83).
Los diagramas de colaboración se utilizan para explicar una estructura entre los objetos
que se envían mensajes. Los objetos generalmente son instancias con o sin nombres
(anónimos), y se utilizan para describir una de las vistas del sistema. Estos diagramas son
útiles para entender cuál es la mejor manera de desarrollar un sistema, permite a los
diseñadores de software asegurarse de que el software que se desarrolla cubrirá con los
requerimientos cuando sea implementado (Booch, Rumbaugh y Jacobson, 1999, p. 84).
Objeto
Mensaje
Número de secuencia
Auto delegación
Diagrama de colaboración
En el diagrama anterior se pueden apreciar los componentes. Los rectángulos con el texto
subrayado representan instancias de objetos que pueden tener nombre o no (anónimos).
Si carecen de nombre se dejan los dos puntos [:]. Tienen líneas de transición que llevan
un mensaje con una flecha que indica la dirección del mensaje. Los mensajes van
numerados marcando el orden de la secuencia, esta numeración puede ser entera o
decimal. Los objetos pueden enviarse mensajes ellos mismos, lo cual es llamado
autodelegación y los mensajes pueden contener una condición.
Los aspectos dinámicos del software se representan por medio del flujo de mensajes
principalmente como en la figura anterior. Otro tipo de diagramas de interacción son los
diagramas de estado que se explican en el siguiente tema.
Los diagramas de estados se aplican para mostrar una vista dinámica de un sistema. Son
útiles para modelar el comportamiento de una interfaz o una clase. Se aplican
ampliamente para modelar sistemas reactivos Booch, Rumbaugh y Jacobson (1999, p.
85).
Gráficamente un estado se representa por un rectángulo ovalado. Las transiciones
mediante flechas con el nombre del evento respectivo. Para indicar el estado inicial se
utiliza un círculo relleno. Y para el estado final se utiliza un círculo hueco que incluye un
círculo relleno más pequeño en el interior. Las transiciones pueden llevar condiciones que
limitan al estado hasta que la condición sea verdadera y estas condiciones van entre
corchetes.
Todos los diagramas son útiles para representar diferentes vistas del modelo del software
que se quiere construir, para poder lograrlo será necesario partir de una buena base: los
requerimientos y como se ha visto durante esta unidad se deben definir adecuadamente.
Cierre de la unidad
Todo este conocimiento te servirá para saber interpretar software documentado por
terceros y también para aprender a documentar tus propios proyectos. Si formas parte de
un equipo de desarrollo de software, el modelado es una parte importante de la traducción
e interpretación de los requerimientos, por lo tanto, para una óptima comunicación entre
los miembros de un equipo serán necesarios estos conocimientos.
Para buscar más ejemplos y otra forma de describir los diagramas vistos en clase, o
bien, para conocer los otros diagramas que no se abarcaron en el programa de la
asignatura puedes consultar el siguiente manual de UML.
• Programación C.E.C.yT. “Juan de Dios Bátíz Paredes” – IPN. (n.d.). Desarrollo
orientado a objetos con UML. http://es.scribd.com/doc/2458870/Desarrollo-
Orientado-a-Objetos-con-UML-librobookespanolspanish
Fuentes de consulta