[[TOC(heading=SEPAI, SEPAI, SEPAIPropuestaDesarrollo, SEPAIAnalisisDominio, SEPAIIdentificacionFuncionalidades, SEPAIEstandaresDesarrollo, SEPAIModeloDatos, SEPAIPrototipoInterfaz, gestionUsuario, IngresarProyecto, SEPAICodificacion, SEPAIPruebas, SEPAIManual, heading=Tabla de Contenido)]] = Propuesta de Desarrollo del Proyecto = == Necesidades y/o problemas == == Solución propuesta == La administración pública ha ido consolidando de forma eficiente los mecanismos requeridos para la formulación y planificación de la gestión de proyectos; sin embargo, no se cuenta con mecanismos adecuados que permitan realizar tareas de seguimiento y control a la fase de ejecución en el ciclo de gestión de los mismos. Esta situación implica que no se cuentan con herramientas que permitan garantizar que se utilizan adecuadamente los recursos asignados, y se desconoce cuan apegada es la ejecución respecto al plan de trabajo diseñado para cada proyecto. La creación de una herramienta informática permitiría sistematizar las tareas de seguimiento y control, y sobre todo garantizar el cumplimiento de las metas físicas y financieras en el transcurrir de la ejecución del proyecto. Bajo este contexto, se plantea desarrollar una aplicación (software libre), que permita realizar tareas de seguimiento y control a los avances en las metas físicas y financieras de los proyectos que sea ejecutas por la administración pública nacional y los entes descentralizados. == Alcance del software propuesto == El sistema estará enfocado en la etapa de ejecución del ciclo general de gestión de los proyectos. En tal sentido, se debe entender que los proyectos deben estar completamente formulados y aprobados. Partiendo de esta situación, el sistema debe contemplar aspectos relacionado con la ejecución propiamente dicha como los avances físicos y financieros de los proyecto respecto al tiempo y los recursos utilizados, de tal manera que se puedan realizar tareas de seguimiento y control hasta que los mismos finalmente concluyan efectivamente. Además, se conectará por medio de un servicio web con el Sistema Integral de Planificación Estratégica Situacional (SIPES), con el fin de calcular indicadores físicos y financieros acerca de las ejecución de los proyectos que han sido registrados por los entes de la APN. == Descripción general de la arquitectura del software == La arquitectura esta basada en una aplicación web, la cual cuenta con tres capas; estas son: 1. Capa de presentación (parte en el usuario final "cliente" y parte en el servidor)[[BR]] 1.1. Recoge la información del usuario y la envía al servidor ("cliente")[[BR]] 1.2. Manda información a la capa de proceso para su procesado[[BR]] 1.3. Recibe los resultados de la capa de proceso [[BR]] 1.4. Generan la presentación[[BR]] 1.5. Visualizan la presentación al usuario ("cliente") 2. Capa de proceso (servidor web)[[BR]] 2.1. Recibe la entrada de datos de la capa de presentación[[BR]] 2.2. Interactúa con la capa de datos para realizar operaciones[[BR]] 2.3. Manda los resultados procesados a la capa de presentación[[BR]] 3. Capa de datos (servidor de datos)[[BR]] 3.1. Almacena los datos[[BR]] 3.2. Recupera datos[[BR]] 3.3. Mantiene los datos[[BR]] 3.4. Asegura la integridad de los datos La potencia de los frameworks permite implementar estas capas. Django es el frameworks que hará posible montar la plataforma para el SEPAI. Django posee una arquitectura propia la cual permite levantar proyectos de manera sencilla. La arquitectura con la que opera Django es la siguiente (MVT): 1. '''Modelo:''' El modelo, conocido en el framework como models.py, define los datos en python e interactúa con esta. Aunque normalmente esta contenida en una base de datos relacional(MySQL, PostgreSQL, SQLite etc), otros mecanismos de almacenamiento de datos son posibles así como (XML, Text files, LDAP, etc) 2. '''Vista:''' La vista, usualmente se encuentra en el archivo views.py, realiza las acciones solicitadas, que normalmente implica lectura y escritura a la base de datos. Puede incluir otras tareas. 3.''' Templates:''' las plantillas normalmente retorna una pagina HTML. El lenguaje de plantillas de Django ofrece a los autores de HTML una sintaxis sencilla de aprender y proporciona toda la potencia necesaria para la presentación lógica.[[BR]] Como se aprecia Django trabaja bajo la arquitectura MVT, se deben considerar los siguientes elementos que hace posible la relación y armonía entre los elementos principales: 1. '''URL:''' la Url despachador asigna el url solicitado a una función de visualización y lo llama. Si la caché está habilitada, la función de vista puede comprobar si existe una versión en caché de la página y omitir todos los pasos adicionales, devolviendo la versión almacenada en caché. Tenga en cuenta que este nivel de página de caché es sólo una opción de caché disponible en Django. Puede almacenar más en caché. 2. '''Caching Framework:''' Después de realizar cualquier tarea solicitada, la vista devuelve un objeto de respuesta http al explorador web, opcionalmente, la vista puede guardar una versión del objeto de respuesta http en el sistema de almacenamiento en caché durante un período de tiempo especificado. == Metodología de desarrollo == Para el desarrollo del proyecto se utilizará la Metodología de Desarrollo Colaborativo de Software Libre V2, elaborada por el Centro Nacional de Desarrollo e Investigación en Tecnologías Libres (CENDITEL) nodo Mérida. Para mayor información acerca de esta metodología visite [http://calidad-sl.cenditel.gob.ve/files/2011/06/metodologiaDCSL_2Version_271220131.pdf Metodología de Desarrollo Colaborativo de Software Libre] Está metodología se centra en el desarrollo de tres procesos, cada uno con una serie de actividades. A continuación se muestran los procesos con su respectivo flujograma: {{{ #!plantuml @startuml partition Conceptualización { (*) --> "Recopilación de información" --> "Identificación de funcionalidades" --> "Elaboración de Propuesta" --> (*) } @enduml }}} {{{ #!plantuml @startuml partition Administración { (*) --> "Plan de proyecto" --> ===B1=== --> "Plan por iteración" --> ===B2=== ===B1=== --> "Estándares" --> ===B2=== --> "Gestión del proyecto" --> "Publicación de información" --> (*) } @enduml }}} {{{ #!plantuml @startuml partition Construcción.ite { (*) --> "Especificación \n de requerimientos" --> "Análisis y Diseño" --> "Codificación" --> "Pruebas" --> "Liberación" --> (*) } @enduml }}} == Plataforma de operación == Sistema Operativo: [https://www.gnu.org/gnu/linux-and-gnu.html GNU/Linux] Servidor WEB: == Plataforma de desarrollo == Sistema Operativo: Sistema Operativo: [http://www.debian.org/releases/squeeze/ GNU/Linux Debian squeeze 64 bits] Framework de desarrollo: Lenguaje de Programación: Lenguaje de Marcas: Bibliotecas: Gestor de Proyectos: Trac. Disponible en: https://miv.cenditel.gob.ve/mmcs Control de Versiones: [http://git-scm.com/ Git] == Licencias de código y documentación == El software que se desarrollará se distribuirá bajo la licencia de Software versión 1.2, disponible en: [https://conocimientolibre.cenditel.gob.ve/licencia-de-software-v-1-3/ Licencia de Software V. 1.3], [http://conocimientolibre.cenditel.gob.ve/files/2016/07/Ultima_Version_Licencia_Software_CENDITEL.pdf .pdf] El empleo de esta licencia, promoverá la apropiación y la articulación social para estimular el uso, desarrollo, distribución y modificación del software.[[BR]] Por su parte, los documentos generados durante el desarrollo del proyecto estarán liberados bajo la Licencia de Contenidos Versión 1.0, disponible: [https://conocimientolibre.cenditel.gob.ve/licencias/ Licencia de Contenido V. 1.0] [http://conocimientolibre.cenditel.gob.ve/files/2016/07/Primera_Version_Licencia_Contenidos_CENDITEL.pdf .pdf][[BR]] Una licencia libre, gratuita y no exclusiva, que permite compartir, exhibir, modificar, publicar y comunicar la obra para fines no comerciales, siempre y cuando se dé crédito a su(s) autor(es).