UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

104
UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS” FACULTAD DE INFORMÁTICA TRABAJO DE DIPLOMA Herramienta Computacional “Suite de Geometría DescriptivaTrabajo de Diploma en opción al Título de Ingeniería Informática Autor: Dayán Rodríguez Alonso Tutor: MSc. Antonio C. Fernández Orquín Matanzas, Cuba Junio 2009

Transcript of UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

Page 1: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

UNIVERSIDAD DE MATANZAS

“CAMILO CIENFUEGOS”

FACULTAD DE INFORMÁTICA

TRABAJO DE DIPLOMA

Herramienta Computacional “Suite de Geometría Descriptiva”

Trabajo de Diploma en opción al Título de Ingeniería Informática

Autor: Dayán Rodríguez Alonso

Tutor: MSc. Antonio C. Fernández Orquín

Matanzas, Cuba

Junio 2009

Page 2: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

A mi hermano, por cruzar la frontera de lo posible…

Page 3: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

Agradecimientos

Quisiera agradecer ante todo a mis padres por su apoyo incondicional en cada etapa de

mi vida, al MSc. Antonio C. Fernández Orquín (Tony) quién siempre supo guiarme

sabiamente a lo largo de esta investigación. Me gustaría agradecer además a mi primo

Jorge Iván Cifuentes por sus consejos y su ayuda.

Page 4: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

Declaración de autoría

Yo, Dayán Rodríguez Alonso, declaro que soy el único autor de este trabajo y autorizo a

la Universidad de Matanzas “Camilo Cienfuegos”, especialmente a la Facultad de

Informática, a que hagan el uso que estimen pertinente de él.

Y para que así conste, firmo la presente a los _________ días del mes de Junio del 2009.

______________ ______________

Firma del Autor Firma del Tutor

Page 5: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

Opinión del tutor del trabajo de diploma

Título: Suite de Geometría Descriptiva.

Autor: Dayán Rodríguez Alonso.

El tutor del presente Trabajo de Diploma considera que durante su ejecución el estudiante

mostró las cualidades que a continuación se detallan.

Por todo lo anteriormente expresado considero que el estudiante está apto para ejercer

como Ingeniero Informático; y propongo que se le otorgue al Trabajo de Diploma la

calificación de: ________________

______________________________

MSc. Antonio C. Fernández Orquín

Page 6: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

Resumen

La presente investigación tiene lugar en la Universidad de Matanzas “Camilo Cienfuegos”. Su objetivo es

la creación de una herramienta computacional para resolver ejercicios de Geometría Descriptiva. Esta

surge debido a que los libros y cuadernos no contienen la solución de los ejercicios y los profesores de la

asignatura, por cuestiones de tiempo y por la gran cantidad de ejercicios posibles, no pueden revisarlos

todos. Debido a esta situación el estudiante tiene problemas para aclarar sus dudas. El objeto de estudio

de este trabajo es la resolución y representación de ejercicios de Geometría Descriptiva mediante el uso

de la computadora. Los métodos utilizados en el desarrollo de este trabajo fueron los métodos empíricos e

históricos, siendo la observación de principal importancia. También se realizó la entrevista individual a los

profesores de la asignatura de Geometría Descriptiva. Para el desarrollo del proyecto de software se

utilizó la metodología RUP, la plataforma .Net con la utilización del lenguaje C# y DirectX Gestionado para

el trabajo con gráficos. Se emplearon cinco patrones de diseño para soportar una arquitectura flexible,

extensible y reutilizable. Este trabajo obtuvo como resultado una herramienta que funciona como

resolvedor de diez tipos de ejercicios y aporta un gran valor al estudio y a la enseñanza de esta

asignatura.

Page 7: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

i

Tabla de Contenido

Introducción ....................................................................................................................................................... 1

Capítulo 1: Fundamentación teórica y tendencias tecnológicas...................................................................... 5

1.1 Introducción al capítulo ...................................................................................................................... 5

1.2 Antecedentes del trabajo ................................................................................................................... 5

1.3 Objeto de estudio. .............................................................................................................................. 5

1.3.1 Flujo actual de los procesos involucrados .................................................................................. 5

1.3.2 Análisis crítico de cómo se ejecutan actualmente estos procesos, las causas que originan la

situación problemática y las consecuencias. ........................................................................................... 6

1.4 Análisis del Estado del Arte. .............................................................................................................. 6

Procecad .................................................................................................................................................. 6

Descriptive Geometry .............................................................................................................................. 7

1.5 Análisis comparativo de otras soluciones existentes con la propuesta. ........................................... 7

1.6 Fundamento científico o marco teórico .............................................................................................. 9

1.6.1 Geometría Descriptiva ................................................................................................................... 10

1.6.2 Geometría Analítica ....................................................................................................................... 12

1.7 Descripción de las tendencias y tecnologías seleccionadas. .............................................................. 14

1.7.1 Rational Unified Process (RUP) .................................................................................................... 14

1.7.2 UML (Unified Modeling Languaje) ................................................................................................. 16

1.7.3 StarUML ......................................................................................................................................... 16

1.7.4 Visual Studio 2008 Professional .................................................................................................... 16

1.7.5 Lenguaje C# ................................................................................................................................... 18

1.7.6 Microsoft Direct3D Gestionado ...................................................................................................... 18

1.7.7 Patrones de diseños ...................................................................................................................... 19

1.8 Métodos de Investigación empleados .................................................................................................. 25

Page 8: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

ii

1.9 Conclusiones del capítulo ..................................................................................................................... 25

Capítulo 2: Descripción y construcción de la solución propuesta.................................................................. 26

2.1 Introducción al capítulo ......................................................................................................................... 26

2.2 Descripción de la aplicación ................................................................................................................. 26

2.3 Requisitos del software ......................................................................................................................... 27

2.3.1 Requisitos funcionales ................................................................................................................... 27

2.3.2 Requisitos no funcionales .............................................................................................................. 28

2.4 Utilización del patrón MVC (Model-Viewer-Controller) ........................................................................ 28

2.4.1 Los modelos ................................................................................................................................... 29

2.4.2 Las vistas ....................................................................................................................................... 30

2.4.3 El controlador ................................................................................................................................. 31

2.5 Utilización del patrón Observer en el modelo activo del patrón MVC ................................................. 33

2.6 Utilización del patrón Simple Factory para desacoplar la creación de los modelos auxiliares ........... 34

2.6 Utilización del patrón Factory Method para desacoplar la creación de las clases ayudantes ............ 35

2.7 Utilización del patrón Singleton para evitar mostrar ventanas del mismo tipo .................................... 37

2.8 El trabajo con Direct3D ......................................................................................................................... 38

2.8.1 Representación de un sistema en abatimiento ............................................................................. 41

2.8.2 Representación de un sistema en isométrico ............................................................................... 43

2.9 Solución de los ejercicios de representación ....................................................................................... 45

2.10 Solución de los ejercicios de pertenencia, paralelismo e intersecciones .......................................... 47

2.11 Extensibilidad, Mantenimiento y reutilización ..................................................................................... 48

2.12 Elementos del estilo de códigos ......................................................................................................... 53

2.13 Conclusiones del capítulo ................................................................................................................... 54

Capítulo 3: Pruebas realizadas y resultados obtenidos ................................................................................. 55

3.1 Introducción al capítulo ......................................................................................................................... 55

Page 9: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

iii

3.2 Estudio de Factibilidad .......................................................................................................................... 55

3.2.1 Estimación de costos del proyecto de software ............................................................................ 55

3.2.3 Beneficios Tangibles e Intangibles. ............................................................................................... 58

3.3 Técnicas de pruebas............................................................................................................................. 58

3.3.1 Pruebas de caja blanca ................................................................................................................. 60

3.3.2 Pruebas de caja negra ................................................................................................................... 68

3.4 Análisis de los resultados obtenidos .................................................................................................... 69

3.5 Criterios de los especialistas ................................................................................................................ 70

3.6 Documentación del sistema.................................................................................................................. 71

3.7 Conclusiones del capítulo ..................................................................................................................... 71

Conclusiones generales.................................................................................................................................. 72

Recomendaciones .......................................................................................................................................... 73

Referencias Bibliográficas .............................................................................................................................. 74

Bibliografía ...................................................................................................................................................... 76

Anexos ............................................................................................................................................................ 77

Page 10: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

iv

Índice de figuras

Figura 1.1 Esquema del patrón MVC ........................................................................................................................... 21

Figura 1.2 Diagrama de clases del patrón Observer .................................................................................................... 22

Figura 1.3 Diagrama de clases del patrón Factory Method .......................................................................................... 23

Figura 1.4 Diagrama de clases del patrón Simple Factory ........................................................................................... 23

Figura 1.5 Diagrama de clases del patrón Singleton .................................................................................................... 24

Figura 2.1 Diagrama de clases del diseño que conforman el modelo en el patrón MVC ............................................. 29

Figura 2.2 El punto P representado en tres vistas diferentes. a) En abatimiento b) Sistema de coordenadas

cartesianas y c) Sistema en coordenadas polares. ...................................................................................................... 30

Figura 2.3 Diagrama de clases del diseño que conforman la vista en el patrón MVC .................................................. 31

Figura 2.4 Diagrama de clase del diseño que conforma el controlador en el patrón MVC ........................................... 32

Figura 2.5 Diagrama de clase del diseño que conforma el patrón Observer en el modelo activo de MVC .................. 33

Figura 2.6 Diagrama de clases del diseño que representan la utilización del patrón Simple Factory. ......................... 35

Figura 2.7 Diagrama de clases del diseño que representan la utilización del patrón Factory Method ......................... 36

Figura 2.8 Pasos en el trabajo con Direct3D ................................................................................................................ 38

Figura 2.9 Técnica de intercambio de buffers(13) ........................................................................................................ 40

Figura 2.10 Proyecciones soportadas en Direct3D ...................................................................................................... 40

Figura 2.11 Los dos sistemas de coordenadas utilizados por las API gráficas(13). ..................................................... 41

Figura 2.12 Transformación del sistema de mano izquierda para obtener la representación de un sistema en

abatimiento ................................................................................................................................................................... 42

Figura 2.13 Representación de un sistema en abatimiento utilizando Direct3D ........................................................... 43

Figura 2.14 Transformación del sistema de mano izquierda para obtener la representación de un sistema en

isométrico ..................................................................................................................................................................... 43

Figura 2.15 Representación de un sistema en isométrico utilizando Direct3D ............................................................. 44

Figura 2.16 Diagrama de bloques del algoritmo Representar ejecutado por la vista en abatimiento ........................... 46

Figura 2.17 Diagrama de clases del diseño que representan la relación entre las clases ControlDeExplicación y

D3DAbatimiento. ...................................................................................................................................................... 46

Figura 2.18 Diagrama de actividades para revolver un ejercicio de pertenencia, paralelismo o intersecciones .......... 47

Figura 2.19 Diagrama de clase de la librería de Geometría Analítica .......................................................................... 48

Figura 2.20 Las cuatro formas de extender la aplicación ............................................................................................. 48

Figura 2.21 Diagrama de clases que representa la extensión de la aplicación al agregar un nuevo modelo ............... 50

Figura 2.22 Diagrama de clases que representa la extensión de la aplicación al agregar una vista en abatimiento que

utiliza la API gráfica OpenGL. ...................................................................................................................................... 51

Page 11: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

v

Figura 2.23 Diagrama de clases que representa la extensión de la aplicación al agregar una nueva vista que

presentan los modelos en coordenadas polares. ......................................................................................................... 52

Figura 3.1 Grafo de flujo para el código de la función llamada por el evento OnUpdate del controlador del ejercicio de

pertenencia de un punto a una recta. ........................................................................................................................... 64

Índice de tablas

Tabla 1.1 Análisis comparativo de las soluciones existentes con la propuesta construida. ........................................... 8

Tabla 2.1 Modelos y clases ayudantes ......................................................................................................................... 36

Tabla 2.2 Asociación entre las coordenadas utilizadas en el abatimiento y las del sistema de mano izquierda después

de ser rotado 1800 sobre el eje Z. ................................................................................................................................ 42

Tabla 2.3 Asociación entre las coordenadas utilizadas en la proyección isométrica y la del sistema de coordenadas

de mano izquierda transformado. ................................................................................................................................. 44

Tabla 3.1 Objetos identificados en la aplicación ........................................................................................................... 56

Tabla 3.2 Clases de equivalencias ............................................................................................................................... 69

Page 12: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

1

Introducción

El ingeniero debe tener una concepción muy clara del espacio y de la representación de los objetos sobre

una superficie plana, así como del concepto de tridimensionalidad. Todo ello sirve de herramienta básica

en la lectura, ejecución, interpretación y dibujos de objetos; tanto en el proceso de concepción y diseño

como desde el punto de vista de su fabricación y producción. La geometría descriptiva resulta de

primordial importancia para las carreras de ingeniería, tanto en el proceso de formación como en el

ejercicio profesional, pues esta asignatura posee gran aplicación en la solución de problemas y en la

elaboración de diseños.

Los profesores de la asignatura de Geometría Descriptiva en las carreras de ingeniería en la Universidad

de Matanzas “Camilo Cienfuegos” han identificado que el principal problema que presentan los

estudiantes de dicha asignatura es la percepción espacial. A la mayoría de los alumnos les resulta

extremadamente difícil el entendimiento del objeto representado sobre una superficie plana así como el

traslado de un objeto tridimensional al plano y del plano al espacio.

Se puede plantear la situación problemática que existe a la hora de estudiar la Geometría Descriptiva de

la siguiente manera: Los libros de texto y cuadernos de ejercicios de la asignatura de Geometría

Descriptiva en las carreras de ingeniería no siempre muestran la representación tridimensional del objeto,

sólo la ortogonal en el plano. La mayoría de las veces no se incluye la proyección lateral, por lo que se

pierde la información del perfil del objeto. Los ejercicios incluidos en estos materiales no abarcan todas las

variantes. Un pequeño movimiento del objeto en el espacio puede tener distinta representación en el

plano y generar una gran cantidad de figuras, lo cual sería impráctico para un libro de texto. También los

ejercicios resueltos contienen una gran cantidad de trazos auxiliares que a veces entorpecen el

entendimiento del dibujo. Dichos trazos poseen el mismo color y sólo se distinguen por una mínima

diferencia de grosor. Los ejemplos en papel no se pueden modificar, además es imposible cambiar el

ángulo de observación para obtener una mayor comprensión. Los cuadernos no contienen la solución de

los ejercicios. Por otra parte, los profesores de la asignatura, por cuestiones de tiempo y por la gran

cantidad de ejercicios posibles, no pueden revisarlos todos. Debido a esta situación el estudiante tiene

problemas para aclarar sus dudas. En la figura I.1 se aprecia la complejidad de un ejercicio resuelto del

libro de texto de la asignatura.

Page 13: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

2

Figura I.1 Ejercicio resuelto del libro de texto (1)

Con base a lo anteriormente expuesto se puede definir como Problema científico. ¿Podrá el uso de una

herramienta computacional resolver ejercicios de Geometría Descriptiva, mostrar la metodología utilizada

en la solución y representar los resultados en el plano y en el espacio? Por lo tanto el Objeto de estudio

es la resolución y representación de ejercicios de Geometría Descriptiva mediante el uso de la

computadora. Se define como Campo de acción de esta investigación, las representaciones en el plano y

en el espacio de los elementos geométricos: puntos, rectas, planos; y de las posiciones relativas e

intersecciones entre ellos.

De lo antes planteado se llega a la siguiente hipótesis: Si se utilizan patrones de diseño y la API1 gráfica

Direct3D2 se podrá desarrollar una herramienta computacional que resuelva los ejercicios de Geometría

Descriptiva, muestre la metodología utilizada en la solución y represente los resultados en el plano y en el

espacio.

1 API o Application Programming Interface es el conjunto de funciones que ofrece cierta biblioteca de código para ser

utilizado por otra aplicación como una capa de abstracción. 2 Ver epígrafe 1.7.6 Microsoft Direct3D Gestionado.

Page 14: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

3

Las Variables de investigación son:

Variable independiente: La herramienta computacional creada.

Variables dependientes:

La solución de los ejercicios.

La metodología utilizada en la solución.

Las representaciones de los resultados en el plano y en el espacio.

Objetivo General:

Desarrollar una herramienta computacional que sea capaz de resolver ejercicios de Geometría

Descriptiva, que muestre los resultados en el plano y en el espacio, además de explicar la metodología

utilizada.

Objetivos Específicos:

Evaluar los posibles sistemas existentes relacionados con la Geometría Descriptiva.

Obtener las convenciones establecidas en la Geometría Descriptiva para el dibujo.

Realizar un amplio estudio de las tendencias y tecnologías actuales para determinar las que serán

utilizadas en el desarrollo del sistema.

Diseñar una interfaz de usuario interactiva y que sea lo más fácil posible de usar.

