Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

26
Ingeniería del Ingeniería del Software UMG Software UMG Ingeniería en Ingeniería en Sistemas Sistemas Ingeniería de Requisitos Ingeniería de Requisitos Ing. David González Ing. David González

Transcript of Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Page 1: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Ingeniería del Software UMG Ingeniería del Software UMG Ingeniería en SistemasIngeniería en Sistemas

Ingeniería de RequisitosIngeniería de Requisitos

Ing. David GonzálezIng. David González

Page 2: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

ObjetivosObjetivos Introducción a la Noción de Ingeniería de Introducción a la Noción de Ingeniería de

Requerimientos.Requerimientos. Explicación de los diferentes niveles de detalle de Explicación de los diferentes niveles de detalle de

requerimientos que se necesiten.requerimientos que se necesiten. Describir como deben ser organizados los Describir como deben ser organizados los

documentos de un Sistema de Requerimientos.documentos de un Sistema de Requerimientos. Describir la validación del Proceso de Describir la validación del Proceso de

Requerimientos.Requerimientos. Explicar porque los Requerimientos se involucran Explicar porque los Requerimientos se involucran

durante el tiempo de vida de un sistema.durante el tiempo de vida de un sistema.

Page 3: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

ProblemasProblemas Los usuarios no saben lo que quieren.Los usuarios no saben lo que quieren. Un sistema tiene muchos usuarios y ninguno tiene Un sistema tiene muchos usuarios y ninguno tiene

una visión de conjunto.una visión de conjunto. No saben cómo hacer más eficiente la operacióNo saben cómo hacer más eficiente la operaciónn

en su conjuntoen su conjunto No saben qué partes de su trabajo pueden No saben qué partes de su trabajo pueden

transformarse en software.transformarse en software. No saben detallar lo que saben de forma precisa.No saben detallar lo que saben de forma precisa.

Page 4: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Ingeniería de RequerimientosIngeniería de Requerimientos

El proceso de establecer los servicios que el cliente El proceso de establecer los servicios que el cliente requiere de un sistema y los limites bajo los cuales requiere de un sistema y los limites bajo los cuales opera y se desarrolla.opera y se desarrolla.

Un requerimiento es una necesidad documentada Un requerimiento es una necesidad documentada sobre el contenido, forma o funcionalidad de un sobre el contenido, forma o funcionalidad de un producto o servicio.producto o servicio.

Page 5: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

CaracterísticasCaracterísticas Necesario:Necesario: Lo que pida un requerimiento debe ser Lo que pida un requerimiento debe ser

necesario para el producto.necesario para el producto. No ambiguo:No ambiguo: El texto debe ser claro, preciso y tener una El texto debe ser claro, preciso y tener una

única interpretación posible.única interpretación posible. Conciso:Conciso: Debe redactarse en un lenguaje comprensible por Debe redactarse en un lenguaje comprensible por

los inversores en lugar de uno de tipo técnico y los inversores en lugar de uno de tipo técnico y especializado, aunque aún así debe referenciar los aspectos especializado, aunque aún así debe referenciar los aspectos importantesimportantes

Consistente:Consistente: Ningún requerimiento debe entrar en conflicto Ningún requerimiento debe entrar en conflicto con otro requerimiento diferente, ni con parte de otro. con otro requerimiento diferente, ni con parte de otro. Asimismo, el lenguaje empleado entre los distintos Asimismo, el lenguaje empleado entre los distintos requerimientos debe ser consistente también.requerimientos debe ser consistente también.

Page 6: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

CaracterísticasCaracterísticas

Completo:Completo: Los requerimientos deben contener en sí Los requerimientos deben contener en sí mismos toda la información necesaria, y no remitir a mismos toda la información necesaria, y no remitir a otras fuentes externas que los expliquen con más detalle.otras fuentes externas que los expliquen con más detalle.

Alcanzable:Alcanzable: Un requerimiento debe ser un objetivo Un requerimiento debe ser un objetivo realista, posible de ser alcanzado con el dinero, el tiempo realista, posible de ser alcanzado con el dinero, el tiempo y los recursos disponibles.y los recursos disponibles.

Verificable:Verificable: Se debe poder verificar con absoluta Se debe poder verificar con absoluta certeza, si el requerimiento fue satisfecho o no. Esta certeza, si el requerimiento fue satisfecho o no. Esta verificación puede lograrse mediante inspección, análisis, verificación puede lograrse mediante inspección, análisis, demostración o testeo.demostración o testeo.

Page 7: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Requisitos funcionalesRequisitos funcionales

