Programación OO vs Programación clásica:

Anuncio
Programación OO vs Programación clásica:
Proyecto Posicionamiento 2d en PowerBuilder.
Pedraza C. y Pascual D.
Facultad de informática - Universidad Politécnica de Valencia.
email: [email protected], [email protected]
Resumen.
La presenta memoria analiza la adaptación de un software creado bajo las guías del
diseño estructurado de la ingeniería del software y de carácter secuencial, a un nuevo
sistema apoyado en los estándares actuales de programación visual, orientada a
objetos y basada en eventos interfaz-usuario.
Para ello, se ha seguido de manera secuencial, el esquema de ciclo de vida clásico,
seccionando la memoria en las tres fases que incluyen prácticamente todas las
metodologías de ingeniería del Sw, análisis, diseño, e implementación.
Por último, se señalan las principales conclusiones del trabajo llevado a cabo: las
ventajas de la utilización de metodologías en el desarrollo de software.
Introducción.
La complejidad creciente del software obligan desde hace décadas a la utilización
de metodología de análisis, diseño y codificación que garanticen la obtención de un
software de calidad. Éste compendio de métodos se recogen en la disciplina
llamada Ingeniería del Software, y como el software evoluciona rápidamente,
también lo hace ésta ciencia.
La aparición de un nuevo compilador, de nuevos lenguajes visuales que se
programan o funcionan por el disparo por eventos, las aplicaciones para sistemas
distribuidos e Internet, los últimos adelantos en generación automática de código,
hacen que la disciplina tenga que evolucionar rápidamente en las fases finales del
ciclo de vida del Sw, el diseño y la codificación, por el contrario, el análisis (la fase
más importante en proyectos de mediana y gran envergadura), permanece mucho
más estable a la aparición de lenguajes o técnicas de programación.
En la presente memoria, nos centramos en la resolución de uno de estos
"pequeños" problemas, la migración de un Sw realizado bajo las pautas de un
correcto diseño estructurado, que dio como fruto un programa basado en la
1
Laboratorio de Sistemas de Información
Facultad de Informática
Universidad Politécnica de Valencia
programación clásica o secuencial, a un entorno gráfico para el usuario como es el
sistema operativo MS - Windows.
Para ello no tendremos más que seguir el ciclo de vida y las correspondientes fases
de ingeniería del Sw del proyecto original1 y utilizar todo, parte o nada del proyecto
original2.
Análisis
Diseño
Codificación
Integración
Figura 1 Ciclo de vida clásico
1. Análisis.
Como la ingeniería del Sw pone de manifiesto, es la fase que menos cambios
soporta por la incorporación de nuevas tecnologías al proceso de creación del Sw.
Es además la fase de mayor importancia, ya que determina QUE es lo que se quiere
obtener, QUE problema debe resolver el Sw.
Observando el análisis efectuado para el proyecto original en [1], vemos que es un
análisis correcto aún para la programación que vamos a llevar a cabo. Se emplean
Diagramas de Flujos de Datos (DFD's), y se consigue captar y comprender la función
del software, por lo que la fase es totalmente equivalente y podría entregarse la
misma documentación.
2. Diseño.
Recordemos, el diseño es el proceso por el cual se traducen las especificaciones de
requerimientos en una representación del Software, es un puente entre el análisis y
la solución de un problema, es decir la implementación.
En esta fase comienzan a acentuarse las diferencias en el proceso de modelado
entre el diseño estructurado y las técnicas actuales, como puede ser el UML. Los
herramientas utilizadas por el diseño estructurado en la fase de diseño son distintas
a las actuales, los diagramas de estructuras pierden gran parte de su utilidad, pues
la fase que sigue al diseño (la codificación o implementación) es radicalmente
distinta entre un lenguaje OO, visual y dirigido por eventos como PowerBuilder,
Delphi, etc... y un lenguaje de carácter secuencial como C o Pascal entre otros. Así,
1
Véase el capítulo 10 Un caso práctico de diseño estructurado. de la referencia [1]
La figura corresponde al ciclo de vida clásico, opción poco realista en el diseño del software, pero válida
para nuestro propósito que no es otro que establecer la validez de las técnicas del diseño estructurado con
la programación actual.
2
2
Laboratorio de Sistemas de Información
Facultad de Informática
Universidad Politécnica de Valencia
el sistema no puede "fraccionarse" de la misma forma, pues la comunicación entre
módulos no será siempre entre variables, sino por paso de mensajes, acceso a
objetos, métodos, propiedades, disparo de eventos etc.
Etapas o módulos de importancia en la rama aferente del DE original, pierden por
competo su sentido, un claro ejemplo son los módulos de edición o validación.
Recordemos, según las guías de diseño estructurado, se debía validar la sintaxis
(formato) antes que la semántica (significado), validar lo sencillo antes que lo
cruzado y validar lo interno antes que lo externo. El razonamiento sigue siendo
válido, pero al utilizar un lenguaje visual, lo sencillo pasa a ser sencillísimo, casi
automático, tal y como se verá en el siguiente apartado, el de la implementación.
A pesar de que parte del diseño recogido en [1] resulta innecesario, también existe
una parte que resulta de utilidad.
El diseño original viene documentado por un diagrama de estructuras (DE), la
especificación interface-función y la especificación por pseudocódigo de algunos
módulos (los de mayor "complejidad") cosas que siguen siendo muy útiles, pues
además de ofrecer el acercamiento a una posible solución (la de programación
secuencial), clarifican el sistema como un todo, y permite conocer mejor el
problema al que nos enfrentamos y elaborar soluciones más acorde a nuestro
objetivo, destacando sobretodo la especificación por pseudocódigo, que obviando
detalles del lenguaje de programación, nos ahorrará tremendo trabajo de
implementación, pues aunque no se traduzcan en funciones, pueden formar parte
de los métodos de algún objeto.
3. Implementación.
Como era de suponer, ésta es la fase que cambia radicalmente del acercamiento
original a nuestra versión visual, como el lenguaje elegido en [1] para la
implementación es C, no sirve NADA del código original (no más de lo que sirve el
pseudocódigo o incluso menos, pues tiene en cuenta particularidades del lenguaje).
En esta fase entra como principal protagonista el nuevo lenguaje elegido, el
PowerBuilder, y se ponen de manifiesto las tremendas diferencias entre los nuevos
lenguajes visuales y los lenguajes como C, que fue el elegido en [1] para
implementar la primera versión de Posicionamiento 2D.
Veamos un simple ejemplo, la interfaz gráfica:
3
Laboratorio de Sistemas de Información
Facultad de Informática
Universidad Politécnica de Valencia
Figura 2 Pantalla principal.
Como puede observarse, la nueva versión del programa, mantiene una interfaz con
el usuario radicalmente distinta, gráfica, y basada en el empleo del ratón, menús, y
todas las particularidades de los nuevos sistemas.
Inevitablemente, los cambios en la interfaz con el usuario provocan cambios
drásticos en la manera de obtener los datos, por lo que la validación de esos datos
de entrada proporcionados por el usuario es distinta.
En la primera versión, el usuario debía introducir una cadena, con un formato
determinado, indicando el número de pasos y la dirección, algo así como:
Introduzca pasos y dirección: 15N
En un primer paso, el sistema leía la cadena, validaba el formato: dos números, y un
carácter del conjunto {N, S,E,O, ..} y comprobaba que los dos números fueran
menores que 19, detengámonos ahí. ¿Es necesario este tipo de validaciones en esta
aplicación?. La respuesta es sencilla, sí, pero no las lleva a cabo el programador, o las
hace de manera asistida.
Expliquémoslo sobre la imagen.
4
Laboratorio de Sistemas de Información
Facultad de Informática
Universidad Politécnica de Valencia
"Spin-Buttom"
Campo de edición
controlado por
máscara numérica.
Lista desplegable para
seleccionar la dirección
Figura 3 Toma de datos
Como se observa, nos servimos de un campo para que el usuario introduzca el
número de pasos con dos "spin-buttoms" que permiten incrementar o decrementar
el número de pasos sin hacer uso del teclado (sólo del ratón), además si el usuario
prefiere hacer uso del teclado, el campo tiene asignada una máscara que sólo
permite la introducción de caracteres numéricos.
En cuanto a la dirección a elegir, el método se simplifica más aún utilizando una lista
desplegable sin posibilidad de edición, por lo que nos ahorramos la comprobación
del campo.
Por otro lado, la complejidad en el tratamiento de ficheros también se simplifica al
uso de seis primitivas ofrecidas por PowerBuilder3, además se ofrecen los menús de
apertura y salvado de ficheros estándar de Windows con una implementación
sencilla.
En cuanto al funcionamiento o comportamiento, ofrece una solución válida al
problema original pero con un comportamiento distinto, basado en los eventos. Así,
el mapa no se actualiza a través de la orden explícita de usuario como en la primera
versión (la opción del menú "imprimir mapa"), sino que a medida que se introducen
los movimientos se ven reflejados en el mapa. El mapa, no consiste en una pantalla
3
FileOpen(...), FileClose(..), FileDelete(...), FileExist(...), FileRead(...), FileWrite(..)
5
Laboratorio de Sistemas de Información
Facultad de Informática
Universidad Politécnica de Valencia
como en la primera versión, sino que ha mutado a un componente visual totalmente
independiente, que puede compilarse en una dll y ser utilizado por otras
aplicaciones a través de la interfaz de la que le hemos dotado.
Conclusiones.
Las conclusiones a las que llegamos son sencillas, a medida que avanzamos del
análisis hacia la implementación, el grado de reusabilidad de la primera versión
disminuye de forma no lineal. Este efecto es el que trata de explicar la gráfica
siguiente.
Análisis
Diseño
Implementación
Figura 4 Grado de similitud en relación a las fases
A pesar de las dificultades que hemos expuesto a lo largo de la presente memoria,
cabe significar que el seguir una metodología en la creación de software, garantiza
unos factores de calidad elevados, entre los que está como hemos visto la
reusabilidad.
3 Referencias.
[1] Molina A., Letelier P., Sánchez P., Sánchez J., Metodología y Tecnología de la
programación. Servicio de publicaciones de la U.P.V - 97.498, 1997.
6
Laboratorio de Sistemas de Información
Facultad de Informática
Universidad Politécnica de Valencia
Documentos relacionados
Descargar