M-SI-003 Estandares de Programacion

Embed or link this publication

Popular Pages


p. 1

sisema de gestiÓn integrado cÓdigo inicio de vigencia m-si-003 versiÓn pÁgina 01 1 de 21 manual estandares de programacion puesto nombre jefe de sistemas ti elaborado por analista programador martin camargo ch richard damacend luigi limaylla m salvador vasquez fernando espá fernando espá asistente de sistemas administrador revisado por gerente general aprobado por gerente general el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 2

código m-si-003 1 objetivos título manual de estándares de programación versión 01 inicio de vigencia página 2 de 21 este manual tiene como objetivo pautar el desarrollo dentro de cada uno de los proyectos productos que se desarrollan en el grupo minero enproyec es un documento sometido a una continua evolución y mejora 2 alcance definición del conjunto de normas recomendaciones procesos y clases de propósito general que deberán ser tenidas en cuenta en cada uno de los aspectos procesos y técnicas aplicadas en el proyecto producto nota algunos de los puntos de este manual está enfocados para soluciones desarrolladas principalmente en power builder aunque la mayoría pueden extenderse a cualquier plataforma 3 responsabilidad el no cumplimiento de estas normas conllevará una no conformidad nc del requerimiento asociado a tal desarrollo y la rectificación de las anomalías 4 simbolos y abreviaturas rf nrf pir requerimiento funcional requerimiento no funcional o atributo de calidad problema importancia relevante 5 definiciones 5.1 requerimiento funcional conjunto de instrucciones que comprenden la unidad mínima de trabajo asignable a un recurso se comunicarán siempre por escrito vía intranet o mail un requisito funcional define el comportamiento interno del software cálculos detalles técnicos manipulación de datos y otras funcionalidades específicas que muestran cómo los casos de uso serán llevados a la práctica 5.2 requisito no funcional o atributo de calidad se enfoca al cambio en el diseño o la implementación 5.3 problema importancia relevante anomalía o fallo de funcionamiento detectado sobre el producto puede ser normal reportada por el cliente usuario interna reportada por el personal de la empresa el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 3

código m-si-003 6 recursos a software b recursos humanos c redes de comunicaciones d equipos informáticos 7 politicas título manual de estándares de programación versión 01 inicio de vigencia página 3 de 21 7.1 estructura de base de datos 7.1.1 beneficios el uso de estándares al diseñar bases de datos tiene innumerables ventajas ya que puede aplicarse a cualquier motor de base de datos entre ellas asegurar la legibilidad del modelo de datos inclusive para personas que no están relacionadas con el ambiente informático en etapas de análisis y diseño facilitar la portabilidad entre motores de bases de datos plataformas y aplicaciones facilitar la tarea de los programadores en el desarrollo de los sistemas 7.1.2 reglas generales el nombre de la base de datos debe comenzar con el prefijo `bd ejemplo bd_balanza bd_concesiones objetos de base de datos tablas deben comenzar con el prefijo `tb ejemplo tb_cliente tb_producto tb_cabecerafactura deben comenzar con el prefijo `vs ejemplo vs_cliente vs_ubigeo vs_listadeudores evitar crearlos con el prefijo `vw ya que el motor de base de datos en mssql primero busca las vistas de la aplicación y luego los de prefijo `vw que son del sistema alterando el performance de las consultas o búsquedas en la base de datos tal vez no se perciba con pocos registros pero si con grandes volúmenes de información vistas procedimientos almacenados deben comenzar con el prefijo `ap ejemplo ap_cuentasxpagar ap_liquidacionmineral evitar crearlos con el prefijo `sp ya que el motor de base de datos en mssql primero busca los procedimientos de la aplicación y luego los de prefijo `sp que son del sistema alterando el performance de las consultas o búsquedas en la base de datos tal el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 4

