User:NataliaChaconR

Requerimientos del Software
Los requerimientos de software determinan las necesidades y restricciones que se aplican al momento del desarrollo de un producto de software, el cual, se dirige explícitamente a la solución de algún problema de la vida cotidiana. De acuerdo a lo anterior, si se ubica el espectro en el área de conocimiento de los requerimientos del software se pueden especificar términos como adquisición, análisis, especificación y validación de todas las exigencias que tiene la creación de un producto de software y su ciclo de vida completo.

Para la ejecución de los requerimientos de software es importante seguir una lista de procedimientos o definiciones que se sustentan de la siguiente manera.

Definición de un Requerimiento del Software
Dentro de las especificaciones mínimas se puede definir un requerimiento del software como una propiedad que debe ser tenida en cuenta para la resolución de un problema en el mundo real. Esto causa que esta propiedad debe ser verificable y detectable como una característica individual.

Requerimientos Funcionales y no funcionales
Los requisitos funcionales se involucran en las actividades o funciones que se deben ejecutar en el software, mientras, que los requerimientos no funcionales son restricciones directas a una solución (rendimiento, seguridad, confiabilidad, interoperabilidad, entre otros).

Requerimientos Cuantificables
Es fundamental que el desarrollo del software tenga restricciones lo más claras y específicas posibles para su correcto funcionamiento, por eso mismo, los requerimientos cuantificables aparecen como herramientas que eviten situaciones vagas o inverificables dentro del desarrollo de software.

Requerimientos de Productos y Procesos
Cuando se especifican los requerimientos de producto se hablan de necesidades o restricciones en el software a desarrollar (Un ejemplo es que el software deberá verificar que el estudiante cumpla con los requisitos previos antes de registrar un curso), mientras que, los requerimientos de proceso se enfocan en las restricciones que debe tener el desarrollo del software (El software debe ser desarrollado utilizando un proceso X).

Requerimientos del Sistema y Software
Partiendo de la definición de sistema como la interacción entre hardware, software, firmware, personas, información, técnicas, facilidades, servicios y otros elementos de soporte se puede decir que los requerimientos de sistema incluyen todas las restricciones para esta interacción. Pero cuando nos enfocamos a un requerimiento de software este se comporta como una derivación de las restricciones del sistema.

Propiedades Emergentes
Específica como los componentes del software interoperan entre ellos, por lo tanto, no se incluye como un componente individual sino como un global de todos los componentes que sean codependientes.

Procesos del requerimiento
Esta sección se enfoca al entendimiento de interacción entre los procesos de requerimientos respecto a los procesos generales que se desarrollan en la ingeniería de software.

Modelos de Procesos

 * Son parámetros que aparecen al inicio de un proyecto de desarrollo de software y continúan refinándose a lo largo del ciclo de vida del mismo.
 * Permite categorizar los requisitos del software como elementos de configuración, así mismo, brindan la capacidad de gestionarlos durante todo el ciclo de vida del desarrollo.
 * Se adaptan al tipo de proyecto y Organización

Actores del Proceso
Este ítem especifica los principales roles de las personas que participan en el desarrollo de los procesos de requerimientos. Dentro de los principales stakeholders se pueden encontrar los siguientes.


 * Usuarios: Grupo de personas que operaran el software
 * Clientes: Grupo que encargó el software o representan el mercado del mismo.
 * Analistas de mercado: Personas encargadas de identificar las necesidades del mercado.
 * Reguladores: Encargados de determinar que el desarrollo del software cumpla con todos los reglamentos y normativas
 * Ingenieros de software: Personas que demuestran un interés legítimo en el desarrollo de software teniendo en cuenta todos los requerimientos del cliente, los reguladores y demás entes que participan en la construcción de la herramienta.

Mantenimiento y Soporte del Proceso
Especifica los temas de iniciación y definición de alcance ya que tiene en cuenta todos los recursos necesarios y consumidos respecto a los requerimientos solicitados.

Calidad y Mejora del Proceso
Determina las relaciones entre el costo, los tiempos de desarrollo del producto y la satisfacción del cliente que solicitó el servicio. Algunas de las actividades que circunda en este ítem son:


 * Cobertura de los requerimientos por estándares y modelos de mejora
 * Medidas de evaluación
 * Planificación e implementación de mejoras
 * Seguridad/ mejora de la CIA/planificación

