Sei sulla pagina 1di 15

Arquitectura y Estndares de Programacin

ARQUITECTURA Y ESTANDARES DE
PROGRAMACION

Arquitectura y Estndares de Programacin


1. INTRODUCCION
El presente documento muestra el esquema tecnolgico que se llevar a cabo para el
desarrollo de sistemas Java dentro de la fbrica y adems los estndares de programacin
que deben de utilizar.
2. FRAMEWORKS PERMITIDOS
Los frameworks permitidos para el desarrollo de nuevos sistemas son:
Para la capa core:

Hibernate
JPA
Hibernate + JPA
Spring JDBC

Para la capa Web

Jquery
Primefaces
ZK

El mecanismo de compilacin que se usar ser Maven, excepto que el cliente solicite usar
Ant, para poder integrar los proyectos con un repositorio y poder centralizar las mtricas de
calidad de cdigo.
3. LINEA BASE
En esta seccin se presenta la arquitectura base definida para la implementacin de la
solucin y el detalle de los componentes que conforman cada uno de las capas de la
arquitectura, los mismos que son explicados a continuacin:
Capa de Presentacin
En esta etapa de la arquitectura se encuentran los componentes y/o aplicaciones
consumidoras de los diferentes servicios de la organizacin.
Capa Servicio
En esta etapa de la arquitectura se encuentran los componentes de servicio de la
solucin, y que tienen las operaciones de negocio organizacionales expuestas para ser
consumidas por un tercero.
Capa Core

Arquitectura y Estndares de Programacin


En esta etapa se encuentra las clases que interactan directamente con la base de datos
y tendr incluido la lgica de negocio.
Capa Datos
En esta capa se encuentran las diferentes fuentes de datos: bases de datos, aplicaciones
legacys, archivos de datos, etc.

Capa Servicios

NombreProyectoWs

Capa Presentacin

NombreProyectoTipPre

Capa Core
NombreProyectoCore

CAPA DE DATOS

BD

Grafico 1: Diagrama que muestra las instancias de los componentes

Donde:

NombreProyecto:

Arquitectura y Estndares de Programacin


Representa el nombre del proyecto que vamos a trabajar, por ejemplo Vacaciones,
SGA, etc.

TipPre:
Representa el tipo de presentaciones que vamos a usar y los tipos permitidos son:
o Web
o Movil

Por ejemplo, para un proyecto que se llame SGA y tenga que crear un proyecto web, el nombre de
los componentes seran los siguientes.

CAPA SERVICIOS

SgaWs

CAPA PRESENTACION
SgaWeb

CAPA CORE
SgaCore

CAPA DE DATOS
SGA

Grafico 2: Ejemplo de diagrama que muestra las instancias de los componentes

Arquitectura y Estndares de Programacin


4. PAQUETE DE DISEO ARQUITECTONICO
En esta seccin se detallan los componentes de cada paquete del sistema y su relacin a un
nivel general, el cual est conformado por una capa de presentacin representada por la
Web Content, una capa de control (Action), una capa de negocio (negocio), una capa de
persistencia (entidad) y de acceso a datos (DAO), donde hay que tener en cuenta que el
dominio de los componentes est compuesto por el dominio del cliente.

Grafico 3: Diagrama de paquetes del componente de Aplicacin.

Arquitectura y Estndares de Programacin

Arquitectura y Estndares de Programacin


Cada componente ser explicado a continuacin:

Capa Presentacin
Capa de presentacin del componente representada con el WebContent o contenido web
y que estar compuesta por paquetes referenciad a los mdulos correspondientes.

Capa Control
Capa de control o de agente del sistema, encargada de la redireccin y de asignacin de
solicitudes y respuestas de operaciones, as como de la atencin de los eventos de los
componentes de presentacin.

Capa Ws
Capa en la cual expone servicios web que ser consumido por terceros.

Capa Servicio
Capa en la cual se realizan operaciones o transacciones de servicio.

Capa Negocio
Capa en la cual se realizan las operaciones o transacciones de negocio.

Capa de Acceso a Datos


Es la capa que realiza sobre la base de datos.

5. IMPLEMENTACION DE LA ARQUITECTURA DE LA SOLUCION


Para explicacin de la implementacin se usara el diagrama de clases, debido a que es el
principal diagrama para el anlisis y diseo. En este diagrama se presentan las clases del
sistema con sus relaciones estructurales y de herencia.

Grafico 4: Diagrama de la base (web) de un mdulo.

Arquitectura y Estndares de Programacin

Grafico 5: Diagrama de la clase base (core) de un mdulo.

Para la explicacin de la comunicacin de los diferentes componentes de la arquitectura


