Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidades Requisitos PDF
Unidades Requisitos PDF
Proyecto Práctico
de Ingeniería de Requisitos
Curso 2010-2011
Gonzalo Génova
Presentación
• Ingeniería del Software I
– Gonzalo Génova (ggenova [at] inf.uc3m.es) - COORDINADOR
– Roberto Galindos (rgalindo [at] inf.uc3m.es)
– Eduardo Barra (ebarra [at] inf.uc3m.es)
– Isidro Hernanz (ihernanz [at] inf.uc3m.es)
– Dirección para entregas: is.uc3m [at] gmail.com
• Aprender...
– Redacción de un documento completo de requisitos
– Desarrollo dirigido por modelos (MDA-MDD-MDE), evolución de USDP
– Estándares de documentación de proyectos
– Técnicas del análisis orientado a objetos para ingeniería de requisitos
• Desarrollar capacidades
– Abstracción y resolución de problemas
– Lectura crítica y reflexiva
– Trabajo en equipo
– Exposición de resultados propios
– Revisión de trabajos ajenos
– Aprendizaje a partir de errores propios y ajenos
Documentación entregada
• Atención a nombres de archivos y fechas de entrega
• Dos documentos parciales (el segundo completa al primero):
– ej. ProyectoIS1-M05.doc: equipo M05, etc. (poner IS1 ó PDS según convenga)
– envío por correo a la dirección de entrega y miembros del equipo revisor
– ver índice adaptado del estándar ESA PSS-05-0
• Dos documentos de revisión (el segundo completa al primero):
– ej. RevisiónIS1-M05-R07.doc: equipo M05 revisado por equipo M07, etc.
– envío por correo a la dirección de entrega y miembros del equipo revisado
• Proyecto final revisado (normas):
– documento final + presentaciones + recuento de horas + métricas
– ej. ProyectoIS1-M05.doc + etc.
– envío por correo la dirección de entrega
– ejemplar impreso encuadernado en espiral con tapas duras, incluyendo:
• revisiones recibidas y respuestas, revisiones enviadas
• transparencias de las dos presentaciones
• Propuesta de preguntas teóricas para el examen de test
penalización
1 1-(p-60)/60
0
0 60 120 páginas
MAL BIEN
Calendario de la asignatura
• Dedicación a la asignatura, aproximadamente:
– 30 horas de clase teórica
– 30 horas de otras actividades en clase
– 60 horas de trabajo personal y en equipo
• Clases teóricas
– Asistencia no controlada.
– El examen de Test es un reflejo directo del aprovechamiento de las clases teóricas, de ahí la
importancia que se le da en la nota final.
• Clases de laboratorio
– Aprendizaje de herramientas.
• Tutorías por equipo
– Asistencia obligatoria.
– Sirven para que el profesor pueda hacer un seguimiento efectivo del proyecto.
– Aprovechad la tutoría llevando un borrador bien trabajado.
• Exposiciones/Revisiones
– Asistencia obligatoria a todas las exposiciones, aunque no toque exponer.
– Dos miembros exponen la práctica, dos responden a revisores y profesores.
– Tiempo máximo de exposición: 20 minutos entre ambos.
• Calendario completo (IS1, PDS)
– Atención a las fechas de entregas.
Individual Equipo
Tutorías* 00% Exp/Preparación 10%
Práctica Exp/Ejecución 05% Documentación 25% 50%
Exp/Respuestas 05% Revisiones 05%
Exámenes parciales 10% Propuesta de
Teoría 10% 50%
Examen final 30% preguntas
50% 50% 100%
Bibliografía
• Ingeniería de requisitos
– Eric Braude. Software Engineering. An Object-Oriented Perspective. John
Wiley & Sons, 2001.
• Capítulos 3 y 4
– Ian Sommerville. Ingeniería del Software. Pearson-Addison Wesley, 2005.
• Capítulos 6 y 7
– Roger Pressman. Ingeniería del software: un enfoque práctico, 6ª ed. McGraw-
Hill.
• Capítulos 7 y 8
x x x x x x x Día
x x x x x x x
Compromiso
x x MES
x x x x x
x x x x x x x Compromiso
x x x x x x x Compromiso
…
Proyecto completo
53% 33% 46% 49% 51%
pero deficiente
Proyecto
31% 40% 28% 23% 15%
cancelado
100,00%
90,00%
80,00%
70,00%
Porcentaje
60,00%
50,00%
40,00%
30,00%
20,00%
10,00%
0,00%
1994 1996 1998 2000 2003
Años
Diseño arquitectónico
DISEÑO
Diseño detallado
IMPLEMENTACIÓN
Lo que él
necesita es... Lo que tienes
que hacer es...
Lo que yo
necesito es...
Analista Arquitecto
Lo que tengo
que hacer es...
Cliente
Diseñador
Presupuesto Planificación
Recursos Tiempo
Revisar
Beneficio obtenido
(% ahorro/gasto) Beneficio
óptimo
GUI
simplificada
Recursos
malgastados
Adaptado de E. Braude,
Software Engineering: An Object-Oriented Perspective
[conforme]
• Objetivo
Seleccionar un vuelo
– “comprar billetes de avión por [conforme] [no conforme]
internet facilitando la búsqueda
de tarifas baratas” Introducir nombres de los pasajeros
y datos de la tarjeta de crédito
Feria de subastas
Asociaciones
Registrar
artículo Modificar
datos de artículo
Consultar
lista de artículos
Vendedor
Casos de uso
Actores Registrar
usuario
Observador
Casos de uso
• Un escenario es una secuencia de acciones del actor y acciones del sistema
que describe una interacción típica entre ambos (qué hace cada uno).
– Escenario básico: todo va bien.
– Escenarios alternativos, manejo de errores, situaciones excepcionales...
• Un caso de uso es una colección de escenarios con un objetivo común:
– El conjunto de escenarios especifica un comportamiento que proporciona un
resultado valioso para uno o más de los interesados en el sistema.
– Representa una tarea, o unidad coherente de funcionalidad, que el sistema
está obligado a proporcionar a los actores en beneficio de los interesados.
• En un caso de uso pueden participar varios actores distintos, y además:
– Las acciones de un actor pueden ser beneficiosas para otros actores.
– Puede haber interesados (stakeholders) que no sean actores en absoluto.
• Dos niveles de abstracción en la definición:
– Interacción actor/sistema, secuencia de acciones (descripción prototípica).
– Servicio requerido, objetivo, finalidad, funcionalidad (descripción abstracta).
Simular vuelo
Piloto Entrenador
Include y Extend
• Es posible definir relaciones entre casos de uso:
– «include»: para describir un comportamiento común reutilizable.
– «extend»: para describir una variante del comportamiento base.
«include» Validar
Sacar dinero
tarjeta
Inclusión
Base
Extensión
Editar «extend»
Ayuda
documento
Precondiciones y postcondiciones
• Son una forma de refinar o especificar con más detalle el objetivo del caso de
uso, mediante la descripción del estado del sistema antes y después de la
ejecución del caso de uso:
– Precondiciones: pueden ser comprobadas en la secuencia de acciones del caso
de uso, pero no realizadas en ese momento.
– Postcondiciones: pueden referirse a la salida normal o a una excepcional.
• Precedencia entre casos de uso: toda precondición de un caso de uso
debe cumplirse en el estado inicial del sistema, o bien, debe ser realizada
por alguno de los casos de uso del sistema, que la tendrá por tanto como
postcondición.
Caso de uso Precondiciones Postcondiciones
Registrar usuario Usuario registrado
Registrar artículo Usuario registrado como Vendedor Artículo registrado
Usuario registrado como Comprador Si no hay más pujas,
Pujar
Artículo registrado y no adjudicado artículo adjudicado
[error]
Abrir sesión
Abrir sesión
[ok]
[fin]
Seleccionar artículo
BIEN
(Epicuro) felicidad
da sentido
vividor
egoísmo
Proyecto Práctico de Ingeniería de Requisitos 48
El código ético de ACM/IEEE (v5.2, 1999)
1. Público. Los ingenieros de software deberán actuar en consonancia con el interés
público.
2. Cliente y empleador. Los ingenieros de software deberán actuar de forma que
respondan a los intereses de sus clientes y empleadores siendo consecuentes con el
interés público.
3. Producto. Los ingenieros de software deberán asegurar que sus productos y las
modificaciones asociadas cumplen los más altos estándares profesionales posibles.
4. Juicio. Los ingenieros de software deberán mantener la integridad e independencia
en sus juicios profesionales.
5. Gestión. Los gerentes y líderes de la ingeniería del software deberán suscribir y
promocionar un enfoque ético en la gestión del desarrollo y mantenimiento del
software.
6. Profesión. Los ingenieros de software deberán mantener la integridad y reputación
de la profesión de acuerdo con el interés público.
7. Colegas. Los ingenieros de software deberán ser imparciales y apoyar a sus colegas.
8. Personal. Durante toda su vida, los ingenieros de software deberán aprender lo
concerniente a la práctica de su profesión y promocionar un enfoque ético en la
práctica de su profesión.
Adaptación
ESA
Modelo de Modelo de
requisitos casos de uso
Modelo Modelo del
Modelo del dominio
lógico sistema
Modelo de Modelo
análisis conceptual
Matrices de trazabilidad
URD/SRD ADD/DDD
Matriz de doble entrada “dispersa” Matrices de tres columnas (una o las dos)
R1 R2 R3 R4 R5 R6 R7
R1 + x x
R2
R3 + + +
R4 + x o
R5 x x
R6 x +
R7 o
creado eliminado
Propuesto
Cancelado
60
Características de una herramienta de gestión de requisitos (1)
• Herramienta multiproyecto y multiusuario
– Gestión de usuarios: analistas, jefes de proyecto, administradores.
– Permisos de acceso por proyecto: lectura o escritura.
• Configuración de un proyecto
– Propiedades globales de un proyecto: nombre, descripción, ubicación...
– Atributos habilitados en función del tipo de requisito, valores desplegables.
• Acceso, sesión y control de versiones
– Registro automático de sesiones: inicio y fin, requisitos creados o modificados.
– Control de versiones: sin control, control opcional, control obligatorio.
– Notificación de modificaciones (opcional).
– Seguimiento del ciclo de vida.
• Propiedades de los requisitos
– Agrupación en paquetes y subpaquetes.
– Atributos: automáticos, obligatorios, opcionales.
– Relaciones entre requisitos: navegabilidad y asimetría. Requisitos “sospechosos”.
– Otros artefactos asociados: escenarios, modelos...
CLIENTE DESARROLLADOR
Precisión Atomicidad
Objetos y clases
• Dos niveles de abstracción:
– objeto: una entidad concreta con identidad, estado y comportamiento
– clase: un conjunto de entidades con estructura y comportamiento comunes
• La relación de clasificación / instanciación
– un objeto es instancia de una clase
– la clase se usa como plantilla para construir (instanciar) objetos
Punto
p1 : Punto «instance of» posiciónX «instance of» p2 : Punto
posiciónX = 3 posiciónY posiciónX = 0
posiciónY = -5 situar( ) posiciónY = 2
mover( )
p1 : Punto
Punto Punto
p1 Punto posiciónX situar( )
posiciónY mover( )
: Punto
Tipos de clases
• Tipos de clases según los objetos representados:
– objetos físicos: avión, persona, libro...
– objetos lógicos: cuenta corriente, asignatura, número complejo…
– objetos históricos: asiento bancario, reserva de habitación…
• Para entender lo que es una clase, hace falta entender cuáles serán sus
instancias. Un caso especial lo constituyen los objetos que representan una
colección, familia o tipo de cosas, más que una cosa en sí misma.
• Ejemplos: raza perruna, producto a la venta, título en la biblioteca.
• Es decir, un mismo concepto del mundo real puede ser modelado como
objeto o clase según el contexto:
– “Pastor Alemán”
– “Lata de Atún”
– “El Lenguaje Unificado de Modelado”
• Todo objeto representa una “entidad concreta”, pero esto no significa
necesariamente “entidad física” o tangible.
Operaciones
• Operación: función o transformación que puede aplicarse a los
objetos de una clase
– pueden ser invocadas por otros objetos, o por el mismo objeto
– método: especificación procedimental (implementación) de una operación
• Notación (más importante en diseño)
– pueden suprimirse todos los elementos excepto el nombre de operación
• visibilidad nombre (param: Tipo = valDef,…) : TipoRet {propiedades}
– propiedades predefinidas de las operaciones: isQuery
– ejemplos:
• obtenerSaldo ( ) : Moneda {isQuery}
• marcar (número : Teléfono; reintentos : Integer)
Asociación:
especificación de un conjunto Vendedor Artículo
de enlaces
representa la estructura y el
comportamiento del sistema
Estatuilla : Artículo
Enlace:
conexión entre objetos Juan : Vendedor
determina una tupla de objetos
instancia de una asociación Cuadro : Artículo
subasta
Vendedor Artículo
Persona Artículo
vendedor artículo
Nombres de rol
Los nombres de rol se pueden repetir en asociaciones distintas,
y pueden ser iguales que los nombres de las clases asociadas
Navegabilidad de la asociación
• La navegabilidad de una asociación binaria especifica la capacidad que
tiene una instancia de la clase origen de acceder a las instancias de la clase
destino por medio de las instancias de la asociación que las conectan
• Acceder = nombrar, designar o referenciar el objeto para...
– leer o modificar el valor de un atributo del objeto (desaconsejable)
invocar una operación del objeto (enviarle un mensaje)
– usar el objeto como argumento o valor de retorno en un mensaje
– modificar (asignar o borrar) el enlace con el objeto
• No confundir:
– dirección del nombre de la asociación: asimetría lingüística
– navegabilidad o direccionalidad de la asociación: asimetría comunicativa
subasta
Vendedor Artículo Navegabilidad no especificada
subasta
Vendedor Artículo Asociación unidireccional
subasta
Vendedor Artículo Asociación bidireccional
Punto Punto
posiciónX: Coordenada posiciónX
Coordenada
posiciónY: Coordenada
posiciónY
Punto
posiciónX
posiciónX: Coordenada Coordenada
posiciónY: Coordenada
posiciónY
conduce arrancar( )
Persona Vehículo Persona posee conducir( )
detener( )
detiene
«instance of»
Generalización y especialización
• Dos puntos de vista complementarios:
– Generalizar es identificar las propiedades comunes (atributos,
asociaciones, operaciones) de varias clases y representarlas en una clase
más general denominada superclase.
• Elevar el nivel de abstracción, reducir la complejidad, organizar.
– Especializar es capturar la propiedades específicas de un conjunto de
objetos dentro de una clase dada, que aún no han sido distinguidas en
ella, y representarlas en una nueva clase denominada subclase.
• Reutilizar un concepto añadiendo propiedades variantes.
• Es una relación pura entre clases:
– No tiene instancias, ni multiplicidad.
– La subclase hereda todas las propiedades de la superclase.
– Las propiedades heredadas de la superclase no se representan en la
subclase (a menos que sean operaciones redefinidas).
– Toda generalización induce una dependencia subclase superclase.
Aéreo
Ferrocarril Transporte
Avión Helicóptero
Terrestre Aéreo
Generalización:
- no-reflexiva
- transitiva Bicicleta Automóvil Ferrocarril Avión Helicóptero
- asimétrica
Dimensiones de especialización
• Una superclase puede ser especializada en distintos grupos de subclases
de acuerdo con criterios independientes: discriminadores.
CuentaCorriente
• Restricciones:
– disjoint/overlapping: las subclases no pueden tener instancias en común / o sí.
– complete/incomplete: no hay otras subclases / o sí.
• Valor por defecto: disjoint, incomplete.
• Partición propiamente dicha: disjoint, complete.
CuentaCorriente CuentaCorriente
«instance of»
miCuenta miCuenta
Alternativa a la doble
CocheAzul CocheVerde CocheRojo
especialización
accionista
Sociedad Persona
empleado
Sociedad
Pedro : Persona
empleado
Vendedor
nif {regla nif}
nombreDescriptivo
nombreUsuario
contraseña
falta determinar
las subclases
de Sociedad accionista
Sociedad Persona
empleado
{ningún accionista
puede ser empleado}
Restricciones en asociaciones
* 0..1
Persona
* 0..1 Sociedad
* origen 1
* 0..*
{ordered} escala
Registrar
artículo Vendedor subasta Artículo
nif descripciónBreve
nombreDescriptivo registra descripciónAmpliada
Modificar nombreUsuario fotografía
modifica
Vendedor datos de artículo contraseña precioSalida
Asociaciones reflexivas
• Una asociación reflexiva (o recursiva) es aquella en la que los dos extremos
de la asociación están unidos a la misma clase.
• Los enlaces pueden conectar dos instancias diferentes de la misma clase,
o incluso una instancia consigo misma.
• En una asociación reflexiva los nombres de rol son obligatorios, para poder
distinguir los dos extremos de la asociación.
• Una asociación reflexiva no es simétrica: los extremos son distinguibles,
aunque la asociación quiera significar equivalencia: es-amigo-de, es-igual-a...
{...}
1 0..*
Titulación Alumno
matriculado
1 0..*
matriculado
pertenece
1..* 0..*
Asignatura
Agregación
• Es un tipo especial de asociación que representa una relación todo-parte,
transitiva y asimétrica
– no impone ninguna restricción especial sobre la multiplicidad
– puede ser reflexiva para las clases, pero no para las instancias
0..*
0..* 1..*
Máquina Pieza
0..*
m1 : Máquina
p1 : Pieza p2 : Pieza
m2 : Máquina
0..1
1 1 2
A
-C
+B
Persona Empresa
• Es una forma de implementar la
clase-asociación, pero hay que
1 1
añadir una restricción adicional 0..* trabaja-para 1..*
para no permitir tuplas repetidas. sueldo
pagar( )
clase intermedia
Proyecto Práctico de Ingeniería de Requisitos 96
Asociación n-aria
• Asociación entre N clases: los enlaces conectan N instancias
– no permite: dirección del nombre, navegabilidad, agregación
– sí permite: clase-asociación
• Multiplicidad engañosa:
– número permitido de instancias para cualquier posible combinación de
instancias de las otras n-1 clases
– la multiplicidad mínima suele ser 0
– efecto “rebote del uno”: la multiplicidad mínima 1 (o superior) en un extremo
implica que debe existir un enlace (o más) para cualquier posible combinación de
instancias de los otros extremos
Un equipo enlazado con una
* * temporada siempre tiene un
Equipo Temporada entrenador asignado: no hay
“enlaces cojos”.
0..1
La multiplicidad mínima 1 implicaría la
Entrenador existencia de un enlace (o más) para toda
posible combinación de equipo y temporada.
Instalación
• Descarga (previo registro): http://www.kr.inf.uc3m.es/reqstudio/.
• Requisitos HW
– Pentium IV 2,4 GHz 512 MB o similar
• Requisitos SW
– Microsoft Windows XP Service Pack 2
– .NET Framework 2.0
– Herramientas ofimáticas:
• Microsoft Office Word: para la generación de informes.
• Microsoft Office Excel: para la generación de tablas.
• Microsoft Office Access: para exportación/importación.
– Servidor: Microsoft SQL Server 2005 Express Edition.
• Posibilidad de bonificación en la calificación final.