código m-si-003 título manual de estándares de programación versión 01 inicio de vigencia página 4 de 21 vez no se perciba con pocos registros pero si con grandes volúmenes de información funciones deben comenzar con el prefijo `fn ejemplo fn_calculosueldo fn_diaslaborables triggers deben comenzar con el prefijo `tr ejemplo tr_insertarlog tr_insertarasiento tr_eliminarpago nombre de campos o o aplicar el estándar camelcase o camelling la primera letra del nombre en minúscula y de las demás en mayúscula los nombres deben ser lo más descriptivo posible para entenderlos fácilmente sin necesidad de recurrir al diccionario de base de datos y evitar ambigüedades y malas interpretaciones evitar dígitos numéricos salvo que por la naturaleza del nombre lo ameriten no usar caracteres de puntuación o símbolos no usar vocales acentuadas pueden provocar conflictos con la configuración del lenguaje de la base de datos en lugar de `ñ usar `ni agregar comentarios a todos los campos de la base de datos por mas descriptivo que sean acompañados de posibles valores para el caso de campos de estado o flags etc a activo i inactivo mucho mejor si anteponemos como prefijo la abreviación del tipo de datos correspondiente nomenclatura más óptima oooooo abreviación de tipos de datos oooooooo int integer chr char vchr varchar dec decimal dt date dtm datetime a partir de mssql 2008 bln boolean bin binary ejemplo numerofactura vchrnumerofactura apellidoempleado vchrapellidoempleado estadofactura chrestadofactura sueldoempleado decsueldoempleado fechanacimiento dtfechanacimiento tipgasto001 códi.empl _cabfact mala practica oooooo el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 5

código m-si-003 título manual de estándares de programación versión 01 inicio de vigencia página 5 de 21 llaves primarias primary keys pk nombre de tabla nombre campo ejemplo pk_tb_alumno_idalumno pk_tb_ubigeo_idubigeo pk_tb_almacen_idempresa_idalmacen si es primary key compuesta en el caso de estar confirmada por varios campos sugiero usar abreviaciones solo para los nombres de los campos pk_tb_almacen_idpais_idemp_idalm llaves foráneas foreign keys fk tabla origen tabla destino nombre campo ejemplo fk_tb_provincia_tb_distrito_iddistrito fk_tb_distrito_tb_alumno_idalumno 7.2 estructura de desarrollo de la aplicaciÓn 7.2.1 generales se desarrollarán componentes heredándolos directamente desde los ancestros de la carpeta framework no se permite sql embebido debe ir encapsulado en objetos no visuales datawindow o datastore los objetos y controles que se inserten en los componentes deben tener un nombre claramente descriptivo por defecto pb los nombra como st_1 uo_2 etc debemos tomar como norma ponerles un nombre que permita un fácil entendimiento en código tabular adecuadamente el código para un fácil entendimiento del equipo de desarrollo inicializar las variables string a cadena vacía inicializar las variables numéricas a cero nunca inicializar una variable con una función por ejemplo string ls_path getcurrentdirectory al compilar le asigna el directorio actual a la variable y se queda como una constante obteniendo resultados inesperados en la ejecución las variables locales siempre se declararán al principio de cada script después del comentario de cabecera para las variables que utilizan números decimales especialmente las cantidades monetarias es necesario indicar una precisión y trabajar siempre con ella esto quiere decir que los operando deben de estar correctamente redondeados a la precisión correspondiente antes de cualquier operación 7.2.2 funcionales al eliminar un registro información ó dato siempre debe preguntar previamente al usuario en la medida de lo posible es necesario definir teclas de acceso directo para los botones en los listados se debe permitir ordenar por columnas haciendo click sobre ellas cuidar la ordenación por defecto de los listados si no está indicado en el diseño preguntar cuál debe ser el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 6

código m-si-003 título manual de estándares de programación versión 01 inicio de vigencia página 6 de 21 maximizar las ventanas siempre que sea necesario ejemplo la ficha de cliente suele requerir pantalla completa una ventana de login no suele requerir pantalla completa 7.2.3 front ­ end revisar siempre el orden de tabulación de los controles dentro de un objeto revisar totalizadores de registros en listas si son necesarios iconos ó imágenes estos deben generarse a través de las maquetas corporativas cuando un control coge el foco debe marcarse en el color que se visualiza en toda la aplicación diseñar los objetos para resolución de 1024x768 esta exigencia no es aleatoria seguir siempre los mismos criterios de diseño tamaño y forma del texto tamaño de los controles posición de los botones comunes ej botón salir teclas rápidas y aspecto de los controles usar bajorrelieve para las datawindow tipo listado no usar relieve en datawindows tipo ficha estilo freeform maximizar su tamaño evitando o retardando en lo posible que sea necesario el uso del scroll los registros en las listas deben diferenciarse unos de otros por la fórmula if mod getrow 2 0 rgb 255 150 0 rgb 255 255 255 utilizar color blanco para el fondo utilizar 2 colores para diferenciar las líneas pares de la impares favoreciendo así la lectura 7.2.4 estándar de codificación 7.2.4.1 variables la denominación de las variables depende del ámbito y del tipo de variable se utilizará la nomenclatura standard at_nombre_variable Ámbito g global i instancia l local p argumentos de funciones tipo tipo de variables simples a any b boolean bl blob c char d date el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 7

