lunes, diciembre 31, 2007
miércoles, diciembre 19, 2007
Unit Test para renderizadores de HTML
En fin, me estoy perdiendo el foco, del post, una de las cosas que estoy tratando de hacer es crear un framework de Unit Test, para que todos los desarrolladores de renderers pueden Uni Testear los renderizadores sin necesidad de ver el resultado en el browser, con lo cual mi idea es poder, para cada test case hacer algo como:
1- Crear el ViewBean con la información que del escenario que quiero testear
2- Ejecutar el Renderizador que devuelve el HTML
3- Realizar los asserts, queriando el HTML para ver si la información se reemplazó correctamente, ver si hizo los cantidad de Loops correctos, si pasó por los caminos que yo especifiqué , etc, etc, etc. No me interesa saber si el html tiene todos los temas de estetica ya que eso lo va a tocar una persona a fin.
El problema que tengo hoy en día es que no encuentro un framework/componente que me permita llegar al paso tres, ya que al HTML llego sin problema, lo que necesito ahora es buscar una forma de inspeccionar el HTML en texto que tengo y poder consultarlo para hacer los assert correspondientes. Se me ocurrieron tres ideas :
- Usar HtmlUnit. Pareciera la solución más obvia, pero investigando un poco el framework me di cuenta que no es tán feliz como yo pensaba. Si o si para consultar un HTML tenes que hacer un pedido por la red y http, cosa bastante poco práctica. Obviamente esto se puede evitar mockeando el conector y devolviendo siempre un HTML fijo. El problema es que estos componentes que yo quiero unitestear solo me devuelven una porción de HTML y no un HTML bien formado con el head y el body, con lo cual es imposible llegar a tener una representación objetosa del HTML que me permita consultarlo. Lo que me gustó de HTMLUnit es que tiene la representación objetosa de los elementos del HTML. Obviamente estuve muy poco tiempo viendo el framework y quizá se pueda, pero en fin... me hizo sentir un poco infeliz el HtmlUnit, aparte de haber muy poca documentación.
- Usar Expresiones Regulares, en principio me pareció que era una idea copada, pero despues pensé en el resto, si a la gente ya le cuesta hacer un Test Case de codigo de Modelo o Controller, o sea Java puro, también le pido que haga un Test Unitario para los renderizadores, sumado a esto, aprender expresiones regulares que entiendan el HTML para verificarlo, me recibo de necio. Digamos que las Expresiones Regulares son algo duras de entender, incluso las que creó uno mismo... con lo cual solución descartada...
- La ultima, que es la que voy a probar es usar XPath, ya que en teoría cada HTML renderizado por cada renderer debería ser un XML bien formado, con lo cual eso me permitiría hacer queries con XPath y tener assert mucho más sencillos. Obviamente la gente que haga estos test cases tiene que aprender Xpath, lo cual no es algo trivial, pero bue por ahora es lo mejor que se me ocurre.
En cuanto tenga algún resultado les voy a contar...
martes, noviembre 20, 2007
Tell, Don't Ask
Creo que habría que tomarse el tiempo y probarlo de una manera bien extremista como para ver que sale y obviamente ver como encarar los mensajes entre los objetos y desglosar un poco (como dice Mark Miller) el concepto de "Tell".
No tengo más que decir por el momento sobre este tema, pero les aseguro que voy a ver que pasa yéndome a un extremo.
lunes, noviembre 19, 2007
Ya es hora de mirar nuevos horizontes - Beyond Java
Estaría dirigida a los profesionales que trabajan en java y quieren abrir sus mentes y ver como se están desarrollando el software en otras plataformas para luego traer esas técnicas al mundo java.
En principio los temas que se nos ocurren son los siguientes:
- Continuation
- Open classes
- AOP / Hooks
- Subject Oriented Porgramming
- Duck Typing
- Mix-in
- Clousures
- OOP con Prototipado (Javascript & Self)
- Domain Specific Languages
- Behavior Driven Development
- Conventions over Configuration
- Concurrencia con Earlang
- Behavioral completeness
Si tienen alguna sugerencia, por favor no duden en comentar.
viernes, noviembre 16, 2007
RadRails 0.9.1 - El Code Assist ya está funcionando
Lo que si me dejó de funcionar, pero tenemos que investigarlo un poco más, es el tema de el output de los rSpec que venimos usando para diseño y test. El problema es que el output (a diferencia de xunit) antes lo tiraba a consola dentro del aptaba y ahora me lo tira a una consola de DOS que cuando termina de ejecutar se cierra sola... pero bue ya lo resolveremos.
lunes, noviembre 12, 2007
Bill on Rails... segunda iteración cumplida
- Implementar y aprender sobre Ruby on Rail y sobre todo el lenguaje Ruby
- Desarrollar el software de una manera iterativa incremental utilizando metodologías ágiles como Scrum y XP,
Luego de cuatro meses en donde estuvimos investigando, aprendiendo en conjunto y luego comenzando con el desarrollo de la aplicación tuvimos muy buenos resultados y me gustaría comentarle algunas cosas que venimos haciendo:
- Estamos usando Aptana como entorno de desarrollo que posee un plug-in muy copado para desarrollo de aplicaciones RoR llamado RadRails, este fue comprado (o algo por el estilo) por Aptana hace unos meses. Si bien todavía está un poco verde y no tiene mucho code assistance te da una mano bastante grande facilitándote la ejecución de los generators y las tareas rake. Aparte de permitir debug y syntax high-lighting.
- Como base del Aptana tambien estamos usando InstanRails que te instala de una todo el entorno Ruby, MySQL (con phpMyAdmin) y el Apache, en dos clicks tenes el entorno listo para comenzar a programar. No hay que olvidarse que al Aptana hay que apuntar al IntantRails para que tome el interprete Ruby.
- Como herramienta fundamental de comunicación estamos usando el Wiki, tenemos todo centralizado assets, tutoriales, backlog de requerimientos, direcciones de svn, estandares, arquitectura, release plan, build & deploy, etc, etc.
- Todo el manejo de Tareas e Issue tracking estamos usando la fantástica herramienta de Trac que nos permite mantener en un único lugar parte del SCM necesario para llevar a cabo el desarrollo, obviamente integrado con Mylyn y SVN. Realmente es una herramienta muy simple y que tiene todo lo necesario para asignación de tareas y defectos como así también su seguimiento.
- No hubo mucha discusión con la decisión de usar SVN para el versionado, es rápido, fácil de configurar, se pone atrás de un apache, lo que permite mantener la autenticación y autorización corporativa y se integra perfectamente con el eclipse y el Trac. En este ultimo punto, le pusimos un hook para no permitir commitear a menos que haya una tarea en estado "working" asociada.
- Uno de los Plug-ins que me está maravillando (gracias Andrés Calabrese) es Mylyn, la verdad que la gente que lo inventó realmente tuvo una idea genial debido a que no solo permite integrar las tareas del trac (o de cualquier issue tracking) en el IDE, sinó que también permite el uso de contextos lo cual aumenta la productividad minimizando la cantidad de información visualizada. Les recomiendo escuchar este podcast de 20 minutos en donde explica brevemente que es Mylyn y como utilizarlo.
- El Build & Deploy automático lo estamos encarando utilizando Capistrano y guiándonos con el nuevo libro de la serie de pragmatic programmers llamado "Deploying Rails Applications". Todavía no tenemos un entorno con Capistrano funcionando pero no falta mucho, cuando cierre voy a postear algo sobre el tema.
- La referencia obligatoria del lenguaje es este libro "Programming Ruby", la primera edición está abierta y es gratuita. No se que hablar mas de Ruby, realmente es un lenguaje que cada día me gusta más. En este post explico por que. Lo único que voy a agregar es que definitivamente antes de tirar líneas en Ruby, les pido por favor que lean, no se les ocurra programar como si estarían en Java.... no van a llegar a nada.
- El framework, Ruby on Rails, que les puedo decir... está muy bien enfocado y acotado a los que quisieron hacer, pequeñas aplicaciones web con bases de datos atrás. Lo único que me resulta un poco flojo es el tema de la concurrencia de migrations, si bien es una excelente idea, si no tenés cuidado se puede armar un con los mapeos a la base de datos, nosotros lo minimizamos tratando de poner un solo encargado para crear las migraciones, les pido que lean por que la idea es muy buena, todavía le falta madurar pero el approach está bueno. Todo lo que es ActiveRecord y AJAX, la verdad que me tengo que sacar el sombrero, Rails lo resuelve de una manera muy elegante, ya voy a hablar del tema.
- En cuanto al Diseño y Unit Test venimos usando técnicas de BDD (Behavior Driven Development) utilizando rSpec y el plug-in para rails de rSpec que realmente está bastante cerradito para lo que es la parte de Modelos (ActiveRecords). Resultó muy práctico e interesante empezar a escribir las especificaciones de los Modelos para empezar y luego a través de los generadores de rSpec para Rails creamos los modelos. Lo único un poco málo es que la documentación es bastante poca y siempre que te topas con un problema hay que arremangarse y tratar de solucionarlo y muchas veces se pierde mucho tiempo, pero bueh... es un costo que estamos asumiendo. Obviamente no solo estoy trabajando en esto, con lo cual cuando vuelvo a Java y a JUnit me quiero pegar un tiro :(
miércoles, septiembre 26, 2007
Cursos muy buenos de JavaScript en Video
Este curso es muy completo y el instructor (Douglas Crockford) lo hace muy llevadero. Yo lo hubiese querido haber hecho 8 años atrás cuando empecé a programar aplicaciones Web y pensaba que JS era un juguete (que equivocado que estaba)
Parte 1
Parte 2
Parte 3
Parte 4
Las diapositivas las pueden bajar de aca
Espero que les guste.
domingo, septiembre 16, 2007
Ruby: un lenguaje muy simpático
Acá les quiero dejar una presentación muy buena sobre 10 features que tiene el lenguaje. Espero que les guste, también les dejo un resumen:
#10 Convenciones
#9 Todo es un objeto
#8 (Casi) Todo es un mensaje
#7 Ruby es más dinámico de lo que parece (Open clases, reflection, hooks, singleton method, code evaluation, etc)
#6 Ruby es fuertemente tipado pero no estáticamente tipado
#5 No te preocupes por las interfaces (Duck Typing)
#4 Soporta Mix-Ins (Algo parecido a lo que se podría hacer con herencia multiple)
#3 Closures
#2 IR (docs) es tu amigo, IRB (consola interactiva, recomendable) también es otro amigo
#1 Deja de escribir tanto código!
Este es el link
Creo que todos, antes de hablar bien o mal de ruby, deberían saber que posee estas features.
martes, septiembre 11, 2007
Un camino que lleva a RIA
Básicamente el objetivo fue pasar de una aplicación web tradicional a algo más híbrido y más parecido a una RIA (Rich Internet Application).
Voy a tratar de listar un par de prácticas y lecciones aprendidas que tuvimos en esta release:
- Tener bien separado los diferentes concerns del browser, Contenido (HTML), los Estilos (CSS), Eventos(JavaScript) y Comportamientos (JavaScript). Esto ayuda a tener un código más simple, claro y mantenible. Lo que hicimos fue framework en JavaScript que obligó a estructurar un poco más el código javascript, con lo cual cada funcionalidad tenia su archivo/objeto/metodo en donde debía escribirse. Realmente JavaScript me resultó un lenguaje increíble, muy potente...
- Como parte del proceso de transformar una Web Tradicional a una RIA, tuvimos que mantener las páginas como están y agregar los items de usabilidad desde allí, o sea, tener un único refresco completo por pagina (cada vez que se va de una página a otra), y mientras el usuario realice transacciones en esa página, recién ahí utilizar AJAX/AHAH para actualizar partes de ella. Es importante destacar que el uso de AJAX y AHAH brinda una gran performance, mejorando la latencia y utilización de recursos, debido a que hay menor transferencia de datos y que la página no se refresca por cada transacción.
- JSON es la mejor manera para intercambiar datos entre el browser y el Server. Todos los delta de página son devueltos en un único objeto JSON con pedacitos de HTML renderizados en el Server. Está claro que JSON es muy superior a XML en este conexto, ya voy a hablar un poco más de esto.
- Una parte interesante fue la modificación que le hicimos al componente de Vista, debido que se componentizaron los renderizadores de HTML, y ahora estos renderers son utilizados tanto para crear el HTML de la página completa como los delta de HTML que viajan a través de JSON.
- El manejo de eventos en el browser tuvo un cambio en el final de la release, empezamos usando Event Handling y terminamos con Event Delegation (con bubbling) lo que mejoró muchísimo la performance. En este link se explica muy bien la diferencia.
- Ni Client Pulling, ni Server Pushing son la mejor solución. Luego de implementar un Indicador de Progreso para transacciones largas, llegamos a la conclusión que las actualizaciones del Server al Browser (Reverse AJAX) debe ser una solución intermedia entre los dos enfoques, ya que esto evita muchos problemas de performance y concurrencia.
- YUI Yahoo es una librería de JavaScript increíble ya que posee muchísimos widgets y componentes configurables, como los Menus, Paneles (eliminamos los malditos popups), Connections, etc Pero sobre todo nos permitió lidiar con el cross browser compatibility.
- Firebug rocks!
- Armar un buen entorno de Unit Test de JavaScript, estuve probando JSUnit, pero no lo pudimos institucionalizar :(
- Realizar inclusiones de JS dinámicamente
- Tener un mapeo de Evento<->Comportamiento más declarativo en JS que permita reutilizar más comportamientos o behavior, creo que estamos bastante bien, pero todavía necesitamos más trabajo.
- No pudimos resolver, por falta de tiempo, como enviar solo la información que cambió en el formulario del browser.
- El HTML de la aplicación todavía es muy muy feo, hay que trabajar más en este tema para poder tener el contenido mejor representado.
- No pudimos incluir el Spring Webflow, lo que nos hubiese permitido tener una aplicación con flujos mejor definidos y un modelo más stateful en el server.
miércoles, agosto 15, 2007
Web Semántica - Seminario Athenas - 21 de Agosto
La agenda es la siguiente:
19:00 hs: Presentación.
19:05 hs: Grandes personajes de la historia: Tim Berners-Lee.
19:20 hs: Cómo funciona internet hoy
19:35 hs: Qué es la web semántica (metadatos, XML y RDF)
20:15 hs: Coffee break.
20:30 hs: Qué es una ontología y para qué sirve
20:45 hs: Ejemplos de OWL
20:55 hs: Cómo integramos todo esto: webservices
21:10 hs: Cómo funcionará internet mañana.
21:30 hs: Cierre
Hace un tiempo que vengo tratando de seguir el tema, escuché un podcast de Tim Berners-Lee, en el cual dijo que el actualmente está trabajando en esto y tambien escuché un par de comentarios de compañeros de trabajo como Fernando Sanabria y Gona, aunque todavía no lo pude conceptualizar. Creo que va a ser muy interesante.
miércoles, julio 11, 2007
5 puntos débiles que se le podrían encontrar a YUI Yahoo!
- El excelente componente Connection Manager carece de llamadas sincrónicas (bloqueantes) y esto es más por un capricho del autor que por otra cosa (en mi humilde opinión). Está claro que no son tan importantes pero no cuesta nada dejar la posibilidad.
- Todavía no tienen una solución para almacenar información del lado del browser y asi permitir construir aplicaciones RIA offline. Creo que este es un tema que hay que tener algo en cuenta ya otras tools como Dojo están un poco adelante.
- Los componente son un poco duros para extender, si bien son bastante configurables muchas veces es necesario dejar puntos de extensión sencillos para poder agregar funcionalidad que todavía no traen. Alguno puede decir que JavaScript es un lenguaje prototipado que te permite extender y modificar el comportamiento en tiempo de ejecución y es verdad, pero muchas veces eso no es muy simple te hacer. Aca se puede hablar mucho más pero estoy con un poco de sueño :)
- No provee una implementación para hacer Server Pushing o Comet y esto es algo bastante interesante a tener en cuenta. Justamente estas semanas estamos trabajando en esto pero estamos concentrados en el modelo de threads que hay que tener en el server poder enviar info al browser sin que el browser la pida. Actualmente estamos resolviendo el esto teniendo un client polling con una única conexión ajax por vez y con un time out relativamente largo (de 4 a 5 segundos aprox) como para que venga siempre con info del server.
- Le faltan utilidades sencillas para manejo de JavaScript como tiene Prototype y JQuery, realmente es invaluable poder acceder a elementos del DOM utilizando el $, o agregar estilos de manera muy sencilla y obviamente sin perder portabilidad.
- esto es una critica totalmente constructiva a YUI desde mi humilde opinión. Vuelvo a repetir que de las herramientas que vi, y me recomendaron, es la que más documentación, soporte y madurez tiene.
- muchos de estos puntos débiles que he encontrado a YUI principalmente vienen por el lado de la integridad conceptual que quisimos lograr armando el framework en JavaScript ya que en un momento estábamos usando 3 tools diferentes y no era muy lógico. Actualmente estamos usando YUI y Prototype, pero calculo que próximamente la saquemos o pongamos JQuery que es un poco más liviana y hace cosas parecidas.
lunes, julio 09, 2007
De paseo por Tandil
Y luego de haber disfrutado de tandil estas son las actividades que hicimos y recomiendo hacer:
- Comer una picada en "Epocas de Quesos"
- Comprar fiambres para llevar en Syquet (Para la gente de IBM, Bs As... lo prometido es deuda)
- Cenar en Antares (Fue ahi donde comimos con la gente de IBM Tandil)
- Hacer todos los recorridos de Sierras (centinela, reserva del tigre, piedra movediza, etc) y Lagos (dique)
- La verdad que la ruta MDQ-Tandil es bellisima
Comentario: How to spot the dreaded non-coding architect
Me encantó este post... sore todo me recuerda hace un par de años cuando el termino de Arquitecto se estaba poniendo de moda y todo se hacia en java y los "arquitectos" lo unico que hacien eran leer ariculos de SUN y Patrones.
Igualmente quiero hacer una salvedad.. si bien se puden detectar estos dos tipos de arquitectos, pero que nadie se olvide de la tercera categoría de arquitectos.... que esos si son los peores que ni se gastan en leer ni estandares, patrones,
buenas practicas.
Este es el link: http://softarc.blogspot.com/2007/06/how-to-spot-dreaded-non-coding.html
Resumen: (Could this be flamebait - probably! But here goes anyway)
By Architect here I'm not talking Enterprise level folk who pretty much don't cod
jueves, junio 21, 2007
Aplicaciones RIA con JavaScript offline - Indignado
En este post solo quiero expresar mi indignación de como parece cierta parte de la industria (google con google gears, mozilla con firefox 3, etc) esta encarando el manejo de aplicaciones RIA con JavaScript para que puedan funcionar sin conexión a internet, debido a que apuntan a tener una base de datos RELACIONAL!!!! en el browser, nada más no nada menos... Mi humilde opinión es la siguiente
"Si ya tenemos nuestros objetos en un lenguaje potente como JavaScript (OO y Prototipado) por que no persistimos o mantenemos dichos objetos, para que meter una RDBMS en el browser?? Para que SQL??"
Estas son mis razones:
- La gente se olvida de los problemas de transformar objetos en tablas y viceversa?
- Estamos en el browser, o sea, vamos a tener como todo, objetos que solo tienen comportamiento y objetos que tienen estado y comportamiento, y objetos que solo van a tener estado, ese estado que estamos persistiendo va a terminar en otro modelos de objetos, como es el DOM, para que necesito pasar por SQL y Tablas? No nos alcanza con objetos??
- Se olvidan de los problemas de performance ? o sea, una nueva capa en el browser que nos abstraiga de la persistencia de datos, ejemplo Google Gears, vamos a tener más comportamiento, más interacciones, más transformaciones de datos, más uso de memoria, con que sentido??? Ya están diciendo que Google Gears likea mal, te cuelga todo...
- Se olvidan de los problemas de modificabilidad que esto trae? Ejemplo, se agrega un campo más a un formulario, lo cual implica, cambiar como mínimo 5 lugares entre el html, el javascritp, la validación, el objeto, la tabla, el sql, y sigo contando
- La gente se da cuenta que van a tener que empezar a mantener dos bases de datos como mínimo? Las migraciones? Que onda los upgrades? Me parce que estamos equivocando el camino.
- En Java, todo está apuntando a la transparencia, en donde todo debería ser más "simple", llegar a un nivel en el cual ni tengas que hacer un objeto.save(), por que en JavaScript tenemos que volver a conceptos arcaicos...
- La gente se olvida que meter un modelo relacional en el browser obliga a perder las abstracciones que ya se pueden modelar con objetos en JavaScript, que pasa con el polimorfismo?? la herencia?, la posibilidad de agregar comportamiento de manera dinámica? Nos están obligando a separar los datos del comportamiento otra vez, pero esta vez sin ninguna razón
- Que va a pasar con los tipos?? JavaScript no es Java, quizá se mas facil guardando todo en string, aunque no lo se, la transformación siempre cuesta y en este caso vamos a tener que definir mas cosas
Espero que la gente no caiga en estoy y haya aprendido la lección del problema que tenemos hoy en día en el server para integrar un modelo objetos con un modelo relacional...
Igualmente voy a investigar un poco más, debe haber alguna librería javascript que nos permita algo más transparente sin tener que usar SQL, creo que dojo offline está apuntando por ese lado, y con independencia de método de persistencia.
martes, junio 19, 2007
Metodologías Agiles - Seminario Athenas - 25 de Junio
Abstract
Luego de 30 años desarrollando software, la industria sigue teniendo muchos problemas para terminar los proyectos en tiempo y forma. Durante ese tiempo evolucionaron tanto las tecnologías que utilizamos como los tipos de sistemas que construimos, sin embargo las metodologías parecen no haber sufrido grandes modificaciones. Con esa perspectiva, a partir de finales de los '90 surgieron algunas ideas que proponen renovar la forma en que construimos software y hoy comienzan a popularizarse a nivel mundial.
El objetivo de este seminario es introducir los conceptos que guían estas nuevas metodologías "ágiles", haciendo foco en dos de sus representantes más reconocidos: eXtreme Programming y Scrum.
La agenda es la siguiente:
19:00 hs: Presentación.
19:05 hs: Grandes personajes de la historia: Donald Knuth.
19:20 hs: Teoría e historia de las metodologías ágiles.
20:00 hs: Coffee break.
20:10 hs: eXtreme Programming. Conceptos y casos exitosos.
20:50 hs: Scrum. Conceptos y casos exitosos.
21:30 hs: Conclusiones y cierre
miércoles, mayo 16, 2007
lunes, abril 30, 2007
APIT en el SEI!
El segundo resultado estará por venir, pero les puedo adelantar que Paul se encontró interesado en el contenido de una de nuestras clases, la de "Rol del Arquitecto de Software", si bien el 40% del material no es nuestro el resto si lo es, por lo tanto creo que puede haber mucho fruto en el futuro.
miércoles, abril 25, 2007
Andres tuvo su primer encuentro nerd en APIT
- Estilos Arquitectónicos (Garlan & Shawn)
- Tácticas para lograr atributos de calidad
martes, abril 17, 2007
Al que posteo esto lo mataría - Diferencias entre C++/Java/C#
http://www.bloggingaboutjava.org/cms/wordpress/2007/04/differences-between-c-java-and-c/
Ahora bien, ganas algo sabiendo dicha diferencia???, si igualmente tenes que tener el test case para verificar el comportamiento.
lunes, abril 16, 2007
Hoy empiezan los seminarios athenas 2007 con un disertante de lujo
Hoy arranca con Luciano Bello, alias "el taliban del software libre", sobrenombre puesto por Flavio Fernandez (alto groso del labsistemas también), la descripción de la charla la pueden encontrar acá.
sábado, abril 14, 2007
Quilmes Rock 2007 en vivo por Internet
http://www.10musica.com/micro_site/quilmesrock/home/envivo.php?idxBanda=0
jueves, abril 12, 2007
El traspié de un grande - Almirante Irizar
En mi país todos los días se escuchan malas noticias que me hacen poner algo mal, pero hacer mucho que no me pasaba lo que me pasó cuando me enteré lo que pasó con el emblemático Almirante Julian Irizar. Desde que me enseñaron sobre este grande, en la secundaria, me generaba mucha espectativa poder verlo en acción, pero el día que lo vi anclado en el puerto de Bs. As. esos metros de largo y algo me dejaron con la boca abierta y con un orgullo de que mi pais pudiera contar con un rompehielos de esta envergadura para la expediciones a la antartida. Recuerdo que estuve con un amigo más de media hora observándolo e imaginándolo en acción.
Realmente espero que pueda ser remolcado y reparado para que siga permitiendo a mi país el uso de este emblemático rompehielos.
miércoles, marzo 21, 2007
APIT - Primer Cuatrimestre 2007
Con respecto al programa, finalmente, hicimos una mezcla entre las supuestas dos materias y quedó algo como esto:
1-Metodologías Iterativas de Desarrollo
- Introducción a las metodologías orientadas a Iteraciones
- Metodologías Ágiles de Desarrollo
- Buenas prácticas para el desarrollo de software y la Arquitectura
2-Arquitectura de Software
- Concepto de Arquitectura de Software
- Tipos de Arquitectura y Ciclos de Generación de Arquitecturas
- Modelado y Vistas de Arquitecturas
- Principios de Arquitectura
- Requerimientos Funcionales, Restricciones y No Funcionales.
- Análisis de Atributos de Calidad y QAW (Método del SEI)
- Influencias de la Arquitectura
- Primera solución técnica y primera percepción de la arquitectura.
3-Creación de Arquitecturas de Software
- Tácticas para la lograr los Atributos de Calidad
- Estilos Arquitectónicos y Patrones de Arquitectura (POSA)
- Método de Creación de Arquitecturas ADD (Método del SEI)
- Organización de la Lógica de Negocio (Arquitectura no Intrusiva, Domain Driven Design, Transaction Script, Workflows, Aspectos y Declaratividad)
- Presentación (Tipos de Dispositivos y Clientes, Control y Navegabilidad, Integración con el Dominio o Lógica de Negocio, Clientes Pesados, Clientes Livianos – Web y Rich Internet Application)
- Persistencia (Mecanismos de Persistencia, Archivos, Base de Datos, Base de Objetos, Prevalencia, Frameworks de Persistencia y Impedance Mismatch)
- Integración (Business Integration, Point-to-Point, EAI, SOA, Colas, Web Services, ESB, Coreografia de Procesos)
4-Comunicación de la Arquitectura
- Concepto de Comunicación y Entendimiento de Arquitectura
- StakeHolders y Preocupaciones. ViewPoints, Views y Modelos IEEE 1470
- Workproducts y Deliverables de la Arquitectura
- Frameworks y Roadmap de Arquitecturas (Model View 4.1, The Open Group Architecture Framework)
- Armado del SAD
- Características de la documentación de la Arquitectura
5-Evaluación y Viabilidad de Arquitecturas
- En que consiste la evaluación
- Cuando y Por que.
- Riesgos
- Costos y Beneficios
- Métodos de Evaluación de Arquitecturas, ATAM (Método del SEI)
6-Implementación de Arquitectura y Rol del Arquitecto de Software
- Responsabilidades del Arquitecto.
- Rasgos y Características del Arquitecto
- Liderazgo y Mentoring
- Responsabilidades y Aseguramiento de la calidad del Arquitecto
- Propuesta de Solución y Evaluación Técnica incluyendo Estimaciones y Métricas
- Procesos de Construcción de Software
- Mantenimiento de Software.
- SCM
- sacamos un par de temas de metodologías, solo vamos a dar metodologías iterativas y ágiles
- agregamos el QAW, en la intro a Arquitectura, una manera muy interesante para relevar y priorizar los Atributos de Calidad
- vamos a dar el método del SEI, ADD (Architecture Driven Desing) como para guiar la creación de la arquitectura, voy a ver de invitar a alguien con experiencia utilizando dicho método.
- sacamos la clase de Arquitectura de Seguridad, debido a que vamos a hablar de seguridad como algo ortogonal a lo largo de toda la materia.
- Agregamos SCM
Con respecto a los integrantes de la cátedra, hemos perdido a una mente celebre como Hernan Liendo, ya que va a dedicarle a full a TADP y no va a poder dedicarle tiempo a APIT, por otro lado hemos un posible nuevo ingreso de Leo Gassman, de TADP, fue alumno en el 2005 cuando empezamos.
Con respecto a los TP, seguimos manteniendo el Paper, una investigación, y el TP Cuatrimestral en donde el grupo debe crear a implementar en código una arquitectura.
Para quien esté interesado de participar de oyente, vamos a dar clases todos los jueves en Medrano, pueden ver el calendario en el siguiente link, ahí lo vamos a tener actualizado.
Estoy muy contento debido a que en dos años de la materia ya nos estamos sintiendo cómodos en como va quedando y siento que estamos cumpliendo los objetivos que tuvimos cuando empezamos. Está claro que mucho tuvo que ver la incorporación grandes mentes como Nicolas Passerini, Gastón Coco, Juan Arias y Hernan Liendo.
domingo, febrero 25, 2007
Critico y Consultor - Rasgos y Características del Arquitecto de Software - Parte 4
Es muy importante como crítico la habilidad para tener una mirada fresca e imparcial acerca de su propio trabajo, separando las personas del problema, aceptando críticas y buscando feedback constante que puede venir de cualquier rol. Es más que importante tener la voluntad para reconsiderar y volver atrás si es necesario las decisiones tomadas. Con respecto al rasgo de consultor, es muy importante a la hora de la construcción es muy importante al soporte y la educación sobre la arquitectura, las revisiones y el feedback para un posible cambio. Agunas de las características que salen, podrían ser las siguientes:
- Busqueda constante de feedback
- Tener la capacidad de reconsiderar decisiones previamente tomadas en base a una crítica
- Educador de la arquitectura
- Revisor de la implementación, que cumpla con lo que la arquitectura define
Con esto termino esta serie de posts sobre los rasgos del Arquitecto de Software. Cualquier opinión y sugerencia va a ser bienvenida.
Diseñador - Rasgos y Características del Arquitecto de Software - Parte 3
Este es uno de los rasgos diferenciadores, debido a que es sumamente necesario aunque no es suficiente. La creación o el diseño de la arquitectura es uno de las principales tareas del arquitecto a lo largo del proyecto por lo tanto es muy importante tener un criterio de diseño y evaluación de alternativas muy aceitado para poder articular dichas decisiones, utilización de principios y patrones, descomposición de módulos, alocaciones y sobre todos los trade offs necesarios para la construcción de la arquitectura. Quiero dejar claro que diseñar no es "documentar" en modelos, todo lo contrario, diseñar es la actividad de entender el problema y buscar a traves de las tácticas disponibles la mejor solución basadas, generalmente, en abtraciones, creatividad y reuso de soluciones anteriores (patrones). Las características asociadas al diseño las podemos catalogar de la siguiente manera:
- Creatividad, a la hora de buscar alternativas para solución de problemas y decisiones necesarias.
- Conceptualizador, esto está muy relacionado con los modelos mentales y la visión del arquitecto, pero básicamente es necesario entender el problema antes de tomar decisiones, y que la conceptualización esté lo mejor posible (que terreno pantanoso me he metido)
- Modelador, en esta característica está en juego la conceptualización (punto anterior) donde modelamos para representar la realidad (negocio, recursos, etc) y por otro lado la comunicación de lo decidido, aca se mezcla con lo que hablamos en el rasgo de traductor.
- Colaborador y Moderador, colaborar a la hora de resolver problemas y moderador para generar consenso en una reunión y búsqueda de compromiso, ya que es muy común tener reuniones con diferentes tipos de stakeholders y generalmente las decisiones son tomadas en un contexto donde la arquitectura es el centro o guía dicha decisión.
- Comunicador de conceptos y modelos.
- Perspectivas, es la habilidad para ver un problema y plantear diferentes soluciones y en cada una de ellas poder ver que impactos va a tener en el corto, mediano y largo plazo. Para este punto en particular recomiendo mirar la siguiente página de un método llamado, "análisis basado en perspectiva"
Traductor - Rasgos y Características del Arquitecto de Software - Parte 2
Este es uno de los rasgos que más pongo énfasis durante la cursada de la materia, a la hora de comunicar el conjunto de decisiones que van materializando la arquitectura necesitan ser comunicadas y consensuadas con todos los stakeholders, no pueden ser presentadas de la misma manera, ni con el mismo lenguaje, ni con los mismos modelos a todos, el arquitecto debe asegurarse que cada tipo de stakeholder entienda la vista de arquitectura que tiene que entender con el lenguaje correcto, por lo tanto el arquitecto debe tener las siguientes características asociadas:
- Poliglota / Multi-lingual, para poder comunicar la misma arquitectura a diferentes stakeholders que poseen diferentes lenguajes.
- Analista, es importante estár al tanto del contexto que cada stakeholder se encuentra, que preocupaciones (concerns) posee.
- Capacidad de síntesis, esta característica puede ahorrar mucho tiempo en las reuniones del arquitecto, pudiendo guardar tiempo para otro tipo de actividades, esto no quiere decir ocultar nada sino comunicar lo justo y necesario.
- Generalista, el arquitecto debe ver siempre la "Big Picture", debe concertarse en las decisiones que guían la construcción de la aplicación trabajando y comunicando abstracciones, los detalles hay que dejarlos para los analistas del negocio y diseñadores/programadores.
- Identificar qué es lo relevante, qué tiene impacto que no, clasificar y priorizar
- Alta tolerancia a la ambigüedad, esto puede ayudar mucho a acortar el tiempo en las reuiones, las abigüedades son sanas, siempre y cuando no haya buena fe en el entorno de los stakeholders, pero mi recomendación es no invertir tiempo en discusiones que no aportan al proyecto, si un administrador de SCM le dice robustez a la latencia (response tiem), todo bien, no hay que enseñarle en medio de una reunión que lo que dice está mal, lo importante es poder manejar esa ambigüedad tener bien claro de que se está hablando, no discutamos temas de nomenclatura, lo que importa es el significado (Como dice Nico Passerini).
- Mentalidad abierta, esto no es exclusivo del arquitecto de software, aunque lamentablemente muchos cerecen de esta característica :(
Visionario - Rasgos y Características del Arquitecto de Software - Parte 1
Ser Visionario para un arquitecto es poder definir esa idea de arquitectura, comunicarla y generar el compromiso para cumplirla. Para poder tener siempre esa visión y alinear al resto de los stakeholders es importante cumplir con las siguientes características:
- Escucha Activa, para el correcto entendimiento del negocio y las posibles críticas a las decisiones del arquitecto.
- Comunicación verbal, no verbal, oratoria y capacidad para modelar.
- Sagacidad Política, tengo que preguntarle a Gastón bien por que es esto, suena lindo.
- Liderazgo para la creación del team de desarrollo, movilización y motivación del mismo alineándolo detrás de la visión.
- Carisma para poder alinear al team detras de la visión (de la arquitectura a construir). Y es por eso que el carisma es tan importante en un Arquitecto, es ese grado de atracción y desenvolvimiento personal que permite agrupar y convencer personas para lograr algo, en este caso, para sumarse a la abstracción que el arquitecto propone construir.
Rasgos y Características del Arquitecto de Software
- Parte 1 - Visionario
- Parte 2 - Traductor
- Parte 3 - Diseñador
- Parte 4 - Crítico y Consultor
domingo, febrero 18, 2007
Tagged
- Muchos saben que me recibí en la UTN de Ing. en Sistemas, lo que nadie sabe es como llegué ahi. Como varios adolecentes, en la secundaria, estudian solo para zafar y pasar un buen momento, pero no era el caso de Ezequiel Issa, digamos, el Nerd de la clase al cual todos acudiamos a la hora de copiar la tarea que no habiamos hecho el día anterior, una muy buena persona que vivia para el colegio. El tema fue así, un Jueves de Agosto (1998), sentado al lado de el, obviamente, tratando de careatear la copiada de tarea y haciendome el amigo, le pregunte, "Che Hugo (por que le deciamos así), que vas a estudiar el año que viene, estamos en quinto año??" Y me dijo muy seguro, "Y mirá, a mi me gusta la computación, así que voy a estudiar en la mejor facultad de computación de la argentina, la UTN"?, "UT que????", le pegunté, y bueno, despues de contarme un poco sobre la facultad me convenció, no teniamos mucha idea de que era Sistemas, pero si que tenia que ver con la computadora, al otro día fui a anotarme, por que estaban llamando por apellido en esa fecha y desde 1999 al 2004, estuve estudiando en mi amada universidad, obviamente que al tiempo me dí cuenta que Sistemas no es Computación, por suerte, por que al ir entendiendo los Sistemas de Información me fui apasionando cada vez más, si hubiese sido una carrera de Computación, estoy seguro que no la hubiese terminado... ahora bien, que pasó con Ezequiel Issa?, al tiempo me lo encontré en el Laboratorio de Sistemas, creo que todavía sigue estudiando, creo que está por cuarto año..... Gracias Hugo!!!
- Tengo 3 hermanos, Gastón y María Victoria mayores (del matrimonio anterior de mi viejo) y una hermana llamada Barbara un año más chica que yo. Con Barby hablo todos los días y con los más grande, de vez en cuando, aunque me gustaría estar más en contacto.
- Hace unos meses que empecé a jugar al tenis, todavía no con profe, y el otro día, jugando al tenis con mi mujer en MDQ, sacando para el Set, maté un pajarito, si aunque no lo crean, una en un millon, vi cuando la pelota despedida de mi raqueta impactó en la cara el pajarito, y este cayó haciendo circulos en el aire, de no creer, todos los jugadores de otras canchas vinieron a ver la escena del crimen :)
- Desde que nací vivo en Buenos Aires, Villa del Parque principalmente y actualmente en Palermo, pero me encantaría poder vivir en una ciudad mucho más tranquila, como Mar del Plata (aka MDQ), creo que no es el momento, pero si lo tengo muy en mente principalmente pensando en la calidad de vida de mi(s) hijo(s), por ahora tengo uno pero me gustaría tener una más, a quien vamos a llamar Luz Brey, en caso de que salga nene y económicamente/sentimentalmente estemos preparados buscaremos otra vez :), no más de tres.
- Suelo ser muy tolerante con las personas y confio en la gente, pero lo que no puedo soportar, tanto en ambiente laboral como en lo personal, es la soberbia y la mentira, me general mucha bronca la gente que posee alguna de esas dos características y puedo ser muy duro (a veces desconozco mis actitudes con ese tipo de gente), debe ser por que siempre intento ser lo más transparente, sincero y humilde posible....
jueves, febrero 01, 2007
Design & Programming Trends
El mail lo mandé en ingles, pero bueh, cuando tenga un rato lo traduzco :) (mil disculpas para quienes no entiendan el idioma o mi ingles ladri)
- Test Driven Development has become as one of the best design technique and was the most acceptable XP practice. (plus Refactoring). UI Arg team had great result using it during R2. I have also gave a 2 hours course about it here. Finally I have also hear about Behavior Driven Development, it is a step beyond TDD.
- Inversion of Control Design Principle and Dependency Injection Pattern had become de facto technique to deal with dependencies and object life cycle. Spring Framework is example of how important is this technique. During R2 We were implementing IoC in some part of the UIFramework.
- Ruby On Rails web framework has impulsed a revolution against Big-Complex-HardToUse-HyperXMLConfigurable Java Web frameworks, Ruby On Rails gives different approach for Web Development, using principles like "Convention Over Configuration", "AJAX is part of the framework", "Flash Memory Context" and "Easy and Rapid web development"... those are important concepts, many Java Frameworks have been introducing something similar to RoR, i.e. Rife, Grails, AppFuse, Trails, xFramework, etc.
- Domain Driven Design (DDD) is a technique that reinforces the use of Object Oriented Design to solve domain problems and complexity.
- Web Flows this kind of frameworks allows to implement continuation concepts that gives the ability to keep track on double submitions and back buttons.
- RIA - Rich Internet Applications (AJAX).
- Defensive Code / Design By Contract. I think that we have to insist on this principle, mainly with Dependencies, there are interesting ways to solve this with Aspect Oriented Programing or using annotations (with Java 1.5)
Tengan en cuenta que es un Team de UI, por lo tanto está un poco acotado.
Se les ocurre algo más?
Es la Robustez un Atributo de Calidad?
Me inclinaría por una definición como la siguiente para la robustez:
"Es el grado de percepción/sensación que da una aplicación para responder a eventos no contemplados o que exceden los requerimientos no funcionales y que su respuesta permita medirse en parametros calculables, o sea, no ocurra un desastre"
No estoy seguro si se entendió, pero me gustaría dar algunos ejemplos. Si tenemos un NFR de Performance como el siguiente
"El sistema debe poder responder a 1000tx por Hora con un tiempo de respuesta menor a 5 segundos para las transacciones Tx1 y Tx2",
Podríamos pensar en que la robustez entraría en juego en casos en los cuales si hay 1001tx por hora el sistema responda de manera aceptable y que no se caiga Obviamente podriamos pensar que no se va a cumplir con los 5 segundos, pero tampoco que no se cumpla por mucho, o sea, que responda en 6 o un poco más... se entiende el ejemplo?
Lo mismo pasa con la robustez para los Atributos de Calidad No runtime, en donde vos tenes algun NFR de modificabilidad definido, por ejemplo:
"El sistema debe permitir la modificación de parámetros la interfaces X e Y a pedido del usuario y debe ponerse en producción en un tiempo de 40 días, incluyendo el analisis, diseño, desarrollo, testing y deploy",
Y si te llega algún Change Request, que pide dentro de la modificación de parámetros de las interfaces X e Y, y aparte agregar una exception, como notaran, la exception no está contemplada, en este caso la robustez entra en juego por el lado de esa misma sensación de que si no la habias contemplado el cambio se puede realizar bajo parametros decentes.
Por la tanto ya sea para Atributos de Calidad Runtime y No Runtime la robustez se podria pensar como ese grado de sensación ortogonal a cualquier tipo de Atributo de Calidad que mide el grade poder responder con parámetros decentes.
Esta es una conclusión personal después de haber discutido con varios profesionales sobre este tema. Principalmente con Gonzalo De Pedro y Nicolas Passerini.
Opiniones?
lunes, enero 29, 2007
SOA Bootcamp - Día 4
Otra de las cosas que estuvimos charlando fue de un plug-in que desarrollaron para un nuevo producto llamado, Rational Method Composer, dicho producto permite armar modelos de desarrollo, detallando el ciclo de vida, los work products, entregables, dependencias y papers, entre otras cosas, con lo que al final de dicho trabajo podes exportar a MS Project o RPM (ational Porfolio Manager), el plug-in que desarrollaron es un template para la metodología SOMA. Con el cual podes crear tu WBS desde dicho templeta y customizar de acuerdo a las necesidades y restricciones del proyecto.
Y por ultimo dio un panorama muy pero muy por arriba de SOMA Modeling Environment for RSA, que es un plugin para el RSA que permite organizar el modelado y documentación de la arquitectura y diseño en proyecto SOA. Este si está muy verde ya que quieren migrar a la nueva versión del RSA, la 7.0 que está basada en eclipse 3.2.
Esto es todo, espero que les haya interesado.
lunes, enero 22, 2007
SOA Bootcamp - Día 3
Durante la primera hora Ali estuvo hablando sobre algunos SOA Patterns, básicamente todos los que se desccriben en el "Design SOA Solutions and Apply Project, Technical, and Operational Governance (SW718)", Proxy Interaction Patterns, Remote Strategy Pattern, Enterprise Service Bus pattern y Service Registry pattern. Digamos que los más interesantes son los úlimos dos. Los primeros si bien son muy usados son un sub-conjunto del ESB Pattern. Una de las cosas que comentó Ali, fue que IBM fue la primer empresa en hablar de un ESB como un estilo arquitectónico, yo lo recuerdo, esto era por el 2004, pero tambien sabia que en algún momento iba a salir el Websphere ESB, y obviamente ese producto llegó ;)
El segundo tema fue, SOA Architectural Reference (S3), este es uno de los temas más interesantes del curso, básicamente es la arquitectura de referencia de todo proyecto de integración implementando SOA. Esto ya lo habia leido en un paper que me llegó hace un tiempo y realmente es muy interesan, muestra con lujo de detalle todas las capas, elementos, componentes e interacciones que pueden aparecer en una integración con SOA. Para describir un poco esta arquitectura de referencia, transcribo la explicación "literalmente" de un post del blog de Ali en DeveloperWorks (se pueden ayudar de la imagen):
These layers are:
1. Consumer layer - any consumer of a service would reside in this layer
2. Business process layer (choreography and composition)-- a process uses a set of loosely coupled services in a choreography or composite application
3. Services layers -- a layer of service descriptions and policies, implemented through
4. Service Components -- (e.g., EJB's or .NET components) who privide the actual realization of the service operation, or the service directly uses or exposes
5. Operational Systems and Data -- which include packaged applications like SAP, Siebel, PeopleSoft (Oracle), Legacy systems, and of course the data bases that support the applications.
Cross cutting these functional layers are the operational layers that support and intersect the above:
6. Integration Layer -- if you need/have an ESB it's here
7. Quality of Service layer -- all, aspects of security, monitoring, management and all other quality of service aspects are implemented and ensure through this layer
8. Data Architecture, Business Intelligence and meta-data layer -- provides data models, star cshemas or meta-data relating to and supporting the SOA
9. Governance Layer -- includes the procedures, processes, registry , repository and run-time governance needed to servce as support for the entire life-cycle
Durante la tarde estuvimos viendo las capas "cross-cutting" que se ven en la figura, de la 6 a la 9:
El tercer tema del día fue SOA Governance, si bien fue un poco abstracto y generalista, se pudo entender que significa el tema. Básicamente apunta de dictar las normas a nivel organizacional de como se van a integrar las aplicaciones, es como el gobierno en una ciudad, bueno pero esto es en un empresa, buenas normas de IT Governance aseguran una correcta implementación de los sistemas, obviamente si se siguen. Esta sería la herramienta fundamental para el Enterprise Architect.
Seguimos con SOI (Service Oriented Integration) y ESB (Enterprise Service Bus), si bien fue bastante corta, se pudo revisar en detalle cada uno de los temas, más adelante voy a explicar un poco más estos conceptos.
El siguiente tema fue QoS (Quality of Service), digamos que para mi gusto no fue lo esperado, solo explicaron un poco de Monitoreo, Logs y algunos productos que soportan. Faltaron conceptos un poco más arquitectónicos como tácticas para lograr performance, disponibilidad, tolerancia a fallos, etc...
Creo que habló un poco de Data Architecture, aunque no estoy muy seguro, si encuentro algo de info la voy a compartir.
Lo más interesante de este día, obviamente, fue el SOA Architectural Reference, ya que es el template que tendríamos que seguir para construir arquitecturas de integración SOA.
SOA Bootcamp - Día 2
El primer tema que estuvimos viendo fue SOMA, la versión 2.4, básicamente esta versión es una técnica de análisis y diseño de servicios dentro de una arquitectura SOA, aca tienen una descripción más detallada de SOMA 2.x. La técnica tiene 3 fases principales, Identificación, Especificación y Realización, en cada fase se tomaban decisiones y es algo bastante iterativo a lo largo del proyecto.
Luego estuvimos viendo los tipos de soluciones que IBM (SOA Offerings) tiene para ofrecer a sus clientes en lo que refiere a SOA, siempre desde el punto de vista del Servicio/Cosultoría/Desarrollo, nada de Software IBM. Algunos ejemplos que recuerdo eran para SOA Governance, integración a través de servicios, Evaluación de la madurez SOA en la empresa (SIMM), etc. La verdad que hay varios offerings y no se que tan confidenciales sean, la idea era mostrar de que manera IBM ofrece sus servicios para la implementación de SOA en las empresas.
El último de los puntos que estuvimos viendo, aunque un poco aburrido, fueron todos los estándares sobre Web Services, como WSDL, SOAP, BPEL, UDDI, etc. Digamos hubo dos cosas bastante interesante que me dejó esta parte del curso con respecto a los estándares:
1- Esto no lo sabía de bruto que soy, WSDL 1.x tiene una sección en donde se puede especificar el tipo de bindding tecnológico en el cual se debe acceder al servicio, ejemplo, si es por SOAP-HTTP, SOAP-JMS, EJB-IIOP, POJO o lo que sea. Yo pensaba que esa sección venia solo a partir de WSDL 2.
2- Teniendo el punto 1 claro, surge una pequeña discrepancia en la industria en el entendimiento de Web Servicies, ya que para MS y otros un Web Service implica el uso de WSDL, SOAP y HTTP, con lo cual está recortando la posibilidad que nos dá el WSDL para extender el bindding. IBM dice que para llamar Web Service a un servicio solo tiene que ser expuesto a través de WSDL, con lo cual, desde mi punto de vista, suena más lógico... de este modo para IBM, SOA implica el uso de Web Service.
Esto fue todo en el segundo día del curso.
martes, enero 16, 2007
SOA Bootcamp – Día 1
Durante el primer día fue todo muy introductorio, sinceramente no hubo nada que no haya leído antes, aunque lo más enriquecedor de todo fueron las discusiones (más 3 horas entre tema y tema charlando entre nosotros) e intercambios de ideas que hubo entre todos nosotros, pude sacar una serie de conclusiones:
- Hablando consensuamos, según la experiencia en cada país, que la industria (clientes) cuando piensa en SOA solo ve la parte tecnológica y no como una estrategia que debe tomar la Enterprise Architecture para guiar la integración de aplicaciones. Por lo menos es lo que pasa en America del Sur, no ve el valor que tiene como la flexibilidad, adaptabilidad y reusabilidad.
- Quedó claro que los productos que soportan SOA, (ejemplo ESBs, BPMs, Registries) todavía están muy inmaduros. Supongo que en algún momento van a madurar.
- El ESB en SOA = EAI.
- SOA NO es Web Services, tener una arquitectura SOA no quiere decir que vas a usar Web Services, y que tengas WS tampoco quiere decir que implementas SOA.
- La nueva especificación de WSDL debería ser sin la W, o sea, SDL (Service Description Language)
- EL discovery dinámico de Servicios por el momento no tiene sentido. Discutimos que este podría empezar a usarse cuando la Web Semántica gane más adeptos y esté mas madura, con protocolos como RDF, WS-Agreement, etc.
- Uno de los grandes problemas para implementar una arquitectura SOA es el uso indiscriminado de SAP en la compañía. Esto no quiere decir que está mal, sino que cada empresa tiene los drivers arquitecturales que su EA guía. Pero es cierto, cuanto más funcionalidad tiene SAP menos procesos de negocio se van a poder estandarizar y flexibilizar.
Si tienen alguna pregunta interesante sobre SOA… adelante!
sábado, enero 13, 2007
Viaje a Bs As - SOA Bootcamp
La verdad que estoy muy contento y tengo muchas expectativas, ya que vengo participando de muchas calls/webconference de Ali y también leyendo su blog, y verdaderamente es un profesional que tiene mucha experiencia en el tema, y por comentarios de Gastón Escobar que lo conoce personalmente, es una persona muy copada y abierta.
Si bien, muchos de los conceptos ya los he leido, lo más interesante van a ser las discusiones que se van a generar ya que en el curso van a participar varios arquitectos de Argentina y america del sur.
Les voy a tener más novedades!
viernes, enero 05, 2007
Blogs que suelo leer (Geek Blogs)
también les voy a adjuntar el archivo exportado de mi Reader (RSSOwl), quien use el mismo reader puede importarlo tranquilamente.
Hace mucho que quería hacer esto, pero por una cosa o por otra no lo hacia, hoy me puse las pilas tiré un par de lineas en Ruby (4 exactamente) y generé el HTML parseando con un RegEx muy muy pedorra el xml que exporta el RSSOwl, asi que aca está.
Carol Jones
Autor : Carol Jones
Comentario : Es Fellow de IBM, la tiene muy clara con Web2.0 y herramientas de colaboración. No actualiza mucho el blog
Bill Higgins
Autor : Bill Higgins
Comentario : Es un grande, sabe mucho de RIA/AJAX y más también, es el típico Geek que cuando habla de tecnología se le debe caer la baba ;)
Ali Arsanjani
Autor : Ali Arsanjani
Comentario : Un groso de IBM, en teoría es la persona que más sabe de SOA en IBM, pronto lo voy a conocer personalmente ya que va a venir a un curso en Argentina. No actualiza mucho el blog
Enterprise Integration Patterns: Gregor's Ramblings
Autor : Gregor Hohpe
Comentario : Debe ser uno de los que más sabe de integración, actualmente trabaja en Google, escribió el mejor libro de EAI que existe hasta el momento en conjunto con Bobby Wolf. No actualiza mucho el blog
Loud Thinking - DHH
Autor : Loud Thinking - DHH
Comentario : Un groso, creador del framework Web Ruby on Rails, con solo 26 años...
luciano's blog
Autor : Luciano Bello
Comentario : Un loco lindo... aparte de leer su blog, lo conozco bastante. Es un excelente escritor y Taliban del software libre, no tiene que ver mucho con mi palo pero es interesante leer sobre su experiencia sobre developer de Debian y más
.: Manageability :.
Autor : Carlos E. Perez
Comentario : El mejor Blog de todos, habla sobre Diseño, Arquitectura y Programación, escribe muy bien y actualiza muy seguido.
Martin Fowler's Bliki
Autor : Martin Fowler's Bliki
Comentario : Que puedo decir, es uno de los mejores escritores sobre Arquitectura, Metodologías, Diseño y Programación, si bien actualiza muy seguido aveces me pone frenetico
Grady - Handbook of Software Architecture
Autor : Grady Booch
Comentario : Que puedo decir de Gardy?, un grande, tambien Fellow en IBM, actualiza seguido y te mantiene al tanto de lo que pasa en el software en general, no baja para nada al detalle.
Joel on Software
Autor : Joel Spolsky
Comentario : Excelente escritor y gran técnico. Me gusta leer mucho su blog tiene algunos post que hasta se publicaron en libros. Es el blog de software más leido en todo el mundo
Venkatesh Krishnamurthys Architecture NotesNA
Autor : Venkatesh Krishnamurthys
Comentario : Le acabo de agregar me gustó el título y un par de post.
developer.* Blogs
Autor : developer.* Blogs
Comentario : Son muchos desarrolladores en general actulizan seguido y hablan de Diseño, Arquitectura y Programación en general
Paddle Like Hell
Autor : Bruce Tate
Comentario : Un excelente escritor exhiliado de Java y ahora evangelizador de Ruby y RoR. Me gusta mucho su manera de escribir y hablar. Publicó muchos libros y una excelente serie en developerWorks llamada "Crossing Borders"
Artima
Autor : Varios
Comentario : Al igual que .Developers, son varios que postean, aunque ultimamente está bajando la cantidad y calidad de sus post, el sitio es muy interesante. Diseño y Programacion.
Blog Blah Blah Architecture
Autor : Mario Cardinal
Comentario : A este blog llegué despues de escuchar muchos de sus podcast que estuvieron geniales, aunque el blog se actuliza muy poco a veces postea cosas interesantes de arquitectura y tecnología. Aunque a veces los post son Francés
Michael Feathers' Weblog
Autor : Michael Feathers
Comentario : Un groso! Es el autor de uno de los mejores libros que leí "Working Effective with Legacy Code". Aunque ultimamente no postea mucho, hay que tenerlo siempre ahi. Ya que cuando postea, la calidad es increible. Mucho de Diseño y TDD
Andi's Blog
Autor : Andy Hunt
Comentario : Creador de la serie de libros "Pragmatic Programmers", con eso digo todo :). No actualiza mucho su blog
The Pragmatic ArchitectNA
Autor : Varios
Comentario : Recien lo acabo de agregar, el título y algunos post me gustaron
DaveAstels.com
Autor : Dave Astels
Comentario : Creador del framework rSpec para BDD en Ruby, me gusta como escribe y publicó uno de los mejores libros de TDD. Ultimamente con la salida del PSIII y Wii no para de postear sobre eso, con lo cual su blog está decayendo mucho.
PragDave
Autor : Dave Thomas
Comentario : Creador de la serie de libros "Pragmatic Programmers", con eso digo todo :). No actualiza mucho su blog. Antes generalmente hablaba de TDD y Ruby/RoR
ambysoft at Yahoo! Groups
Autor : Scott Ambler
Comentario : IT Architect de IBM y excelente escritor, publicó millones de libros, aunque por ahora no leí ninguno de el, tengo en mi backlog de libros varios para arrancar. Generalmente hablar de Aruitectura, Metodologías y Diseño. Lo malo del blog es que no baja el contenido en el RSS, tenes que entrar si o si por web y con user/pass
Mike Does Tech
Autor : Mike Pence
Comentario : Programador independiente que la tiene muy clara con Ruby/RoR, tiene muy buenos posts
Java Competence Centre LogicaCMG
Autor : Varios
Comentario : It's all about Java Technology! No actualiza muy seguido.
Joe Walker's Blog
Autor : Joe Walker
Comentario : Creador de uno de los frameworks mas interesante de AJAX llamado DWR. Me gusta mucho como escribe y está on top de toda la tecnolgia AJAX, la verdad que la tiene muy clara, habla mucho de diseño, arquitectura de UI y programación.
Agregarían alguno/s más?