Crear los algoritmos que resuelvan cada tipo de ejercicio.

Novedad y aporte práctico

En la actualidad no existe un software en explotación utilizado como herramienta en la asignatura de

Geometría Descriptiva, impartida en la mayoría de las carreras de ingeniería estudiadas en el país. Los

estudiantes pueden conocer la solución correcta de un ejercicio, aprender la metodología de resolución y

aclarar las dudas sin la intervención del profesor. Además los profesores pueden utilizar esta herramienta

para complementar las presentaciones en PowerPoint dada la capacidad de mostrar y rotar los modelos

geométricos en el espacio. La aplicación Suite de Geometría Descriptiva desarrollada en este trabajo de

diploma aporta un recurso más en el estudio de dicha asignatura.

La investigación se estructura de la siguiente manera:

Page 15: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

4

Capítulo 1: Fundamentación teórica y tendencias tecnológicas. Se describe el objeto de

estudio de forma más detallada, así como el marco teórico. Muestra un análisis comparativo de

propuestas existentes vinculadas al campo de acción. Además se abordan las tendencias y

tecnologías actuales utilizadas en el desarrollo del software.

Capítulo 2: Descripción y construcción de la propuesta. Se presentan los requisitos que se

tuvieron en cuenta para la confección de este software. Se explica el uso del patrón de diseño

MVC como soporte de todo el sistema y cómo el empleo de otros patrones ayuda a mejorar el

diseño para que este sea más extensible y reusable. También se describen las representaciones

de la proyección isométrica y el abatimiento de un sistema de tres planos de proyecciones

utilizando la API gráfica Direct3D incluida en Microsoft DirectX. Además se trata el tema de la

extensibilidad y reusabilidad, así como el estilo de códigos utilizado en la implementación de la

aplicación.

Capítulo 3: Elementos de prueba y resultados obtenidos. Se realiza un estudio de factibilidad

para el proyecto de software y se describen las técnicas de pruebas utilizadas en el proyecto. Se

aborda el análisis de los resultados obtenidos y la opinión de los especialistas.

Page 16: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

5

Capítulo 1: Fundamentación teórica y tendencias tecnológicas

1.1 Introducción al capítulo

En este capítulo se describe el objeto de estudio de forma más detallada y los elementos teóricos que

ayudaron a entender la problemática y fueron la base teórica en la construcción del software realizado.

Además se muestra un análisis comparativo de propuestas existentes vinculadas al campo de acción. Por

último, se realiza un análisis de las tendencias tecnológicas utilizadas por el autor de este trabajo.

1.2 Antecedentes del trabajo

No se ha encontrado evidencia de la realización de herramientas informáticas que utilicen OpenGL3 o

DirectX y se encuentren en explotación en clases de Geometría Descriptiva en las carreras de ingeniería.

Sin embargo, los estudiantes de la Facultad de Informática de la Universidad de Matanzas han

desarrollando aplicaciones que resuelven problemas específicos en el campo de la Geometría Descriptiva

utilizando GDI+4. También se puede mencionar la existencia de una serie de ejercicios realizados en

PowerPoint.

1.3 Objeto de estudio.

El centro de atención de esta investigación radica en la resolución y representación de ejercicios de

Geometría Descriptiva mediante el uso de la computadora.

1.3.1 Flujo actual de los procesos involucrados

Los profesores de la asignatura de Geometría Descriptiva en las carreras de ingeniería de la Universidad

de Matanzas, imparten las conferencias utilizando presentaciones hechas en PowerPoint y se apoyan a

veces en la pizarra para representar algún dibujo sencillo. En las clases prácticas se orientan los

ejercicios, que los estudiantes resuelven de forma manual utilizando instrumentos de medición y aplicando

la teoría de la Geometría Descriptiva, pero sin realizar cálculos matemáticos. Una vez terminados los

ejercicios se entregan al profesor, quien revisa los resultados y señala los que son incorrectos.

3 OpenGL (Open Graphics Library) es una especificación estándar que define una API multilenguaje y

multiplataforma para desarrollar aplicaciones que produzcan gráficos 2D y 3D. 4 GDI+ es una librería que provee una interfaz que permite a los programadores escribir aplicaciones gráficas que

interactúan con dispositivos gráficos, impresoras y ficheros.

Page 17: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

6

1.3.2 Análisis crítico de cómo se ejecutan actualmente estos procesos, las causas que originan la

situación problemática y las consecuencias.

Las conferencias utilizan presentaciones que contienen imágenes que no se pueden modificar, ni incluyen

todas las variantes posibles, además son apreciadas por estudiantes sentados en varios ángulos y

distancias del monitor de la computadora del aula. Cuando los profesores van a incluir una nueva

representación deben construirla utilizando programas de diseño como AutoCAD y salvar la imagen para

después modificar la conferencia. La representación en la pizarra de un ejercicio es trabajosa y consume

mucho tiempo del turno de clase. Los estudiantes resuelven los ejercicios en la libreta lo que también lleva

tiempo y al terminarlos no saben si están bien o mal, ya que los cuadernos no contienen la solución. Los

profesores de la asignatura por cuestiones de tiempo y por la gran cantidad de ejercicios posibles no

pueden revisarlos todos. Debido a esta situación el estudiante tiene problemas para aclarar sus dudas.

1.4 Análisis del Estado del Arte.

En el momento de la realización de esta tesis existían diversas aplicaciones relacionadas con la

Geometría Descriptiva, desarrolladas por estudiantes de informática que cursaron la asignatura Gráficos

por Computadoras. Pero estos programas sólo resuelven problemas específicos, no están diseñados para

ser extensibles y no utilizan una API gráfica con capacidades para gráficos tridimensionales. Sin embargo

se detectaron dos software comerciales relacionados con este campo que presentan características

atrayentes.

Procecad 5

Es un asistente de dibujo computarizado basado en la ejecución secuencial de procedimientos, el cual es

utilizado para complementar la enseñanza y el aprendizaje de la asignatura Geometría Descriptiva. Este

software ha sido diseñado como una herramienta alternativa de dibujo y no como un procesador de

elementos en tres dimensiones. Sin embargo, es posible crear y utilizar procedimientos que representen

elementos 3D en el plano de dibujo, mediante el uso de las proyecciones. (Ver Anexo 1)

Los modelos geométricos que Procecad representan son(2):

Puntos2D (Se grafican directamente)

Puntos3D (No se grafican hasta que sean proyectados por alguna función)

5 La versión trial de Procecad puede ser descarga de: www.geometriadescriptiva.com

Page 18: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

7

Rectas

Semirrectas

Segmentos

Circunferencias

Cónicas (Elipses, Parábolas e Hipérbolas)

Arcos de circunferencias y arcos de curvas cónicas

Descriptive Geometry 6

Esta aplicación tiene como objetivo representar la solución de ejercicios de Geometría Descriptiva. El

usuario escribe una serie de procedimientos que son ejecutados por el programa para el dibujado de los

modelos geométricos. Estos algoritmos son escritos en un lenguaje de programación propio, derivado del

lenguaje C (Ver Anexo 2). Este software presenta las siguientes ventajas en comparación con el dibujado

de forma manual.

Precisión: Los cálculos son basados en la Geometría Analítica por lo cual tienen gran exactitud.

Velocidad: Los procedimientos se interpretan rápidamente y los dibujos son realizados en pocos

segundos.

Flexibilidad: Se puede modificar un punto y todos los modelos geométricos relacionados con dicho

punto cambian automáticamente.

Los modelos geométricos que Descriptive Geometry representan son:

Puntos2D

Rectas

Planos

Circunferencias

1.5 Análisis comparativo de otras soluciones existentes con la propuesta.

A continuación se muestra una tabla comparativa entre las dos aplicaciones comerciales mencionadas

anteriormente y la propuesta construida.

6 La versión trial de Descriptive Geometry puede ser descarga de: www.brothersoft.com.descriptive-geometry-

download-145555.html

Page 19: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

8

Tabla 1.1 Análisis comparativo de las soluciones existentes con la propuesta construida.

Procecad Descriptive Geometry

1.32

Suite de Geometría

Descriptiva

Múltiples vistas

No. Sólo la

representación en el

plano y no incluye el

plano de perfil.

No. Sólo la

representación en el

plano y no incluye el

plano de perfil.

Si. Muestra la representación

del objeto en el plano y en el

espacio.

Facilidad de uso Difícil Difícil Fácil

Interactividad

Se construyen los

modelos geométricos

por comandos.

Se construyen los

modelos geométricos

mediante un lenguaje

de programación propio

derivado de C.

Se puede construir los

modelos geométricos

entrando las coordenadas de

los mismos o seleccionar los

ejemplos predefinidos y

modificarlos con el mouse.

Control de la

cámara. Sólo Zoom Sólo Zoom

Zoom y traslación en la vista

del Abatimiento.

Zoom, traslación y rotación en

la vista Isométrica.

Claridad en el

dibujo.

Buena. Se pueden

asignar el color y

grosor de los trazos.

Se puede dibujar por

capas y controlar la

visibilidad de las

mismas.

Aceptable. Se pueden

asignar el color y

grosor de los trazos.

Buena. Colores predefinidos

para una mejor identificación

entre los elementos comunes

de ambas vistas. Aunque se

puede asignar un color al

modelo principal. Grosor de

los trazos definidos por las

normas del dibujo. Control de

visibilidad de trazos, puntos

auxiliares y planos

coordenados. Transparencia

de planos.

Page 20: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

9

Visualizar

ejercicios y

explicaciones

paso a paso

Si. Sólo visualización. Sólo en los ejercicios de

representación.

Explicaciones Si el autor del

ejercicio las define. No Si.

Resolvedor No No Si

Licencia Comercial Comercial Libre

Código fuente No No Si

API Gráfica GDI+ GDI Direct3D

Como se puede apreciar los sistemas Procecad y Descriptive Geometry 1.32 no cumplen del todo con los

requerimientos en la asignatura Geometría Descriptiva en las carreras de ingeniería de la Universidad de

Matanzas por lo que no se utilizan como una herramienta computacional para complementar dicha

asignatura.

1.6 Fundamento científico o marco teórico

Este epígrafe presenta los aspectos teóricos que constituyen las bases en la solución creada de una

forma que sea más asequible y permita un mayor entendimiento al ser utilizadas en el resto de los

capítulos. La herramienta computacional construida abarca los siguientes problemas:

Representación del punto.

Representación de la recta.

Representación del plano.

Pertenencia de un punto a una recta.

Pertenencia de una recta a un plano.

Pertenencia de un punto a un plano.

Paralelismo entre dos rectas.

Paralelismo entre una recta y un plano.

Intersección entre dos rectas.

Intersección entre una recta y un plano.

Page 21: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

10

1.6.1 Geometría Descriptiva

La geometría descriptiva es un conjunto de técnicas de carácter geométrico que permite representar el

espacio tridimensional sobre una superficie bidimensional y por tanto, resolver en dos dimensiones los

problemas espaciales garantizando la reversibilidad del proceso a través de la adecuada lectura.

Como asignatura de estudio obligatorio en las escuelas de ingeniería y arquitectura, el estudio de la

Geometría Descriptiva persigue el desarrollo intelectual del estudiante en dos campos distintos pero

complementarios: la comprensión del espacio tridimensional que rodea al individuo y el desarrollo de una

estructura de pensamiento lógica, lo cual permite al profesional sentar las bases de otras disciplinas, como

la mecánica de cuerpos rígidos.

A continuación se expone la teoría de dicha geometría en la cual se basa el sistema construido.

Teoría de las proyecciones

El método de proyecciones es la base de cualquier representación y consiste en lo siguiente(3):

Sea un punto cualquiera en el espacio en calidad de centro de proyecciones o polo y un plano P llamado

plano de proyecciones que no pasa por dicho punto. Para proyectar un punto A sobre el plano de

proyecciones se hace pasar una recta a través del polo S y el punto A hasta que intercepte el plano P. El

punto de intercepción de esta línea con el plano es la proyección del punto A sobre el plano. La recta que

pasa por los puntos S y A recibe el nombre de recta o rayo proyectante. (Ver Anexo 3)

Proyección Ortogonal

En la práctica el método de proyección donde el rayo proyectante es perpendicular al plano de proyección

es el que tiene una mayor utilidad debido a las siguientes propiedades(3):

Una línea recta se proyecta en general en forma de línea recta siempre que no sea paralela a la

dirección de las rectas proyectantes.

Cada punto y cada línea en el espacio tienen en el plano de proyección una proyección única.

Para obtener las proyecciones de una línea recta es suficiente proyectar dos de sus puntos y trazar

una línea recta a través de las proyecciones obtenidas de estos dos puntos.

Si el punto pertenece a la recta, entonces la proyección del punto pertenece a la proyección de la

recta.

Page 22: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

11

Las proyecciones de dos líneas rectas paralelas, son paralelas entre sí.

(Ver Anexo 4)

Proyección axonométrica

Como se explica en (3), este método consiste en que cualquier elemento geométrico puede ser referido a

un sistema de coordenadas y luego proyectado por rayos proyectantes perpendiculares a los planos

coordenados. Según la disposición de los ejes axonométricos pueden existir infinitas proyecciones

axonométricas, pero en el desarrollo de este trabajo de diploma se usará la proyección isométrica

ortogonal, la cual consiste en que el ángulo entre cada par de ejes es de 120 grados. (Ver Anexo 5)

Abatimiento en el sistema de dos planos

En la práctica los planos se representan en abatimiento. Para obtener el abatimiento en un sistema de dos

planos el plano F se mantiene inmóvil y se hace girar el plano H alrededor del eje OX hasta hacerlo

coincidir con el plano F. Así el semiplano anterior baja y el posterior sube. (VerAnexo 6)

Abatimiento en el sistema de tres planos

Para obtener el abatimiento en un sistema de dos planos el plano F se mantiene inmóvil y se hace girar el

plano H alrededor del eje OX hasta hacerlo coincidir con el plano F. Así el semiplano anterior baja y el

posterior sube. El plano L gira alrededor del eje OZ hasta coincidir también con el plano F haciendo que el

semiplano anterior de L gire hacia la derecha y el semiplano posterior gire hacia la izquierda(3).

(Ver Anexo 7)

Pertenencia de un punto a una recta

Para que un punto pertenezca a una recta las proyecciones del punto en abatimiento se deben encontrar

sobre las trazas de la recta.

Pertenencia de una recta en el plano

Una recta se encuentra en el plano si pasa a través de dos puntos que pertenezcan al plano o de un punto

que pertenezca al plano y es paralela a una recta del plano o a una recta paralela al plano(1).

Pertenencia de un punto a un plano

Un punto pertenece a un plano si pertenece a una recta contenida en dicho plano(1).

Page 23: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

12

Paralelismo entre dos rectas

Dos rectas son paralelas si sus proyecciones Horizontales, Frontales y Laterales son paralelas

respectivamente. (Ver Anexo 8)

Paralelismo de una recta y un plano

Una recta es paralela a un plano si es paralela a una recta contenida en dicho plano(1). (Ver Anexo 9)

Intersección entre dos rectas

Dos rectas se cortan si el punto de intersección de las proyecciones homónimas se encuentra sobre una

perpendicular al eje de proyección correspondiente(1). (Ver Anexo 10)

Intersección entre una recta y un plano

Para determinar si hay intersección se recurre a un plano auxiliar que contiene a la recta. Si el plano

auxiliar corta el plano dado, forma una recta en la intersección de ambos. La intersección de estas dos

rectas es el punto de intersección buscado y por lo tanto existe intersección entre el plano y la recta(1).

(Ver Anexo 11)

1.6.2 Geometría Analítica

La Geometría Analítica es el estudio o tratamiento analítico de la geometría y fue presentada por primera

vez por René Descartes en su libro llamado Géometrie, que se publicó en el año 1637. En dicha obra se

estableció la relación explícita entre las curvas y las ecuaciones y podemos decir que además de

Descartes, todos los matemáticos de los siglos XVII y XVIII contribuyeron de una forma u otra al desarrollo

de esta nueva teoría. Dicha geometría se fundamenta en el uso de Sistemas de Coordenadas

Rectangulares o Cartesianas en honor a su fundador y es una parte de las matemáticas que se ocupa de

resolver algebraicamente los problemas geométricos.(4) Aunque este tipo de geometría no es utilizado por

los estudiantes de ingeniería en la asignatura de Geometría Descriptiva, sus ecuaciones sirven para la

realización de cálculos computacionales que soportan la solución desde un punto de vista descriptivo de

los ejercicios del software.

A continuación se presentan las fórmulas empleadas en la construcción de la solución planteada.

Page 24: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

13

Forma general de la ecuación de una recta en el plano(5)

Ax + By + C = 0 1.1

A o B debe ser diferente de cero y C puede o no ser igual a cero.

Posiciones relativas de dos rectas dadas en su forma general(5)