código m-si-003 título manual de estándares de programación dc decimal do double dt datetime i integer l long r real s string t time ui unsignedinteger unsignedint o uint ul unsignedlong o ulong tipo de variables complejas a arrays ds datastore dw datawindow nvo objeto de usuario no visual st estructura w ventana versión 01 inicio de vigencia página 7 de 21 7.2.4.2 objetos de powerbuilder la creación de objetos comunes de una aplicación deben contener el prefijo que identifique su clase ejemplo w dw u f s m window datawindow user objects funciones globales structures menús w_ventana_base dw_empresa u_procesos f_cargar_seguridad s_variables m_menu_base objetos creados exclusivamente para una aplicación en el caso que los objetos se creen para un determinado aplicativo se deberá colocar el prefijo de la aplicación seguido del prefijo del objeto por ejemplo si se tratara de objetos de presupuesto prefijo bu entonces los objetos deberán tener los siguientes prefijos w_bu dw_bu u_bu f_bu s_bu m_bu window datawindow user objects funciones globales structures menús w_bu_main dw_bu_formulacion u_bu_interfase_siaf f_bu_obtener_autorizacion s_bu_clientes m_bu_main el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 8

código m-si-003 título manual de estándares de programación versión 01 inicio de vigencia página 8 de 21 ventanas o si el objetivo de una ventana es listar o editar un archivo entonces su nombre lleva primero el nombre en singular del archivo seguido de un verbo o palabra que especifique la acción sobre ese file algunos ejemplos de sufijo list corresponde a la lista de un maestro edit corresponde a la ventana formulario para mantenimiento de un registro select selector de datos de una lista o un maestro invocado por otra ventana rep reporte base cuando la ventana representa un ancestro para futuras instancias ejemplo w_voucher_list w_vendor_edit w_element_select lista el archivo de vouchers edición add/browse/change etc del archivo de vendors sirve para seleccionar un registro del archivo de elementos o si existe la posibilidad de que esta ventana se convierta en ancestro para otras entonces lleva la palabra -base como sufijo ejemplo w_voucher_base o en general si existiera más de una ventana que cumpliera con la misma función lo cual debiera ser una excepción entonces se le agrega un sufijo ejemplo w_voucher_list lista vouchers w_voucher_list_to_approve lista sólo los vouchers pendientes de aprobarse las ventanas que representan reportes van en una librería independiente y se registran dentro de una ventana contenedora de reportes esto aplica a todos los módulos los nombres de estas ventanas tienen la siguiente estructura ejemplo w_bu_rep_xxx donde xxx es un número correlativo para cada reporte el window contenedor de la aplicación mdi se debe llamar es `w_main o `w_principal su menú correspondiente que generalmente es único es `m_main o `m_principal o o el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 9

código m-si-003 o título manual de estándares de programación versión 01 inicio de vigencia página 9 de 21 las funciones dentro de la ventana llevan el prefijo `wf hay funciones ya default ejemplo wf_insert_line inserta línea de detalle multiedit wf_delete_line eliminar línea wf_setup_header setea el header wf_validate validar ingreso de datos wf_update actualizar tabla los user events dentro del window llevan el sufijo `ue ejemplo ue_postopen las estructuras dentro del window llevan el sufijo `ws ejemplo ws_voucher_key o o funciones o el nombre de la función empieza con un verbo que indique la acción a ejecutar y luego un sustantivo que indique el file u objeto sobre el cual se va a realizar la acción ejemplo f_validate_voucher f_read_warehouse f_change_menu el uso de la función global sólo es necesario si es que un datawindow lo requiere o si varias ventanas van a usarla o datawindow object oooooo los argumentos que reciba el datawindow deben tener el mismo nombre de los campos del datawindow y de preferencia el mismo orden de las keys del file no abusar del uso de joins en el datawindow sobre todo outer joins ni abrir varias veces el mismo file en el mismo dw para todos los casos se utiliza estilo ms-sans serif y size 9 si la pantalla es muy densa usar size 8 sólo en los reportes se utiliza estilo arial size 8 el fondo del datawindow para formularios es gris claro y para los reportes y listas es blanco el header de las listas tienen background gris con texto azul oscuro en bold y los bordes en raised los campos de la llave van en bold el resto de los campos va en normal el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 10

código m-si-003 oooootítulo manual de estándares de programación versión 01 inicio de vigencia página 10 de 21 las etiquetas de cada campo van en azul oscuro los campos en general van en negro los datawindows de listas son de formato grid los datawindows de selección son de formato tabular para datawindows de edición los campos editables tienen background blanco los no editables tienen background gris claro de formato freeform ejemplo dw_voucher_edit dw_voucher_detail_display dw_vendor_list datawindow controls o si solamente van usar un datawindow control entonces se puede usar `dw_1 o `dw_2 si se van a usar más datawindow controls entonces las adicionales deben llevar nombres más específicos ejemplo dw_detail dw_catalog dw_summary etc datawindow child o se definen con el sufijo `dwc van definidas como variable de instancia o local según la necesidad ejemplo dwc_approver dwc_department 7.2.4.3 impresión y listados incluir siempre cabecera con logo si procede y título incluir información adicional relevante por ejemplo rango de fecha que comprende el filtro incluir pie de página con información de número total de páginas y página actual 7.3 gestion de control de versiones 7.3.1 introducción por norma general un proyecto comprende el trabajo de varios recursos durante varias semanas todos los proyectos deberán contar con una herramienta de control del código ya sea interna pb native o externa ms source safe subversion etc la elección de una u otra se decidirá en cada proyecto el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 11

