blog de paranoid_android

Estudio de tiempos y movimientos aplicado a la arquitectura de Software para disminuir el tiempo de desarrollo

Hace tiempo platicaba mucho con un amigo que era ingeniero Industrial el me explicaba como los Ingenieros Industriales calculan los tiempos de Manufactura tanto Macro como Micro, para lograr reducirlos y mejorar los costos de Producción. Siempre me pregunte si esas practicas podrían llegar a utilizarse en el desarrollo de software.

Con el tiempo y las mejoras en arquitecturas de software y metodologías, se ha mejorado muchísimo. sin embargo aun existen cosas que podemos tomar de la Ingeniería Industrial como el estudio de tiempos y movimientos para mejorar el desarrollo de nuestros sistemas.

En especial me enfoque en conocer los Therbligs, que se usan en Ingeniería Industrial, los cuales en el desarrollo de sistemas afectarían sus similares a temas de Integración Continua y componentes básicos de arquitectura base para desarrollar aplicaciones en estos.

La lista original de THERBLIGs es:

1. Buscar
2. Seleccionar
3. Tomar o Asir
4. Alcanzar
5. Mover
6. Sostener
7. Soltar
8. Colocar en posición
9. Precolocar en posición
10. Inspeccionar
11. Ensamblar
12. Desensamblar
13. Usar
14. Retraso Inevitable
15. Retraso Evitable
16. Planear
17. Descansar

Java para Startup/Entrepreneurs I

Estoy armando mi plan para pasar del mundo corporativo al emprendimiento. Mi plan es ofrecer un servicio en la nube mediante una aplicación que estoy desarrollando. Para lograrlo estoy analizando varios aspectos.

En esta entrada quiero tratar el aspecto relacionado a Infraestructura.

Mi primer paso para ofrecer el servicio es conseguir una buena opción que pueda equilibrar costo, flexibilidad y estabilidad (ancho de banda adecuado).

1. Esto me lleva a buscar una renta de Hosting o Housing. Pienso que para probar el mercado sería suficiente ya que tener servidores propios necesitaría una inversión más grande.

2. Decidir por un web application. Entré a la página Java EE Compatible Implementations
Donde están los web applications la versión más reciente JEE 7. Existen 3: Glashfish 4.0, Wildfly 8.x (JBOSS) y TMAX JEUS 8.
Adicionalmente encontré por parte de Apache Tomee “Tomy” que es un tomcat 7 con soporte para EJB y otros proyectos que lo clasifican como un web application.

Validar en Linux con shell CLASSPATH

Hace poco me vi en la necesidad de cambiar de infraestructura mis aplicaciones Java Standar Edition (Batch).
Me di cuenta que tengo que validar mis variables de ambiente entre ellas CLASSPATH, así que realice un shell que valida que tanto los directorios como los jar existan en mi nuevo servidor.

Les paso el fragmento de código.
Es para Linux usa bash y awk

 

Introducción al soporte de aplicaciones al estilo Itil.

Todo sistema en Itil es un servicio por que... la finalidad de todo sistema es brindar un servicio al usuario (como cualquier otro servicio transporte, electricidad, agua, etc.) con niveles de calidad aceptables.

Como analogía si yo uso el sistema de transporte se que alguien va a operar el autobús, se que debo de pagar de cierta forma, lo puedo tomar en un horario, etc.

Un incidente entonces es una interrupcion total, parcial, o una degradación en el servicio.

Tipos de servicio
a. Servicios aplicativos para usuarios finales. (Desarrollos)
b. Servicios de tecnología que dan servicio a otros aplicativos. (La base de datos, la red, otro sistema, etc.)

El soporte aplicativo entra justo después de que termina la implementación en producción lo que es lo mismo después del desarrollo.

Una breve guía práctica sobre la Gestión de Incidentes.
Me llega un incidente. ¿Qué hago?
1. Revisar que tenga todos los elementos para poder analizar el caso. Por ejemplo logs, pantalla que generó donde se muestra el error, datos de contacto de quien levantó el incidente, fecha y hora.

Pequeño truquito con spring AOP con anotaciones

Saber cuánto tarda la ejecución de una sección con spring orientado a aspectos AOP y anotaciones.
Una gran ventaja es que no es invasivo
Realice este ejemplo con SpringSource Tool Suite, basando de un template de Spring Hibernate
por lo que maven bajo las siguientes librerías.
Excepto (aopalliance-1.0.jar y aspectjweaver.jar que agregue a mano)
Librerias:
antlr-2.7.6.jar
aopalliance-1.0.jar
asm-3.1.jar
aspectjrt.jar
aspectjweaver.jar
cglib-2.2.jar
commons-cli-1.0.jar
commons-collections-3.1.jar
commons-lang-2.1.jar
commons-logging-1.1.1.jar
dom4j-1.6.1.jar
h2-1.3.156.jar
hibernate-commons-annotations-3.2.0.Final.jar
hibernate-core-3.6.0.Final.jar
hibernate-entitymanager-3.6.0.Final.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
junit-4.7.jar
log4j-1.2.16.jar
plexus-archiver-1.0.jar
plexus-build-api-0.0.4.jar
plexus-compiler-api-1.8.1.jar
plexus-compiler-javac-1.8.1.jar
plexus-compiler-manager-1.8.1.jar
plexus-interactivity-api-1.0-alpha-4.jar
plexus-interpolation-1.13.jar
plexus-io-1.0.jar
plexus-utils-2.0.5.jar
slf4j-api-1.6.1.jar
spring-aop-3.0.6.RELEASE.jar
spring-asm-3.0.6.RELEASE.jar