Si la Forma General de la ecuación de dos rectas son Ax + By + C = 0 y A´x + B´y + C´ = 0, las relaciones

siguientes son condiciones necesarias y suficientes para:

a) Paralelismo: Si AB´ - A´B =0

b) Perpendicularidad: Si AA’ + BB’ = 0

c) Coincidencia: Si A = kA’, B = kB’, C = kC’ siendo (k ≠ 0)

d) Intersección en uno y solamente un punto AB’ – A’B ≠ 0

Ecuación vectorial del plano(6)

1.2

Donde:

es un vector normal al plano

P es un punto coplanar

d es la constante D del plano de la ecuación general de un plano

Punto medio de un segmento de recta(4)

1.3

Si los puntos se encuentran en el plano sus componentes z son iguales a cero.

Distancia entre dos puntos en el espacio(7)

1.4

Si los puntos se encuentran en el plano sus componentes z son iguales a cero.

Page 25: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

14

Distancia de un punto a una recta(7)

1.5

Distancia de un punto a un plano(6)

1.6

Donde:

es un vector normal al plano

P1 es el punto al que se quiere calcular su distancia al plano

d es la constante D del plano de la ecuación general de un plano

1.7 Descripción de las tendencias y tecnologías seleccionadas.

1.7.1 Rational Unified Process (RUP)

El Proceso Unificado de Rational denota tres aspectos(8):

Es una metodología de desarrollo de software iterativa, centrada en arquitecturas y manejada por

casos de usos.

Es un proceso de ingeniería de software que determina quién es responsable de qué, cómo y

cuándo se hacen las cosas. También provee una configuración bien definida para el tiempo de vida

de un proyecto RUP.

Es un producto para procesos que nos provee un marco de trabajo adaptable para la ingeniería de

software.

RUP está estructurado a lo largo de dos dimensiones:

Tiempo: divide el tiempo de vida del proyecto en fases e iteraciones

Componentes de procesos: producción de un conjunto específico de artefactos definidos en

actividades.

Ambas dimensiones deben ser tomadas en cuentas para el éxito del proyecto.

Estructurar el proyecto a lo largo de la dimensión Tiempo implica la adopción de las siguientes fases.

Page 26: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

15

Incepción: Especificación de la visión del proyecto

Elaboración: Planeamiento de las actividades necesarias y los recursos requeridos, especificación

de las características y diseño de la arquitectura.

Construcción: Construcción del producto como resultado de un series de iteraciones.

Transición: Administración del producto a la comunidad de los usuarios.

Estructurar el proyecto a lo largo de la dimensión Componentes de procesos incluye las siguientes

actividades.

Modelación del negocio: Identificación de las habilidades del sistema y las necesidades de los

usuarios.

Requerimientos: Narración de la visión del sistema y el conjunto de los requisitos funcionales y no

funcionales.

Análisis y diseño: Descripción de cómo será realizado el sistema en la fase de implementación.

Implementación: Producción del código que dará como resultado el sistema ejecutable.

Pruebas: Verificaciones del sistema.

Despliegue: Entrega del sistema y entrenamiento de los usuarios.

RUP se puede adaptar a las necesidades de cualquier proyecto. Si ninguno de los mapas metodológicos

definidos en RUP encajan con un proyecto, fácilmente se puede definir un mapa en específico, lo que

significa que este proceso puede ser tan ligero o pesado como se necesite.(9)

En (10), Jacobson, Booch y Rumbaugh expresan: “Un proceso de desarrollo de software es el conjunto de

actividades necesarias para transformar los requisitos de un usuario en un sistema. Sin embargo, el

Proceso Unificado es más que un simple proceso; es un marco de trabajo genérico que puede

especializarse para una gran variedad de sistemas de software, para diferentes áreas de aplicación,

diferentes tipos de organizaciones, diferentes niveles de aptitud y diferentes tamaños de proyectos.”

La solución aquí planteada puede ser abordada por cualquier metodología de software ágil, no obstante

se prevé que el software crezca en tamaño y complejidad a medida que los estudiantes de otros años lo

complementen a partir de esta propuesta para abarcar toda la materia de Geometría Descriptiva impartida

en las carreras de ingeniería. Por todo los antes planteado RUP es el camino a seguir.

Page 27: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

16

1.7.2 UML (Unified Modeling Languaje)

UML es un lenguaje gráfico para especificar, construir, visualizar y documentar los artefactos de un

sistema de software. UML captura las decisiones y el entendimiento acerca del sistema a construir y está

diseñado para ser usado por cualquier metodología de desarrollo y en todas las etapas de la vida de un

proyecto de software. (11)

UML es un estándar relativamente abierto controlado por la OMG y es ampliamente utilizado en la

metodología RUP.

1.7.3 StarUML

StarUML es un producto Open Source para el desarrollo rápido y exacto de modelos de software basados

en el estándar UML. Soporta activamente la arquitectura MDA7, la metodología RUP y las versiones 1.4 y

2.0 del UML. Incluye Add-Ins8 para la generación de código C++, C# y Java, así como para la importación

de ficheros de Rational Rose, el intercambio de información con otras herramientas de modelado a través

del formato XMI y el trabajo con patrones de diseño. (Ver Anexo 12)

1.7.4 Visual Studio 2008 Professional

Microsoft Visual Studio es un entorno de desarrollo integrado (IDE, por sus siglas en inglés) para sistemas

operativos Windows. Soporta varios lenguajes de programación tales como Visual C++, Visual C#, Visual

J#, ASP.NET y Visual Basic .NET, aunque actualmente se han desarrollado las extensiones necesarias

para muchos otros. Visual Studio permite a los desarrolladores crear aplicaciones, sitios y aplicaciones

web, así como servicios web en cualquier entorno que soporte la plataforma .NET.

Visual Studio 2008 fue publicado el 17 de Noviembre de 2007 en inglés, mientras que la versión en

castellano no se publicó hasta el 2 de Febrero de 2008. El nuevo framework .Net 3.5 está diseñado para

aprovechar las ventajas que ofrece el nuevo sistema operativo Windows Vista a través de sus

subsistemas Windows Communication Foundation (WCF) y Windows Presentation Foundation (WPF). El

primero tiene como objetivo la construcción de aplicaciones orientadas a servicios, mientras que el último

apunta a la creación de interfaces de usuario más dinámicas que las conocidas hasta el momento. A las

7 MDA o Model Driven Architecture es una metodología de diseño de software, propuesto y patrocinado por el Object

Management Group. Esta proporciona un conjunto de guías para estructurar especificaciones expresadas como modelos. 8 Add-Ins es una aplicación que se relaciona con otra para aportarle una nueva función específica.

Page 28: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

17

mejoras de desempeño, escalabilidad y seguridad con respecto a la versión anterior, se agregan entre

otras, las siguientes novedades.

• La mejora en las capacidades de Pruebas Unitarias permiten ejecutarlas más rápido,

independientemente de si lo hacen en el entorno IDE o desde la línea de comandos. Se incluye

además un nuevo soporte para diagnosticar y optimizar el sistema a través de las herramientas de

pruebas de Visual Studio. Con ellas se podrán ejecutar perfiles durante las pruebas para que

ejecuten cargas, prueben procedimientos contra un sistema y registren su comportamiento.

• Con Visual Studio Tools for Office (VSTO) integrado con Visual Studio 2008 es posible desarrollar

rápidamente aplicaciones de alta calidad basadas en la interfaz de usuario de Office que

personalicen la experiencia del usuario y mejoren su productividad en el uso de Word, Excel,

PowerPoint, Outlook, Visio, InfoPath y Project. Una completa compatibilidad para implementación

con ClickOnce garantiza el entorno ideal para una fácil instalación y mantenimiento de las

soluciones Office.

• Visual Studio 2008 permite incorporar características del nuevo Windows Presentation

Foundation. Debido a las mejoras en Microsoft Foundation Class Library (MFC) y Visual C++,

ahora es posible crear un estilo visual de las aplicaciones similar al de Windows Vista. Visual

Studio 2008 permite mejorar la interoperabilidad entre código nativo y código manejado por .NET.

Esta integración más profunda simplifica el trabajo de diseño y codificación.

• LINQ (Language Integrated Query) es un nuevo conjunto de herramientas diseñado para reducir

la complejidad del acceso a Base de Datos a través de extensiones para C++ y Visual Basic así

como para Microsoft .NET Framework. Permite filtrar, enumerar y crear proyecciones de muchos

tipos y colecciones de datos utilizando la misma sintaxis, prescindiendo así del uso de lenguajes

especializados como SQL o XPath.

• Visual Studio 2008 permite la creación de soluciones multiplataforma adaptadas para funcionar

con las diferentes versiones de .Net Framework: 2.0, 3.0 y 3.5.

Page 29: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

18

• .NET 3.5 incluye biblioteca ASP.NET AJAX para desarrollar aplicaciones web más eficientes,

interactivas y altamente personalizadas que funcionen para todos los navegadores más populares

y utilicen las últimas tecnologías y herramientas Web, incluyendo Silverlight y Popfly.

1.7.5 Lenguaje C#

C# es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como

parte de su plataforma .NET aprobado como un estándar por la ECMA9 e ISO10. Su sintaxis básica deriva

de C/C++ y utiliza el modelo de objetos de la plataforma .NET, similar al de Java aunque incluye mejoras

derivadas de otros lenguajes.

C#, como parte de la plataforma .NET, está normalizado por ECMA desde diciembre de 2001. El 7 de

noviembre de 2005 se liberó la versión 2.0 del lenguaje que incluía mejoras tales como tipos genéricos,

métodos anónimos, iteradores, tipos parciales y tipos anulables. El 19 de noviembre de 2007 se lanzó la

versión 3.0 de C# destacando entre las mejoras los tipos implícitos, tipos anónimos y el LINQ (Language

Integrated Query).

Aunque C# forma parte de la plataforma .NET, esta es una interfaz de programación de aplicaciones

(API); mientras que C# es un lenguaje de programación independiente diseñado para generar programas

sobre dicha plataforma.

El autor de este trabajo de diploma decidió emplear C# dadas las facilidades que brinda y su

familiarización con este lenguaje.

1.7.6 Microsoft Direct3D Gestionado

En (12), Hoxley expresa: “El desarrollo de hardware demandante se ha acelerado exponencialmente en

los últimos años, de tal manera que la potencia para procesar gráficos tridimensionales está en manos de

todos, no sólo de grandes investigaciones o corporaciones importantes. Un procesador Pentium 4 y una

tarjeta de video con aceleración gráfica, provee más que suficiente poder para representar imágenes

tridimensionales a tiempo real.”

9 ECMA (European Computer Manufacteres Association) es una organización internacional para estandarizar el uso

de dispositivos electrónicos y de las Tecnologías de la Información y las Comunicaciones. 10

La Organización Internacional para la Normalización o ISO es el organismo encargado de promover el desarrollo de normas internacionales de fabricación, comercio y comunicaciones para todas las ramas industriales a excepción de la eléctrica y la electrónica.

Page 30: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

19

Direct3D es parte de DirectX, una API propiedad de Microsoft disponible tanto en los sistemas Windows

de 32 y 64 bits como en sus consolas Xbox y Xbox 360 para la programación de gráficos 3D. El objetivo

de esta API es facilitar el manejo y trazado de entidades gráficas elementales, como líneas, polígonos y

texturas, presentes en cualquier aplicación que despliegue gráfico en 3D. Efectúa además de forma

transparente transformaciones geométricas sobre dichas entidades. Direct3D provee también una interfaz

para el trabajo con el hardware de aceleración gráfica. Se usa principalmente en aplicaciones donde el

rendimiento es fundamental, como los videojuegos, aprovechando la aceleración gráfica disponible en la

tarjeta de video. (13)

DirectX Gestionado fue lanzado con la versión DirectX 9 y posibilita a los programadores usar los

lenguajes .Net para desarrollar ricas aplicaciones gráficas. (13)

Existen otras API gráficas atractivas como OpenGL y GDI+.

OpenGL es una API gráfica muy utilizada ya que es un estándar abierto, portable y su uso es más

accesible que otras API, pero en el momento de comenzar este trabajo sólo existían librerías OpenGL

para .Net Framework 1.3 y constituían envolturas (Wrappers) hechas por terceros a librerías C de OpenGL

y la mayoría presentan errores o están incompletas.

GDI+ es la interfaz para dispositivos gráficos a partir del Sistema Operativo Windows XP que provee

trabajo con gráficos en dos dimensiones, imágenes y tipografías. GDI+ mejora a su antecesor GDI

añadiendo nuevas características y optimizando las existentes. GDI+ se puede programar en modo

gestionado desde .Net, pero su limitante a gráficos 3D lo descarta cómo candidato para la solución

planteada.

Por lo tanto Direct3D Gestionado es la solución apropiada por su completa integración en el modelo de

programación .Net, su soporte por la totalidad de los fabricantes de tarjetas de video y su rendimiento en

el trabajo con gráficos tridimensionales.

1.7.7 Patrones de diseños

Los patrones de diseño (design patterns) son la base para la búsqueda de soluciones a problemas

comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces. Un

patrón de diseño es una solución a un problema de diseño. Para que una solución sea considerada un

Page 31: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

20

patrón debe poseer ciertas características como su efectividad resolviendo problemas similares y su

aplicación a diferentes problemas de diseño en distintas circunstancias.(14)

De manera general los patrones tienen cuatro elementos esenciales(15):

1. El nombre del patrón permite describir en una palabra o dos el problema en el diseño, su solución

y sus consecuencias. Posibilita el diseño a un alto nivel de abstracción y hace más fácil pensar a la

hora de diseñar, comunicar las ideas y sus aspectos positivos y negativos.

2. El problema define cuándo aplicar el patrón. Explica la situación y su contexto. En algunos casos

el problema incluye una lista de condiciones que se deben satisfacer antes de aplicar el patrón.

3. La solución representa los elementos que construyen el diseño, sus relaciones, responsabilidades

y colaboraciones. Este elemento no describe un diseño o una implementación en específico, pues

un patrón cumple la función de una plantilla que puede ser utilizada en varias situaciones

facilitando una descripción abstracta de un problema de diseño. En lugar de ello el patrón

proporciona una descripción abstracta de un problema de diseño y demuestra cómo una

organización general de los elementos puede darle solución.

4. Las consecuencias constituyen los resultados que se derivan de aplicar el patrón. Aunque en la

mayoría de los casos no son expresadas a la hora de describir decisiones en el diseño, resultan

críticas para la evaluación de alternativas de diseño y para el entendimiento de los costos y

beneficios de la aplicación del patrón. Las consecuencias de un patrón incluyen su impacto en la

flexibilidad, extensibilidad y portabilidad del sistema, pues la reusabilidad es un factor en el diseño

orientado a objetos.

En el análisis de la solución de este proyecto se identificaron cinco patrones de diseño que se podían

implementar.

1.7.8.1 El patrón MVC (Model Viewer Controller)

MVC es un patrón de diseño fundamental en la separación de la interfaz de usuario de la lógica del

negocio. El patrón separa el modelado del dominio de la aplicación, la representación de la aplicación y

las acciones basadas en la interacción de los usuarios en tres objetos diferentes. (16)

Modelos: Estos objetos contienen todos los datos a ser representados y son responsables por

gestionar los datos de la aplicación.

Page 32: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

21

Vista: Este objeto representa la información mostrada a los usuarios. Múltiples vistas pueden

mostrar la misma información en formas diferentes.

Controlador: Este objeto permite a los usuarios interactuar con los modelos de la aplicación. Las

vistas pueden invocar al controlador apropiado para que actúe sobre los modelos.

En la Figura 1.1 se presenta el esquema del patrón MVC. Las vistas representan los modelos y comunican

al controlador sobre cualquier cambio que se desea realizar a los modelos

Figura 1.1 Esquema del patrón MVC

Existen dos variantes de MVC: el modelo pasivo y el modelo activo.

En el modelo pasivo el controlador manipula de modo exclusivo al modelo. El controlador modifica al

modelo e informa a la vista que el modelo ha cambiado y que debe actualizarse. El modelo en este

escenario es completamente independiente de la vista y del controlador, lo que significa que el modelo no

puede notificar cambios en su estado a la vista a no ser que el cambio sea provocado por el controlador.

El modelo activo se usa cuando el modelo también necesita notificar cambios a la vista que no son

originados por el controlador. Sin embargo uno de los motivos de usar el patrón MVC es para hacer el

modelo independiente de la vista y si el modelo tiene que notificar sus cambios se reintroduce la

dependencia. Afortunadamente el patrón Observer se usa en la variante MVC de modelo activo para evitar

dicha dependencia. En la propuesta de la solución se utiliza el modelo activo.

1.7.8.2 El patrón Observer

Page 33: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

22

El patrón Observer define una dependencia del tipo uno a muchos entre objetos, de manera que cuando el

objeto siendo observado cambia su estado, todos los objetos dependientes son notificados y actualizados

automáticamente.(17)

