La realización de este blog es con el fin de dar una perspectiva diferente acerca de los conceptos y las características de lo que es la Ingeniería de requerimientos, y así mostrar su importancia en el proceso de la creación de proyectos de desarrollo de software
En que consiste la Ingeniería de requerimientos
Es el proceso de recopilar, analizar y verificar las necesidades del cliente, para
un sistema de software es llamado Ingeniería de Requerimientos. La meta de la
ingeniería de requerimientos es entregar una especificación de requerimientos
de software correcta y completa. La ingeniería de requerimientos apunta a
mejorar la forma en que comprendemos y definimos sistemas de software
complejos.
La importancia de los requerimientos
Los requerimientos son importantes para que el proyecto surja de manera eficiente, sino se tienen en cuenta estos podrían causar problemas, para ello debemos contar con una coherencia en la implementación de las herramientas de planeación, se deben de realizar estimaciones realistas, la arquitectura, diseño y desarrollo de software deben de tener una base firme, se deben de realizar revisiones periódicas en el proceso de desarrollo del proyecto, hacer un estudio previo de los requisitos del usuario, definir por completo el alcance del proyecto y crear un modelo de negociación antes de desarrollar el software
Características de los requerimientos
Las características de un requerimiento son sus
propiedades principales. Un conjunto de requerimientos en estado de madurez, deben
presentar una serie de características tanto individualmente como en grupo. A continuación se
presentan las más importantes.
Necesario: Un requerimiento es necesario si su
omisión provoca una deficiencia en el sistema a construir, y además su
capacidad, características físicas o factor de calidad no pueden ser reemplazados
por otras capacidades del producto
o del proceso. Conciso: Un requerimiento es conciso si es fácil
de leer y entender. Su redacción
debe ser simple y clara para aquellos que vayan a consultarlo en un futuro. Completo: Un requerimiento está completo si no
necesita ampliar detalles en su redacción, es decir, si se proporciona la información suficiente para su
comprensión. Consistente: Un requerimiento es consistente si no
es contradictorio con otro requerimiento. No ambiguo: Un requerimiento no es ambiguo cuando
tiene una sola interpretación. El lenguaje usado en su
definición, no debe causar confusiones al lector.
Verificable: Un requerimiento es verificable cuando puede ser cuantificado de manera que permita hacer uso de los siguientes de verificación: inspección, análisis, demostración o pruebas.
Verificable: Un requerimiento es verificable cuando puede ser cuantificado de manera que permita hacer uso de los siguientes de verificación: inspección, análisis, demostración o pruebas.
La Trazabilidad en los Requerimientos
Un concepto clave en el proceso de gestión de cambios es la trazabilidad. Los requerimientos deben ser trazables, es decir, "rastreables". Se podría decir que un requerimiento es trazable si se pueden identificar todas las partes del producto existente relacionadas con ese requerimiento. Todos los requerimientos deberían ser trazables para mantener consistencia entre los distintos documentos de un proyecto.
Es importante conocer aspectos de los requerimientos tales como:
Es importante conocer aspectos de los requerimientos tales como:
- Su origen (quién lo propuso).
- Necesidad (por qué existe).
- Relación con otros requerimientos (Dependencias).
- Relación con otros elementos (Dependencias).
Proceso de la Ingeniería de Requerimientos
Se han definido diversos modelos a nivel de toda la Ingeniería de Software, así tenemos para el desarrollo de aplicaciones web, de escritorio, o sencillamente se ha definido un estándar, pero en general, la mayor parte de estos procesos tienen un símil y lo único que buscan es recopilar la mayor cantidad de requerimientos correctos para así conformar una buena estructura que servirá de base para el desarrollo de un proyecto.
Estudio de viabilidad: Este permitirá rendir un informe tanto al equipo de desarrollo del proyecto como al usuario o cliente, donde se verificará si el proyecto vale la pena desarrollarlo. Es de vital importancia para la satisfacción de los objetivos del negocio.
Captura y Análisis: En esta fase el desarrollador o su equipo de desarrollo entran en contacto con el usuario final o con el cliente para determinar el alcance del proyecto o del sistema que se desea construir, además, se debe identificar cuáles son los servicios que prestará el sistema, su rendimiento, sus necesidades y restricciones, y cuáles son los objetivos esperados.
Especificación: Aquí se debe obtener un documento de especificación de requisitos, en cual se llega a definir de una forma completa, precisa y verificable cada uno de los requerimientos o necesidades que debe satisfacer el sistema a desarrollar, además de sus respectivas restricciones (software, hardware).
Validación: Consiste en mostrar o comprobar que cada uno de los requisitos obtenidos definen el sistema o proyecto que se va a construir y que desea el cliente. En esta etapa solamente entran aquellos requisitos que se mencionaron ya en la especificación.
Gestión: Se realiza la comprensión y control de los cambios de cada una de los requisitos, sean estos requisitos estables (corresponden al estado del sistema) o volátiles (representan eventos que hacen que el sistema realice una función dada).
Relaciones entre administración de requerimientos y ciclos de vida
Al modelo o proceso de desarrollo de software se le conoce como ciclo de vida del software. porque describe la vida de un producto de software desde su concepción hasta su implantación, entrega, utilización y mantenimiento. Un modelo es una representación abstracta de un proceso.
Modelo en cascada
Consta de 5 etapas, que son las actividades fundamentales en cualquier desarrollo de software:
- Análisis y definición de requerimientos.
- Diseño del sistema y del software.
- Implementación y validación de unidades.
- Integración y validación del sistema.
- Funcionamiento y mantenimiento.
Modelo evolutivo
Se caracterizan por la forma en que permiten a los ingenieros del software desarrollar versiones cada vez más completas del software.
Existen dos tipos de desarrollo evolutivo:
- Desarrollo exploratorio: El objetivo del proceso es trabajar de la mano con el cliente para explorar los requerimientos y entregar un sistema final
- Prototipos desechables: El prototipo se centra en experimentar con los requerimientos del cliente que no se comprenden del todo.
Modelo de componentes reutilizables
En la mayoría de los proyectos existe algo de reutilización de software, esto sucede, generalmente, cuando las personas que trabajan en el proyecto conocen diseños de códigos similares al diseño que se requiere.
Artefactos de modelado para el Desarrollo Estructurado de Sistemas
El objetivo es lograr una definición completa del sistema en términos de funciones, estableciendo los datos de entrada y salida correspondientes para el análisis del dominio de la información.
Caso de uso
Es una secuencia de interacciones que se desarrollan entre un sistema y sus actores.
Diagrama de clases
Es un tipo de diagrama y estructura estática que describe la estructura de un sistema morado.
Diagrama de objetos
Representan un único ejemplo de una clase y se utilizan para ilustrar un punto de datos en su aplicación.
Diagrama de estado
Son útiles para indicar los eventos del sistema en los casos de uso.
Diagramas de secuencias
Muestra la interacción de un conjunto de objetos en una aplicación a través del tiempo y se modela para cada caso de uso.
ARTEFACTOS DE MODELADO PARA EL DESARROLLO ORIENTADO A OBJETOS
El modelado no es más que la construcción de un modelo a partir de una especificación.
Un modelo: es una abstracción de algo, que se elabora para comprender ese algo antes de construirlo. El modelo omite detalles que no resultan esenciales para la comprensión del original y por lo tanto facilita dicha comprensión.
Un artefacto: es una información que es utilizada o producida mediante un proceso de desarrollo de software. Pueden ser artefactos un modelo, una descripción o un software.
El estándar IEEE 830-1998 para el SRS(en inglés) o ERS (Especificación de requerimientos de software) es un conjunto de recomendaciones para la especificación de los requerimiento o requisitos de software el cuál tiene como producto final la documentación de los acuerdos entre el cliente y el grupo de desarrollo para así cumplir con la totalidad de exigencias estipuladas.
Autores del blog:
MÉTODOS DE COMUNICACIÓN
Existen varios métodos de comunicación que se emplean para compartir la información entre los interesados del proyecto. De manera general, estos métodos pueden clasificarse en:
• Comunicación interactiva. Entre dos o más partes que realizan un intercambio de información de tipo multidireccional. Resulta la manera más eficiente de asegurar entre todos los participantes una comprensión común acerca de temas específicos, e incluye reuniones, llamadas telefónicas, videoconferencias, etc.
• Comunicación de tipo push (empujar). Enviada a receptores específicos que necesitan conocer la información. Esto asegura la distribución de la información, pero no garantiza que efectivamente haya llegado a la audiencia prevista ni que haya sido comprendida. Este tipo de comunicación incluye las cartas, los memorandos, los informes, los correos electrónicos, los faxes, los correos de voz, los comunicados de prensa, etc.
• Comunicación de tipo pull (halar). Utilizada para grandes volúmenes de información o para audiencias muy grande, que requieren que los receptores accedan al contenido de la comunicación según su propio criterio. Entre los métodos, se incluyen los sitios intranet, el aprendizaje virtual, los servidores de contenido, etc.
En función de los requisitos de comunicación, el director del proyecto decide qué métodos de comunicación deben utilizarse dentro del proyecto, cómo y cuándo hacerlo.
OBTENCIÓN Y VALIDACIÓN DE REQUERIMIENTOS
Los requerimientos funcionales describen una interacción entre el sistema y su ambiente, describen cómo debe comportarse el sistema ante determinado estímulo. Son declaraciones de los servicios que debe proporcionar el sistema, de la manera en que éste debe reaccionar a entradas particulares y de cómo se debe comportar en situaciones particulares. En algunos casos, también pueden declarar explícitamente lo que el sistema no debe hacer.
> 1ra reunión Negocio detrás del sistema Requerimientos en general
> Listar los interesados.
Desarrollar el 1er prototipo.
> Siguiente reunión Validar los requerimientos contra el prototipo Tal vez modificar el prototipo Obtener otros requerimientos
> Más requerimientos obtener Errores en el prototipo
> Desarrollar un nuevo prototipo
> Todo listo
> Fin Pasar los requerimientos a los diseñadores
OBTENCIÓN Y VALIDACIÓN DE REQUERIMIENTOS NO FUNCIONALES
Los requerimientos no funcionales: describen una restricción sobre el sistema que limita nuestras elecciones en la construcción de una solución al problema. Restringen los servicios o funciones ofrecidas por el sistema. Incluyen restricciones de tiempo, el tipo de proceso de desarrollo a utilizar, fiabilidad, tiempo de respuesta, capacidad de almacenamiento. Los requerimientos no funcionales ponen límites y restricciones al sistema.
Los requerimientos no funcionales incluyen restricciones las restricciones son características que no pueden ser negociadas y que son impuestas por el cliente como guía o definición para el sistema atributos de calidad son propiedades o características del sistema que importan a los stakeholders y que por lo tanto afectaran el grado de satisfacción del sistema este tipo de requerimientos pueden ser evaluados con dos enfoques
factores de calidad (externo) -ejecución
criterios de calidad (interno) - desarrollo
CASOS DE USO
Los casos de uso son una técnica para especificar el comportamiento de un sistema:
“Un caso de uso es una secuencia de interacciones entre un sistema y alguien o algo que usa alguno de sus
servicios.”
Todo sistema de software ofrece a su entorno –aquellos que lo usan– una serie de servicios. Un caso de uso es
una forma de expresar cómo alguien o algo externo a un sistema lo usa. Cuando decimos “alguien o algo”
hacemos referencia a que los sistemas son usados no sólo por personas, sino también por otros sistemas de
hardware y software.
Por ejemplo, un sistema de ventas, si pretende tener éxito, debe ofrecer un servicio para ingresar un nuevo
pedido de un cliente. Cuando un usuario accede a este servicio, podemos decir que está “ejecutando” el caso
de uso ingresando pedido.
DOCUMENTO DE ESPECIFICACIÓN DE REQUERIMIENTOS
Autores del blog:
- Cristhian Guzman Lopez / E-mail:cristhianguzman93@gmail.com
- Sebastian Pino
- David Loaiza / E-mail: davidloa_00@hotmail.com
- Joan Hernandez / E-mail: joanalexander1999@outloock.es