Definen lo que el sistema tiene que hacer, los Definen lo que el sistema tiene que hacer, los servicios que debe proporcionar al usuarioservicios que debe proporcionar al usuario

Describen la funcionalidad del sistemaDescriben la funcionalidad del sistema

Page 8: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Requisitos no funcionalesRequisitos no funcionales

Delimitan las condiciones en que el sistema presta Delimitan las condiciones en que el sistema presta servicios a los usuarios servicios a los usuarios Velocidad de respuestaVelocidad de respuestaAncho de banda requeridoAncho de banda requeridoEspacio en memoria o en discoEspacio en memoria o en disco

Page 9: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

¿Qué es un Requerimiento?¿Qué es un Requerimiento? Es un rango de instrucciones abstractas de alto nivel de un Es un rango de instrucciones abstractas de alto nivel de un

servicio o de un sistema, limitado a detallar una servicio o de un sistema, limitado a detallar una especificación funcional matemática.especificación funcional matemática.

Así es inevitable como los Requerimientos pueden servir Así es inevitable como los Requerimientos pueden servir en una función dualen una función dualPuede ser la base para una declaración de un contrato, Puede ser la base para una declaración de un contrato,

por lo tanto, deber estar abierto a interpretación.por lo tanto, deber estar abierto a interpretación.Puede ser la base para el contrato en sí, por lo tanto, Puede ser la base para el contrato en sí, por lo tanto,

debe ser definido en detalle.debe ser definido en detalle.Ambas declaraciones serán llamadas Requerimientos.Ambas declaraciones serán llamadas Requerimientos.

Page 10: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Requerimientos Requerimientos Definición/EspecificaciónDefinición/Especificación

Definición de RequerimientosDefinición de Requerimientos Una declaración en un Lenguaje Natural incluye los diagramas Una declaración en un Lenguaje Natural incluye los diagramas

de los servicios del sistema y sus límites operacionales. de los servicios del sistema y sus límites operacionales. Escrito para clientes.Escrito para clientes.

Especificación de RequerimientosEspecificación de Requerimientos Un documento estructurado con descripción o detalle de los Un documento estructurado con descripción o detalle de los

servicios del sistema. Escrito como un contrato entre el cliente servicios del sistema. Escrito como un contrato entre el cliente y el contratista.y el contratista.

Especificación de SoftwareEspecificación de Software Descripción detallada de software, la cual, puede servir como Descripción detallada de software, la cual, puede servir como

una base para diseño o implementación. Escrito para una base para diseño o implementación. Escrito para desarrolladores.desarrolladores.

Page 11: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Problemas DesagradablesProblemas Desagradables

Sistemas de Software grandes con problemas de Sistemas de Software grandes con problemas de direccionamiento.direccionamiento.

Problemas de tal manera complejos que puede ser que Problemas de tal manera complejos que puede ser que nunca se comprendan completamente y donde los nunca se comprendan completamente y donde los desarrolladores van comprendiendo el sistema desarrolladores van comprendiendo el sistema durante su desarrollodurante su desarrollo

Por lo tanto, los requerimientos son normalmente Por lo tanto, los requerimientos son normalmente incompletos e inconsistentes.incompletos e inconsistentes.

Page 12: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Razones de InconsistenciaRazones de Inconsistencia Los sistemas de software grandes deben mejorar Los sistemas de software grandes deben mejorar

su actual situación. Es difícil anticipar los efectos su actual situación. Es difícil anticipar los efectos que el sistema tendrá en la organización.que el sistema tendrá en la organización.

Usuarios diferentes tienen requerimientos y Usuarios diferentes tienen requerimientos y prioridades diferentes. Hay constantemente prioridades diferentes. Hay constantemente compromiso de cambios en los requerimientos.compromiso de cambios en los requerimientos.

Los usuarios finales del sistema y la organización Los usuarios finales del sistema y la organización que paga por el sistema tienen requerimientos que paga por el sistema tienen requerimientos diferentes.diferentes.

Page 13: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Documento de RequerimientosDocumento de Requerimientos

Es la declaración oficial de lo que es requerido para Es la declaración oficial de lo que es requerido para que el sistema sea desarrollado.que el sistema sea desarrollado.

Incluye la definición y especificación de Incluye la definición y especificación de requerimientos.requerimientos.

No es un documento de diseño. Tanto como sea No es un documento de diseño. Tanto como sea posible, es un conjunto de lo que es el sistema y posible, es un conjunto de lo que es el sistema y como lo hará.como lo hará.

Page 14: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Documento de RequerimientosDocumento de Requerimientos