Breve guía de construcción e integración de clientes web service con axis 1 en eclipse galileo

Creación del cliente

Crear un proyecto de prueba en eclipse de tipo web dinámico + glassfish.

El wsdl contiene la descripción de las operaciones, parámetros de entrada y respuesta de un web service
Descargar el contenido generado al invocar desde una pagina web al archivo wsdl de un web service.

Botón derecho sobre el archivo wsdl agregado a nuestro proyecto new > web services > web service client

Aparecerá una pantalla que solicita el wsdl y presenta el nivel de generación de código, subir el nivel al máximo hasta test.
> Next
Aparece una pantalla que reconoce las operaciones del web service.
> Finish
Se desplegará apareciendo paginas JSP que muestran las operaciones del web service.

Integración al proyecto

El generador de código de eclipse crea varias carpetas básicamente una carpeta corta que trae los archivos comunes a todas las operaciones.

En esa carpeta buscamos un archivo que termina como *ServiceLocator y dentro la cadena Endpoint0_address =
Esta cadena contiene la url y el puerto a la que apunta el web service normalmente esto se debe tomar de un .properties o equivalente.

Piedra roseta de querys.

Como realizar la paginación de una base de datos a otra:

Paginación

Mysql uso de limit offset (Recupera (limit) número de registros a partir de la posición (offset) ) y ejemplo
 

Oracle mediante el uso de rownum en un query anidado
 

Informix mediante el uso de Skip y limit
 

SQL Server
Con TOP y ROW_NUMBER() a partir de la versión 2005, para versiones anteriores como una propiedad del driver mediante obdc
 

PostgreSQL
 

Usabilidad en aplicaciones empresariales

La usabilidad según wikipedia

"La usabilidad (del inglés usability) es la facilidad con que las personas pueden utilizar una herramienta particular o cualquier otro objeto fabricado por humanos con el fin de alcanzar un objetivo concreto."

"En interacción persona-ordenador, la usabilidad se refiere a la claridad y la elegancia con que se diseña la interacción con un programa de ordenador o un sitio web."

Referencia http://es.wikipedia.org/wiki/Usabilidad

En el mundo de las aplicaciones empresariales la usabilidad es un tema un poco olvidado.

En el enfoque “caro” contar con un área de Usabilidad que diseñe e investigue lo que está en el "top of mind" de los usuarios y la heurística común de las personas. Este enfoque es más usado para diseños de sitios web de contenido público muy grandes, es similar a la usabilidad del metro de la ciudad de méxico en el que todo esta señalizado, informado hasta el ultimo detalle por color, ideograma, titulo, mapas, pasillos, rutas, etc.

Aplicaciones J2EE con Spring MVC, Ajax y Marcos Javascript

Buscando como integrar J2EE con Frameworks JavaScript como alternativa a JSF / con ajax para armar una arquitectura de software para nuevas aplicaciones.

El avance de spring 3 ha sido realmente muy bueno para integrar Ajax.

Conceptualmente como integrarlos:

Una JSP normal decorarla con controles JavaScript.
Marcos Java Script

- JQuery, ExtJs, Dojo por ejemplo

La comunicación entre el browser y el servidor se integra en forma más natural ahora mediante Spring MVC que es capaz de interpretar JSON de forma nativa sin depender de un tercero como DWR.

En la capa de "servicios" a la manera de spring con inyección de dependencias, se coloca una capa de lógica antes de acceder al back end.

La capa que se integra al back se simplifica mucho al usar hibernate con anotaciones.
(Aunque muy cuestionable por algunos el hecho de usar anotaciones debido a la carga extra en el servidor)

Referencia:

Reflexiones del arte de la guerra de Sun Tzu aplicado al Liderazgo de Proyectos II

Este blog está dedicado a las reflexiones del arte de la guerra de Sun Tzu en el desarrollo de proyectos, la interpretación o similitud no es exacta. Los invito a enviar sus reflexiones o interpretaciones personales.

Referencia
Copyrights CARLOS MARTIN PEREZ 2010. All rights reserved.

Sobre la firmeza.
"Lograr que el ejército sea capaz de combatir contra el adversario sin ser derrotado es una cuestión de emplear métodos ortodoxos o heterodoxos.

La ortodoxia y la heterodoxia no es algo fijo, sino que se utilizan como un ciclo. Un emperador que fue un famoso guerrero y administrador, hablaba de manipular las percepciones de los adversarios sobre lo que es ortodoxo y heterodoxo, y después atacar inesperadamente, combinando ambos métodos hasta convertirlo en uno, volviéndose así indefinible para el enemigo.

Que el efecto de las fuerzas sea como el de piedras arrojadas sobre huevos, es una cuestión de lleno y vacío.

Distribuir contenido