solucin, usaremos el diagrama de secuencia.

Grafico 6: Diagrama de secuencia de un mdulo.

Arquitectura y Estndares de Programacin

6. NOMENCLATURAS DE CLASES
CAPA DE PRESENTACION
Capa de presentacin del componente representada con el WebContent o contenido Web
y que se estar compuesta por paquetes referenciado al mdulo correspondiente.

Nomenclatura:
Para las interfaces Web:

xxxxYyyy.jsf
xxxxYyyy.xhtml
XxxxYyyyBean.java

Para los vean:


CAPA CONTROL

Capa de control o de agente del sistema, encargada de la redireccin y asignacin de


solicitudes y respuestas de operaciones, as como de la atencin de los eventos de los
componentes de presentacin.

Nomenclatura:
Para las clases de control:

XxxxYyyyController.java

CAPA DE SERVICIO
Capa en la cual se realizan las operaciones o transacciones de negocio.

Nomenclatura:
Para la interface de Servicio
Para la implementacin del service

XxxxYyyyService.java
XxxxYyyyServiceImpl.java

Nomenclatura de mtodos:

El nombre de los mtodos para el CRUD, ser:


o
o
o
o
o

Insertar
Eliminar
Actualizar
Obtener
Listar

CAPA DE NEGOCIO
9

Arquitectura y Estndares de Programacin

Capa en la cual se realizan las operaciones o transacciones de negocio.

Nomenclatura:
Para la interface de negocio:
Para la implementacin de negocio:

XxxxYyyyBusiness.java
XxxxYyyyBusinessImpl.java

Nomenclatura de mtodos:
El nombre de los mtodos para el CRUD ser:
o
o
o
o
o

Insertar
Eliminar
Actualizar
Obtener
Listar

CAPA DE ACCESO A DATOS


Es la capa que realiza operaciones sobre la base de datos. Si es necesario se pueden crear
interfaces dentro del mismo paquete.

Nomenclatura:
Para la interface DAO:
Para la implementacin DAO:

XxxxYyyyDao.java
XxxxYyyyDaoImpl.java

Si los nombres de las clases o interfaces estn conformados por varias palabras, entonces
la primera letra de cada palabra debe ser en mayscula, y se debe considerar como mximo
10 palabras para el nombre de las clases e interfaces.

Nomenclatura de mtodos:
El nombre de los mtodos para el CRUD ser:
o
o
o
o
o

Insertar
Eliminar
Actualizar
Obtener
Listar

CAPA DE PERSISTENCIA
Es la capa que realiza el mapeo objeto-relacional de la aplicacin y la base de datos.
10

Arquitectura y Estndares de Programacin

Nomenclatura
Para la clase de persistencia:
Para las DTO:
Para los Bean:

XxxxYyyy.java
XxxxYyyyDto.java
XxxxYyyyBean.java

Si los nombres de las clases o interfaces estn conformados por varias palabras, entonces
la primera letra de cada palabra debe ser en maysculas, y debe considerar como mximo
10 palabras para el nombre de las clases e interfaces.
CAPA DE WS
Es la capa que realiza la exposicin de servicios web.
Para la interface de Servicio Web:
Para el WSDL del Servicio Web:

XxxxYyyyWs.java
XxxxYyyyWs.wsdl

7. ESTANDARES DE CODIFICACION
Tome en consideracin las siguientes recomendaciones cuando empiece a disear y
construir una aplicacin y crear soluciones mas robustas.

Program for People, not the machine (javaCodingStandards, www.ambySoft.com), El


objetivo principal de t desarrollo debera ser que t cdigo sea fcil de entender por
otras personas. Si no pueden entenderlo, entonces no sirve.
Disea primero, luego codifica.
Desarrolla en pequeos pasos.
Trabaja junto con tus usuarios. Es simple, T no puedes desarrollar un sistema excelente
si t no conoces ni entiendes las necesidades de los usuarios.
Trata de mantener una codificacin simple, tal vez la codificacin compleja te satisfaga,
pero si nadie la entiende, no sirve de mucho.
Aprende patrones comunes, antipatrones e idiomas.

DE LA DEFINICION DE VARIABLES
Las variables deben ser definidas siempre con la primera letra en minsculas, y las
constantes se deben definir completamente en maysculas, separando cada palabra por un
guion bajo y utilizando static final para su definicin.
private static final String ESPACIO_KEYS = "Keys.WS.Param";
public static final int TREE = 1;

11

Arquitectura y Estndares de Programacin

