Guía del desarrollador¶
Nota
Toda la documentación debe estar en formato reStructuredText. Ver http://docutils.sf.net/rst.html para documentaciones introductorias.
Diseño del árbol de la fuente¶
- cmake/
- CMake scripts usados como parte de nuestro sistema de construcción.
- src/
- Este es el árbol de código fuente de los algoritmos. Cada algoritmo debe estar contenido en su subárbol en con subdirectorios doc, sql, src y test. Esto puede ser renombrado a “algorithms” en algún momento.
- src/astar/
- Esto es una implementación de la búsqueda A* basada en el uso de las bibliotecas de gráficas Boost para su implementación. Esto es una implementación de ruta más corta de Dijkstra con una heurística euclidiana.
- src/common/
- Por el momento esto no tiene un núcleo en “src”, pero tiene varios códigos de contenedores de SQL y código de topología en el directorio “sql”. Algoritmos de Contenedores específicos serán movidos al árbol de algoritmos y se deben conseguir las pruebas adecuadas para validar los Contenedores.
- src/dijkstra/
- Esto es una implementación de la solución de ruta más corta de Dikjstra usando las bibliotecas de gráficas Boost para la aplicación.
- src/driving_distance/
- Este paquete opcional crea polígonos de distancia de manejo basados en la solución de la ruta más corta de Dijkstra, luego crea polígonos basados en las distancias de igual costo desde el punto de inicial. Este paquete opcional requiere que las bibliotecas CGAL estén instaladas.
- src/shooting_star/
- OBSOLETO y NO FUNCIONA y está SIENDO ELIMINADO este es un algoritmo basado algoritmo del camino más corto que soporta restricciones de giro. Se basa en las bibliotecas de gráficas Boost. NO usar este algoritmo ya que está roto, en su lugar usar trsp que tiene la misma funcionalidad, es más rápido y da resultados correctos.
- src/trsp/
- Este es un algoritmo de ruta más corto giro restringido. Tiene algunas características como: poder especificar los puntos iniciales y finales en forma de porcentaje a lo largo de un borde. Las restricciones se almacenan en una tabla separada de los bordes del gráfico, haciendo mas sencilla la administración de los datos.
- src/tsp/
- Este paquete opcional proporciona la capacidad de calcular soluciones de problema del vendedor viajante y calcular la ruta resultante. Este paquete opcional requiere las que las bibliotecas GAUL se encuentren instaladas.
- tools/
- Varios scripts y herramientas.
- lib/
- Este es el directorio de salida donde se almacenan las bibliotecas compiladas y objetivos de la instalación antes de la instalación.
Diseño de documentación¶
Como se señaló anteriormente, la documentación debe hacerse usando archivos con formato reStructuredText.
La documentación se distribuye en el árbol de las fuentes. Este directorio “doc” de nivel superior está destinado a las portada de los temas de documentación de nivel alto como:
- Compilación y pruebas
- Instalación
- Tutoriales
- Materiales para guía de los usuarios
- Materiales de manuales de referencia
- etc.
Puesto que la documentación específica del algoritmo se contiene en el árbol de código fuente con los archivos específicos de algoritmo, el proceso de construcción de la documentación y publicación tendrá que ensamblar los detalles con el material según se necesite.
También, para evitar que el directorio de “doc” se desordene, cada libro mayor, como los mencionados anteriormente, deberán estar incluidos en un directorio separado bajo el directorio “doc”. Cualquier imágen u otros materiales relacionados con el libro, deberán mantenerse en ese directorio.
Pruebas de infraestructura¶
Se proporciona una infraestructura de prueba muy básica. Aquí están los fundamentos del cómo funciona. Necesitamos más casos de prueba. A más largo plazo que probablemente se tendrá un encargado de configurar marcos de pruebas travis-ci o jenkins .
Aquí está el gráfico para las pruebas TRSP.
Las pruebas se ejecutan mediante el script en el nivel superior tools/test-runner.pl y ejecuta todas la pruebas configuradas arrojando la estructura de resultados de la prueba. Esto puede ser mejorado en un futuro.
También supone que se tienen instaladas las bibliotecas ya que hace uso del postgresql instalado. Probablemente esto necesita mejorarse para poner probar el árbol de la construcción. Pensar en eso.
Básicamente, cada directorio .../test/ debe incluir un test.conf Archivo que es un fragmento de script de perl que define que archivos de datos cargar y las pruebas a ejecutar. Se ha desarrollado mecanismos para permitir que la prueba y los datos sean específicos para las versiones pg y PostGIS, pero no está habilitado todavía. Así que por ejemplo, src/trsp/test/test-any-00.data es un volcado dump de texto sin formato de sql que carga los datos necesarios para una serie de pruebas. Este es también el grafo en la imagen de arriba. Usted puede especificar varios archivos para cargar, pero como grupo hay la necesidad de tener nombres únicos.
src/TRSP/test/test-any-00.test es un comando sql a ser ejecutado. Se ejecutará como:
psql ... -A -t -q -f file.test dbname > tmpfile
diff -w file.rest tmpfile
Entonces si hay una diferencia se reporta el fracaso de la prueba.