viernes, julio 03, 2009
Amsterdam Photos
jueves, junio 25, 2009
Amsterdam Trip
martes, junio 16, 2009
AOP Benefits
Muchas de las críticas sobre la metodología AOP argumenta que en muchas ocasiones es demasiado complejo.
Personalmente, creo que al igual que cuando otras metodologías dieron el salto, como por ejemplo OOP, la novedad hace de ella su principal handicap.
Algunos de los beneficios del uso de una metodología AOP:
Responsabilidades claramente diferenciadas . Cada módulo es el responsable de su funcionalidad principal; dejando a un lado los conceptos transversales (croscutting concerns). Así por ejemplo, un módulo cuyo principal cometido es implementar la lógica de acceso a datos de un sistema de ventas por internet, no tendrá que preocuparse de realizar pooling sobre la base de datos o de la transaccionalidad. Gracias a esta clara asignación de responsabilidades conseguimos una alta trazabilidad entre los requisitos y su correspondiente implementación.
Incremento de la modularidad . Utilizando AOP conseguimos manejar cada uno de los conceptos de manera independiente con un acoplamiento mínimo. Incluso aunque tengamos presentes conceptos transversales que afecten en todos los ámbitos del sistema, la implementación resultante es modular.
Retraso en las decisiones de diseño . Cuando se arquitecta un nuevo sistema siempre aparece el siguiente dilema: ¿debemos realizar un diseño sumamente complejo y detallado que intente abarcar todas las funcionalidades,incluso las futuras? o, por el contrario, ¿debemos arquiectar una solución que se corresponda con la situación actual?.
Gracias a AOP, el arquitecto de la solución, puede retrasar la toma de determinadas decisiones de diseño dado que los futuros requerimientos se implementarán en aspectos independientes.
Mejoras/Evoluciones más sencillas . AOP permite añadir una nueva funcionalidad sin más que desarrollar un nuevo aspecto (el cual no afecta al núcleo del sistema). Gracias a ello, el tiempo de respuesta ante nuevos requerimientos disminuye notablemente puesto que la implentación y diseño de los nuevos requisitos no supondrán, idealmente, una modificación del núcleo del sistema que estamos construyendo.
Reutilización del código .AOP establece cada uno de los aspectos es un módulo independiente, de modo que resultan independientes entre si. En general, cada uno de ellos no suelen tener conocimiento del resto de elementos que conforman el sistema final.
El único elemento consciente del acoplamiento entre los diferentes módulos son las reglas de tejido (weaving rules) , de modo que, si cambiamos éstas, podemos componer un sistema final completamente diferente.
- Reducción de costes. Las características descritas en los puntos anteriores generan sistemás desarrollos mucho más rápidos. Asimismo, eliminando la necesidad de modificar múltiples módulos para la implementación de un nuevo concepto que afecta al sistema completo, AOP provoca que dicha implementación sea más barata.
- Areas de conocimiento. Permitiendo que los desarrolladores estén centrados en su especialidad lograremos que el coste del desarrollo disminuya puesto que estaremos concentrando los esfuerzos.
miércoles, junio 03, 2009
Some New York Photos (I)
lunes, mayo 18, 2009
New York Holidays
miércoles, mayo 13, 2009
My last favourite ebooks
- Clean Code, A handbook of Agile Software Craftsmanship
- Programming Erlang: Software for a Concurrent World (i am reading it now)
- Refactoring in Large Software Projects: Performing Complex Restructurings Succesfully
- Equinox and Osgi: The power behind Eclipse (noy yet published)
- Eclipse Modeling Project: A domain-specific language (DSL) Toolkit
- AspectJ in Action,Second Edition (MEAP available)
- . . . . . .
lunes, abril 20, 2009
Maven next generation
Son 28 transparencias acerca del futuro de Maven, la verdad que no tienen desperdicio
Aquí os dejo también el video de la presentación:
miércoles, abril 01, 2009
Plataformas, herramientas y métodos
Otras industrias han resuelto problemas similares a los que nos ocupan descubriendo cómo, de manera ágil, se pueden personalizar y ensamblar componentes estándar de modo que se puedan construir productos iguales pero distintos, mediante la integración, estandarización y automatización de sus líneas de producción, mediante el desarrollo de herramientas altamente extensibles, configurándolas de modo que puedan realizar tareas repetitivas y minimizando el riesgo y los costes en las relaciones con los clientes y proveedores. Partiendo de este punto se han construido líneas de producción para las variantes de los productos, se han generado cadenas de suministros distrubuyendo los costes y los riesgos a lo largo de diferentes suministradores especializados y relacionados entre si, habilitando de este modo la producción de una variada gama de productos capaces de satisfacer las necesidades de un amplio abanico de clientes. En resumen, industrialización.
Mi intención no es sugerir que la construcción de software es un proceso mecánico capaz de ser llevado a cabo por trabajadores no cualificados sino que, al contrario, no se debe malgastar el tiempo de los buenos desarrolladores realizando tareas automáticas y repetitivas, de modo que dichos trabajadores puedan pasar más tiempo pensando y no realizando tareas que podrían estar automatizadas. Deberíamos de ser capaces de encapsular el conocimiento en lenguajes, patrones, dsl, herramientas, frameworks, etc de modo que se puedan aplicarl de manera sistemática, automatizando de este modo el ciclo de vida del software.
lunes, marzo 30, 2009
miércoles, diciembre 31, 2008
Año viejo, Año Nuevo
Para terminar el año, no voy a poner nada relacionado con la informática, programación,diseño, etc ni nada que se le parezca :).
Únicamente os dejo uno de los últimos vídeos de uno de los raperos españoles que más me gustan:
Un abrazo.
jueves, diciembre 25, 2008
Spring DM and Eclipse RCP
Es mi primer screencast y no tengo demasiada pericia con los programas de video, por lo que no he modificado el video para añadirle algún comentario explicativo. Probaré algún programilla como VirutalDub o las propias anotaciones disponibles en YouTube con el objetivo de ir mejorando de cara al futuro.
De momento os dejo con esta primera entrega. Espero que os guste:
En el equipo local se ve mucho mejor que colgado en la web. Desde YouTube se puede descargar el archivo original.
Hasta pronto.