Adquisición de Requerimientos
Son determinados por el origen de los requerimientos del software y cómo los ingenieros de software los obtienen. Todo esto parte del proceso de identificación del problema y como se espera que el software lo solucione donde las interacciones entre el equipo de desarrollo y el cliente son fundamentales para el entendimiento de esta situación. Es necesario que esta sección sea duradera y efectiva, lo cual, solo se puede lograr mediante la generación de buena comunicación entre los stakeholders en todas las etapas del ciclo de vida del software. También es importante mencionar que la adquisición de requerimientos es fundamental para el establecimiento de rutas de trabajo, cronogramas y alcance de todo el proyecto donde se puedan especificar, priorizar y satisfacer las necesidades del cliente.

Fuentes de los Requerimientos
Las principales fuentes de generación de requerimientos se plantean de la siguiente manera.


 * Metas: Se refiere a los objetivos más altos del software, por lo cual, las metas definen la motivación y así mismo los costos y valores del desarrollo del software.
 * Conocimiento del dominio: Los ingenieros de software necesitan tener las bases fundamentales de conocimiento para comprender todo el background requerido en el desarrollo del software, así mismo, establecer aproximaciones y posibles limitaciones.
 * Stakeholders: Es necesario tener la capacidad de identificar, representar y manejar diferentes puntos de vista de los stakeholders ya que estos pueden mantener requerimientos totalmente diferentes en el desarrollo del software.
 * Reglas del negocio: El respeto por los establecimientos del negocio hacen parte fundamental del desarrollo del software.
 * Ambiente operacional: Toda l información sobre el ambiente en el que el software será ejecutado.
 * Ambiente organizacional: El software regularmente se encuentra apoyando un proceso de negocio que se acondiciona a ciertas estructuras, culturas y políticas que deben ser respetadas.

Técnicas de Adquisición de los Requisitos
Es fundamental que el ingeniero de software tenga la capacidad de adquirir información sobre los requerimientos de desarrollo del software donde generalmente se realiza una interacción con los diferentes miembros involucrados para la obtención de información relevante acerca del proyecto. Por todo esto es fundamental comprender que esto no es una actividad pasiva, por lo cual, el ingeniero de software deberá tener las habilidades necesarias para obtener la información y aplicarla de manera adecuada en sus conocimientos. Algunas de las herramientas son:


 * Entrevistas
 * Escenarios
 * Prototipos
 * Facilidad de Reuniones
 * Observación
 * Historias de los usuarios

Análisis de Requerimientos
El análisis de requerimientos detecta y resuelve problemas entre requisitos, ayuda a definir los límites del software y cómo este va a interactuar con el ambiente.

Clasificación de los Requerimientos
Los análisis de requerimientos pueden ser clasificados según el número de dimensiones, cómo por ejemplo los requerimientos funcionales y no funcionales, propiedades emergentes (derivado de un alto nivel de requerimientos o impuestos por el stakeholder), requerimientos del producto y el proceso, requerimientos prioritarios (los cuales son obligatorios o deseados en el desarrollo), requerimientos de alcance (afectan al software) y Requerimientos volátiles (cambian durante el ciclo de vida).

Modelado Conceptual
El modelado conceptual utiliza entidades del dominio del problema para relacionar el modelo con el mundo real. Esto se logra por medio del uso de diagramas, modelos de flujo de datos, modelos de estado, interacción del usuario, modelado de objetos, entre otros. Los factores que influyen en la notación del modelado incluye la naturaleza del problema, la experticia del ingeniero de software o requerimientos del usuario.

Diseño Arquitectónico y Asignación de Requisitos
En este paso se realiza una superposición entre el diseño arquitectónico del software y los requisitos establecidos, se busca cual es la mejor forma de acercar el diseño del sistema a los requerimientos establecidos en el mundo real. Buscar el desarrollo correcto para satisfacer los requisitos propuestos.

Negociación de los Requisitos
También llamado resolución de conflictos, es el proceso por el cual las dos partes interesadas intentan llegar a un acuerdo entre los requerimientos funcionales y los no funcionales. Se busca cuales son los requerimientos a priorizar y el ingeniero de software estima el costo de la implementación de cada requerimiento.