El objetivo de este patrón es desacoplar los objetos clientes del objeto observado, aumentando la

modularidad del lenguaje, así como evitar bucles de actualización. Este patrón también se conoce como el

patrón de publicación-inscripción o modelo-patrón. Estos nombres sugieren las ideas básicas del patrón,

que son bien sencillas: el objeto de datos o sujeto, contiene atributos mediante los cuales cualquier objeto

observador se puede suscribir a él pasándole una referencia a sí mismo. El sujeto mantiene así una lista

de las referencias a sus observadores. Los observadores a su vez están obligados a implementar

métodos determinados mediante los cuales el sujeto es capaz de notificar a sus observadores “suscritos”

los cambios que sufre para que todos ellos tengan la oportunidad de refrescar el contenido representado.

De manera que cuando se produce un cambio en el sujeto, este puede recorrer la lista de observadores

notificando a cada uno (14). En la Figura 1.2 se presenta el diagrama de clases del patrón Observer.

Figura 1.2 Diagrama de clases del patrón Observer

El patrón Observer se usa en las siguientes situaciones:

Cuando se quiere abstraer dos aspectos, uno dependiente del otro. Encapsular estos aspectos en

objetos separados permite variarlos y reusarlos de modo independiente.

Cuando cambios en un objeto requieren cambios en otros y no se sabe con certeza cuantos objetos

necesitan ser cambiados.

Page 34: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

23

Cuando un objeto debe ser capaz de notificar otros objetos sin hacer asunción acerca del tipo de

objeto que son. En otras palabas no se quiere tener un alto acoplamiento entre estos objetos.

1.7.8.3 El patrón Factory Method

El patrón Factory Method define una interfaz para crear objetos, pero deja la decisión a sus subclases

sobre qué clases instanciar. La implementación clásica de Factory Method es una clase abstracta que

define un método para crear una familia de objetos (17). En la Figura 1.3 se presenta el diagrama de

clases del patrón Factory Method.

Figura 1.3 Diagrama de clases del patrón Factory Method

1.7.8.4 El patrón Simple Factory

El patrón Simple Factory es el más sencillo de las variantes de patrones Factory, el cual devuelve una

instancia entre varias posible. Por lo general se implementa construyendo una clase estática con un sólo

método que devuelve una instancia de una clase en dependencia del parámetro pasado al método.

El Simple Factory se usa cuando existe un conjunto de clases posibles para instanciar, pero la decisión de

cuál instanciar no se sabe hasta en tiempo de ejecución. En la Figura 1.4 se presenta el diagrama de

clases del patrón Simple Factory.

Figura 1.4 Diagrama de clases del patrón Simple Factory

Page 35: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

24

Hay que tener en cuenta que Simple Factory no es uno de los 23 patrones de diseño definidos en GoF11 y

algunas bibliografías no lo consideran un patrón de diseño, sino más bien una buena práctica.

1.7.8.5 El patrón Singleton

El patrón Singleton asegura que una clase tenga sólo una instancia y provee un punto de acceso global a

ella. (17)

El patrón se implementa creando una clase con un método estático responsable de crear la única

instancia de la clase si no se ha creado. En caso de existir la instancia se devuelve una referencia. Para

asegurar que la clase no puede ser instanciada a través del operador new se regula el alcance del

constructor como protegido o privado.

La instrumentación del patrón puede ser delicada en programas con múltiples hilos de ejecución. Si dos

hilos de ejecución intentan crear la instancia al mismo tiempo y esta no existe todavía, sólo uno de ellos

debe lograr crear el objeto. La solución clásica para este problema es utilizar exclusión mutua en el

método de creación de la clase que implementa el patrón.

Las situaciones más habituales de aplicación de este patrón son aquellas en las que dicha clase controla

el acceso a un recurso físico único, como puede ser el mouse o un archivo abierto en modo exclusivo, o

cuando cierto tipo de datos debe estar disponible para todos los demás objetos de la aplicación. En la

Figura 1.5 se presenta el diagrama de clases del patrón Singleton.

Figura 1.5 Diagrama de clases del patrón Singleton

11 GoF o Gang of Four es el nombre con el que se conoce comúnmente a los autores del libro Design Patterns:

Elements of reusable Object-Oriented Software. La banda de cuatro se compone de los siguientes autores: Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides.

Page 36: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

25

1.8 Métodos de Investigación empleados

En el desarrollo de esta investigación se visitaron clases prácticas de la asignatura de Geometría

Descriptiva, donde se observaron cómo los estudiantes realizaban los ejercicios y se analizaron los

materiales de estudio. También se realizó la entrevista individual a los profesores de dicha asignatura,

quiénes explicaron la teoría asociada y aportaron criterios acerca de las funcionalidades que debía tener

la herramienta computacional propuesta. Además se efectuó un estudio de las aplicaciones existentes

relacionadas con este campo. Por lo tanto, podemos decir que los métodos utilizados en el desarrollo de

este trabajo fueron los métodos empíricos e históricos, siendo la observación de principal importancia.

1.9 Conclusiones del capítulo

Por lo anteriormente expuesto en los epígrafes de este capítulo el autor concluye que los sistemas

relacionados con el campo de la Geometría Descriptiva son escasos y no cumplen con los requerimientos

para ser implantados como complemento de dicha asignatura en las carreras de ingeniería de la

Universidad de Matanzas “Camilo Cienfuegos”. La API gráfica Direct3D, la plataforma .Net y el uso de los

patrones de diseño constituyen los pilares de la construcción de la solución planteada. La metodología

RUP fue adoptada por ser altamente flexible, previniendo el aumento del tamaño y la complejidad del

sistema, pues futuros trabajos de diploma podrían incluir otros elementos de la Geometría Descriptiva. En

la comparación realizada entre las aplicaciones existentes y la creada por este trabajo se demostró las

ventajas de esta última. Los aspectos teóricos reflejados contribuyen a la comprensión del problema y a

su solución mediante el uso de la computadora como una herramienta más de dicha asignatura.

Page 37: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

26

Capítulo 2: Descripción y construcción de la solución propuesta.

2.1 Introducción al capítulo

La solución propuesta es la herramienta computacional Suite de Geometría Descriptiva. En este capítulo

se presentan los requisitos que se tuvieron en cuenta para la confección de este software. Se explica el

uso del patrón de diseño MVC como soporte de todo el sistema y cómo el uso de otros patrones ayuda a

mejorar el diseño para que este sea más extensible y reusable. También se describen las

representaciones de la proyección isométrica y el abatimiento de un sistema de tres planos de

proyecciones utilizando la API gráfica Direct3D incluida en Microsoft DirectX. Además se trata el tema de

la extensibilidad y reusabilidad, así como el estilo de códigos utilizado en la implementación de la

aplicación.

2.2 Descripción de la aplicación

El principal objetivo del software Suite de Geometría Descriptiva es actuar como resolvedor de diez tipos

de ejercicios de la asignatura. Esto permite a los estudiantes recrear los ejercicios de las clases prácticas

para obtener las soluciones con sus respectivas explicaciones y de este modo el alumno comprueba su

respuesta con la del sistema. También puede aprender la metodología de solución de los ejercicios.

La aplicación cuenta con diez ventanas que se corresponden con los tipos de ejercicios que abarca el

campo de acción de esta investigación:

Representación del punto.

Representación de la recta.

Representación del plano.

Pertenencia de un punto a una recta.

Pertenencia de una recta a un plano.

Pertenencia de un punto a un plano.

Paralelismo entre dos rectas.

Paralelismo entre una recta y un plano.

Intersección entre dos rectas.

Intersección entre una recta y un plano.

Page 38: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

27

Los ejercicios de representaciones son capaces de demostrar la construcción del dibujo paso a paso con

su respectiva explicación. Todos los modelos geométricos representados se pueden modificar

seleccionando uno de sus puntos y arrastrándolo mientras se mantiene presionado el botón izquierdo del

mouse, lo que permite adaptar fácilmente un ejercicio o modificar los modelos hasta que se obtenga el

resultado esperado. En cada formulario se pueden crear varios ejercicios que pueden ser salvados para

su posterior recuperación. El software está confeccionado como una aplicación MDI12 para una mejor

gestión y organización de todas las ventanas abiertas.

2.3 Requisitos del software

El levantamiento de requisitos tiene como objetivo delimitar el sistema y capturar la funcionalidad que

debe ofrecer desde la perspectiva del usuario. A continuación se presentan los requisitos funcionales y no

funcionales que se tuvieron en cuenta a lo largo de todo el desarrollo del proyecto de software.

2.3.1 Requisitos funcionales

Múltiples Vistas: La aplicación debe ser capaz de mostrar la representación en la proyección

isométrica con la correspondiente representación en abatimiento de un ejercicio con el fin de lograr

una mayor percepción del ejercicio.

Cámaras independientes en las vistas: Se puede alejar, acercar, trasladar y rotar la cámara; así

como mostrar u ocultar puntos y trazos auxiliares en las vistas de forma independiente.

Representación y explicación paso a paso: Los ejercicios de representación deben explicar

paso a paso cómo se representa el modelo geométrico.

Listado de ejercicios: La aplicación debe permitir crear un listado de ejercicios. Cada ejercicio

podría ser mostrado o eliminado de la lista según la conveniencia del usuario.

Salvar y cargar el listado de ejercicios: El programa debe ser capaz de guardar un listado de

ejercicios para su posterior recuperación.

Tipos de modelos predefinidos: Se debe poder escoger de una lista las variantes clásicas de los

modelos geométricos.

12 Los programas con interfaz de múltiples documentos (MDI) son aquellos cuyas ventanas se encuentran dentro de

una ventana padre, normalmente con la excepción de las ventanas modales.

Page 39: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

28

2.3.2 Requisitos no funcionales

Apariencia o interfaz de usuario (GUI): La interfaz es agradable, simple y de fácil uso. El uso

correcto de los colores permitirá un mayor entendimiento e identificación de elementos comunes

en las vistas. La apariencia está diseñada para no obstaculizar ninguna parte del dibujo en

cualquier momento, evitando el uso de ventanas y menús emergentes.

Facilidad de uso: El sistema está concebido para ser utilizado por cualquier usuario con un

mínimo de conocimientos del sistema operativo Windows. No se necesita el aprendizaje de

comandos o lenguajes de programación para la construcción de los ejercicios, todos se construyen

utilizando el mouse, y en caso de querer un mayor control se utiliza el teclado solamente para

introducir las coordenadas de los modelos geométricos.

Rendimiento: La velocidad de dibujado es lo suficientemente rápida para no mostrar un parpadeo

al modificar los modelos con el mouse o cambiar la posición de las cámaras.

Software:

- Microsoft Windows XP o superior.

- Microsoft Framework 3.5

- Microsoft DirectX 9c o superior

Hardware: Requisitos mínimos

- Pentium 4 o equivalente

- 256 MB de memoria

- Tarjeta de video con aceleración gráfica y con soporte para DirectX

2.4 Utilización del patrón MVC (Model-Viewer-Controller)

El patrón MVC constituye el diseño de clases que soporta el sistema y aporta los siguientes beneficios:

Desacopla las vistas de los modelos, lo que permite cambiar fácilmente las representaciones de

los modelos.

Las vistas encapsulan el trabajo con la API gráfica, en este caso Direct3D. Esto posibilita el

reemplazo de la vista por una que contenga una nueva versión de DirectX u otra API gráfica como

OpenGL.

Se puede reemplazar el controlador para cambiar la manera en que se modifican los modelos sin

afectar el funcionamiento de las demás clases.

Page 40: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

29

2.4.1 Los modelos

Cada modelo debe implementar la interfaz IModelo, pues como se verá más adelante es esencial en la

implementación del patrón Factory Method. Las clases PuntoModel, RectaModel y PlanoModel

implementan IModelo y representan los conceptos geométricos punto, recta y plano respectivamente.

Los ejercicios están compuestos por un grupo de modelos y la aplicación mantiene una lista de ejercicios

que son administrados por el gestor de ejercicios. Las clases que implementan IModelo y la clase

Ejercicio están marcadas con la etiqueta [Serializable], lo cual indica que sus instancias pueden

ser serializables13. La serialización permite lograr la persistencia del listado de ejercicios en un fichero

para su posterior recuperación. En la Figura 2.1 se muestran las clases del diseño que conforman el

modelo en el patrón MVC.

Figura 2.1 Diagrama de clases del diseño que conforman el modelo en el patrón MVC

13 En ciencias de la computación, la serialización es el proceso de codificación del estado de un objeto en un medio

de almacenamiento para su posterior recuperación. Esta codificación puede ser binaria o en un formato humanamente más legible como XML o JSON. La serialización es un mecanismo ampliamente usado para transportar objetos a través de una red, para hacer persistente un objeto en un archivo o en una base de datos, o para distribuir objetos entre aplicaciones.

Page 41: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

30

2.4.2 Las vistas

Las vistas son responsables de representar los modelos del ejercicio activo de diversas formas. En la

solución de esta propuesta se construyeron dos vistas que encapsulan el trabajo con Direct3D y

representan los modelos en abatimiento y en la proyección isométrica. Estas son representadas por las

clases D3DAbatimiento y D3DIsométrico respectivamente. Cada vista implementa la interfaz IVista

y es responsable de representar los modelos a su manera. En la Figura 2.2 se muestra cómo las vistas

que representan un sistema en abatimiento, un sistema en coordenadas cartesianas y un sistema en

coordenadas polares representarían un punto.

Figura 2.2 El punto P representado en tres vistas diferentes. a) En abatimiento b) Sistema de coordenadas cartesianas y c) Sistema en coordenadas polares.

Las clases D3DAbatimiento y D3DIsométrico heredan de UserControl. Esto permite que se

conviertan en controles de usuario que puedan ser seleccionados de la barra de herramientas de Visual

Studio. Al heredar de UserControl se crean controles compuestos que no son más que una colección

de controles de Windows Form encapsulados en un contenedor común. Los controles que componen las

vistas son dos paneles. El primero contiene los botones que controlan algunos aspectos de la cámara y en

el segundo se sobrescribe el evento OnPaint para dibujar la representación de la vista utilizando

Direct3D.

Page 42: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

31

La clase VistaState tiene como objetivo guardar el estado de una vista. Ella almacena el

desplazamiento de la cámara y el factor de zoom. Además indica si se muestran las notaciones, los trazos

y puntos auxiliares del dibujo, así como si se encuentra habilitada o deshabilitada la transparencia de los

planos. En la Figura 2.3 se muestran las clases del diseño que conforman la vista en el patrón MVC.

Figura 2.3 Diagrama de clases del diseño que conforman la vista en el patrón MVC

2.4.3 El controlador

La función del controlador es actuar sobre los modelos a petición de la vista. Cuando el usuario realiza un

clic en la vista, esta solicita al controlador que realice una búsqueda del modelo más cercano a las

Page 43: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

32

coordenadas del clic y al mover el mouse, mientras se mantiene presionada su tecla izquierda, el

controlador cambia las coordenadas del modelo previamente seleccionado e informa al gestor de

ejercicios del cambio realizado, quien a su vez notifica a todas las vistas registradas mediante el patrón

Observer.

La clase Controlador implementa la interfaz IControlador por lo que se tienen que definir los métodos

Buscar y Mover. El método Buscar encuentra el modelo que se quiere seleccionar en el ejercicio activo del

gestor de ejercicios y almacena una referencia para futuras modificaciones. El método mover tiene dos

parámetros, el primero es la nueva posición del mouse que sirve para hallar la dirección en que se moverá

el modelo seleccionado. El segundo es un valor booleano, el cual es verdadero si se mantiene presionada

la tecla Shift mientras se modifica el ejercicio arrastrando el mouse, esto posibilita que el incremento sea

de 0.1 punto, logrando una mayor precisión en la modificación de la figura.

La única clase controlador implementada en este proyecto sólo permite mover un punto a la vez. Si se

deseara, se pudiera crear un nuevo controlador y definir el método Mover para que se modifiquen todos

los puntos de una figura a la vez, haciendo que esta se traslade de lugar. En la Figura 2.4 se muestran las

clases del diseño que conforman la vista en el patrón MVC.

Figura 2.4 Diagrama de clase del diseño que conforma el controlador en el patrón MVC

Page 44: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

33

2.5 Utilización del patrón Observer en el modelo activo del patrón MVC

En el modelo pasivo del patrón MVC el controlador es el encargado de realizar cambios en los modelos y

notificarlos a las vistas. Debido a las características de este software también ocurren cambios en los

modelos sin la intervención del controlador, como son la adición, eliminación o selección de un ejercicio en

el gestor de ejercicios. Estos cambios deben ser informados a las vistas para su debida actualización. Por

lo antes explicado los modelos deben ser los responsables de notificar los cambios. Sin embargo en (18)

se plantea que una de las motivaciones de utilizar el patrón MVC es hacer los modelos totalmente

