13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

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 />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!