Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es...

22
Ingeniería de requerimientos de software: “Elicitation” Dpto. de Ingeniería de Sistemas y Computación Universidad de los Andes

Transcript of Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es...

Page 1: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Ingeniería de requerimientos

de software: “Elicitation”

Dpto. de Ingeniería de Sistemas y

Computación

Universidad de los Andes

Page 2: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Referencias

El Lenguaje Unificado de Modelado. Grady Booch, James Rumbaugh e Ivar

Jacobson. Addison Wesley, 1999 Capítulos 16 y 17

Object Oriented Software Engineering. Bernd Bruegge y Allen H.Dutoit.

Prentice Hall, 2000. Capítulo 4, pág. 100–106, 118-119

Software Requirements. Karl. E.Wiegers. Microsoft Press, 1999. Capítulo 9,

pág. 153-162. Capítulo 11

Material preparado por Rubby Casallas.

[email protected] 2

Page 3: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Qué es un requerimiento?

Condición o capacidad que un usuario necesita

para poder resolver un problema o lograr un

objetivo (IEEE).

Condición o capacidad que debe exhibir o

poseer un sistema para satisfacer un contrato,

estándar, especificación, u otra documentación

formalmente impuesta (IEEE).

Algo que el sistema debe hacer o una cualidad

que el sistema debe poseer (Robertson -

Robertson).

Material preparado por Rubby Casallas.

[email protected] 3

Page 4: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Qué es Ingeniería de requerimientos

de software?

Es el proceso de:

Recopilar, descubrir (Elicitation),

Analizar,

Documentar (Especificar) y

Validar (Lograr un acuerdo) Material preparado por Rubby Casallas.

[email protected] 4

Page 5: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Qué es Ingeniería de requerimientos

de software?

Es el proceso de:

Recopilar, descubir (Elicitation),

Analizar,

Documentar (Especificar) y

Validar (Lograr un acuerdo)

los requerimientos de Software!

Material preparado por Rubby Casallas.

[email protected] 5

No son pasos secuenciales

Page 6: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Material preparado por Rubby Casallas.

[email protected] 6

Recopilar, decubrir (Elicitation): es la obtención y el

descubrimiento de los requerimientos del software según

diversos Stakeholders (constituyentes) y otras fuentes

(leyes, restricciones).

Técnicas: entrevistas, análisis de documentos, grupos

de discusión, cuestionarios.

Page 7: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Material preparado por Rubby Casallas.

[email protected] 7

Ambigüedades llevan a interpretaciones

distintas del mismo requerimiento

Problemas comunes:

• requerimientos olvidados en particular los

no funcionales y las restricciones

• palabras ambiguas (“pequeño”, “barato”, ...)

• vocabulario dependiente del contexto del

negocio !

• creer que se entendió (el ingeniero)

• creer que se explicó claro (cliente)

• pasar por alto lo importante

• lo necesario vs. lo ideal

• lo actual vs. el cambio

Cliente o Usuario Desarrollador

Page 8: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Material preparado por Rubby Casallas.

[email protected] 8

Por dónde

comienzo?

Documentos, sistema anterior,

Descripciones de procesos,

Page 9: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Material preparado por Rubby Casallas.

[email protected] 9

Documentos, sistema anterior,

Descripciones de procesos,

El problema puede ser definido

como como una diferencia entre

cómo las cosas son percibidas y

cómo son deseadas.

Enunciar el problema:

Modelar el mundo del problema

Definir un vocabulario.

Identificar los conceptos y las

relaciones importantes en los

elementos del mundo del

problema. (Diagrama de clases)

Entrevistar

Validar entendimiento, obtener

más información.

Enunciar el propósito

Identificar lo que daría más valor al cliente.

Un proceso posible ….

Page 10: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

10

Entrevistas Cualitativas

entrevista abierta y personal

como instrumento para indagar un

problema y comprenderlo desde

el punto de vista del entrevistado

se centra en el conocimiento y la

opinión individual en la medida

que esa opinión pueda ser

representativa de un conocimiento

cultural más amplio

los entrevistados deben ser

“conocedores y/o expertos”

Material preparado por Rubby Casallas.

[email protected]

Page 11: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Entrevistas Cualitativas (2)

El entrevistador es un facilitador en el

proceso de comunicación

debe:

inducir profundidad y detalle en las opiniones del

entrevistado

inspirar confianza

escuchar activamente