independientes de las vistas y si los modelos tienen que notificar a las vistas de los cambios se

reintroduce la dependencia. Para evitar esto, se utiliza el patrón Observer, lo que constituye el modelo

activo del patrón MVC.

Las vistas D3DAbatimiento y D3DIsométrico implementan la interfaz IObservador, esto les permite

registrase para recibir notificaciones y poder actualizarse. El gestor de modelo implementa la interfaz

ISujeto que permite mantener una lista de todos los observadores subscritos que serán notificados de

los cambios. En la Figura 2.5 se muestra la utilización del patrón Observer en el modelo activo de MVC.

Figura 2.5 Diagrama de clase del diseño que conforma el patrón Observer en el modelo activo de MVC

Page 45: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

34

2.6 Utilización del patrón Simple Factory para desacoplar la creación de los modelos auxiliares

Como se ha especificado anteriormente las vistas son responsables de representar los modelos de

distintas maneras. Por ejemplo en la representación de un punto en abatimiento que muestra el plano

lateral se dibujan siete puntos y nueve líneas. (Ver Figura 2.2a), pero la representación de una recta en la

misma vista y mostrando el plano lateral contiene catorce puntos y veintiuna líneas. Para ello se necesita

programar la vista para representar correctamente cada modelo de la siguiente manera.

private List<IModelo> lista = new List<IModelo>();

if (modelo is PuntoModel)

{

// Llenar la lista con los modelos auxiliares que representan un punto en

abatimiento

}

else

{

if (modelo is RectaModel)

// Llenar la lista con los modelos auxiliares que representan una

recta en abatimiento

else

{

}

}

¿Qué pasaría si se quisiera representar un nuevo modelo o reutilizar la misma lógica en otra vista en

abatimiento que utiliza OpenGL? En el primer caso hay que modificar el código fuente para acomodar

nuevos modelos. En el segundo, se requiere repetir el código anterior en cada una de las vistas en

abatimiento. En cualquiera de los casos este tipo de código hace el mantenimiento y la actualización más

difíciles y propicios a errores.

Para solucionar esto se utiliza una implementación particular del patrón Simple Factory, donde el código

anterior se encapsula en la clase AbatimientoSimpleFactory. Esta se encarga de devolver la lista

con los modelos auxiliares que constituyen la representación del modelo pasado como parámetro en el

Page 46: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

35

método fabricar. Esta clase puede ser reutilizada entre vistas que comparten la misma representación.

Dichas vistas pueden tener conocimientos de cómo representar nuevos modelos utilizando el patrón

decorador o una nueva clase Simple Factory que reconozca cómo responder a los nuevos modelos

pasados como parámetros. En la Figura 2.6 se muestran las clases del diseño que representan la

utilización del patrón Simple Factory.

Figura 2.6 Diagrama de clases del diseño que representan la utilización del patrón Simple Factory.

2.6 Utilización del patrón Factory Method para desacoplar la creación de las clases ayudantes

Una vez obtenido el listado de los modelos auxiliares, las vistas necesitan saber dibujarlos mediante la

utilización de las instrucciones de Direct3D correspondientes. Esto devuelve a la situación anterior, ya que

si se emplea el código que dibuje cada tipo de modelo se introduce alto acoplamiento y baja cohesión.

Esto dificulta la manera de hacer “conscientes” a las vistas de cómo dibujar los nuevos modelos que se

pudieran crear en el futuro. El problema se pudiera resolver utilizando nuevamente el patrón Simple

Factory, pero como se explica a continuación se decidió utilizar otro patrón. Cada vista sólo es

responsable de la inicialización de Direct3D, así como de la representación de sus ejes y planos de

coordenadas utilizando la configuración de la cámara correcta. Luego, para dibujar cada modelo auxiliar

se utilizan clases ayudantes. Por cada tipo de modelo existe al menos una clase ayudante que contiene el

código Direct3D correspondiente para dibujarlo. Hay que tener en cuenta que se pueden tener varias

clases ayudantes que representen el mismo modelo, pero utilizando diferentes técnicas y efectos. En la

Page 47: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

36

tabla 2.1 se presentan los modelos y las clases ayudantes que saben cómo representarlos mediante la

utilización de las instrucciones de Direct3D correspondientes.

Tabla 2.1 Modelos y clases ayudantes

Modelos Clases ayudantes

PuntoModel D3DHLPunto

RectaModel D3DHLRecta

PlanoModel D3DHLPlano

Debido a lo anteriormente explicado se decidió utilizar el patrón Factory Method. Este patrón define una

interfaz para la creación de los ayudantes, pero deja la decisión a sus subclases sobre qué clase ayudante

instanciar. En este trabajo sólo se creó la subclase D3DLowFactory que utiliza las características menos

demandantes en términos de recursos de hardware, abriendo el margen de tarjetas de video soportadas.

En equipos que contengan buenas capacidades gráficas, estas estarían subutilizadas si se empleara esta

subclase. La solución sería la creación de una subclase D3DHighFactory que utilice todos los recursos

disponibles obteniendo como resultado gráficos más realistas y que la aplicación según las capacidades

detectadas utilice la subclase adecuada. Hay que tener en cuenta que dicha solución está más allá del

ámbito del proyecto realizado, pero el buen diseño que trae consigo la utilización del patrón Factory

Method permite soportar fácilmente estos cambios en el futuro. En la Figura 2.7 se muestran las clases

que representan la utilización de este patrón.

Figura 2.7 Diagrama de clases del diseño que representan la utilización del patrón Factory Method

Page 48: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

37

2.7 Utilización del patrón Singleton para evitar mostrar ventanas del mismo tipo

Los formularios de ejercicios son creados y mostrados a través del menú de la ventana principal de la

aplicación. ¿Qué pasaría si se selecciona un tipo de ejercicio cuya ventana ya se esté mostrando? Se

ejecutarían dos instancias de formularios del mismo tipo. Este comportamiento quizás sea el adecuado

para un procesador de textos dónde se quisieran crear varias ventanas de documentos al mismo tiempo,

pero no tiene sentido, por ejemplo, tener dos ventanas abiertas de intersección de una recta con un plano

si con una sola se pueden resolver varios ejercicios. La solución a este problema radica en la utilización

del patrón Singleton. Para su implementación el constructor de la clase se hace privado. Entonces sólo la

misma clase puede llamar a su constructor, pero esto no tendría sentido, pues se necesitaría tener una

instancia primero. La respuesta es la creación de un método estático que compruebe si ya existe una

instancia de la clase y devuelva su referencia. En caso de no existir, primero se crea la instancia antes de

retornarla. A continuación se presenta un fragmento del código en C# para obtener una mayor perspectiva

de la implementación del patrón.

public partial class PuntosForm : Form

{

private static PuntosForm instancia = null;

private PuntosForm()

{

// Código del constructor

}

public static PuntosForm ObtenerInstancia()

{

if (instancia == null)

instancia = new PuntosForm ();

return instancia;

}

}

Luego para crear una instancia de la clase sólo hay que utilizar el código siguiente:

PuntosForm form = PuntosForm.ObtenerInstancia();

Page 49: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

38

2.8 El trabajo con Direct3D

Para el trabajo con Direct3D se utilizaron cinco pasos como se muestra en la Figura 2.8. Los pasos 1 y 2

sólo se ejecutan una vez al abrirse cada ventana de ejercicios, mientras que los pasos 3, 4 y 5 se ejecutan

cada vez que sea necesario refrescar cada vista.

Figura 2.8 Pasos en el trabajo con Direct3D

El primer paso en la inicialización Direct3D es la verificación de las capacidades del hardware gráfico.

Para ello se utiliza el método estático GetDeviceCaps() de la clase Manager que retorna una

instancia de la clase Caps. Esta instancia contiene un listado de todas las funcionalidades soportadas

por la tarjeta de video. Con dicho listado se puede analizar si la tarjeta de video soporta los cálculos

involucrados en el procesamiento de vértices en su GPU14, de lo contrario este trabajo es delegado a la

CPU15 de la computadora. Esto permite que la aplicación pueda ser ejecutada por una mayor cantidad de

máquinas con distinta potencia gráfica.

14 La unidad de procesamiento gráfico o GPU (Graphics Processing Unit) es un procesador dedicado exclusivamente

al trabajo con gráficos, que se utiliza para aligerar la carga de trabajo del CPU en aplicaciones como los videojuegos y/o aplicaciones 3D interactivas. De esta forma, mientras gran parte de lo relacionado con los gráficos se procesa en la GPU, la CPU puede dedicarse a otro tipo de cálculos.

15 La unidad central de procesamiento, o CPU (Central Processing Unit), o simplemente, el procesador, es el

componente de una computadora que interpreta las instrucciones y procesa los datos contenidos en los programas de la computadora.

Verificación de las capacidades del hardware gráfico

Creación del dispositivo gráfico

Preparación de la escena

Dibujado de la escena

Finalización y presentación de la escena

Paso 1

Paso 2

Paso 3

Paso 4

Paso 5

Page 50: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

39

El segundo paso consiste en la creación del dispositivo gráfico, que crea una capa de abstracción con el

hardware gráfico (HAL16). Para ello, se crea una instancia de la clase Device para cada vista. Entre los

parámetros pasados al constructor de dicha clase se encuentran: el control dónde se dibujará usando

Direct3D y una bandera que indica si los cálculos serán realizados por la CPU o la tarjeta de video,

teniendo en cuenta las características identificadas en el primer paso.

El tercer paso consiste en la preparación de la escena. Para ello se le asigna al dispositivo un espacio en

la memoria de la tarjeta de video y se le indica a través del método BeginScene() que se prepare para

recibir datos y escribirlos en dicha memoria.

El cuarto paso es el dibujado de la escena. Comienza cuando se definen las matrices de transformación a

utilizar (tipo de proyección, posición de la cámara, posición de cada objeto) y las clases ayudantes dibujan

los modelos que componen la escena. Además se configura la intensidad, tipo y dirección de las fuentes

de luz.

El último paso consiste en la finalización y presentación de la escena. Este se ejecuta cuando se han

terminado de dibujar los objetos y se llama al método EndScene() para indicar que se debe prohibir el

acceso al área de memoria que contiene el dibujo. Posteriormente se llama al método Present() para la

representación en pantalla del dibujo a través de la técnica de cadena de intercambio de buffers17. Esta

técnica consiste en un buffer principal (front buffers) que almacena el contenido mostrado en pantalla y

uno o más buffers traseros (back buffers) en los cuales ocurre el dibujado de los gráficos. Cuando se

termina el trabajo con un buffer trasero, este pasa a ser el buffer principal permitiendo la representación

inmediata de los gráficos en la pantalla En la Figura 2.9 se representa dicha técnica.

16 La capa de abstracción de hardware (Hardware Abstraction Layer o HAL), es un elemento del sistema operativo

que funciona como una interfaz entre el software y el hardware del sistema, para proveer una plataforma de hardware consistente, sobre la cual corren las aplicaciones. Cuando se emplea una HAL, las aplicaciones no acceden directamente al hardware sino que lo hacen a través de la capa abstracta provista por la HAL, lo que permite que las aplicaciones sean independientes del hardware.

17 Un buffer de datos es una ubicación en la memoria de una computadora o en un instrumento digital, reservada

para el almacenamiento temporal de información digital, mientras espera para ser procesada.

Page 51: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

40

Figura 2.9 Técnica de intercambio de buffers(13)

Direct3D soporta dos tipos de proyecciones que son utilizadas en el cuarto paso(19):

Proyección Perspectiva: Ajusta la representación del objeto según la distancia Z, lo que hace que

los objetos aparezcan más pequeños a medida que se alejan de la pantalla. Los objetos se

deforman como en el mundo real, por ejemplo, los bordes de la carretera parecen juntarse en el

horizonte. (Ver Figura 2.10 a)

Proyección Ortogonal: Los objetos aparecen del tamaño definido originalmente, no se hacen más

grande cuando se acercan a la pantalla o más pequeños cuando se alejan. (Ver Figura 2.10 b)

Figura 2.10 Proyecciones soportadas en Direct3D

Se utilizó la Proyección Ortogonal el trabajo con Direct3D, al ser esta la empleada en los materiales de la

asignatura Geometría Descriptiva. Para ello se llamó al método estático OrthoLH de la clase Matrix,

que crear la matriz adecuada para la representación ortogonal.

Page 52: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

41

2.8.1 Representación de un sistema en abatimiento

Direct3D utiliza el sistema de coordenadas de mano izquierda, a diferencia de OpenGL que se apoya un

sistema de mano derecha. En ambos sistemas las coordenadas positivas de las X se mueven hacia la

derecha y las Y positivas hacia arriba. La diferencia se encuentra en el eje Z. En el sistema de mano

izquierda utilizado, las coordenadas positivas de las Z se mueven desde el usuario hacia dentro de la

pantalla de la computadora. En la Figura 2.11 se muestra estos dos sistemas.

De igual manera no existe ninguna transformación directa aplicada a un sistema de mano izquierda para

crear un sistema en abatimiento. Debido a esto el paso más lógico a seguir es hacer coincidir la mayor

cantidad de ejes posibles entre estos dos sistemas, por lo que el sistema de coordenadas se hace girar

1800 sobre el eje Z en contra de las manecillas del reloj. En la Figura 2.12 se aprecia como queda el

sistema de mano izquierda después de realizada la rotación. En este momento las coordenadas positivas

de las X coinciden y las coordenadas positivas de las Y se convierten en YH+. En la tabla 2.2 se muestra

la asociación entre las coordenadas utilizadas en el abatimiento y las del sistema de coordenadas de

mano izquierda después de ser rotado 1800 sobre el eje Z.

Figura 2.11 Los dos sistemas de coordenadas utilizados por las API gráficas(13).

Page 53: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

42

Figura 2.12 Transformación del sistema de mano izquierda para obtener la representación de un sistema en abatimiento

Tabla 2.2 Asociación entre las coordenadas utilizadas en el abatimiento y las del sistema de mano izquierda después de ser rotado 180

0 sobre el eje Z.

Abatimiento

(Ver figura 2.2a)

Sistema de mano

izquierda rotado

x+ x+

x- x-

yh+ y+

yh- y-

yl+ x-

yl- x+

z+ y-

z- y+

Para representar los ejes de coordenadas del sistema en abatimiento se trazan las líneas siguientes:

Una línea de color rojo desde el punto (1000, 0, 0) hasta el origen para representar el eje X+.

Una línea de color verde desde el punto (0, 1000, 0) hasta el origen para representar el eje YH+.

Una línea de color verde desde el origen hasta el punto (-1000, 0, 0) para representar el eje YL+.

Una línea de color azul desde el origen hasta punto (1000, 0, 0) hasta el origen para representar el

eje Z.

Page 54: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

43

Además se dibujan tres rectángulos que representan los planos XY, YZ y XZ para lograr una mayor

identificación, ya que estos planos en la vista en isométrico tendrán los mismos colores. En la Figura

2.13 se presenta la representación en abatimiento utilizando Direct3D.

Figura 2.13 Representación de un sistema en abatimiento utilizando Direct3D

2.8.2 Representación de un sistema en isométrico

Para lograr la representación de un sistema en isométrico se rota 900 sobre el eje X de tal forma que las

coordenadas positivas de la Z queden hacia abajo. En este momento las coordenadas Y positivas entran

hacia la pantalla, las Z positivas se mueven hacia abajo y las X positivas se mueven hacia la derecha.

Luego para obtener el ángulo de vista correcto se posiciona la cámara en un punto que equidista de los

tres ejes de coordenadas y se encuentra en el primer octante. Además la cámara debe estar enfocada

hacia el origen (Ver Figura 2.14). En la tabla 2.3 se muestra la asociación entre coordenadas utilizadas en

la proyección isométrica y la del sistema de coordenadas de mano izquierda rotado.

Figura 2.14 Transformación del sistema de mano izquierda para obtener la representación de un sistema en isométrico

Page 55: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

44

Tabla 2.3 Asociación entre las coordenadas utilizadas en la proyección isométrica y la del sistema de coordenadas de mano izquierda transformado.

Isométrico Sistema de mano izquierda rotado

X+ X+

X- X-

Y+ Y+

Y- Y-

Z+ Z-

Z- Z+

Para representar los ejes de coordenadas del sistema en isométrico se trazan las líneas siguientes (ver

Figura 2.15 a):

Una línea de color rojo desde el punto (1000, 0, 0) hasta el punto (0, 1000, 0) para representar el

eje X.

Una línea de color verde desde el punto (0, 1000, 0) hasta el punto (0, -1000, 0) para representar

el eje Y.

Una línea de color azul desde el punto (0, 0, 1000) hasta el punto (0, 0, -1000) para representar el

eje Y.

Para representar los planos coordenados se representan tres rectángulos creados por cuatro puntos cada

uno (ver Figura 2.15 b):

El plano XY utiliza los puntos (1000, 1000,0), (-1000,1000,0), (-1000,-1000,0) y (1000,-1000,0)

