Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 19 — #57<br />
✐<br />
1.9. Análisis y diseño<br />
Declaración de objetivos<br />
Cualquier sistema construido, no importa cuan complicado sea, ti<strong>en</strong>e un propósito<br />
fundam<strong>en</strong>tal, el negocio que hay <strong>en</strong> él, la necesidad básica que satisface. Si puede<br />
ver la interfaz de usuario, el hardware o los detalles específicos del sistema, los algoritmos<br />
de codificación y los problemas de efici<strong>en</strong>cia, finalm<strong>en</strong>te <strong>en</strong>contrará el núcleo<br />
de su exist<strong>en</strong>cia, simple y s<strong>en</strong>cillo. Como el así llamado concepto de alto nivel de una<br />
película de Hollywood, puede describirlo <strong>en</strong> una o dos frases. Esta descripción pura<br />
es el punto de partida.<br />
El concepto de alto nivel es bastante importante porque le da el tono a su proyecto;<br />
es una declaración de principios. No ti<strong>en</strong>e porqué conseguirlo necesariam<strong>en</strong>te la<br />
primera vez (podría t<strong>en</strong>er que llegar a una fase posterior del proyecto antes de t<strong>en</strong>erlo<br />
completam<strong>en</strong>te claro), pero siga int<strong>en</strong>tándolo hasta que lo consiga. Por ejemplo,<br />
<strong>en</strong> un sistema de control de tráfico aéreo puede empezar con un concepto de alto<br />
nivel c<strong>en</strong>trado <strong>en</strong> el sistema que está construy<strong>en</strong>do: «El programa de la torre sigue<br />
la pista a los aviones». Pero considere qué ocurre cuando adapta el sistema para un<br />
pequeño aeropuerto; quizá sólo haya un controlador humano o ninguno. Un modelo<br />
más útil no se preocupará de la solución que está creando tanto como la descripción<br />
del problema: «Llega un avión, descarga, se revisa y recarga, y se marcha».<br />
1.9.2. Fase 1: ¿Qué estamos haci<strong>en</strong>do<br />
En la g<strong>en</strong>eración previa de diseño de programas (llamado diseño procedural), esto<br />
se llamaba «crear el análisis de requisitos y especificación del sistema». Éstos, por supuesto,<br />
eran lugares donde perderse; docum<strong>en</strong>tos con nombres intimidantes que podrían<br />
llegar a ser grandes proyectos <strong>en</strong> sí mismos. Sin embargo, su int<strong>en</strong>ción era bu<strong>en</strong>a. El<br />
análisis de requisitos dice: «Haga una lista de las directrices que usará para saber<br />
cuándo ha hecho su trabajo y el cli<strong>en</strong>te estará satisfecho». La especificación del sistema<br />
dice: «Hay una descripción de lo que hará el programa (no cómo) por satisfacer los<br />
requisitos». El análisis de requisitos es realm<strong>en</strong>te un contrato <strong>en</strong>tre usted y el cli<strong>en</strong>te<br />
(incluso si el cli<strong>en</strong>te trabaja d<strong>en</strong>tro de su compañía o es algún otro objeto o sistema).<br />
Las especificaciones del sistema son una exploración de alto nivel del problema y <strong>en</strong><br />
algún s<strong>en</strong>tido un descubrimi<strong>en</strong>to de si se puede hacer y cuánto se tardará. Dado que<br />
ambos requerirán cons<strong>en</strong>so <strong>en</strong>tre la g<strong>en</strong>te (y porque suel<strong>en</strong> cambiar todo el tiempo),<br />
creo que es mejor mant<strong>en</strong>erlos todo lo escueto posible -<strong>en</strong> el mejor de los casos, listas<br />
y diagramas básicos- para ahorrar tiempo. Podría t<strong>en</strong>er otras restricciones que<br />
le exijan ampliarla <strong>en</strong> docum<strong>en</strong>tos más grandes, pero mant<strong>en</strong>i<strong>en</strong>do el docum<strong>en</strong>to<br />
inicial pequeño y conciso, puede crearse <strong>en</strong> algunas sesiones de torm<strong>en</strong>tas de ideas<br />
de grupo con un líder que cree la descripción dinámicam<strong>en</strong>te. Esto no sólo solicita<br />
participación de todos, también fom<strong>en</strong>ta aprobación inicial y llegar a acuerdos <strong>en</strong>tre<br />
todos. Quizá lo más importante sea empezar el proyecto con mucho <strong>en</strong>tusiasmo.<br />
Es necesario no perder de vista lo que está int<strong>en</strong>tando conseguir <strong>en</strong> esta fase:<br />
determinar el sistema que se supone que quiere hacer. La herrami<strong>en</strong>ta más valiosa<br />
para eso es una colección de los llamados «casos de uso». Los casos de uso id<strong>en</strong>tifican<br />
características clave <strong>en</strong> el sistema que pued<strong>en</strong> revelar algunas de las clases<br />
fundam<strong>en</strong>tales que se usarán. En es<strong>en</strong>cia son respuestas descriptivas a preguntas<br />
como: 9 :<br />
1. «¿Quién usará el sistema»<br />
2. «¿Qué pued<strong>en</strong> hacer estos actores con el sistema»<br />
9 Gracias a James H Jarrett por su ayuda.<br />
19<br />
✐<br />
✐<br />
✐<br />
✐