Especificación de la conducta externa del sistema.Especificación de la conducta externa del sistema. Especificar los límites de la implementación.Especificar los límites de la implementación. Fácil de cambiar.Fácil de cambiar. Sirve como una herramienta de referencia para Sirve como una herramienta de referencia para

mantenimiento.mantenimiento. Recuerda el ciclo de vida del sistema, esto es, predice Recuerda el ciclo de vida del sistema, esto es, predice

cambios.cambios. Proporciona respuestas características a un evento no Proporciona respuestas características a un evento no

esperado.esperado.

Page 15: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Estructura del Documento de Estructura del Documento de RequerimientosRequerimientos

Introducción.Introducción.Describe la necesidad de crear el sistema y cuales son Describe la necesidad de crear el sistema y cuales son

sus objetivos.sus objetivos. Glosario.Glosario.

Define los términos técnicos usados.Define los términos técnicos usados. Modelos del Sistema.Modelos del Sistema.

Define los modelos que muestran los componentes del Define los modelos que muestran los componentes del sistema y las relaciones entre ellos.sistema y las relaciones entre ellos.

Definición de Requerimientos Funcionales.Definición de Requerimientos Funcionales.

Page 16: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Estructura del Documento de Estructura del Documento de RequerimientosRequerimientos

Definición de Requerimientos No-funcionales.Definición de Requerimientos No-funcionales. Evolución del Sistema.Evolución del Sistema.

Definir las suposiciones fundamentales en las cuales el sistema Definir las suposiciones fundamentales en las cuales el sistema se basa y se anticipan los cambios.se basa y se anticipan los cambios.

Especificación de Requerimientos.Especificación de Requerimientos. Especificación detallada de los requerimientos funcionales del Especificación detallada de los requerimientos funcionales del

sistema.sistema. Apéndices.Apéndices.

Descripción de la plataforma de Hardware del Sistema.Descripción de la plataforma de Hardware del Sistema. Requerimientos de la base de Datos (quizá como un modelo ER)Requerimientos de la base de Datos (quizá como un modelo ER)

Indice.Indice.

Page 17: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Identificación de RequerimientosIdentificación de RequerimientosPreguntar al cliente, a los usuarios y a los que están involucrados en Preguntar al cliente, a los usuarios y a los que están involucrados en los objetivos del sistema o producto y sean expertos, investigar los objetivos del sistema o producto y sean expertos, investigar como los sistemas o productos se ajustan a las necesidades del como los sistemas o productos se ajustan a las necesidades del negocio, y finalmente, cómo el sistema o producto va a ser utilizado negocio, y finalmente, cómo el sistema o producto va a ser utilizado en el día a día.en el día a día.

Una relación de necesidades y característicasUna relación de necesidades y características

Un informe del alcance del sistemaUn informe del alcance del sistema

Una lista de clientes, usuarios y otros intervinientesUna lista de clientes, usuarios y otros intervinientes

Escenarios que permiten ver al sistema o producto bajo Escenarios que permiten ver al sistema o producto bajo diferentes condiciones operativas.diferentes condiciones operativas.

Page 18: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Análisis y Negociación de RequisitosAnálisis y Negociación de Requisitos

Una vez recopilados, los requisitos se agrupan Una vez recopilados, los requisitos se agrupan por categorías y se organizan en subconjuntos, por categorías y se organizan en subconjuntos, se estudia cada requisito en relación con el se estudia cada requisito en relación con el resto.resto.

Utilizando un proceso iterativo, se irán Utilizando un proceso iterativo, se irán eliminando requisitos, se irán combinando y/o eliminando requisitos, se irán combinando y/o modificando para conseguir satisfacer los modificando para conseguir satisfacer los objetivos planteados.objetivos planteados.

Page 19: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Validación de RequerimientosValidación de Requerimientos Demostración de que los requerimientos que definen Demostración de que los requerimientos que definen

el sistema son lo que el cliente realmente quiere.el sistema son lo que el cliente realmente quiere. Los costos de errores en los requerimientos son Los costos de errores en los requerimientos son

altos, por lo cual, la validación es muy importantealtos, por lo cual, la validación es muy importante..Fijar un error de requerimiento después del Fijar un error de requerimiento después del

desarrollo puede resultar en un costo 100 veces desarrollo puede resultar en un costo 100 veces mayor que fijar un error en la implementación.mayor que fijar un error en la implementación.

El Prototipado es una técnica importante de la El Prototipado es una técnica importante de la validación de requerimientos.validación de requerimientos.

Page 20: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Chequeando RequerimientosChequeando Requerimientos