El plano YZ utiliza los puntos (0, 1000,1000), (0,-1000,1000), (0,-1000,-1000) y (0, 1000,-1000)

El plano XZ utiliza los puntos (1000, 0,1000), (-1000, 0,1000), (-1000,0,-1000) y (1000,0, -1000)

Figura 2.15 Representación de un sistema en isométrico utilizando Direct3D

Page 56: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

45

2.9 Solución de los ejercicios de representación

Las representaciones de los modelos puntos, rectas y planos se realizan siguiendo los pasos definidos en

los libros de texto de Geometría Descriptiva. Lo diferente de este tipo de ejercicio es la utilización del

Control de Explicación que permite la reproducción paso a paso con su respectiva explicación leída desde

un fichero XML18. Para ello la clase ControlDeExplicación manipula la vista en abatimiento

estableciendo un límite para la cantidad de ayudantes que debe ejecutar. Para que una vista pueda ser

controlada por esta clase debe implementar la interfaz IReproducible. En la Figura 2.16 se muestra el

diagrama de bloques del algoritmo ejecutado como respuesta al evento OnPaint de la vista y en la Figura

2.17 se muestra el diagrama de clases del diseño que representan la relación entre las clases

ControlDeExplicación y D3DAbatimiento.

Para guardar las explicaciones se utilizó el lenguaje XML por la capacidad que tiene de ser validado por

un Schema19 o DTD20, permitiendo que el control de explicaciones se deshabilite en caso de intentar

cargar un fichero de explicación corrupto, lo cual evita el mal funcionamiento de la aplicación. Esto

contribuye a la robustez del sistema.

18 XML (Extensible Markup Language): Es un metalenguaje extensible de etiquetas desarrollado por el World Wide

Web Consortium (W3C). Define una sintaxis genérica para la definición de datos con etiquetas humanamente legibles. Provee un formato estándar para documentos de computadoras, que es lo suficientemente flexible para ser utilizados por dominios tan diferentes como la web, el intercambio electrónico de datos, gráficos vectoriales, serialización de objetos, llamadas a procedimientos remotos y más.

19 XML Schema es un lenguaje de esquema utilizado para describir la estructura y las restricciones de los contenidos

de los documentos XML de una forma muy precisa, más allá de las normas sintácticas impuestas por el propio lenguaje XML. Se consigue así una percepción del tipo de documento con un nivel alto de abstracción. Fue desarrollado por el World Wide Web Consortium (W3C) y alcanzó el nivel de recomendación en mayo de 2001.

20 DTD (Document Type Definition): La definición de tipo de documento es una descripción de estructura y sintaxis de

un documento XML. Su función básica es la descripción del formato de datos, para mantener la consistencia entre todos los documentos que utilicen la misma DTD. De esta forma, dichos documentos se pueden validar, se puede conocer la estructura de sus elementos y la descripción de los datos que trae consigo cada documento. Además, pueden compartir la misma descripción y forma de validación dentro de un grupo de trabajo que usa el mismo tipo de información. Las DTD proporcionan una menor potencia expresiva que los Schemas.

Page 57: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

46

Figura 2.16 Diagrama de bloques del algoritmo Representar ejecutado por la vista en abatimiento

Figura 2.17 Diagrama de clases del diseño que representan la relación entre las clases ControlDeExplicación y

D3DAbatimiento.

Limpiar la vista

¿Vista en modo

interactivo?

Configurar la cámara

Representar el sistema de coordenadas

Ejecutar hasta la cantidad de ayudantes

establecidos por el Control de Explicación

Ejecutar todos los ayudantes

No

Si

Page 58: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

47

2.10 Solución de los ejercicios de pertenencia, paralelismo e intersecciones

Para la solución del resto de los ejercicios de la aplicación se desarrolló una librería de Geometría

Analítica que es utilizada junto a la teoría de Geometría Descriptiva. El cálculo de la solución de cada tipo

de ejercicio está contenido en una función la cual es registrada como manejadora del evento OnUpdate

del controlador. Esto permite ejecutar la lógica del ejercicio cada vez que el usuario modifica un modelo

geométrico. Las ecuaciones de dicha librería tienen en cuenta los errores numéricos introducidos al

trabajar con números reales. Para ello se utilizó la fórmula del error absoluto. En la Figura 2.18 se

presentan las actividades a realizar para resolver un ejercicio y en la Figura 2.19 se muestra el diagrama

de clases del diseño donde se representa la clase GAnalítica que constituye la librería de Geometría

Analítica.

Figura 2.18 Diagrama de actividades para revolver un ejercicio de pertenencia, paralelismo o intersecciones

Para ejemplificar el diagrama de actividades, veamos el ejercicio de intersección de una recta con un

plano. El usuario introduce los parámetros para la creación de la recta y el plano. El programa comprueba

si existe intersección entre estos modelos. Supongamos que no la hay. El programa representa el ejercicio

dónde se aprecia que no existe intersección. El usuario modifica la posición de la recta. Esta vez sí existe

intersección. El programa cambia el color de la recta y agrega un nuevo modelo para representar el punto

de intersección. El programa representa el ejercicio dónde se aprecia que la recta atraviesa el plano. Por

último, el usuario no desea probar otras variantes y se llega al final del ejercicio.

Page 59: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

48

Figura 2.19 Diagrama de clase de la librería de Geometría Analítica

2.11 Extensibilidad, Mantenimiento y reutilización

El diseño de esta aplicación está concebido para ser altamente extensible, fácil de mantener y reutilizable.

Todo gracias a la utilización de los patrones de diseño.

Extensibilidad

En la Figura 2.20 se muestra las cuatros formas de extender el diseño de la aplicación.

Figura 2.20 Las cuatro formas de extender la aplicación

Vistas

(Direct3D)

Controlador

(Modifica un punto a la vez)

Modelos

(Punto, Recta, Plano)

Nuevas vistas que representan los modelos de nuevas formas

Nuevas vistas que utilizan otras

API gráficas (OpenGL, GDI+…)

Nuevos modelos

(Circulo, Prisma,…)

Nuevos controladores

(Modifican los modelos de otra forma)

1

2

3 4

Page 60: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

49

Debido a la alta independencia entre las vistas y los modelos es posible extender fácilmente la aplicación.

Para incorporar un modelo nuevo cuya representación esté basada en puntos y rectas sólo se necesita

implementar la interfaz IModelo y hacer “consciente” a las clases que implementa el patrón Simple

Factory, ya sea decorando la clase o sustituyéndola por otra, que reconozcan el nuevo modelo

geométrico. Un ejemplo de este modelo sería un prisma de base rectangular. Si el nuevo modelo no está

constituido por modelos ya existentes se debe crear dichos modelos y soportar la creación del nuevo

elemento en la clase que implementa el patrón Factory Method. Un ejemplo de esto es el cono, pues para

su representación las vistas necesitan saber dibujar un círculo, por tanto habría que crear la clase

CírculoModel y la clase ayudante D3DHLCírculo. Esta última sabe cómo representar el nuevo modelo

usando Direct3D. Además, hay que decorar D3DLowFactory o crear una subclase de

D3DFactoryMethod que instancie una clase D3DCírculo cuando reciba como parámetro una instancia

de la clase CírculoModel. En la Figura 2.21 se presenta el diagrama de clases donde se agrega el

modelo CírculoModel, por lo tanto se utiliza AbatimientoSimpleFactory2,

IsométricoSimpleFactory2 y D3DLowFactory2 que agregan el “conocimiento” sobre el nuevo

modelo.

Page 61: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

50

Figura 2.21 Diagrama de clases que representa la extensión de la aplicación al agregar un nuevo modelo

También es posible extender la aplicación desde la parte de las vistas en el patrón MVC de dos maneras:

1. Creando nuevas vistas que utilicen otras APIs gráfica como OpenGL.

2. Creando nuevas vistas que representen los modelos de otra forma.

Page 62: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

51

3. Para incorporar una vista en abatimiento usando OpenGL se necesita construir un control de

usuario que implemente la interfaz IVista y que encapsule el trabajo con la inicialización, la

configuración de la cámara y la visualización. También se debe crear las clases ayudantes que

representen los modelos mediante el uso de OpenGL (GLHLPunto,GLHLRecta y GLPlano) y la

clase GLLowFactory que herede de la clase abstracta GLFactoryMethod. Esta última debe ser

capaz de devolver la instancia de las clases ayudantes que representen a los modelos pasados

como parámetro. En la Figura 2.22 se muestra el diagrama de clase que contiene dos vistas en

abatimiento, la primera utiliza Direct3D y la segunda OpenGL.

Figura 2.22 Diagrama de clases que representa la extensión de la aplicación al agregar una vista en abatimiento que utiliza la API gráfica OpenGL.

Page 63: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

52

Para construir una vista que represente los modelos de otra forma (por ejemplo en un sistema de

coordenadas polares pero usando Direct3D), se necesita desarrollar un control de usuario con la

configuración de la cámara correspondiente y crear la clase que implemente el patrón Simple Factory, de

forma tal que sepa fabricar todos los modelos auxiliares a ser representados. En la Figura 2.23 se muestra

el diagrama de clases que muestra una vista en abatimiento y otra en coordenadas polares.

Figura 2.23 Diagrama de clases que representa la extensión de la aplicación al agregar una nueva vista que presentan los modelos en coordenadas polares.

Page 64: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

53

Mantenimiento

El uso de los patrones trae como consecuencia una alta cohesión y un bajo acoplamiento entre las clases,

lo que hace el mantenimiento más sencillo, ya que los cambios realizados en una clase tienen poca

repercusión en el resto de las clases de la aplicación.

Reutilización

Se puede utilizar las clases que conforman el MVC en otra aplicación sin tener que adquirir conocimientos

del trabajo con DirectX. En un programa que grafique funciones matemáticas se puede reutilizar toda la

arquitectura y construir una vista que represente un sistema cartesiano. También se puede reutilizar la

librería de ecuaciones de Geometría Analítica, así como el control de explicación para controlar la

reproducción de cualquier otra clase que implemente la interfaz IReproducible.

En la Figura 2.22 se aprecia cómo dos vistas que utilizan diferentes API gráficas pero representan un

sistema en abatimiento reutilizan la clase AbatimientoSimpleFactory para obtener los modelos

auxiliares.

En la Figura 2.23 se aprecia cómo dos vistas que utilizan Direct3D y que representan los modelos en

abatimiento y en un sistema de coordenadas polares, reutilizan la clase D3DLowFactory para crear las

clases ayudantes.

2.12 Elementos del estilo de códigos

Durante la codificación de la aplicación se utilizó el idioma español. No obstante, debido al uso de la

tecnología y patrones de diseño empleados se determinó el uso de tecnicismos en inglés en algunos

nombres de clases. Los nombres de las variables y parámetros de las funciones empiezan con minúscula.

En caso de existir un nombre compuesto, las palabras se escriben a continuación una de la otra, pero a

diferencia de la primera, todas empiezan con mayúscula. Los nombres de las clases y funciones

comienzan con mayúscula y cumplen con la misma regla para el uso de nombres compuestos. Se utiliza

una línea propia para el inicio de llaves y otra para el cierre, facilitando la comprensión del código fuente.

Las clases que denotan los modelos utilizados en el patrón MVC y representan el patrón Simple Factory o

Factory Method terminan con el sufijo –Model, -SimpleFactory o –FactoryMethod respectivamente. Las

clases que utilizan la API gráfica Direct3D comienzan con el prefijo D3D. En caso de extenderse la

Page 65: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

54

aplicación con clases que utilicen OpenGL se recomienda seguir esta misma regla utilizando el prefijo GL.

Las interfaces siguen el estilo establecido por Microsoft y utilizan el prefijo i.

2.13 Conclusiones del capítulo

El patrón MVC constituye el núcleo de la aplicación. Los patrones Simple Factory y Factory Method liberan

a las vistas de ser responsables de la creación de los modelos auxiliares y de las clases ayudantes que

dibujan dichos modelos. El trabajo con la API gráfica Direct3D permitió la creación de dos vistas que

representan un sistema en abatimiento y un sistema en isométrico. También se demostró cómo los

patrones de diseño logran una mayor extensibilidad y reusabilidad, los cual contribuye al mantenimiento

del software.

.

Page 66: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

55

Capítulo 3: Pruebas realizadas y resultados obtenidos

3.1 Introducción al capítulo

En el presente capítulo se aborda el estudio de factibilidad del proyecto, el cuál está basado en el modelo

de estimación de costos COCOMO II. Se describen las técnicas de pruebas aplicadas y se presentan los

diseños de casos de pruebas utilizando técnicas de pruebas de caja blanca y caja negra. Además se

realiza un análisis de los resultados obtenidos y se refleja el criterio de los especialistas.

3.2 Estudio de Factibilidad

Esta investigación es un ejercicio obligatorio para optar por el título de Ingeniero Informático, debido a esto

en su comienzo no fue necesaria la realización de un estudio de factibilidad. Por esta razón el estudio de

factibilidad presentado en este epígrafe constituye un recurso para estimar a posteriori, el tiempo, el costo

y la cantidad de personal necesario en el desarrollo de una herramienta computacional de este tipo.

3.2.1 Estimación de costos del proyecto de software

Antes de dar luz verde al proyecto de software se debe efectuar un estudio de factibilidad para estimar los

costos y comprobar si es viable su realización. Para llevar a cabo dicho estudio se utilizó COCOMO II.

En(20), Moreno define COCOMO II (Constructive Cost Model II) como un modelo que permite estimar el

costo, esfuerzo y tiempo cuando se planifica una nueva actividad de desarrollo software.

La familia de modelos COCOMO II está compuesta por tres sub-modelos cada uno de los cuales ofrece

mayor fidelidad a medida que se avanza en la planificación del proyecto y en el proceso de diseño. Unos

de los tres sub-modelos es el modelo de Composición de Aplicaciones, indicado para proyectos

construidos con herramientas modernas de desarrollo de interfaces gráficas para usuarios(20). La

herramienta “Suite de Geometría Descriptiva” se encuentra en esta categoría, por lo que la estimación se

basa en PO21 (Puntos Objeto).

A continuación se presentan los pasos para lograr la estimación de los costos utilizando el modelo de

Composición de Aplicaciones.

21

PO. Los Puntos Objeto son el recuento de pantallas, informes y módulos de lenguajes de 3ra generación desarrollados en la

aplicación, cada uno ponderado mediante un factor de complejidad de tres niveles: simple, medio y complejo.

Page 67: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

56

Paso 1. Recuento de objetos.

En este paso se estima el número de pantallas, informes y componentes de las que consta la aplicación.

Al estudiar la herramienta, se identificaron once pantallas y tres componentes, lo que hace un total de

trece objetos.

Paso 2: Clasificar cada instancia de objeto dentro de niveles de complejidad simple, media y difícil.

La complejidad de los objetos identificados en el paso 1 se clasifica usando la tabla 7.3 en (20), en simple,

media y difícil.

Paso 3: Pesar la complejidad de los objetos identificados.

La complejidad de los objetos identificados en el paso 1 se pesa usando la tabla 7.4 en (20). En la Tabla

3.1 se muestran los objetos identificados en la aplicación con su respectiva complejidad y peso asociado.

Tabla 3.1 Objetos identificados en la aplicación

Objeto Clasificación Complejidad Peso

Ventana principal Pantalla Simple 1

Ventana de ejercicios de representación de puntos Pantalla Difícil 3

Ventana de ejercicios de representación de rectas Pantalla Difícil 3

Ventana de ejercicios de representación de planos Pantalla Difícil 3

Ventana de ejercicios de pertenencia de un punto a una recta Pantalla Difícil 3

Ventana de ejercicios de pertenencia de una recta a un plano Pantalla Difícil 3

Ventana de ejercicios de pertenencia de un punto a un plano Pantalla Difícil 3

Ventana de ejercicios de paralelismo entre dos rectas Pantalla Difícil 3

Ventana de ejercicios de paralelismo entre una recta y un plano Pantalla Difícil 3

Ventana de ejercicios de intersección entre dos rectas Pantalla Difícil 3

Ventana de ejercicios de intersección entre una recta y un plano Pantalla Difícil 3

Vista en abatimiento Componente Difícil 10

Vista en isométrico Componente Difícil 10

Control de explicación Componente Difícil 10

Page 68: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

57

Paso 4: Determinar Puntos Objeto

En este paso se suman todos los pesos de los objetos identificados para determinar Puntos Objeto (PO).

PO = 1 * 1 + 10 * 3 + 3 * 10 = 61

Paso 5: Estimar el porcentaje de reutilización que se espera lograr en este proyecto y calcular los Nuevos

Puntos Objeto a desarrollar.

NOP: Nuevos Puntos Objeto: Cantidad de Puntos Objeto ajustados por la reutilización.