código m-si-003 título manual de estándares de programación versión 01 inicio de vigencia página 11 de 21 todo proyecto tendrá una carpeta en la máquina local con la que estemos trabajando la estructura será c desarrollo sobre esta se creará una carpeta por proyecto donde se colocará una carpeta con las iniciales del técnico programador y que contendrá el workspace de pb conectado adecuadamente al control de versiones ejemplo `c desarrollo csttpv mag cada técnico programador deberá subir los cambios cuando lo considere estable si bien también deberá subirlos al finalizar la jornada de trabajo antes de comenzar un nuevo desarrollo es de vital importancia actualizar el proyecto con las últimas modificaciones del producto hay que documentar cada subida de código al control de versiones el sistema de control de versiones que se usará para todos los productos de enproyec estén en la tecnología que estén a la fecha de actualización de este documento será subversion se deja referencia al anterior sistema de control de versiones vss pero solo con carácter informativo no para su uso 7.3.2 control de versiones con vss cuando el control de versiones del proyecto sea vss será necesario tener instalado microsoft visual sourcesafe los pasos a seguir serán crear una carpeta para trabajar en local por ejemplo c desarrollo cst tpv el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 12

código m-si-003 título manual de estándares de programación versión 01 inicio de vigencia página 12 de 21 7.3.3 control de versiones con subversion cuando el control de versiones del proyecto sea subversion será necesario tener instalado tortoisesvn http tortoisesvn.net/downloads pbsccproxy http dm.char.com.ua/pb/pbscc/pbsccsetup.zip subversion http subversion.tigris.org/getting.html#windows tras la instalación hay que añadir al path la ruta donde se encuentre el ejecutable svn.exe suele ser c archivos de programa visualsvn server bin tras instalar pbsccproxy hay que modificar un parámetro en el registro de windows ir a inicioejecutarregedit buscar `noddb que se encuentra en hkey_local_machine software fm2i pbscc proxy noddb cambiar su valor de 0 a 1 los pasos a seguir enfocado a soluciones pb son carpeta desarrollo crear una carpeta para trabajar en local por ejemplo c desarrollo csttpv export startup descargamos sin versionar la carpeta startup inicio del proyecto que desplegará una serie de archivos necesarios para montar el entorno de desarrollo el archivo workspace del proyecto por ejemplo csttpv.pbw el archivo target del proyecto por ejemplo csttpv.pbt librería pbl del proyecto por ejemplo csttpv.pbl otros archivos necesarios archivos pbds archivos ini librerías dll para ello con el botón derecho sobre c desarrollo csttpv pulsamos en tortoisesvn export como url inicial seleccionaremos la carpeta que suele terminar en startup por ejemplo https cstsrv01.consoltic.local:18443/svn/csttpv/trunk/startup el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 13

