Archive for the '2706' Category

Aventuras de Programación Extrema en C#

Monday, November 2nd, 2009

El viernes pasado estuve visitando las oficinas del Microsoft User Group de Argentina, acá en Buenos Aires. Tenía que dictar un curso de .NET, pero hubo un corte de luz (al parecer frecuente en estos días de alta temperatura; Buenos Aires está sufriendo cortes de luz, mucha carga en los aires acondicionados creo). Ni lerdo ni perezoso, me entretuve unas horas aprovechándome de la biblioteca del MUG, sobre la que tendría que postear más. Los socios del MUG tienen acceso a los volúmenes de la biblioteca, y hay libros de temas como Windows Server, programación .NET, Test Driven Development, programación en general, desarrollo web y más.

Así que, no teniendo más deberes de los que ocuparme ni más preocupaciones en el alma (como Descartes ante la estufa… :-), me dediqué a la lectura. Estuve leyendo un libro de ASP.NET 3.5 (no tengo el autor acá), estuve hojeando el clásico “Práctica de la Programación” de Kernighan y  y estaba por encarar el Sistemas Operativos de Tanenbaum (al que sigo desde las primeros avisos en la Dr.Dobbs, al principio de los ochenta, sobre compiladores multilenguajes). Pero un libro me llamó la atención, había sido devuelto a la biblioteca el jueves, por el bueno de @lmpetek: el Extreme Programming Adventures in C#

Excelente libro, escrito por Ron Jeffries, acreditado XPer, uno de los tres “fundadores” de XP (Extreme Programming), junto con Ken Beck y Ward Cunningham. Pueden seguirlo en Twitter por @RonJeffries. Leo en la página del libro en Microsoft Press:

See how eXtreme Programming (XP) works—and learn Microsoft .NET and C# programming in the process!
See eXtreme Programming (XP) in action at the hands of an XP master—and learn Microsoft .NET and C# programming in the process! In this fast-paced, hands-on exposition, Ron Jeffries—one of the leading voices and practitioners in the XP community—demonstrates that you can write well-designed, resilient code incrementally and safely, while minimizing your investment in speculative up-front design. As Jeffries builds his sample application, you get firsthand insights into what successful XP development looks like, complete with real-world challenges such as the eleventh-hour change order. For further practice and study, you can download all the author’s code—including the missteps—so you can see XP and agile concepts in action and assess how they fit into your own work.Pair program with an XP master, discovering how to:

  • Streamline and simplify the software development process
  • Work more effectively as part of an XP development team
  • Reduce missteps by designing, testing, and refining code in increments
  • Receive clearer specifications and feedback from customers
  • Write cleaner, more expressive code—and weed out more bugs
  • Conserve resources by planning and reassessing progress as you go
  • Maintain a sustainable work pace—and avoid burnout
  • Step up delivery dates, shipping the most crucial features first
  • Improve customer satisfaction!

    Jeffries va explicando, cómo un equipo de dos personas (uno es él mismo) van aprendiendo sobre C#, .NET, mientras desarrollan el software XMLNotepad. Es muy interesante de leer, porque explica paso a paso lo que van haciendo: cómo hacen spikes, pequeñas exploraciones, luego vuelven a tests, avanzan poco a poco, escriben y se ponen de acuerdo con los tests de aceptación, las historias de usuario, cómo generan un modelo testeable, mockean parte de la interfaz de usuario, etc. Si Uds. tienen dudas sobre cómo es el desarrollo con Programación Extrema, si quiere conocer los detalles de un caso concreto, éste es el libro. Pueden aprovecharlo, sepan o no C#: la parte técnica no es la más importante, es la explicación detallada la que hace de este libro, un excelente recurso.

    Hmm… ya va siendo hora de tener un sistema de biblioteca para el MUG, no? Podríamos armarlo usando XP… 🙂

    Nos leemos!

    Angel “Java” Lopez
    http://www.ajlopez.com
    http://twitter.com/ajlopez

  • Esos raros lenguajes nuevos: aprendiendo Python

    Wednesday, July 2nd, 2008

    En mi post del domingo pasado

    Tato Bores y el desarrollo de software

    no incluí a nadie de Python. Bueno, ya voy a agregar algo y de otros lenguajes y tecnologías. La semana pasada, el bueno de Daniel Ajoy pasó esta información en una lista dedicada al lenguaje Logo:

    Inventa tu propio juego en Python

    http://pythonbook.coffeeghost.net/

    Según el autor Al Sweigart:

    “Invent Your Own Computer Games with Python” is a free e-Book that teaches you how to program in the Python programming language. Each chapter gives you the source code for a new game, along with an explanation of how each line works.

    IYOCGwP (“eye-yawk-gwip”) is designed to be understandable by 9 to 12 year olds, although teenagers and adults with no previous programming experience can use it to teach themselves programming as well.

    Se puede bajar en PDF o verlo en línea como HTML. Todavía no lo leí completo, pero por el vistazo que le di, parece interesante para comenzar a programar. Muchas veces me pregunta gente que no es “del gremio” cómo comenzar a programar. El lenguaje Python (bastante poderoso, ver también Ruby) puede ser usado a un nivel básico, sin necesidad de tener que aprender una sintaxis muy complicada. Con la llegada de estos lenguajes a las máquinas virtuales de Java y .NET, tenemos todavía más uso para estos “nuevos lenguajes”, que igualmente tienen años de desarrollo.

    Hoy, ya no somos “programadores del lenguaje X”. Somos desarrolladores de software, con conocimientos de arquitectura, ingeniería de software, manejo de equipo, comunicación interpersonal, y actitudes ágiles. Aprender un lenguaje nuevo nos entrena la neurona y nos abre a nuevas perspectivas.

    Nos leemos!

    Angel “Java” Lopez
    http://www.ajlopez.com/

    Libro Foundation of Programming, listo para bajar

    Wednesday, June 25th, 2008

    Gracias a Cladio M.E. Bastos Iorio de http://www.blumer.com.ar me entero de la aparición de este libro. Claudio posteó la información en una lista pública del MUG de Argentina (http://www.mug.org.ar/ ):

    Foundations of Programming Ebook

     

    I’m excitted to finally release the official, and completely free, Foundations of Programming EBook. This essentially contains all 9 Foundation parts including a conclusion and some typical book fluff (table of content, acknowledgement and so on). A number of spelling errors were corrected, along with some small technical changes and clarifications – largely based on feedback, so thanks for everyone who provided it! Otherwise it’s exactly the same as what’s been posted here over the past several months.

    Download it from http://codebetter.com/files/folders/codebetter_downloads/entry179694.aspx

    If the above link fails, you can also get it from http://www.openmymind.net/FoundationsOfProgramming.pdf

    Acabo de leer el índice, y de leer algunos capítulos rápidamente. Es muy interesante los temas que toca, y parece bien encarados. El bueno de Karl Seguin ha hecho un magnífico trabajo, colocando en un solo libro temas que nos tocan en el desarrollo de software de todos los días. Si bien está algo orientado a .NET, es totalmente aprovechable en otras tecnologías, como Java. El texto había ido apareciendo en los últimos meses, en forma de posts, y revisado por colegas, en general dentro del movimiento ALT.NET, así que el trabajo de Seguin se ha enriquecido con los comentarios de la comunidad de desarrollo.

    Sobre el autor

    Karl Seguin is a developer at Fuel Industries, a former Microsoft MVP, a member of the influential CodeBetter.com community and an editor for DotNetSlackers. He has written numerous articles and is an active member of various Microsoft public newsgroups. He lives in Ottawa, Ontario Canada.

    His personal webpage is: http://www.openmymind.net/

    His blog, along with that of a number of distinguished professionals, is located at: http://www.codebetter.com/

    Enumero algunos temas tratados:

    – El movimiento ALT.NET, enumerando y desarrollando sus pilares, algo confrontados con la visión MSDN

    – Domain-Driven Design, explicando los términos, y justamente, explicando cuándo usarlo y cuándo no, cuál es el contraste con una aproximación Data-Centric.

    – Persistencia, algo con lo que lidiamos en prácticamente cada proyecto.

    – Dependency Injection, una de las mejores técnicas inventadas, desde que alguien dijo que el pan tenía que venir en rebanadas.

    – Unit Testing, indispensable en el bolso de la desarrolladora y en el bolsillo del caballero desarrollador. Hay días en los que pienso que hasta el Hello World de Kernighan y Ritchie debería tener su Unit Test.

    – Object Relational Mappers, todo un capítulo explicando la idea y algunas implementaciones, usando NHibernate.

    – Manejo de memoria, un back to basics que veo necesario, como comento en mis cursos.

    – Excepciones, otro back to basics que se debe explicar.

    – Proxy, tengo que ver en detalle este capítulo, para ver hasta dónde llega la idea del autor.

    El libro también viene acompañado de código, con ejemplos de los temas tratados, por ejemplo, las formas de usar NHibernate, documentando sus características. Lo pueden bajar desde:

    http://openmymind.net/CodeBetter.Foundations.zip

    Nos leemos!

    Angel “Java” Lopez
    http://www.ajlopez.com/

    Libros gratis de computación en Internet

    Tuesday, May 20th, 2008

    ATENCION, actualización: no sé cuál es el estado legal de este sitio, ver

    http://www.pdfchm.com/terms/

    donde se amparan en legislación de Rusia. ¿Alguien tiene información al respecto? ¿Enlaces de “complaints” de las editoriales? No encontré nada… No sé como usan www.postget.net como repositorio, sin que nadie les diga nada….

    Mientras, alguien preguntó en Yahoo Answers, sobre sitios como éste:

    http://answers.yahoo.com/question/index?qid=20070904044624AANWDPf

    Sigue por ahora el post original:

    Desde hace unas semanas estoy usando los servicios de

    http://www.pdfchm.com

    Hay de otros temas, pero en mi perfil, aparecen “computer books” de todo tipo. Semanalmente, me envían por email una lista de novedades, estas son las de esta semana:

    Dear Angel Lopez.

    You have received this letter because are signed on subscription.

    In the text presented below, weekly news of the site www.pdfchm.com according to your current subscription:

    Neural Networks and Pattern Recognition (Academic Press, 1998, English)
    http://www.pdfchm.com/book/?book=10823

    Scaling Software Agility: Best Practices for Large Enterprises (The Agile Software Development Series) (Addison Wesley, 2007, English)
    http://www.pdfchm.com/book/?book=10826

    Beginning VB 2008 Databases: From Novice to Professional (Apress, 2008, English)
    http://www.pdfchm.com/book/?book=10806

    Google Maps Mashups with Google Mapplets (Firstpress) (Apress, 2008, English)
    http://www.pdfchm.com/book/?book=10797

    Packet Forwarding Technologies (Auerbach Publications, 2007, English)
    http://www.pdfchm.com/book/?book=10800

    Full Frontal PR: Getting People Talking about You, Your Business, or Your Product (Bloomberg Press, 2003, English)
    http://www.pdfchm.com/book/?book=10831

    Putting Investors First: Real Solutions for Better Corporate Governance (Bloomberg Press, 2003, English)
    http://www.pdfchm.com/book/?book=10830

    The Value Factor: How Global Leaders Use Information for Growth and Competitive Advantage (Bloomberg Press, 2004, English)
    http://www.pdfchm.com/book/?book=10832

    What Can You Do with a Major in Biology: Real people. Real jobs. Real rewards (Cliffs Notes, 2005, English)
    http://www.pdfchm.com/book/?book=10816

    What Can You Do with a Major in Business: Real people. Real jobs. Real rewards (Cliffs Notes, 2005, English)
    http://www.pdfchm.com/book/?book=10817

    DVD Authoring and Production (CMP Books, 2001, English)
    http://www.pdfchm.com/book/?book=10827

    Multiplayer Game Programming w/CD (Prima Tech’s Game Development) (Course Technology PTR, 2002, English)
    http://www.pdfchm.com/book/?book=10822

    Renaissance and Reformation: Almanac Edition 1. (Gale, 2002, English)
    http://www.pdfchm.com/book/?book=10803

    Working Identity: Unconventional Strategies for Reinventing Your Career (Harvard Business School, 2003, English)
    http://www.pdfchm.com/book/?book=10801

    Linux Transfer for Windows Power Users: Getting Started with Linux for the Desktop (Hentzenwerke Publishing, 2004, English)
    http://www.pdfchm.com/book/?book=10824

    Genetic and Evolutionary Computation for Image Processing and Analysis (EURASIP Book Series on Signal Processing and Communications) (Hindawi Publishing, 2008, English)
    http://www.pdfchm.com/book/?book=10836

    Good Cat!: A Proven Guide to Successful Litter Box Use and Problem Solving (Howell Book House, 2004, English)
    http://www.pdfchm.com/book/?book=10821

    IBM Pseries Sizing And Capacity Planning: A Practical Guide (IBM Redbooks) (IBM Press, 2004, English)
    http://www.pdfchm.com/book/?book=10839

    The Edgar Online Guide to Decoding Financial Statements: Tips, Tools, and Techniques for Becoming a Savvy Investor (J. Ross Publishing, Inc, 2004, English)
    http://www.pdfchm.com/book/?book=10810

    The IAF Handbook of Group Facilitation: Best Practices from the Leading Organization in Facilitation (Jossey-Bass, 2005, English)
    http://www.pdfchm.com/book/?book=10798

    Information Science in Theory and Practice (K. G. Saur, 2004, English)
    http://www.pdfchm.com/book/?book=10820

    Google Apps Hacks (Make Books, 2008, English)
    http://www.pdfchm.com/book/?book=10835

    How to Do Everything with YouTube (McGraw-Hill, 2007, English)
    http://www.pdfchm.com/book/?book=10841

    Application Design for Wearable Computing (Synthesis Lectures on Mobile and Pervasive Computing) (Morgan and Claypool Publishers, 2008, English)
    http://www.pdfchm.com/book/?book=10805

    Controlling Energy Demands in Mobile Computing Systems (Synthesis Lectures on Mobile and Pervasive Computing) (Morgan and Claypool Publishers, 2007, English)
    http://www.pdfchm.com/book/?book=10807

    GPU-Based Techniques for Global Illumination Effects (Synthesis Lectures on Computer Graphics) (Morgan and Claypool Publishers, 2008, English)
    http://www.pdfchm.com/book/?book=10829

    Light Field Sampling (Synthesis Lectures on Image, Video, and Multimedia Processing) (Morgan and Claypool Publishers, 2006, English)
    http://www.pdfchm.com/book/?book=10799

    RFID Explained (Synthesis Lectures on Mobile and Pervasive Computing) (Morgan and Claypool Publishers, 2006, English)
    http://www.pdfchm.com/book/?book=10804

    Big Book of Windows Hacks (O’Reilly, 2007, English)
    http://www.pdfchm.com/book/?book=10833

    Make Projects: Small Form Factor PCs (O’Reilly, 2008, English)
    http://www.pdfchm.com/book/?book=10825

    Managing Software Development with Trac and Subversion (Packt Publishing, 2007, English)
    http://www.pdfchm.com/book/?book=10809

    Network Administration with FreeBSD (Packt Publishing, 2008, English)
    http://www.pdfchm.com/book/?book=10808

    PHP 6 and MySQL 5 for Dynamic Web Sites: Visual QuickPro Guide (Peachpit Press, 2007, English)
    http://www.pdfchm.com/book/?book=10840

    Professional SQL Server 2000 DTS (Data Transformation Service) (Peer Information Inc, 2000, English)
    http://www.pdfchm.com/book/?book=10813

    Running Xen: A Hands-On Guide to the Art of Virtualization (Prentice Hall, 2008, English)
    http://www.pdfchm.com/book/?book=10837

    Special Edition Using Microsoft Windows Vista (2nd Edition) (Que, 2008, English)
    http://www.pdfchm.com/book/?book=10828

    OCP Instructors Guide for Oracle DBA Certification: A Study Guide to Advanced Oracle Certified Professional Database Administration Techniques (Rampant Techpress, 2004, English)
    http://www.pdfchm.com/book/?book=10834

    Teach Yourself Cobol in 21 Days (Sams Teach Yourself) (Sams Publishing, 1997, English)
    http://www.pdfchm.com/book/?book=10838

    Current Pediatric Therapy (Current Therapy) (Saunders, 2006, English)
    http://www.pdfchm.com/book/?book=10802

    Dialogue Processing in Spoken Language Systems: ECAI’96, Workshop, Budapest, Hungary, August 13, 1996, Revised Papers (Springer, 1997, English)
    http://www.pdfchm.com/book/?book=10818

    Software Engineering with Reusable Components (Springer, 2001, English)
    http://www.pdfchm.com/book/?book=10815

    MATLAB Programming for Engineers (Thomson Delmar Learning, 2001, English)
    http://www.pdfchm.com/book/?book=10819

    Security Modeling And Analysis of Mobile Agent Systems (Electrical and Computer Engineering) (World Scientific Publishing, 2006, English)
    http://www.pdfchm.com/book/?book=10814

    With best regards, PDFCHM Team.

    To operate your subscription you can login into your account on the site http://www.pdfchm.com/

    Algunos libros más, en mi post no técnico, orientado a otros temas y libros que me interesaron:

    Libros gratis para bajarse en Internet

    ¿Tienen otros sitios como éste?

    Nos leemos!

    Angel “Java” Lopez
    http://www.ajlopez.com/

    Software Fortresses

    Sunday, August 12th, 2007

    Software Fortresses (podríamos traducirlo Fortalezas de Software), es el libro más conocido de Roger Sessions, del que pueden conocer más visitando su sitio:

    http://www.objectwatch.com

    en especial sus “white papers”

    http://www.objectwatch.com/white_papers.htm

    (el de junio de 2003 es el más cercano al libro que vamos a discutir). Publica la ObjecWatch Newsletter, que en el tiempo de publicación del libro (año 2003) era recibida por correo electrónico por más de 20000 suscriptores.

    Roger Sessions es un experto en arquitecturas de software de empresa, y el creador del modelo presentado en el libro, el modelo Software Fortress. Veamos un resumen de lo que quiere presentarnos.

    Es interesante el prefacio, donde Sessions le pregunta al lector, presunto arquitecto, cuál es la arquitectura del software que tiene armada en la empresa. Se imagina que recibe como respuesta una arquitectura en 3 o n-capas, totalmente ordenada y pensada. Contesta: “Mientes, yo sé cuál es tu arquitectura”. Y pasa a imaginar un “mess”, una mezcla de servidores, bases de datos, aplicaciones web, atadas con alambre diríamos en Argentina, que apenas se sostiene, y que fue creciendo con el tiempo, de forma caótica.

    De ahí en más, se dedica presentarnos su modelo.

    Un cuestionario que presenta en el capítulo 1, hace un relevo de la situación del lector:

    1. Su compañía tiene docenas de sistemas desarrollados independientemente, algunos armados, otros comprados, otros adquiridos por fusiones con otras empresa. Y algunos, no sabe de dónde vinieron.

    2. Sus sistemas están interrelacionados de una forma tan compleja, que no puede predecir las consecuencias de un cambio o las ramificaciones de una posible falla.

    3. Tiene discusiones “religiosas” sobre tecnología. Que Java sí, que .NET no. Ninguna de las dos partes se comunica bien con la otra.

    4. Los departamentos de su compañía no confían en los datos del otro, así que duplican esfuerzo y trabajo.

    5. Las bases de datos están hechas una mezcolanza de datos. Cada departamento tiene sus propios datos, sus propios administradores de bases de datos, y sus propias ideas de cómo manejar la seguridad de esos datos.

    6. Su compañía tiene miedo de conectarse a Internet. Tienen información de misión crítica y privada que no quieren exponer o comprometer hacia afuera.

    7. Tiene sistemas “legacy” de los que dependen, pero tiene miedo de cambiarlos. Algunos no los cambia por lo frágiles que son, otros porque fueron construídos por empresas que ya no están en el mercado, o porque el desarrollador original pasó a mejor vida, y hasta de algunos no tiene el código fuente.

    Si contesta SI a por lo menos 5 de estas preguntas, felicitaciones, no está solo, y éste es su libro.

    Algunas definiciones

    Definition: Software Fortress

    A software fortress is a conglomerate of software systems serving a common purpose and typically owned by a cohesive group of individuals. These software systems work together in a tight trust relantionship to provide consistent and meaninful functionality to a hostile outside world.

    Esto incluye detalles técnicos y organizacionales. Desde el punto de vista técnico, una fortaleza de software es un conjunto de sistemas, que pueden ser procesos, servicios, componentes de lógica de negocio, bases de datos.

    Desde el punto de vista organizacional, la fortaleza de software agrupa a las personas que trabajan juntas, que tienen un razonable conocimiento de qué está trabajando cada uno, tienen confianza en los sistemas que arman y operan. Es un pequeño departamento de IT dentro de la empresa.

    Sessions comienza entonces a desarrollar la idea que el software de una empresa debe organizarse conectando estas fortalezas de software. Adopta una serie de íconos para representar a las fortalezas, y los elementos que pueden adosárseles, para tener un dibujo, una diagrama entendible que describa cada fortaleza.

    El libro se dedica a la parte técnica de esos elementos, y lo que Sessions y cía, han descubierto o proponen, como elementos de las distintas fortalezas.

    Definition: Software Fortress Architecture

    A software fortress architecture is an enterprise architecture consisting of a series of self-contained, mutually suspicios, marginally cooperating software fortresses interacting through carefully crafted and meticulously managed treaty relantionships.

    Definition: Software Fortress Model

    The software fortress model is a methodology consisting of specific algorithms, categories of technologies, and documentation techniques that together can be used to model and build enterprise systems as software fortress architectures.

    Un diagrama de ejemplo de fortaleza:

    Algunos de los elementos propuestos, cada uno de los cuales tiene su ícono:

    – Las paredes (walls) de una fortaleza están diseñadas para prevenir cualquier comunicación con el exterior, a menos que pase por los canales aprobados

    – Los canales apropiados son los puentes levadizos (drawbridges) y son vigilados por guardias (guards).

    – Los diplomáticos (envoys) preparan la comunicación entre fortalezas.

    – Un baúl de datos (data strongbox) representa la colección de datos persistidos que se usan dentro de la fortaleza.

    De ahí en más, Sessions va describiendo cada uno de estos elementos, metafóricos, trasladados a tecnologías, explicando las implementaciones y la razón de ser de cada elemento.

    Los íconos que se colocan dentro de cada fortaleza, los llama trabajadores (workers). Utiliza una librería de gráficos:

    http://www.novadevelopment.com/Products/us/aqw/default.aspx

    donde aparecen vikingos, guardias, hadas, dinosaurios (representan sistemas “legacy”), brujos, y directores de orquesta, cada uno de los cuales va adosado a un concepto de Sessions.

    Algunos tipos de fortalezas

    Business application fortress (BAF), donde corre el negocio. Por ejemplo, el control de inventario.

    Treaty management fortress (TMF) que maneja la relación con otras fortalezas

    Legacy fortress (LF) con un dinosaurio dentro, representando alguna aplicación antigua.

    Presentation fortress (PF) representadas por un caballete de pintor, típica para un servidor o granja de servidores web.

    Web service fortress (WSF) representadas por un mago, son responsables de atender pedidos de funciones vía Internet.

    Service fortress (SF) es una de sus últimas adiciones al modelo, representadas por un hada, provee servicios a otras fortalezas.

    Algunas fortalezas pueden tener varios íconos dentro.

    Lo nuevo de Sessions, es presentar todos estos elementos en fortalezas. Propone que todos los sistemas, en vez de estar conectados de forma difuso, se organicen en fortalezas, donde los puntos de entrada, la seguridad, lo que exponen y consumen, está específicamente determinado por los puntos de entradas (puentes levadizos), guardias, y demás elementos. Esa es la “vuelta de tuerca” que propone. Pueden ver más detalle en el libro o en “paper” mencionado más arriba.

    Resumen de los capítulos

    Capítulo 2: Diagramming Software Fortresses

    Presenta en más detalle los diagramas, algunos instrumentos de texto como la declaración de un tratado, y los tipos de fortaleza más frecuentes y sus documentos asociados.

    Capítulo 3: Transactions

    Explicita el tema tan importante de transacciones, explica qué son los recursos “trancsactionally aware”, que participan de transacciones. Si los recursos a participar de una trasacción se encuentran separados, aparece la figura del Distributed Transaction Coordinator (DTC).

    Capítulo 4: Drawbridges

    Son las tuberías por las que fluye la información de fortaleza a fortaleza. Es un punto de entrada definido a una fortaleza. Intervienen los diplomáticos para preparar el mensaje, los guardias para ver de dejar entrar un mensaje o no. Luego discute distintas tecnologías, como sobres SOAP, COM+, Enterprise JavaBeans, que pueden usarse como base de estos puentes de comunicación. Como tema importante, lo subdivide en los dos siguientes capítulos.

    Capítulo 5: Synchronous Drawbridges

    Es un canal donde el que llama espera una respuesta inmediata, como si fuera un llamada a función. Sessions destaca que la tecnología de puentes sincrónicos se basa en componentes. Hay un “objeto” (no necesariamente un objeto, pero es frecuente) remoto que expone una interfaz, y se ve opaco desde el cliente. Plantea el problema de que históricamente, surgieron tecnologías homogéneas, que sólo permiten comunicar dos partes de la misma tecnología, pero en los últimos años surgieron, ante la necesidad de interoperabilidad, las tecnologías heterogéneas. Se deben resolver problemas como la seguridad automática (el cliente debe “aparecer” de alguna forma en el servidor llamado), manejo de instancias (cuándo un componente nace, y cuándo se libera) y el flujo de transacciones (cuándo una transacción aparece, y se expande, y cuándo viene distribuida).

    Capítulo 6: Asynchronous Drawbridges

    En situaciones donde el mensaje enviado no necesita una respuesta inmediata, se pueden usar puentes asincrónicos, donde la respuesta puede venir mucho más adelante en el tiempo. Acá, históricamente se han implementado con colas de mensajería. Se discute el tema transacciones en las colas, la persistencia de los mensajes, y la posibilidad de que el mensaje tenga varios destinatarios. De nuevo aparece el problema de puentes homogéneos y heterogéneos.

    Capítulo 7: Guards and Walls

    Las paredes impiden el acceso a la fortaleza. Los guardias lo permiten. El arquitecto de la fortaleza es responsable de ver cuán selectivo será un guardia y qué tecnologías se usarán para implementar esa selectividad. Se discuten los temas de: fortificación, validación, auditoría, autenticación, privacía, integridad, no repudiación, autorización.

    Fortificación se refiere a la habilidad de la fortaleza de prevenir la entrada a la misma, excepto a través de los puentes.

    Validación es el control y recontrol de las entradas provistas por el exterior o el usuario.

    Auditoría es la habilidad de trazar todos los cambios al estado interno de la fortaleza.

    Autenticación es el procedimiento que se usa para convencer al guardia de quién está tratando de acceder.

    Privacía es la capacidad de enviar información de tal manera que no pueda ser leída por usuarios no autorizados.

    Integridad se asegura que la información en ruta no sea cambiada.

    No repudiación se refiere a la capacidad de probar más adelante en el tiempo que tal informacion vino de tal origen.

    Autorización es la habilidad de determinar, en base a la información que viene en el pedido (no según la fortaleza que lo pide) si su ejecución pedido puede ser permitida.

    Capítulo 8: Treaties

    Son los tratados, acuerdos formales entre fortalezas que definen cómo trabajaran entre ellas.

    Capítulo 9: General Fortress Issues

    Se tratan temas como escalabilidad. Una fortaleza es escalable si su unidad de costo de atender un pedido, es lo suficientemente baja para no perder una ganancia. Si cada pedido implica una pérdida, debería acotarse la cantidad de pedidos a atender. Otra condición para la escalabilidad es que podamos incrementar la carga de trabajo de un proceso, ya sea con mejores servidores (scale-up) o agregando servidores (scale-out).

    Otro tema es la “reliability”, la confianza que tenemos en poder contar con la fortaleza cuando la necesitemos. Y finalmente, la integridad. Una fortaleza es diseñada para proveer una alta integridad si no hay nada que la dañe o la deje en un estado incompleto, aún ante el fallo de otras fortalezas.

    Capítulo 10: Internet Fortresses

    El tema Internet merece un capítulo aparte. Las fortalezas de presentación y de servicios web pueden ser expuestas, por ejemplo, en una zona desmilitarizada, y comunicarse de formas específicas con el resto de la empresa. Se discuten tecnologías como ASP, JSP, ASP.NET, el tema de la escalibidad (con un cluster, por ejemplo, scale-out), seguridad, como el uso de firewalls, zonas desmilitarizadas, usar servidores de presentación con sólo algunas características activadas; disponibilidad, integridad, y las tecnologías de servicios web, con los mismos temas.

    Capítulo 11: Business Application Fortresses

    Son el pan y manteca de la empresa. Son los que “hacen el dinero”. Son los procesos de contabilidad, las compras, ventas. Merecen nuestro respeto y gratitud. Se discuten componentes, manejo de estado, fronteras de transacciones y su manejo, el apalancamiento de “clusters”, Java vs .NET, y hasta el costo.

    Capítulo 12: Legacy, Service, and Treaty Management Fortresses

    Un capítulo con varios temas. Por un lado, los sistemas “legacy”. Aparecen los servicios, como por ejemplo, el “broadcast service”, cómo un “publisher” envía un mensaje a varios suscriptores. Las fortalezas de manejo de tratados manejan las relaciones complejas entre tres o más fortalezas.

    Capítulo 13: Software Fortress Design Review

    Presenta 25 preguntas que se deben realizar durante el diseño de una solución de fortalezas de software. Son tres grupos: para gerentes de nivel empresarial, para arquitectos de nivel empresarial, y para arquitectos y diseñadores de fortalezas individuales.

    Capítulo 14: Case Study

    Finalmente, se presenta un caso de estudio, una empresa que vende por Internet. Se plantea el uso de iteraciones en el desarrollo, en este caso se usan dos. Se usan documentos para analizar la complejidad de la arquitectura a armar.

    Capítulo 15: Postlude

    Presenta diez puntos importantes sobre fortalezas de software, y diez puntos para adoptar el modelo Sessions, más diez reglas para su diseño, y diez ideas controversiales del modelo (como poner en segundo lugar el rendimiento, y que los guardias son los encargados de la seguridad, y luego en la fortaleza se puede hacer lo que se quiera). Aparecen diez consideraciones para evaluar J2EE vs .NET, como si necesita o no ejecutar en un ambiente no Windows. Y diez observaciones sobre el estado de la industria del software, notablemente una: la industria del software no tiene un modelo conceptual para construir sistemas empresariales.

    Se agradece al final la presencia de un glosario, que nos permite entender cada término presentado.

    Conclusión

    Es un libro para leer, y sacar algunas ideas. No todos tenemos que lidiar con todos los problemas presentados, pero me gusta el libro porque presenta eso: problemas. Luego, abstraidos de las soluciones tecnológicas, son mejor entendidos. Creo que muchos estudiamos tecnologías, sin tener en claro cuáles son los problemas que solucionan, y las razones, las causas de la aparición de esos problemas. Los conceptos de Sessions permiten tener claro esos temas, y luego, como adicional, menciona y describe las capacidades de las tecnologías disponibles para resolver esos problemas. Es un libro para aclarar la mente.

    Gracias a la biblioteca de SouthWorks, pude leerlo y comentarlo acá.

    Nos leemos!

    Angel “Java” Lopez
    http://www.ajlopez.com/

    Los libros de Martín Salías

    Saturday, March 3rd, 2007

    El bueno de Martín Salías siempre se ha caracterizado por su amabilidad, y su disposición a compartir todo lo que conoce, desde arquitectura de software hasta sus opiniones sobre Virilio. Al contrario de mí, que no me desprendo de mis libros (me temo que son mi debilidad), él los ofrece a sus compañeros de trabajo, y aún más, a los socios del Microsoft User Groups de Argentina: un santo varón 🙂

    Independientemente de si Ud. cae en algunas de esas categorías, le recomiendo una visita a la lista de libros

    Technical Bookshelf

    Hay de todo: inteligencia artificial, historia de la computación, el venerable FoxPro, arquitectura de software, sistemas operativos, .NET y ASP.NET, objetos, XML, metodologías ágiles, y más….

    Pasen, vean y tomen!

    Nos leemos!

    Angel “Java” Lopez
    http://www.ajlopez.com/

    Libros gratuitos de programación

    Monday, December 18th, 2006

    Desde el sitio


    http://www.vebook.org


    he podido bajarme libros de programación de distintos temas, como ASP, ASP.NET, Java, PHP.


    Nos leemos!


    Angel “Java” Lopez
    http://www.ajlopez.com/

    Libros de JSP y Struts

    Monday, October 16th, 2006

    En un curso, me preguntaron cuáles libros recomendaría para estudiar JSP y Struts. Como en tantos temas, hay multitud de libros, pero rescataría algunos que tengo en mi biblioteca:

    Para JSP, tengo a

    Pro JSP
    Third Edition
    Simon Brow, Sam Dalton, Dan Jepp, Dave Johnson, Sing Li, Matt Raibe

    de editorial Apress. Es un libro que trata varios temas, desde los tags de JSP, pasando por la Java Standard Tag Library, la escritura de tags (el método clásico, y los nuevos métodos), JSP 2.0, el Expression Language, la configuración, seguridad de aplicaciones, servlets, variables disponibles, filtros, etc. Realmente es muy completo.

    Ahora hay una cuarta edición, que no he revisado, pero abarca JSP 2.1.

    En cuanto a Struts, la aplicación MVC de la gente de Jakarta, pueden consultar el

    Pro Jakarta Struts
    Second Edition
    John Carnell with Rob Harrop

    Es de la misma editorial Apress, y abarca la versión 1.2. Lo interesante es que plantea el tema de patrones, y explica cuáles fueron utilizados en el diseño de Struts. Abarca todos los temas, desde configuración de Struts, hasta validaciones en el cliente. Emplea tanto DAOs que van contra la base, como un backend basado en EJB. Lo aísla usando Service Locator y Business Delegate. Muy interesante todo lo que abarca.

    No vi que estuvieran editados en español. Pero podemos encontrar

    JSP Ejemplos Prácticos
    de editorial Avaya, de Andrew Patzer

    También es interesante el libro de JSP 2 del bueno de Agustín Froufe, de editorial Alfaomega-Rama, pero no he visto que se actualizara a las últimas versiones del tema.

    Angel "Java" Lopez
    http://www.ajlopez.com/