Una declaracin por lnea es recomendada en razn del mejor entendimiento. Documente
cada variable local con un comentario al final de la lnea, utilice // para escribir una breve
explicacin del uso que se le dar.
int level; // indentation level
int size; // size of table

Para definir un objeto Collection o elementos que hereden de esta clase, defnalos con una
palabra en plural representado los tipos de objeto almacenados en el Collection. Para definir
cualquier otro objeto que no sea Collection, escrbalo en singular.
List codigos;
String[] rucs;

No escriba diferentes tipos sobre la misma lnea.


List codigos;
String[] rucs;

Trate de inicializar las variables locales donde son declaradas. La nica razn para no hacerlo
es cuando dependen de algn clculo. Utilice variables locales para una sola, las variables
multipropsito causan confusin. Ponga las declaraciones al comienzo de los bloques (los
que estn entre llaves {}). El crear variables en cualquier logar causa confusin.
void myMethod() {
int int1 = 0; // inicio del bloque del metodo
if (condition) {
int int2 = 0; // inicio del bloque del "if"...
}
}

La nica excepcin es para los ndices delos bucles, que normalmente son declarados en la
misma sentencia.
Int maxLoops=size();
for (int i = 0; i < maxLoops; i++) { ... }

Para la definicin de variables de bucles puedes utilizar las letras i,j,k, etc., es un estndar
ampliamente utilizado. Evite las declaraciones que escondan niveles superiores.

12

Arquitectura y Estndares de Programacin


int count;
...
myMethod() {
if (condition) {
int count; // Evitar!
...
}
...
}

La sentencia if-else if else-if debe seguir la siguiente forma:


if ( condition) {
statements;
}
if ( condition) {
statements;
} else {
statements;
}
if ( condition) {
statements;
} else if ( condition) {
statements;
} else {
statements;
}

PRACTICAS DE PROGRAMACION

No cree variables de clase o de instancia pblicas sin alguna buena razn.


Evite utilizar un objeto para acceder a variables o mtodos de clase estticos (static).
Utilice el nombre de la clase en su lugar.
classMethod(); //OK
AClass.classMethod(); //OK
anObject.classMethod(); //Evitar!

Las constantes numricas no deberan de ser codificadas directamente, excepto para 1, 0 o 1, que pueden aparecer en una sentencia FOR como valores para el contador.
Evite asignar varias variables al mismo momento en una sola sentencia. Es difcil leer.
fooBar.fChar = barFoo.lchar = 'c'; // Evitar!

Es generalmente una buena idea utilizar el parntesis libremente en expresiones que


involucran muchos operadores para evitar problemas de precedencia. Aun as el
operador de precedencia es obvio, puede no serlo para otra persona.
13

Arquitectura y Estndares de Programacin


if (a == b && c == d) // Evitar!
if ((a == b) && (c == d)) // USE

En lo posible no utilice el + para concatenar variables, en su lugar use la clase


StringBuffer.
String s = "Este es " + "un mensaje " + " a " + nombre
+ ", muchos saludos"; NO!!
Strins s = new StringBuffer("Este es un mensaje a
").append(nombre)
.append(", muchos saludos").toString();

IMPORTANTE: Al utilizar el signo + crea una gran cantidad de cadenas en memoria


innecesariamente, lo que consume adems de la memoria el tiempo del garbage collect en
limpiarlas.
DEFINICION DE POOLS Y DATASOURCES A LA BASE DE DATOS
Pool de escritura
Pgxxbbddagru
Donde:
pg: Pool de consulta/escritura.
bbdd: nombre de base de datos.
agru: nombre de agrupacin de aplicaciones o cdigo de dependencia. Es opcional.
Pool de Lectura
Pcxxbbddagru
Donde:
pc: pool de consulta
bbdd: nombre de base de datos
agru: nombre de agrupacin de aplicaciones o cdigo de dependencia. Es opcional
Datasources
Dzxxbbddagru
Donde:
d: Data Source
z: Indica el tipo de operacin
g: Consulta y/o
c: Consulta
x: uso de driver XA
s: No aplica
bbdd: Indica el nombre de la base de datos
14

Arquitectura y Estndares de Programacin


agru: indica el nombre de agrupacin de aplicaciones o cdigo de dependencia. Es
opcional.
JNDI
jjjj/dzbbddagru
Donde:

jjjj: Indica los sgtes. Valores:


jdbc: para Weblogic o WAS.
Java: para Jboss.
d: Data Source
z: Indica
g: Consulta y/o
c: Consulta
x: uso de driver XA
s: No aplica
bbdd: Indica nomenclatura de la Base de Datos.
agru: Indica nombre de agrupacin de aplicaciones.

15

Potrebbero piacerti anche