Análisis Formal
Se realiza el correcto desarrollo del análisis de los requerimientos evadiendo todo mal entendimiento o falta de información. En esta etapa también se puede razonar sobre los requerimientos, dando paso a la aprobación de las propiedades deseadas en el software.

Especificación de los Requerimientos
Creación de documentos para la revisión, evaluación y aprobación. En esta etapa pueden llegarse a desarrollar tres documentos los cuales son Definición del sistema, requerimientos del sistema y requerimientos del software.

Documento de Definición del Sistema
El documento de definición del sistema, también llamado el documento de los requerimientos del usuario define los requerimientos de alto nivel en el sistema desde la perspectiva del dominio. También contiene información sobre los objetivos, requerimientos no funcionales, suposiciones, definición de limitaciones, diseño de modelos conceptuales del sistema, escenarios de uso, entre otros.

Especificación de los Requerimientos del Sistema
En este documento se presentan sólo los requerimientos del sistema, los requerimientos del software se derivan de estos.

Especificación de los Requerimiento del Software
Este documento establece los acuerdos pactados por las partes involucradas, clientes y proveedores. Debe contener la descripción rigurosa de los requerimientos al igual que una estimación realista de los costos, riesgo y tiempos de trabajo.

Validación de los Requerimientos
Los documentos presentados en las Especificación de los Requerimientos estarán sujetos a procesos de aprobación y validación. Esto se hace con el fin de asegurar que el ingeniero de software entendiera los requerimientos solicitados por el cliente.

Revisión de los Requerimientos
En la revisión de requerimientos se inspeccionan los documentos para buscar por errores, suposiciones incorrectas, falta de claridad o desviaciones de las prácticas estándar.

Prototipado
El prototipado se realiza principalmente para validar con el ingeniero de software los requerimientos, interpretar de una manera más fácil las suposiciones del ingeniero y dar retroalimentación de posibles equivocaciones.

Validación del Modelo
En la validación del modelo se verifica la calidad de la modelación desarrollada durante el análisis.

Pruebas de Aceptación
Las pruebas de aceptación se realizan para verificar que el producto final satisface al cliente. Se debe hacer la verificación de cada requerimiento, normalmente es realizado simulando ser un cliente final.

Naturaleza Iterativa de los Requisitos del Proceso
Es importante tener en cuenta que el desarrollo de software se encuentra dentro de un mercado altamente competitivo donde las condiciones de eficiencia y satisfacción determinaran los niveles de éxito de un proyecto, por esto mismo, los requerimientos se convierten en una herramienta de constante evolución o iteración que permiten una adaptación continua a las nuevas exigencias del mercado.

Gestión del Cambio
Determina los principales procedimientos que deben ser tenidos en cuenta para la implementación y análisis al momento de realizar cambios que han sido propuestos, todo esto fundamentado bajo una correcta gestión de requerimientos.

Atributos de los Requisitos
Los requisitos no son solo ideas formuladas en el desarrollo de software, realmente hacen parte de un conjunto de características que permiten la correcta definición de cambios en una actividad, por esto mismo, se pautan atributos para la definición y especificación de lo que se desea realizar, dentro de esto podemos identificar información adicional, resumen de cambios y fuentes de obtención de cada requerimiento.

Rastreo de Requisitos
Los requerimientos deben tener un historial de identificación enfocado en todos los cambios que han tenido desde su aparición hasta su ultima modificación, todo esto permite mantener un control sobre el ciclo de vida del producto y especificar cada una de las razones de un cambio por si existe un problema o una duda al momento de evolucionar el software.

Medición de Requisitos
Finalmente, es importante tener sistemas de medición de los requerimientos ya sean por volumen o tamaño debido a que esto tendrá una apreciación en los costos de desarrollo, mantenimiento o simplificación en la ejecución de tareas.

Herramientas de Requerimientos del Software
Dentro de las exigencias y herramientas fundamentales de los requerimientos se deben incluir actividades complementarias que ayuden al estudio de estos, como lo son, documentación, historial de cambios y administración de cambios que garanticen versatilidad y flexibilidad al momento de trabajar sobre estos.

REFERENCIAS
IEEE (2004). Computer Society. SWEBOK Guide V3 Topics. Capítulo I, páginas 1-1 hasta la 1-18. Recuperado de https://www.computer.org/education/bodies-of-knowledge/software-engineering/topics