Análisis

Elaborado por: *Santiago Cuervo Velasco*

Los requerimientos deben ser analizados con los siguientes fines: detectar y resolver conflictos entre requerimientos, descubrir los alcances del software y la forma en que debe interactuar con su ambiente operacional y elaborar requerimientos de sistema de los cuales se puedan derivar requerimientos de software (IEEE Computer Society, 2014, p. 38).

## **Clasificación de requerimientos**

Es importante que los requerimientos se clasifiquen para identificar costos de oportunidad derivados de su implementación (IEEE Computer Society, 2014, p. 38).

De acuerdo con la *IEEE Computer Society* (2014, p. 38), los requerimientos pueden clasificarse de estas maneras:

1. Si el requerimiento es funcional o no funcional
2. Si el requerimiento está vinculado al producto o al proceso
3. Según la prioridad del requerimiento
4. El alcance del requerimiento
5. Volatilidad/estabilidad del requerimiento
6. Clasificaciones propias de la organización para la cual se haga el software

## **Modelado conceptual**

Según la IEEE Computer Society (2014, p.39), es importante modelar problemas potenciales del mundo real para anticiparnos a ellos y proponer soluciones. Algunos ejemplos de modelos son:

1. Diagramas de casos de uso
2. Diagramas de flujo
3. Modelos de estados
4. Modelos basados en metas
5. Modelos de interacciones de usuario

La fuente antes mencionada nos sugiere tener en cuenta los siguientes factores antes de escoger el tipo de modelo:

1. La naturaleza del problema y el rigor con el que debe ser analizado
2. La experticia del ingeniero de software y su familiaridad con el modelo
3. Los requerimientos de proceso del usuario

## **Diseño de arquitectura y asignación de requerimientos**

El diseño de arquitectura es el proceso en el que la ingeniería de requisitos se entrelaza con el diseño de software o de sistemas y se determina que tan inseparables son estos dos procesos (IEEE Computer Society, 2014, p. 38). En otras palabras, cuando se definen los requerimientos, se piensa en cómo construir el software para que cumpla con ellos. La asignación de requerimientos se refiere a que componentes del software cumplirán con determinados requerimientos.

## **Negociación de requerimientos**

Puede haber conflictos entre requerimientos por diversos motivos. Algunos de ellos son peticiones de utilidades del software incompatibles por parte de grupos de interés diferentes, recursos insuficientes o incompatibilidad entre requerimientos funcionales y no funcionales. Para solucionar estos conflictos, los requerimientos se deben priorizar, proceso que los ingenieros hacen a medida que van conociéndolos. Este proceso se hace mediante el contraste de pros y contras determinados por los grupos de interés y por el costo de implementación de cada requerimiento (IEEE Computer Society, 2014, p. 40).

## **Análisis Formal**

Para este proceso es necesario que los requerimientos se planteen en su expresión formal. Esto permite que estos se entiendan de forma clara y que no haya cabida a ambigüedades. Adicionalmente, permite probar el software manifieste propiedades deseadas. Para esto último se utilizan herramientas como verificadores de teoremas y modelos (IEEE Computer Society, 2014, p. 41).

## Referencias

IEEE Computer Society. (2014). Guide to the Software Engineering Body of Knowledge. In *IEEE Computer Society*