wiki:EstandaresDesarrollo

Tabla de Contenido

  1. Sistema de Simulación bajo el enfoque de Cadenas Productivas
    1. 1.- SICP 2.0. Simulador Integral de Cadenas Productivas 2015
      1. Cronograma de publicación y liberación
      2. Equipo de Trabajo 2015
      3. Actividades Desarrolladas 2015
        1. Conceptualización
        2. Administración
        3. Construcción
    2. 2.- SICP 1.0. Simulador Integral de Cadenas Productivas 2014
      1. Cronograma de publicación y liberación
      2. Equipo de Trabajo 2014
      3. Documentación del proceso de conceptualización y desarrollo
      4. Flujograma de los Procesos a Automatizar
    3. 3.-ECOSIM 1.0. Sistema de Simulación Módulos Producción-Precios
      1. Funcionalidades
      2. Cronograma de publicación y liberación
      3. Instalación del ECOSIM 1.0
      4. Manual de Usuario
      5. Dependencia instaladas con el ECOSIM 1.0
      6. Equipo de Trabajo 2013
      7. Referencias Bibliográficas
  2. Conceptualización del Modelo de Simulación
    1. Descripción teórica
    2. Supuestos
    3. Definición de las variables que componen el modelo
    4. Descripción matemática del modelo
  3. Análisis del Dominio
  4. Propuesta de Desarrollo del Proyecto
    1. 1. Necesidades y/o problemas
    2. 2. Solución propuesta
    3. 3. Alcance del software propuesto
    4. 4. Metodología de desarrollo
    5. 5. Plataforma de operación
    6. 6. Plataforma de desarrollo
      1. 6.1. Motor de entrada y salida de datos y simulación
      2. 6.2. Interfaz gráfica
    7. 7. Licencias de código y documentación
  5. Estándares de Desarrollo del Proyecto
    1. Motor de entrada y salida de datos y simulación
      1. Sobre los archivos
      2. Normas de Codificación
    2. Interfaz de Usuario
  6. Especificación de Requerimientos
    1. 1. Casos de Uso: Consultar Cadena Productiva
    2. 2. Casos de Uso: Construcción de Escenarios
    3. 3. Casos de Uso: Cargar datos del año inicial (t0)
      1. 3.1. Caso de Uso: Unidades económicas no registradas en el SIGESIC
      2. 3.2. Caso de Uso: Unidades económicas importadoras
      3. 3.3. Caso de Uso: Unidades económicas registradas en el SIGESIC
  7. Liberación
    1. Manual de Usuario
      1. Interfaz Gráfica
      2. Configuración
      3. Módulo Producción
      4. Módulo Precio

Estándares de Desarrollo del Proyecto

Motor de entrada y salida de datos y simulación

Sobre los archivos

Escribir los nombres de los archivos con letras minúsculas separando cada palabra mediante el carácter "underscore".

Los nombres de los archivos de cabecera deben terminar con la extensión ".H" mientras que los archivos de fuentes deben terminar con la extensión ".C".

Si un par de archivos (cabecera y fuente) son contenedores de una clase, éstos deben tener el mismo nombre de la clase que contienen con la extensión respectiva.

Por cada clase deben existir un par de archivos para su definición (archivo de cabecera) y su implementación (archivo fuente) con excepción de las clases de tipo plantilla que deben ser definidas solamente en un archivo de cabecera.

Cada archivo que se cree debe comenzar con un bloque de comentario multilínea que contenga el texto de la licencia, por ejemplo:

Code highlighting:

/*
   Texto de la licencia
*/

Luego se coloca otro bloque de comentario multilínea que contenga una breve descripción del archivo, autor o autores y la fecha de creación, por ejemplo:

Code highlighting:

/*
   Este archivo contiene la implementación de ...

   Autor(es): Alejandro J. Mujica, José Ruiz, Julie Vera

   Fecha de Creación: 27/05/2014
*/

Normas de Codificación

Las Variables

Asignarles nombres significativos a lo que almacenan y plantearlos como sustantivos.

No todo el tiempo una variable tiene un nombre significativo por sí mismo, en esos casos agregar un comentario a la derecha de la declaración que explique brevemente su significado, si el comentario es multilínea, agregarlo antes de la declaración de la variable.

Escribir los nombres en letras minúsculas y separar las palabras que lo conformen mediante el caracter underscore.

Inicializarlas al momento de declararse y si se coloca una explicación a su lado.

Usar una línea diferente para cada declaración.

Por ejemplo:

Code highlighting:

int age = 18; 
int x = 0; // Componente x de un punto 
/*
  Componente y de un punto
  Ejemplo multilínea
*/
int y = 0;

Las Funciones

Asignarles nombres significativos a la operación que efectúen y plantearlos como verbos.

Escribir un bloque de comentario multilínea que contenga una breve explicación de lo que hacen antes de su definición. Nota: Si es muy evidente la operación que ésta realice, se puede ignorar este paso.

Escribir los nombres en letras minúsculas y separar las palabras que lo conformen mediante el caracter underscore.

Para los parámetros de las funciones usar las mismas especificaciones de las variables.

Por ejemplo:

Code highlighting:

/*
  Efectúa la división de dos números reales (a / b), si b es igual a 0 arroja
  excepción de error de dominio.
*/
float divide_float(const float & a, const float & b)
{
  if (b == 0)
    throw std::domain_error("Division by 0");

  return a / b;
}

Clases

Escribir mediante un comentario multilínea una breve explicación de los que representa la clase así como el autor o autores de ésta.

Asignarles nombres significativos de lo que éstas representen y plantearlos como sustantivos.

Escribir los nombres con el estilo de nombres propios, es decir, la primera letra de cada palabra que lo conforme en mayúscula y el resto en minúscula; separar cada palabra que compone el nombre mediante el caracter underscore.

Ejemplo de definición de una clase:

Code highlighting:

/* Clase que representa una lista mediante arreglos

   Autor: Alejandro J. Mujica
 */
template <typename T>
class Array_List
{

};

A los atributos de una clase aplicarle las mismas especificaciones de una variable.

A los metodos de una clase aplicarle las mismas especificaciones que a las funciones.

Consideraciones especiales sobre métodos

Constructores

Asignarle valor inicial a todos los atributos de la clase, usar el espacio de inicialización del constructor para el valor inicial y el espacio de implementación para cualquier operación adicional sobre los atributos.

Siguiendo con el ejemplo de la clase definida anteriormente:

Code highlighting:

/* Plantilla que representa una lista mediante arreglos

   Recibe como parámetro plantilla el tipo de elemento que va a almacenar.

   Autor: Alejandro J. Mujica
 */
template <typename T>
class Array_List
{
  size_t size;  // Almacena el tamaño del arreglo
  T *    array; // Arreglo de elementos de tipo T

public:
  Array_List(const size_t & _size)
    : size(_size), array(nullptr)
  {
    array = new T[size];
  }
};

Modificadores y Observadores

A los observadores colocarles como nombre el mismo nombre del atributo al cual observa con el prefijo 'get_'.

A los modificadores colocarles como nombre el mismo nombre del atributo al cual observa con el prefijo 'set_'.

Por ejemplo para consultar el tamaño de la lista:

Code highlighting:

/* Clase que representa una lista mediante arreglos

   Autor: Alejandro J. Mujica
 */
template <typename T>
class Array_List
{

  // ... Otras implementaciones ...

  const size_t & get_size() const
  {
    return size;
  }
};

Interfaz de Usuario

Last modified 9 years ago Last modified on Apr 15, 2015, 12:39:47 PM