%reuse: Porcentaje de pantallas, informes y módulos 3GL22 reutilizados a partir de aplicaciones anteriores

aproximadas por grado de reutilización

Se estima que la utilización de la plataforma .Net y el uso de la API gráfica Direct3D introduce un 30% de

reutilización de código.

Luego utilizando la Ecuación 3.1 se determina el valor de NOP

Ecuación 3.1: Cálculo de NOP

Paso 6: Determinar la proporción de productividad (PROD)

La proporción de productividad se determina a partir de la tabla 7.5 definida en (20).

PROD = 7.

Paso 7: Calcular el valor Meses-Persona (MM)

El valor de Meses-Persona se estima utilizando la Ecuación 3.2.

Ecuación 3.2: Cálculo de Meses-Persona

22 3GL. Lenguajes de tercera generación.

Page 69: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

58

Paso 8: Calcular el costo monetario del proyecto:

Para calcular el costo monetario del proyecto se utiliza la Ecuación 3.3, donde CH es la cantidad de

hombres y SM es el salario mensual por persona. Si se considera que el valor de SM es $400 y CH es 1,

el costo es de $2,440.

Ecuación 3.3: Cálculo del costo

3.2.3 Beneficios Tangibles e Intangibles.

Los beneficios tangibles que ofrece el software Suite de Geometría Descriptiva se aprecian una vez que

los estudiantes comiencen a utilizarlo para comprobar la solución de los ejercicios orientados en las clases

prácticas de la asignatura y representen variantes que no aparecen en los materiales de estudio. También

pueden aprender la metodología de resolución de los ejercicios. Por otra parte, los profesores pueden

utilizar la herramienta en las conferencias y clases prácticas

Como beneficio intangible se puede mencionar el aumento de la percepción del estudiante de las

representaciones de los modelos geométricos en el plano y en el espacio.

3.3 Técnicas de pruebas

Existen diferentes técnicas y niveles de pruebas que pueden aplicarse durante el proceso de desarrollo de

un sistema. A continuación se describen las más utilizadas.(21)

Prueba de Regresión: verifica el sistema luego de haber efectuado cambios, por ejemplo después

de corregir una falta, de manera que se mantenga la funcionalidad especificada originalmente.

Prueba de Operación: verifica el sistema en operación por un período largo de tiempo bajo

condiciones normales de uso. Este tipo de prueba mide la confiabilidad del sistema.

Prueba de Escala Completa: verifica el sistema en su carga máxima asignando los parámetros a

su valor límite, interconectando el sistema con un máximo de equipos y usuarios simultáneos. Un

extremo de esto es la prueba de estrés que significa que se ejecuta el sistema en sus límites

extremos para ver qué tanto soporta y si ocurre algún tipo de falla.

Prueba de Rendimiento o Prueba de Capacidad: mide la capacidad de procesamiento del

sistema bajo diferentes cargas, incluyendo el espacio de almacenamiento y utilización del CPU.

Los valores medidos se comparan con los valores requeridos.

Page 70: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

59

Prueba de Sobrecarga: analiza cómo se comporta el sistema cuando se le aplica una sobrecarga,

más allá de las pruebas de escala completa y rendimiento. Aunque no se puede esperar que el

sistema soporte estas pruebas, este debería ejecutarse correctamente, sobrevivir picos de carga,

evitando que ocurra una catástrofe. Es siempre importante saber en qué momento y de qué

manera cae el rendimiento del sistema.

Prueba Negativa: mide el estrés del sistema en situaciones inesperadas, como en casos de uso

que normalmente no serían invocados simultáneamente. El sistema se usa intencionalmente y

sistemáticamente de manera incorrecta. Este maltrato debe ser cuidadosamente planeado para

probar aspectos especialmente críticos.

Prueba estructural o Prueba de caja blanca: verifica que la estructura interna de una unidad sea

correcta. Es deseable cubrir todas las posibles combinaciones de parámetros, valores de variables

y flujos en el código, de manera que todas las instrucciones se ejecuten. Para examinar la

efectividad de los casos de prueba se debe medir la cobertura de prueba dónde cada ruta en el

código sea cubierta o probada al menos una vez. La mayoría de los problemas provienen de

combinaciones de rutas inusuales como aquellas que involucran ciclos. Los casos de prueba se

ilustran mediante diagramas de flujo.

Prueba de especificación o Prueba de caja negra: verifica las relaciones de entrada y salida de

una unidad. El objetivo es verificar qué hace la unidad, pero sin saber cómo lo hace. Se envían

estímulos con diferentes parámetros de entrada y se comparan las salidas esperadas. Dado que

las unidades se comunican mediante interfaces bien definidas, la prueba de especificación es

bastante directa.

Pruebas Ergonómicas: comprueba los aspectos ergonómicos del sistema, en otras palabras, las

interfaces hombre-máquina en el caso de que estas existan. Por ejemplo, se prueba si las

interfaces son consistentes con los casos de uso a los cuales corresponden, si los menús son

lógicos y legibles, si los mensajes del sistema son visibles, si se puede entender los mensajes de

errores, etc.

Prueba de Documentación de Usuario: comprueba la documentación de usuario, incluyendo el

manual de usuario y documentación de mantenimiento y servicio. Se prueba que los manuales y

comportamiento del sistema sean consistentes entre sí, legibles y comprensibles.

Prueba de Aceptación o Prueba de Validación: logra una revisión final por parte de la

organización que solicitó el sistema, siendo esto a menudo la validación del sistema. El sistema se

Page 71: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

60

prueba en su ambiente real por un período largo de tiempo. Cuando se termina la prueba se

decide si el producto se acepta o no. Este tipo de prueba es a veces conocida como prueba alfa. Si

no existe un cliente particular que haya solicitado el sistema, por ejemplo en el caso de un

producto de software de venta al público, a menudo se hace una prueba beta. Esto significa que

antes de enviarlo al público en general, el producto es probado por clientes seleccionados que

utilizan el sistema y reportan fallas experimentadas.

Por las características de la aplicación construida las pruebas de Operación, Escala Completa,

Rendimiento y Sobrecarga no son tomadas en cuenta. Dichas pruebas se aplican a programas complejos,

que consumen gran cantidad de recursos y soportan varios usuarios simultáneamente. Las pruebas de

Regresión tampoco son ejecutadas por no realizarse cambios importantes, ya que el uso de los patrones

brinda un diseño validado y bien estructurado. No fue posible la realización de la Prueba de Aceptación o

Prueba de Validación, ya que dicha prueba requiere que el sistema se pruebe en su ambiente real y por

un largo período de tiempo. En su lugar se hicieron pequeñas pruebas con profesores de la asignatura

Geometría Descriptiva y con estudiantes de primer año de Ingeniería Mecánica en una clase de

laboratorio.

Las pruebas Ergonómicas y Documentación de Usuario se realizaron rápidamente por la gran facilidad de

uso del programa que brinda su sencilla interfaz de usuario. La documentación fue comprobada por los

especialistas y se realizaron pruebas a la interfaz para comprobar la satisfacción de los requisitos

funcionales, el correcto uso de los colores y la utilización del espacio.

3.3.1 Pruebas de caja blanca

La prueba de caja blanca es un método de diseño de casos de prueba que usa la estructura de control del

diseño procedimental para obtener los casos de prueba. Mediante los métodos de prueba de caja blanca,

el ingeniero del software puede obtener casos de prueba que garanticen que se ejercite al menos una vez

todos los caminos independientes de cada módulo, la ejecución de todas las decisiones lógicas en sus

vertientes verdadera y falsa, así como todos los bucles con sus límites operacionales. Además se

chequean las estructuras internas de datos para asegurar su validez. (22)

Las pruebas exhaustivas no son factibles debido a que el número de caminos, incluso para un programa

de tamaño moderado, es excepcionalmente grande. Sin embargo, la prueba de caja blanca no se debe

Page 72: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

61

desechar, ya que se puede elegir y ejercitar una serie de caminos lógicos importantes, al igual que se

puede comprobar la validez de las principales estructuras de datos.

En este trabajo de diploma se utilizó la prueba del camino básico. Esta es una técnica de prueba de caja

blanca que permite al diseñador de casos de prueba obtener una medida de la complejidad lógica de un

diseño procedimental y usar esa medida como guía para la definición de un conjunto básico de caminos

de ejecución. En (22), Pressman define la complejidad ciclomática como el número de caminos

independientes del conjunto básico de un programa, que determina el número superior de pruebas que se

deben hacer para asegurar que se ejecute cada sentencia al menos una vez.

El método de prueba de camino básico se puede aplicar a un diseño procedimental detallado o a un

código fuente. A continuación se presenta la aplicación de esta técnica paso a paso sobre el código que

resuelve el problema de pertenencia de un punto a una recta desde el punto de vista de la Geometría

Descriptiva.

private void controlador_OnUpdate (Busqueda resultado)

{

RectaModel recta = (RectaModel)resultado.Ejercicio.Modelo(“AB”); [1]

if (!resultado.Ejercicio.Iteractivo) [2]

{

PuntoModel p = Matemática.PuntoMedio(recta);

p.Nombre = “P”;

p.Color = Color.Yellow;

richTextBox2.Text = “El punto P pertenece a la recta AB [3]

ya que sus trazas se encuentran sobre las trazas de la

recta.”;

resultado.Ejercicio.Agregar(p);

}

else

{

bool h = false, f = false, l = false;

PuntoModel p = (PuntoModel)resultado.Ejercicio.Modelo(“P”);

Page 73: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

62

IModelo[] trazasRecta = AbatimientoSimpleFactory.TrazasRecta(recta); [4]

PuntoModel[] trazasPunto = AbatimientoSimpleFactory.TrazasPunto(p);

if (trazasRecta[0] is RectaModel) [5]

h = Matemática.PerteneceAcotado(trazasPunto[0], ¬

(RectaModel)trazasRecta[0]); [6]

else

h = ((PuntoModel)trazasRecta[0]).Aproximado(trazasPunto[0]); [7]

if (trazasRecta[1] is RectaModel) [8]

f = Matemática.PerteneceAcotado(trazasPunto[1], ¬

(RectaModel)trazasRecta[1]); [9]

else

f = ((PuntoModel)trazasRecta[1]).Aproximado(trazasPunto[1]); [10]

if (trazasRecta[2] is RectaModel) [11]

l = Matemática.PerteneceAcotado(trazasPunto[2], ¬

(RectaModel)trazasRecta[2]); [12]

else

l = ((PuntoModel)trazasRecta[2]).Aproximado(trazasPunto[2]); [13]

if (h && f && l ) [14,15,16]

{

richTextBox2.Text = “El punto P pertenece a la recta AB ya

que sus trazas se encuentran sobre las trazas de la recta.”; [17]

p.Color = Color.Yellow;

}

else

{

richTextBox2.Text = “El punto P no pertenece a la

recta AB porque sus trazas no se encuentran sobre [18]

las trazas de la recta.”;

p.Color = Color.Black;

Page 74: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

63

}

} [19]

}

Este código comprueba si el ejercicio se encuentra en modo interactivo. De ser así cada vez que el

usuario modifique la posición de la recta o del punto, se verifica si el punto pertenece a la recta. Para ello

se determina si la proyección del punto se encuentra sobre la traza de la recta en su correspondiente

plano horizontal, frontal y lateral. Si el ejercicio no se encuentra en modo interactivo, sólo hay que mostrar

un punto que pertenezca a la recta, siendo el punto medio de la recta la solución más directa.

Paso 1: Usando el código como base, se dibuja el correspondiente grafo de flujo.

Page 75: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

64

Figura 3.1 Grafo de flujo para el código de la función llamada por el evento OnUpdate del controlador del ejercicio de pertenencia

de un punto a una recta.

Región 6

Región 7

1

2

3 4

5

6 7

8

9 10

11

12 13

14

15

16

17 18

19

Región 1

Región 3

Región 4

Región 2

Región 5

Región 8

Page 76: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

65

Paso 2: Calcular la complejidad ciclomática para determinar el límite superior para el número de

caminos independientes que componen el conjunto básico.

La complejidad ciclomática está basada en la teoría de grafos y da una métrica del software

extremadamente útil. En (22), Pressman describe tres formas de calcularla:

1. El número de regiones del grafo de flujo coincide

2. La complejidad ciclomática, V(G), de un grafo de flujo se define como V(G)=A-N+2 donde A es el

número de aristas del grafo de flujo y N es el número de nodos del mismo.

3. La complejidad ciclomática, V(G), de un grafo de flujo G también se define como V (G)=P+ 1 donde

P es el número de nodos predicado contenidos en el grafo de flujo G.

Refiriéndonos al grafo de flujo de la Figura 3.1, la complejidad ciclomática se puede calcular mediante

cualquiera de las tres formas anteriores:

1. El grafo de flujo tiene ocho regiones

2. V(G) = 25 aristas - 19 nodos + 2 = 8

3. V(G) = 7 nodos predicado + 1 = 8.

Por consiguiente queda demostrado que el número de caminos independientes a determinar son ocho.

Paso 3: Determinar un conjunto básico de caminos linealmente independientes.

En el paso anterior se determinó que se deben especificar ocho caminos:

Camino 1: 1-2-3-19

Camino 2: 1-2-4-5-6-8-9-11-12-14-15-16-17-19

Camino 3: 1-2-4-5-7-8-9-11-12-14-15-16-17-19

Camino 4: 1-2-4-5-6-8-10-11-12-14-15-16-17-19

Camino 5: 1-2-4-5-6-8-9-11-13-14-15-16-17-19

Camino 6: 1-2-4-5-6-8-9-11-12-14-18-19

Camino 7: 1-2-4-5-6-8-9-11-12-14-15-18-19

Camino 8: 1-2-4-5-6-8-9-11-12-14-15-16-18-19

Page 77: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

66

Paso 4: Preparar los casos de prueba que forzarán la ejecución de cada camino del conjunto

básico.

Para poder ejecutar los casos de prueba se deben escoger la recta y el punto, de forma tal que las

condiciones de los nodos predicados estén adecuadamente establecidas, con el fin de comprobar cada

camino. Los casos de prueba que satisfacen el conjunto básico previamente descrito son los siguientes:

Caso de prueba del camino 1:

Se selecciona la variante del ejercicio en que el programa encuentra un punto que pertenezca a la recta

dada.

Resultado esperado: El programa muestra la representación de la recta y de un punto perteneciendo a la

misma en las dos vistas y la explicación de por qué se cumple la condición de pertenencia según la teoría

de Geometría Descriptiva. El punto se representa de color amarillo.

Caso de prueba del camino 2:

Se selecciona la variante interactiva del ejercicio que permite el cambio de posición de cualquiera de los

dos modelos geométricos utilizando el mouse. Se introduce una recta y un punto que pertenezca a la

misma. La recta debe ser oblicua para que sus proyecciones en el plano horizontal, frontal y lateral sean

una recta.

Resultado esperado: El programa muestra la representación de la recta y del punto perteneciendo a la

misma en las dos vistas y la explicación de por qué se cumple la condición de pertenencia según la teoría

de Geometría Descriptiva. El punto se representa de color amarillo.

Caso de prueba del camino 3:

Se selecciona la variante interactiva del ejercicio que permite el cambio de posición de cualquiera de los

dos modelos geométricos utilizando el mouse. Se introduce una recta y un punto que pertenezca a la

misma. La recta debe ser perpendicular al plano horizontal para que su proyección en dicho plano sea un

punto.

Page 78: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

67

Resultado esperado: El programa muestra la representación de la recta y del punto que le pertenece en

las dos vistas y la explicación de por qué se cumple la condición de pertenencia según la teoría de

Geometría Descriptiva. El punto se representa de color amarillo.

Caso de prueba del camino 4:

Se selecciona la variante interactiva del ejercicio que permite el cambio de posición de cualquiera de los

dos modelos geométricos utilizando el mouse. Se introduce una recta y un punto que pertenezca a la

misma. La recta debe ser perpendicular al plano frontal para que su proyección en dicho plano sea un

punto.

Resultado esperado: El programa muestra la representación de la recta y del punto que le pertenece en

las dos vistas y la explicación de por qué se cumple la condición de pertenencia según la teoría de

Geometría Descriptiva. El punto se representa de color amarillo.

Caso de prueba del camino 5:

Se selecciona la variante interactiva del ejercicio que permite el cambio de posición de cualquiera de los

dos modelos geométricos utilizando el mouse. Se introduce una recta y un punto que le pertenezca. La

recta debe ser perpendicular al plano lateral para que su proyección en el dicho plano sea un punto.

Resultado esperado: El programa muestra la representación de la recta y del punto que le pertenece en

las dos vistas y la explicación de por qué se cumple la condición de pertenencia según la teoría de

Geometría Descriptiva. El punto se representa de color amarillo.

Caso de prueba del camino 6:

Se selecciona la variante interactiva del ejercicio que permite el cambio de posición de cualquiera de los

dos modelos geométricos utilizando el mouse. Se introduce una recta y un punto que no le pertenezca.