código m-si-003 título manual de estándares de programación versión 01 inicio de vigencia página 13 de 21 pedirá el usuario y la clave de acceso marcar que se guarde para no tener que ponerlo constantemente checkout recursos versionamos la carpeta recursos necesarios para la aplicación para ello con el botón derecho sobre c desarrollo csttpv pulsamos en checkout como url inicial seleccionaremos la carpeta que suele terminar en recursos por ejemplo https cstsrv01.consoltic.local:18443/svn/csttpv/trunk/recursos dejamos que la descargue sobre la carpeta c desarrollo csttpv recursos checkout src versionamos el código fuente de la aplicación para ello con el botón derecho sobre c desarrollo csttpv pulsamos en checkout como url inicial seleccionaremos la carpeta que suele terminar en src por ejemplo https cstsrv01.consoltic.local:18443/svn/csttpv/trunk/src dejamos que la descargue sobre la carpeta c desarrollo csttpv src checkout bbdd versionamos los script de bbdd para ello con el botón derecho sobre c desarrollo csttpv pulsamos en checkout como url inicial seleccionaremos la carpeta que suele terminar en bbdd por ejemplo https cstsrv01.consoltic.local:18443/svn/csttpv/trunk/bbdd dejamos que la descargue sobre la carpeta c desarrollo csttpv bbdd checkout doc versionamos la documentación del producto para ello con el botón derecho sobre c desarrollo csttpv pulsamos en checkout como url inicial seleccionaremos la carpeta que suele terminar en doc por ejemplo https cstsrv01.consoltic.local:18443/svn/csttpv/trunk/doc dejamos que la descargue sobre la carpeta c desarrollo csttpv doc propiedad workspace con el botón derecho del ratón pulsamos el archivo pbw que debe estar en c desarrollo csttpv comprobar que no tiene la propiedad de solo lectura para poder engancharle el control de versiones el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 14

código m-si-003 título manual de estándares de programación versión 01 inicio de vigencia página 14 de 21 conectar pb a svn a continuación abrimos powerbuilder y seleccionamos el workspace inicial dentro de pb con el botón derecho seleccionamos properties vamos a configurar ahora el control de versiones en la pestaña source control elegimos como source control system pbscc proxy en project pinchamos y seleccionamos la carpeta src anterior automáticamente se rellenará userid con nuestro usuario de subversion marcar delete powerbuilder-generated object files marcar suppress prompts to overwrite read-only files si la conexión va a ser externa a consoltic a través de vpn marcar this project requires that i sometimes work offlines conectar y aceptar si todo ha ido bien ya estaremos conectados primer get latest version lo siguiente que hay que hacer es hacer get latest version de todo el proyecto marcar todas las librerías esto generará automáticamente todas las librerías pbl que actualmente componen el proyecto pero vacías nota después de esto revisar las propiedades del fichero pbt p.e csttpv.pbt y quitarle la propiedad de solo lectura si la tuviera segundo get latest version es necesario pedir de nuevo otro get latest version para recuperar todos los objetos de todas las librerías ¡¡ importante cuando se trabaja offline no se puede hacer check-in ni check-out por tanto será necesario que se haga primero el check-out de los objetos con los que se va a trabajar en modo online después se puede trabajar en modo offline pero no será necesario conectarse de nuevo para subir los cambios 7.3.4 etiquetar una versión en pb con subversión tras tener confirmación del responsable de desarrollo de poder etiquetar una versión el procedimiento será el siguiente asegurarse de que no existan objetos chequeados por otros usuarios sobre una carpeta preparada para etiquetar por ejemplo c desarrollo etiquetaje hacer checkout de todo el trunk del proyecto por ejemplo https cstsrv01.consoltic.local:18443/svn/csttpv/trunk con el botón derecho sobre esta carpeta c desarrollo etiquetaje pinchar en tortoisesvn branch/tag seleccionar url donde se va a etiquetar por ejemplo https 172.26.0.10:18443/svn/csttpv/tags/version_2.18.0 seleccionar head el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

p. 15

código m-si-003 título manual de estándares de programación versión 01 inicio de vigencia página 15 de 21 introducir comentario de etiquetaje por ejemplo etiquetaje versión 2.18.0 debe quedar algo así eliminar físicamente de local la carpeta que hemos usado para etiquetar c desarrollo etiquetaje etiquetar una versión en pb con vss para etiquetar una versión el procedimiento es el siguiente asegurarse que no tenemos chequeado ningún objeto esto se hace con el botón derecho en la aplicación check in asegurarse que no existen nuevos objetos que no se hayan añadido al vss esto se hace con el botón derecho en la aplicación add to source control el documento adquiere el estado de copia no controlada cuando es impreso y no presenta sello de copia controlada es responsabilidad de cada usuario trabajar con la versión vigente.

[close]

Comments

no comments yet