= Estándares de Desarrollo del Proyecto = Los estándares de desarrollo constituyen las normas o patrones de referencia que se deben implementar en el desarrollo de aplicaciones de software. Entre los estándares de desarrollo más comunes se encuentran: normas de codificación, normas y esquemas de seguridad, estándares de interfaz u/s, entre otros. == Normas de Codificación == En el desarrollo del Sistema de Simulación se implementarán algunos estándares básicos para su codificación, los cuales contemplan lo establecido en la [http://www.python.org/dev/peps/pep-0008/ PEP-8] (Guía de estilo para código python): === Documentación de Código === * Los archivos con extensión .py deberán contener la documentación de licencia, funciones, clases, atributos y métodos, de acuerdo a lo establecido en el estándar [http://www.python.org/dev/peps/pep-0257/ docstring] para la documentación de código fuente python.[[BR]][[BR]] * Cada archivo de python deberá contener, en la cabecera del mismo, una sección en donde se indica la licencia bajo la cual se distribuye el archivo de la siguiente forma:[[BR]][[BR]] {{{ #!div style="border: 1pt solid black;text-align:justify; width:60%; color:#076AA7; padding-right:15px;margin-bottom:15px" """\\ SICP - Simulador Integral de Cadenas Productivas\\ Copyright (C) 2015 CENDITEL nodo Mérida http://www.cenditel.gob.ve\\ Fundación Centro Nacional de Desarrollo e Investigación en Tecnologías Libres\\ Este programa es software libre; Usted puede usarlo bajo los términos de la licencia de software GPL versión 2.0 de la Free Software Foundation.\\ Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; tampoco las implícitas garantías de MERCANTILIDAD o ADECUACIÓN A UN PROPÓSITO PARTICULAR.\\ Consulte la licencia GPL para mas detalles. Usted debe recibir una copia de la GPL junto con este programa; si no, escriba a la Free Software Foundation Inc. 51 Franklin Street,5 Piso, Boston, MA 02110-1301, USA.\\ """ }}} * Las clases deben contener, inmediatamente después de haber sido declaradas, la documentación relacionada a la misma contentiva de lo siguiente:[[BR]][[BR]] {{{ #!div style="border: 1pt solid black;text-align:justify; width:60%; color:#076AA7; padding-right:15px;margin-bottom:15px" """\\ [#anchor @note] \\ [#anchor @licence] \\ [#anchor @organization] \\ [#anchor @author] \\ [#anchor @contact] \\ [#anchor @date] \\ """ }}} * Antes de la declaración de atributos de una clase, se debe especificar una descripción breve sobre el mismo. Ejemplo:[[BR]][[BR]] {{{ #!div style="border: 1pt solid black; text-align: justify; width:60%; color:#076AA7; padding-right:15px;margin-bottom:15px" #Descripción sobre el atributo de la clase que se esta declarando\\ atributo = \\ }}} * La documentación de los métodos de una clase y/o funciones debe ser indicada posterior a la declaración de la misma siguiendo el siguiente esquema:[[BR]][[BR]] {{{ #!div style="border: 1pt solid black; text-align: justify; width:60%; color:#076AA7; padding-right:15px;margin-bottom:15px" """\\ [#anchor @note] \\ [#anchor @licence] \\ [#anchor @author] \\ [#anchor @contact] \\ [#anchor @param] \\ [#anchor @return] \\ """ }}} * Cualquier otra documentación que se desee agregar al archivo para resaltar algún proceso o procedimiento, se debe indicar siguiendo el siguiente esquema:[[BR]][[BR]] {{{ #!div style="border: 1pt solid black; text-align: justify; width:60%; color:#076AA7; padding-right:15px;margin-bottom:15px" """[[BR]] [[BR]] """[[BR]] o # }}} * La documentación a utilizar en los archivos de plantillas .html deberán llevar el siguiente esquema:[[BR]][[BR]] * Documentación de bloque o secciones dentro de etiquetas propias html se documentarán siguiendo los lineamientos de la [http://www.w3.org/ W3C].[[BR]][[BR]] * Documentación de etiquetas o procesos del motor de plantillas de [https://docs.djangoproject.com Django], deberá seguir el estándar establecido en la [https://docs.djangoproject.com/en/1.7/topics/templates/ documentación] del framework en su sección Comments.[[BR]][[BR]] * Documentación de funciones javascript deberán seguir el siguiente esquema:[[BR]][[BR]] {{{ #!div style="border: 1pt solid black; text-align: justify; width:60%; color:#076AA7; padding-right:15px;margin-bottom:15px" /{{{**}}}\\ {{{*}}} \\ {{{*}}}\\ {{{*}}} [#anchor @author] \\ {{{*}}} [#anchor @param] \\ {{{*}}} [#anchor @date] \\ {{{*}}} [#anchor @return] \\ {{{*}}}/ }}} * Documentación de hojas de estilo serán declaradas de la siguiente forma:[[BR]][[BR]] * Encabezado:[[BR]][[BR]] {{{ #!div style="border: 1pt solid black; text-align: justify; width:60%; color:#076AA7; padding-right:15px;margin-bottom:15px" /{{{**}}}\\ {{{*}}} [#anchor @style] \\ {{{*}}} [#anchor @media] \\ {{{*}}} [#anchor @version] \\ {{{*}}} [#anchor @author] \\ {{{*}}} [#anchor @date] \\ {{{*}}}/ }}} * Secciones:[[BR]][[BR]] {{{ #!div style="border: 1pt solid black; text-align: justify; width:60%; color:#076AA7; padding-right:15px;margin-bottom:15px" /{{{**}}}\\ {{{*}}} [#anchor @section] \\ {{{*}}}\\ {{{*}}} \\ {{{*}}}/ }}} ==== Código Fuente ==== * '''Identación:''' La indentación del código se establece a 4 espacios, debido a la implementación de la indentación en python para definir sentencias y bloques de código dentro de ellas, es importante que la indentación del código sea realizada con espacios y no con el tabulador.[[BR]][[BR]] * '''Variables:''' El nombramiento de las variables será todo en minúsculas, y en casos en los cuales la misma se encuentre compuesta por varias palabras las mismas serán separadas por un guión bajo (_), ejemplo: palabra1_palabra2.[[BR]][[BR]] * '''Clases:''' Las clases se nombrarán siempre la primera letra en mayúscula y en caso de estar compuesta por otra frase o palabra se seguirá el mismo esquema, la primera letra de cada palabra en mayúscula. Cada clase debe contener un método !__init!__(self) que la inicialice, en caso de no contener instrucciones al momento de inicializar la clase, se debe agregar la palabra reservada de python "pass".[[BR]][[BR]] * '''Métodos y/o Funciones:''' Para el nombramiento de los métodos o funciones se indicará dicho nombre en letras minúsculas, en caso de estar compuesta por varias palabras, serán separadas por un guión bajo (_), ejemplo: palabra1_palabra2().