Las proyecciones del punto deben encontrase en las proyecciones de la recta en el plano frontal y lateral,

no siendo el caso en el plano horizontal.

Page 79: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

68

Resultado esperado: El programa muestra la representación de la recta y el punto. Se aprecia y explica

por qué no se cumple la condición de pertenencia según la teoría de Geometría Descriptiva. El punto no

cambia de color.

Caso de prueba del camino 7:

Se selecciona la variante interactiva del ejercicio el cual permite el cambio de posición de cualquiera de

los dos modelos geométricos utilizando el mouse. Se introduce una recta y un punto que no le pertenezca.

Las proyecciones del punto deben encontrase en las proyecciones de la recta en el plano horizontal y

lateral, no siendo el caso en el plano frontal.

Resultado esperado: El programa muestra la representación de la recta y del punto perteneciente. Se

aprecia y explica por qué no se cumple la condición de pertenencia según la teoría de Geometría

Descriptiva. El punto no cambia de color.

Caso de prueba del camino 8:

Se selecciona la variante interactiva del ejercicio que permite el cambio de posición de cualquiera de los

dos modelos geométricos utilizando el mouse. Se introduce una recta y un punto que no le pertenezca.

Las proyecciones del punto deben encontrase en las proyecciones de la recta en el plano horizontal y

frontal, no siendo el caso en el plano lateral.

Resultado esperado: El programa muestra la representación de la recta y del punto. Se aprecia y explica

por qué no se cumple la condición de pertenencia según la teoría de Geometría Descriptiva. El punto no

cambia de color.

3.3.2 Pruebas de caja negra

Las pruebas de caja negra se enfocan en la validación del comportamiento de la aplicación, o sea, se

deben encontrar las discrepancias entre lo que el programa hace y lo que debería hacer. Esta técnica de

prueba y la técnica de prueba de caja blanca no son mutuamente excluyentes, sino que se complementan

entre sí.

Para determinar los casos de prueba se utilizó el método de partición equivalente. Este método consiste

en la identificación de clases de equivalencias tanto para la entrada de datos válidos, como los no válidos

Page 80: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

69

o erróneos. Luego, se crean casos de pruebas que cubran tantas clases válidas no utilizadas en otros

casos previamente. Lo mismo ocurre para las clases no válidas. Esto permite comprobar la funcionalidad

del software analizando el dominio de valores de entrada. En la Tabla 3.2 se especifican las clases de

equivalencias utilizadas en los casos de pruebas.

Tabla 3.2 Clases de equivalencias

Entrada Clases validas Clases invalidas

Coordenadas de un

punto

(1) X >= 0, Y>= 0, Z>=0) (2) X < 0, Y< 0, Z>0

(3) X, Y o Z no es un numero

Coordenadas de un

segmento de recta

(4) Punto 1 ≠ Punto 2

(5) X1 >= 0, Y1>= 0, Z1>=0

X2 >= 0, Y2>= 0, Z2>=0

(6) Punto 1 = Punto 2

(7) X1 < 0, Y1 < 0, Z1 < 0

X2 < 0, Y2 < 0, Z2 < 0

Coordenadas de un

triangulo que define un

plano

(8) Los tres puntos no son colineales

(9) Punto1 ≠ Punto 2

(10) Punto 2 ≠ Punto3

(11) Punto 1 ≠ Punto3

(12) X1 >= 0, Y1>= 0, Z1>=0

X2>= 0, Y2>= 0, Z2>=0

X3>= 0, Y3>= 0, Z3>=0

Los tres puntos son colineales

(13) Punto 1 = Punto 2

(14) Punto 2 = Punto 3

(15) Punto 1= Punto 3

(16) X1 < 0, Y1< 0, Z1< 0

X2< 0, Y2< 0, Z2< 0

(17) X3< 0, Y3< 0, Z3< 0

Un beneficio importante de los casos de prueba de caja negra es señalar las debilidades y carencias de

las especificaciones del programa.(23)

Los casos de pruebas de caja negra fueron ejecutados por dos grupos de estudiantes de primer año de

Ingeniería Mecánica en una clase de laboratorio.

3.4 Análisis de los resultados obtenidos

El resultado de esta investigación es la creación de una herramienta computacional usada como

complemento de la asignatura Geometría Descriptiva en las carreras de ingeniería en la UMCC. Dicha

herramienta actúa como resolvedor de los ejercicios orientados en las clases prácticas, permitiendo al

Page 81: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

70

estudiante comprobar si su solución es correcta, aprender la teoría y los pasos de la solución de los

ejercicios. Este software tiene soporte para diez tipos de ejercicios (Ver anexos del 13 al 22):

Representación del punto.

Representación de la recta.

Representación del plano.

Pertenencia de un punto a una recta.

Pertenencia de una recta a un plano.

Pertenencia de un punto a un plano.

Paralelismo entre dos rectas.

Paralelismo entre una recta y un plano.

Intersección entre dos rectas.

Intersección entre una recta y un plano.

Para la validación de la investigación se realizó un pequeño experimento con dos grupos de estudiantes

de primer año de Ingeniería Mecánica (45 estudiantes en total). Se seleccionaron del cuaderno dos

ejercicios de cada tipo soportados por la aplicación. El 95.6 % de los alumnos pudieron obtener la solución

con su respectiva explicación y representación en el plano y en el espacio. El 4.4% restante presentó

dificultades con la comprensión de algunos ejercicios. Además los alumnos expresaron que la herramienta

los ayuda a adquirir una mejor visión de los modelos en la proyección isométrica y en la representación en

abatimiento.

3.5 Criterios de los especialistas

Para el desarrollo y la validación de la herramienta computacional “Suite de Geometría Descriptiva” se

consultaron profesores de la UMCC que imparten dicha asignatura:

MSc. Antonio Celso Fernández Orquín: Profesor Auxiliar de la asignatura Gráficos por

Computadoras y jefe del grupo de software “Anubis” de la Facultad de Ingeniería Informática.

Dr. Ramón Quiza: Jefe de Computación de la Facultad de Ingeniería Mecánica.

Prof. Ing. Juan Manuel Rodríguez: Profesor de las asignaturas Dibujo Técnico y Geometría

Descriptiva de la Facultada de Ingeniería Mecánica.

Page 82: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

71

Prof. Lic. Adolfo Torres: Profesor de la asignatura Geometría Descriptiva de la Facultad de

Ingeniería Mecánica.

Prof. Arq. Maurys Alfonso Risco: Profesor de la asignatura Geometría Descriptiva de la Facultad de

Ingeniería Civil.

Los especialistas contribuyeron con el enriquecimiento de los conocimientos teóricos sobre la materia.

Aportaron ideas de cómo debe ser organizada la interfaz, según el grado de dificultad de los ejercicios

comprendidos en el campo de acción. Además, describieron las características que debía tener la

aplicación para poder ser utilizada en el estudio de la Geometría Descriptiva. Una vez finalizada la

construcción del software procedieron a su validación, concluyendo que el programa se desempeña

correctamente al resolver, representar y explicar la solución de los ejercicios. También decidieron emplear

la herramienta en las clases de dicha asignatura a partir del próximo curso escolar

3.6 Documentación del sistema

La documentación del sistema (24) cubre todas las fases del desarrollo del proyecto. En ella se

documentan los artefactos producidos en las disciplinas definidas en la metodología RUP: Modelado del

Negocio, Requisitos, Análisis y Diseño y Despliegue. Se ofrece además, el manual de usuario (25) que

recoge el modo de utilización y los requisitos para la ejecución de la herramienta computacional creada.

La documentación del sistema y el manual de usuario están incluidos en el disco de instalación de la

aplicación.

3.7 Conclusiones del capítulo

En el estudio de factibilidad efectuado se comprueba que la realización de una aplicación de este tipo es

viable. Las técnicas de pruebas realizadas permitieron la comprobación y validación del correcto

funcionamiento de la aplicación. Los especialistas consultados coincidieron en que la herramienta

elaborada complementa el estudio de la Geometría Descriptiva y consideran que los resultados obtenidos

son satisfactorios.

Page 83: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

72

Conclusiones generales

Culminada la investigación y después de haber resuelto cada uno de los objetivos trazados el autor

concluye lo siguiente:

Los materiales de estudio utilizados en la asignatura de Geometría Descriptiva de las carreras de

ingeniería de la Universidad de Matanzas “Camilo Cienfuegos” presentan limitaciones en las

representaciones gráficas de los ejercicios. Por otra parte escasean los software relacionados con

el campo de la Geometría Descriptiva y los existentes no cumplen con los requerimientos para ser

implantados como complemento de dicha asignatura.

Para la creación de la herramienta Suite de Geometría Descriptiva se utilizó la API gráfica Direct3D

desde la plataforma .Net.

El uso de los patrones de diseño y las técnicas de análisis y diseño orientado a objetos permitieron

crear una arquitectura flexible y extensible.

La metodología RUP sirvió de guía a lo largo del proceso de desarrollo del proyecto de software.

Las técnicas de pruebas empleadas permitieron la verificación y validación de la aplicación.

Los criterios de los especialistas consultados confirmaron la validez de la herramienta y la

factibilidad de su aplicación como complemento en el estudio de la Geometría Descriptiva.

Page 84: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

73

Recomendaciones

Para la continuidad del trabajo se recomienda:

Extender por los estudiantes de informática de otros años el software desarrollado para abarcar

todo el contenido que se imparte en la asignatura de Geometría Descriptiva en las carreras de

ingeniería de la Universidad de Matanzas “Camilo Cienfuegos”.

Expandir los tipos de modelos y crear un conjunto de vistas que representen los modelos de otra

manera para que se pueda reutilizar la arquitectura incluso en otros proyectos que no tengan que

ver con el campo de la Geometría Descriptiva.

Recopilar sugerencias e ideas nuevas por parte de los estudiantes y profesores con el fin de

mejorar el producto para que resulte cada vez más profesional y competitivo.

Page 85: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

74

Referencias Bibliográficas

1. Pietro DD. Geometría Descriptiva. Tercera Edición ed.: Editorial Pueblo y Educación; 1988.

2. Padrón I. Procecad. Software de Geometría Descriptiva para Windows.; 2006 [visitada en 2008];

Disponible en: www.procecad.com.

3. Nager AM, Socorro RA, Torres JD. Geometría Descriptiva. Segunda Edición ed.: Editorial Pueblo y

Educación; 1987.

4. MURILLO JI. Nociones Básicas de la Geometría Analítica. Artículo Electrónico. 2002.

5. LEHMANN CH. Geometría Analítica. Limusa; 1989.

6. Schneider PJ, Eberly DH. Geometry Tools for Computer Graphics. Morgan Kaufmann Publishers;

2003.

7. Wooton W, Beckenbach EF, Fleming FJ. Geometria Analítica Moderna. Publicaciones Cultural,

S.A; 1985.

8. Kruchten P. Rational Unified Process Made Easy: A Practitioner's Guide to the RUP. Addison

Wesley; 2003.

9. Pollice G. Using the IBM Rational Unified Process for Small Projects: Expanding Upon eXtreme

Programming. IBM; 2003.

10. Jacobson I, Booch G, Rumbaugh J. El Proceso Unificado de Desarrollo de Software. Addison

Wesley; 2000.

11. Pender T. UML Bible. John Wiley & Sons; 2003.

12. Hoxley J. Basic Direct3D 9.0 The Managed Way. Artículo Electrónico. 2003.

13. Miller T. Managed DirectX® 9: Graphics and Game Programming. Sams Publishing; 2003.

14. Wikipedia. 2009 [visitada en 2009]; Disponible en: http://es.wikipedia.org/wiki/Patrón_de_diseño.

15. Gamma E, Helm R, Johnson R, Vlissides J. Design Patterns. Elements of reusable Object-Oriented

Software Addison-Wesley; 2000.

16. Developing with the MVC Pattern. 2009 [visitada en 2009]; Disponible de :

http://msdn.microsoft.com/en-us/library/cc540716.aspx.

17. Shalloway A, Trott JR. Design Patterns Explained. Addison-Wesley; 2003.

Page 86: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

75

18. Trowbridge D, Mancini D, Quick D, Hohpe G, Newkirk J, Lavigne D. Enterprise Solution Patterns

Using Microsoft .Net 2.0. Microsoft Press; 2003.

19. Lobao AS, HATTON E. .NET Game Programming with DirectX 9.0. Apress; 2003.

20. Moreno AM. Estimación de Proyectos Software.

21. Weitzenfeld A. Ingeniería de Software Orientada a Objetos.Teoría y Práctica con UML y Java.:

Itam; 2002.

22. Pressman RS. Ingeniería de Software. Un enfoque práctico. Quinta Edición ed.: McGraw Hill; 2002.

23. PezzandMichal M. Software Testing and Analysis: Process, Principles and Techniques. John Wiley

& Sons; 2008.

24. Rodríguez DA. Documentación del Sistema: Suite de Geometría Descriptiva. Universidad de

Matanzas "Camilo Cienfuegos". Facultad de Informática; 2009.

25. Rodríguez D. Manual de Usuario: Suite de Geometría Descriptiva. Universidad de Matanzas.

Facultad de Informática; 2009.

Page 87: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

76

Bibliografía

1. Larman C. Applying UML and Patterns. An introduction to Object-Oriented Analisys and Design and

the Unified Process. Prentice Hall; 2003.

2. PENTON R. Beginning C# Game Programming. Thomson; 2005.

3. Bishop J. C# 3.0 Design Patterns. O’Reilly; 2008.

4. Booch G. Core J2EE Paterns. Best Practices and Design Strategies. Sun Microsystems;

5. Canton MP. DirectX 3D Graphics Programming Bible. IDG Books Worldwide, Inc.; 2000.

6. Harrison LT. Introduction to 3D Game Engine Design Using DirectX 9 and C#. Apress;

7. Luna F. Introduction to 3D Game: Programming with DirectX 9.0. Wordware Publishing;

8. Hruby P. Model-Driven Design Using Business Patterns. Springer; 2006.

9. Cantor M. Object-Oriented Project Management with UML. John Wiley & Sons; 1998.

10. Mariñán MP. Patrones de diseño. Journal. 2003 Date.

11. Peckham J. Practicing Software Engineering in the 21st Century. IRM Press; 2003.

12. Donaldson SE. Successful Software Development. 2nd Edition. Prentice Hall; 2000.

13. Spolsky J. User Interface Design for Programmers. Apress; 2001.

14. Dykes L. XML For Dummies. Wiley Publishing; 2005.

Page 88: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

77

Anexos

Anexo 1: Procecad

Page 89: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

78

Anexo 2: Descriptive Geometry 1.32

Page 90: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

79

Anexo 3: Proyección del punto A mediante un rayo proyectante que pasa por el polo S.

Anexo 4: Ejemplo de proyección ortogonal

Page 91: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

80

Anexo 5: Proyección axonométrica del punto A

Anexo 6: Abatimiento en el sistema de dos planos

Anexo 7: Abatimiento en el sistema de tres planos

Page 92: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

81

Anexo 8: Representación en el abatimiento de dos rectas paralelas

Anexo 9: Representación en el abatimiento de una recta paralela a un plano

Page 93: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

82

Anexo 10: Representación en el abatimiento de dos rectas que se cortan

Anexo 11: Representación en el abatimiento de una recta que intercepta a un plano

Page 94: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

83

Anexo 12: Herramienta StarUML

Page 95: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

84

Anexo 13: Herramienta Suite de Geometría Descriptiva. Ventana de ejercicios de representación de

un punto.

Page 96: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

85

Anexo 14: Herramienta Suite de Geometría Descriptiva. Ventana de ejercicios de representación de

una recta

Page 97: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

86

Anexo 15: Herramienta Suite de Geometría Descriptiva. Ventana de ejercicios de representación de

un plano.

Page 98: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

87

Anexo 16: Herramienta Suite de Geometría Descriptiva. Ventana de ejercicios de pertenencia de un

punto a una recta.

Page 99: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

88

Anexo 17: Herramienta Suite de Geometría Descriptiva. Ventana de ejercicios de pertenencia de

una recta.a una plano.

Page 100: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

89

Anexo 18: Herramienta Suite de Geometría Descriptiva. Ventana de ejercicios de pertenencia de un

punto a un plano.

Page 101: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

90

Anexo 19: Herramienta Suite de Geometría Descriptiva. Ventana de ejercicios de paralelismo entre

dos rectas.

Page 102: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

91

Anexo 20: Herramienta Suite de Geometría Descriptiva. Ventana de ejercicios de paralelismo entre

una recta y un plano.

Page 103: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

92

Anexo 21: Herramienta Suite de Geometría Descriptiva. Ventana de ejercicios de intersección entre

dos rectas.

Page 104: UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”

93

Anexo 22: Herramienta Suite de Geometría Descriptiva. Ventana de ejercicios de intersección entre

una recta y un plano.