atender el comportamiento verbal y no verbal del

entrevistado

no creerse el experto, no distraerse, no polemizar Material preparado por Rubby Casallas.

[email protected] 11

Page 12: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

12

Entrevistas Cualitativas

Tipos de Entrevistas:

informal conversacional

estructurada con guía

estandarizada

Material preparado por Rubby Casallas.

[email protected]

Page 13: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

13

Entrevistas Cualitativas

Planificación de las Entrevistas:

Tipo de pregunta: depende de los objetivos del

estudio. Por ejemplo:

Preguntas sobre experiencias o comportamientos

Opiniones sobre algún tópico particular

Sentimientos

Conocimientos

Sensaciones

Carácter histórico

Material preparado por Rubby Casallas.

[email protected]

Page 14: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Entrevistas Cualitativas

Planificación de las Entrevistas (cont.):

Secuencia de las preguntas:

empezar explicando el propósito de la entrevista

empezar con preguntas simples de respuestas

descriptivas

evitar empezar con una controversia

...

14

Material preparado por Rubby Casallas.

[email protected]

Page 15: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Entrevistas Cualitativas

Planificación de las Entrevistas (cont.):

Redacción de las preguntas: minimizar la pre

determinación de las respuestas

preguntas abiertas

evitar preguntas dicótomas

evitar preguntar por qué

incluir preguntas de “simulación” (qué pasaría si ….)

preguntas cortas

15

Material preparado por Rubby Casallas.

[email protected]

Page 16: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Entrevistas Cualitativas

Redacción de las preguntas: minimizar la pre

determinación de las respuestas (cont.) Las preguntas deben exponerse con claridad:

evitar palabras que puedan tener varios significados

evitar preguntas que encierren dos respuestas

especificar el contexto, lugar y tiempo donde se requiera

las preguntas deben ser relevantes. No preguntar algo

que después no se sabrá cómo manejar

se deben evitar prejuicios e insinuaciones

no suponer que le entrevistado esta de acuerdo o en

desacuerdo con el entrevistador

Material preparado por Rubby Casallas.

[email protected] 16

Page 17: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Entrevistas Cualitativas

Realización de las Entrevistas

Presentación:

Del entrevistador

Temas a tratar en la entrevista

Utilización de la información

Confidencialidad

Tomar notas ? Grabar?

Tiempo disponible

Controlar el tiempo y el ritmo de la reunión

Cerrar la entrevista, agradecer, concluir, resumir,

.... 17

Material preparado por Rubby Casallas.

[email protected]

Page 18: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Preguntas libres del contexto

Generales:

Quién es el usuario final?

Qué sería una solución exitosa para este usuario?

Cuál es la razón para desear resolver este

problema?

Deberíamos usar un solo equipo de diseño o más

de uno?

Quién debería estar en el equipo?

Cuánto tiempo tenemos para este proyecto?

Material preparado por Rubby Casallas.

[email protected] 18

Page 19: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Preguntas libres del contexto

Generales (cont.):

Cuál es el margen tiempo-valor para este

proyecto?

En que otro lugar puede obtenerse una solución

para este problema?

Podemos inspirarnos de alguna solución que ya

existe?

Material preparado por Rubby Casallas.

[email protected] 19

Page 20: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Preguntas libres del contexto

Preguntas sobre el producto:

Cuáles problemas este producto resuelve?

Qué problemas podría crear este producto?

Qué clase de precisión es requerida o deseada in

este producto?

Material preparado por Rubby Casallas.

[email protected] 20

Page 21: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

Preguntas libres del contexto

Meta Preguntas:

Estoy haciendo demasiadas preguntas?

Le parecen relevantes mis preguntas?

Es usted la persona indicada para responder

estas preguntas?

Son sus respuestas oficiales?

...

Material preparado por Rubby Casallas.

[email protected] 21

Page 22: Ingeniería de requerimientos de software: “Elicitation”isis2603/dokuwiki/lib/exe… · Qué es Ingeniería de requerimientos de software? Es el proceso de: Recopilar, descubir

A quién preguntar?

Involucrar las personas adecuadas

Clientes vs Usuarios

Cliente es quien patrocina

Usuario es alguien que es afectado o afecta el

producto que esta siendo diseñado

El producto puede crear usuarios nuevos !

Identificar: Quiénes, cuándo y cómo participan!

Material preparado por Rubby Casallas.

[email protected] 22