Especificación de requisitos - Approach

Publicado por Agustín Gonzalez
hace 10 años

<p style="text-align:left;">Es conocido que, en ciertos casos, los desarrolladores debemos cumplir también con el rol de analista. Es conocido, además, que para la construcción y el análisis de software, existen varios caminos. Uno de ellos, es la conocida <span style="font-weight:bold;">codificación y corrección </span>iterativa, bastante utilizada en los inicios de la transición como desarrolladores a analistas funcionales. En constraste, otro de los caminos es la realización de una especificación de requisitos (o <span style="font-weight:bold;">ERS</span>), tema del cual se dará un <span style="font-style:italic;">approach </span>en este, mi primer, artículo. Al ser una aproximación, no se hablará de herramientas CASE (por ejemplo, Enterprise Architect), ni tampoco se hará hincapié en UML u otras técnicas de modelado.</p><p class="MsoNormal" style="text-align:left;"><span><br /></span></p><h3 style="text-align:left;">Requisitos y ERS</h3><p class="MsoNormal" style="text-align:left;">Un <span style="font-weight:bold;">requisito </span>o <span style="font-weight:bold;">requerimiento</span>, es una condición o capacidad que un sistema "debe" poseer. Algunos autores y personas, suelen hacer diferencia entre requisitos y requerimientos, tomando los primeros como algo “obligatorio” y los segundos como algo, en ciertos casos, "deseable". En este artículo no se harán tales diferencias (al menos explícitamente). Yendo al grano, es posible destacar los siguientes <span style="font-weight:bold;">tipos </span>requerimientos:</p><p></p><p class="MsoListParagraphCxSpFirst"></p><ul><li style="text-align:left;"><b>1. Funcionales</b>: Servicios que el sistema <span style="font-weight:bold;">debe otorgar </span>como tal. Ejemplo: Es indispensable en un sistema de ventas, el proceso de venta de un producto.<br /></li><li style="text-align:left;"><b>2. No funcionales</b>: Son <span style="font-weight:bold;">restricciones </span>del sistema, normalmente causadas por agentes externos. Por ejemplo, en ciertos casos, para la lectura de documentos exportados del sistema se necesitará un lector de PDF.<br /></li><li style="text-align:left;"><b>3. De usuario</b>: Son las operaciones del sistema esperadas por los <span style="font-weight:bold;">usuarios </span>finales, en lenguaje natural. Estos requerimientos deben, obligatoriamente, verificarse con el usuario.<br /></li><li style="text-align:left;"><b>4. De sistema</b>: <span style="font-weight:bold;">Derivan de los requerimientos de usuario</span>, siendo, normalmente, el detalle de estos. Es deseable, también, la verificación de estos con el cliente. Debido a la presencia de tecnicismos, no siempre es posible.<br /></li></ul><p></p><p></p><p></p><p></p><p></p><p class="MsoNormal"></p><p></p><ul><li style="text-align:left;">Por consiguiente, una <span style="font-weight:bold;"><span style="font-weight:normal;">especificación de requisitos (de ahora en más </span>ERS</span>) es la de descripción del <span style="font-style:italic;">“futuro”</span> software en todos sus aspectos, en base a un <b>relevamiento inicial</b>, el cual posteriormente puede ser retroalimentado por esta especificación en una suerte de proceso iterativo. Es importante aclarar que <span style="font-weight:bold;">el usuario es inherente </span>a la construcción de este documento: Una buena ERS, verificada con el cliente, puede ser tomada como contrato formal.<br /></li><li style="text-align:left;"><span><br /></span></li></ul><p></p><h4 style="text-align:left;">Más notas...</h4><p class="MsoNormal" style="text-align:left;"><span style="font-weight:bold;">1. </span>Es importante la <span style="font-weight:bold;">numeración de los requisitos</span> y la descripción de los mismos en tiempo “<span style="font-weight:bold;">futuro</span>” (el software relevado, se supone, aún no existe).</p><p class="MsoNormal" style="text-align:left;"><span style="font-weight:bold;">2. </span>Es posible nombrar ciertos requisitos bajo la categoría de <span style="font-weight:bold;">opcionales</span>, también denominados “<span style="font-weight:bold;">deseables</span>”. Su desarrollo añade un "plus" al sistema, pueden ser implementados o no, pero pueden pasar a ser requisitos obligatorios en futuras reversiones.</p><p></p><p class="MsoNormal"></p><p style="text-align:left;"> </p><h4 style="text-align:left;">Un ejemplo para entender mejor...</h4><p class="MsoNormal" style="text-align:left;"><span></span></p><p class="MsoNormal">Documento "Análisis de sistema <span style="font-style:italic;">'xxxx.doc'.</span>"</p><table class="table table-bordered"><tbody><tr><td><p class="MsoNormal"><span style="font-weight:bold;">Requisitos funcionales</span></p><p class="MsoNormal">Nota: En el primer nivel de la lista, se encuentran definidos los requisitos de <span style="font-weight:bold;">usuario</span>, mientras que en los sub-niveles, los de <span style="font-weight:bold;">sistema</span>.</p><p></p><p class="MsoListParagraphCxSpFirst">1. El usuario administrador podrá agregar, eliminar, modificar y listar de personas.</p><p></p><p class="MsoListParagraphCxSpMiddle"><span style="font-style:italic;">      1.1. El sistema no permitirá  dos personas con un mismo DNI.</span></p><p></p><p class="MsoListParagraphCxSpMiddle"><span style="font-style:italic;">      1.2. El sistema no permitirá realizar baja física, esta deberá ser lógica.</span></p><p></p><p class="MsoListParagraphCxSpLast"><span style="font-style:italic;">      1.3. El sistema no permitirá la modificación del DNI de una persona.</span></p><p></p><p class="MsoNormal">2. El usuario deberá establecer un nombre y un apellido para una persona.</p><p></p><p class="MsoNormal"><span style="font-style:italic;">      2.1. El sistema no permitirá la carga de una persona sin nombre ni apellido.</span></p><p></p><p class="MsoNormal"></p><p> </p><p class="MsoNormal"><span style="font-weight:bold;">Requisitos no funcionales</span></p><p></p><p class="MsoListParagraph">1. Para la visualización de archivos exportados, será necesario un software lector de PDF. </p></td></tr></tbody></table><p style="text-align:left;"><br /></p><h3 style="text-align:left;">Conmensurando la ERS y la codificación de software</h3><p class="MsoNormal" style="text-align:left;">En el ejemplo mencionado, los requisitos 1.1, 1.3 y 2.1, pueden, claramente, transformarse en piezas de código, más precisamente en sentencias de condición "if", por lo que la ERS no es algo <span style="font-weight:bold;">"lejano" </span>a la construcción de software. Por otra parte, la repetición de ciertos conceptos, data acerca de la construcción del <span style="font-weight:bold;">modelo de datos </span>y los <span style="font-weight:bold;">módulos</span> presentes en el sistema. Por ejemplo, la repetición de la palabra persona, indica la presencia de esta entidad como una futura <span style="font-weight:bold;">tabla </span>y <span style="font-weight:bold;">clase</span>. En este caso, sus propiedades o columnas serán el <span style="font-style:italic;">DNI</span>, el <span style="font-style:italic;">nombre </span>y el a<span style="font-style:italic;">pellido</span>. Además, a partir de los requerimientos es posible la derivación de los diagramas de casos de uso (UML): En el ejemplo dado, el<span style="font-style:italic;"> “usuario administrativo” </span>es un actor, y la acción, en consecuencia, el <span style="font-style:italic;">“Gestionar usuarios”</span>.</p><p>

</p><p class="MsoNormal" style="text-align:left;">Para finalizar, puede que se considere que la construcción de una ERS conlleve a una pérdida de tiempo en el desarrollo, ya que al principio, implementar técnicas de análisis, puede ser un poco tedioso por el tiempo empleado en la definición de los requisitos o requerimientos. Sin embargo, luego de lograr una adaptación es denotable como el desarrollo de código se vuelve más eficiente y el software final, más maduro, siendo este <span style="font-weight:bold;">verificable </span>contra la ERS.</p><p></p>

sistemas ers analisis software requisitos
Respuesta de Cristian Olaz
hace 10 años

Muy buen artículo Agustín!

Respuesta de Susitio
hace 10 años

Agustín, muy buena introducción para tomarse con seriedad,la captura de requerimientos y hacer un buen Modelo de datos!, "seguí Agus", si gustas, con una introducción CASE o UML..... :-D

Respuesta de Elias Peraza
hace 10 años

Muy bueno, y útil.