Validación. Provee al sistema las funciones que mejor Validación. Provee al sistema las funciones que mejor soporten las necesidades del cliente?soporten las necesidades del cliente?

Consistencia. Existe cualquier conflicto en los Consistencia. Existe cualquier conflicto en los requerimientos?requerimientos?

Completo. Están incluidas todas las funciones Completo. Están incluidas todas las funciones requeridas por el cliente?requeridas por el cliente?

Realismo. Pueden los requerimientos ser Realismo. Pueden los requerimientos ser implementados con la tecnología y el presupuesto implementados con la tecnología y el presupuesto disponible?disponible?

Page 21: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Revisión de RequerimientosRevisión de Requerimientos

Una revisión regular puede ayudar mientras la Una revisión regular puede ayudar mientras la definición de requerimientos está siendo hecha.definición de requerimientos está siendo hecha.

Tanto el cliente como el usuario y todas las personas Tanto el cliente como el usuario y todas las personas relacionadas deben estar involucrados en la revisión.relacionadas deben estar involucrados en la revisión.

La revisión debe ser formal (con los documentos La revisión debe ser formal (con los documentos completos) o informal. Una buena comunicación completos) o informal. Una buena comunicación entre desarrolladores, clientes y usuarios puede entre desarrolladores, clientes y usuarios puede resolver problemas en las primeras etapas.resolver problemas en las primeras etapas.

Page 22: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Chequeo de la RevisiónChequeo de la Revisión

Verificabilidad. Es el Requerimiento realmente Verificabilidad. Es el Requerimiento realmente probable?probable?

Entendibilidad. Es el Requerimiento Entendibilidad. Es el Requerimiento comprendido propiamente?comprendido propiamente?

Probabilidad. Es el origen de los requerimientos Probabilidad. Es el origen de los requerimientos claramente establecido?claramente establecido?

Adaptabilidad. Puede el requerimiento ser Adaptabilidad. Puede el requerimiento ser cambiado sin causar un gran impacto en otros cambiado sin causar un gran impacto en otros requerimientos?requerimientos?

Page 23: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Evolución de RequerimientosEvolución de Requerimientos

Los requerimientos siempre involucran como Los requerimientos siempre involucran como comprender mejor el desarrollo de las comprender mejor el desarrollo de las necesidades de los usuarios y como los necesidades de los usuarios y como los objetivos de la organización pueden cambiar.objetivos de la organización pueden cambiar.

Es esencial planear posibles cambios en los Es esencial planear posibles cambios en los requerimientos cuando el sistema sea requerimientos cuando el sistema sea desarrollado y utilizado.desarrollado y utilizado.

Page 24: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Evolución de RequerimientosEvolución de Requerimientos

Comprensión Inicialdel Problema

Comprensión de losCambios del Problema

RequerimientosIniciales

Cambios en losRequerimientos

Tiempo

Page 25: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

Cambios en el Documento de Cambios en el Documento de RequerimientosRequerimientos

El documento de requerimientos debe ser organizado, El documento de requerimientos debe ser organizado, de tal forma que los cambios en los requerimientos de tal forma que los cambios en los requerimientos puedan ser hechos sin tener que re-escribir demasiado.puedan ser hechos sin tener que re-escribir demasiado.

Las referencias externas deben ser minimizadas y las Las referencias externas deben ser minimizadas y las secciones del documento deben ser tan modulares como secciones del documento deben ser tan modulares como sea posible.sea posible.

Los cambios son fáciles cuando se trata de un Los cambios son fáciles cuando se trata de un documento electrónico. Sin embargo, la falta de documento electrónico. Sin embargo, la falta de estándares para documentos electrónicos lo hace estándares para documentos electrónicos lo hace difícil. difícil.

Page 26: Ingeniería del Software UMG Ingeniería en Sistemas Ingeniería de Requisitos Ing. David González.

ResumenResumen Los errores en los requerimientos son usualmente Los errores en los requerimientos son usualmente

muy caros de corregir una vez desarrollado el muy caros de corregir una vez desarrollado el sistema.sistema.

La revisión debe involucrar al cliente y a todas las La revisión debe involucrar al cliente y a todas las personas involucradas para validar los personas involucradas para validar los requerimientos del sistema.requerimientos del sistema.

El establecer requerimientos está relacionado con las El establecer requerimientos está relacionado con las actividades del cliente para el Software.actividades del cliente para el Software.

El Documento de Requerimientos es una descripción El Documento de Requerimientos es una descripción para clientes y desarrolladores.para clientes y desarrolladores.