Cuando un Mal Manejo de Excepciones Impacta en la Experiencia de Usuario

boaerror
Bank of America en calzoncillos

 El usuario ya se apioló de  que usan Java sobre IBM Websphere, que se quedan cortina de memoria, no escalan, etc. Un potencial hacker, al conocer la infraestructura en la que corre, si de paso conoce vulnerabilidades de la misma puede explotarlas en detrimento del banco y/o de sus clientes. Y eventualmente, además, en su propio beneficio.

Ya había hablado de esto allá lejos por Septiembre de… 2005!! Ver Haciendo lugar a la Excepción.

Publicado en Software Architecture | 16 comentarios

Computación y Medio Ambiente: Journal 18 Recién Salido del Horno

Journal 18 en Computación Verde El Journal que acabamos de terminar  se ocupa de "Computación Sustentable". En la medida en que la computación se hace más y más omnipresente, el consumo de energía derivado crece sin techo más allá del claro llamado a reducir el consumo y revertir el llamado "efecto invernadero". Al mismo tiempo, o quizás como consecuencia de, el costo de la energía se está elevando -derivado de medidas regulatorias en la medida en que recursos naturales no renovables se van haciendo más difíciles de obtener- lo que está manteniendo a los líderes del área de TI ocupados en maximizar la eficiencia, particularmente en un contexto de recortes debido a la crisis financiera internacional

Fue un honor para mí tener a Lewis Curtis, Principal Architect del equipo de Arquitectura de Plataforma de Microsoft, como experto en la materia en este tópico y a la vez co-editor en jefe por este número. En el primer artículo (página 2), Lewis ofrece un enfoque holístico a arquitecturas más verdes, a la vez que nos ayudó a subdividir este tema en cinco perspectivas:

  • Física. El proyecto de investigación Genome, descripto en "Red de Sensores Inalámbrica para Monitoreo de Datacenters" (página 28), usa información de distribución de calor provista por una red de sensores inalámbricos para optimizar el diseño del datacenter de manera de evitar congelamiento innecesario de todo el lugar físico (cuando quizás el calor máximo se concentra sólo en algunos pocos lugares)
  • Plataforma Operativa. Los recursos de hardware se reservan frecuentemente en base a un escenario del peor caso cuya ocurrencia es esporádica. Como resultado, granjas completas pueden estar subutilizadas en un 90%. El artículo de Mark Pohto sobre un caso de estudio ocurrido en Microsoft TI (MSIT), consolidando servidores SQL Server (página 35) destaca virtualización de entornos y otras tácticas de consolidación
  • Inteligencia Sustentable. El Perfil de Uso de Energía (Energy Usage Profile o EUP) es una herramienta escencial para medir el consumo de energía en varios dominios como hardware, sistemas operativos, usuarios y aplicaciones; tal como el "arquitecto llegado del futuro" lo cuenta en el articulo de Steve Stefanovich y otros (página 24)
  • Desarrollo de Aplicaciones. Los arquitectos de soluciones también tienen una oportunidad acá, según apuntan Dan Rogers y Ulrich Homann en su artículo "Patrones de Aplicación para IT Verde" (página 16). La discusión acerca de la computación verde tiende actualmente a enfocarse en la plataforma, el hard y los datacenters. Sin embargo, ineficiencias de aplicación tales como algoritmos no optimizados o el uso incorrecto de recursos compartidos causando contención son originadores de un mayor tiempo de uso de CPU y, por lo tanto, de consumo energético
  • La Nube (The Cloud). En su artículo sobre un modelo de madurez de virtualización (página 9), Kevin Francis y Peter Richardson explican cómo el consumo de energía tiene chances de ser notoriamente reducido en la medida en que los proveedores de SaaS puedan hacer un uso eficiente de recursos compartidos (servidores, almacenamiento, mecanismos de enfriamiento y demás)

En los tiempos que vienen, la computación sustentable va a ser un desafío clave para las empresas que va a presentar una oportunidad para los arquitectos de software para mostrar y demostra su liderazgo. Es un excelente momento para los que jugamos el rol de arquitecto. A la vez, celebrando el relanzamiento del programa Architect MVP (Most Valuable Professional, o Profesional Más Valioso), entrevistamos a Udi Dahan (Architect MVP por cuarto año ya) en la sección Perfil de Arquitecto (página 22)

Esperamos que disfruten estos artículos en computación sustentable en los que hemos volcado mucho esfuerzo. Invitamos a todos a visitar el portal de Microsoft de Preservación del Medio Ambiente (Microsoft Environmental Sustainability) en http://www.microsoft.com/environment y, como siempre, pueden hacernos llegar sus comentarios a editors@architecturejournal.net

 

Diego Dagum
Editor en Jefe

Publicado en The Architecture Journal | Deja un comentario

PDC 2008. Architect’s Cut

 Aunque, excepto algunas,  casi todas las sesiones del PDC 2008 están disponibles tanto online como offline (previo download, claro), uno puede sentir esa amarga frustración derivada de la abrumadora cantidad de las mismas

Preguntas típicas que me hago yo mismo en esas situaciones emocionalmente encontradas son "Qué repositorio de info! Tendré tiempo de ver y posteriormente asimilar esta data!? Qué mirar primero? Qué si agarro alguna sesión que requiere ver otra antes, de modo de adquirir cierta base? Habrá alguna sesión que pudiera descartar sin sentirme culpable?"… y una larga lista de etcs

Por suerte el equipo detrás del Microsoft Architecture Center (el Equipo de Arquitectura de Microsoft) está acá para ayudar: recorrimos la lista entera de sesiones, clasificandolas según complejidad, tópico abordado, relevancia en términos de arquitectura, etc, y extragimos una lista de unas 45 sesiones (la lista completa triplicaba o cuadruplicaba esto) que estamos actualmente exponiendo, pero en una forma gradual

 

PDCforArcs

 

Para estos días estamos exponiendo las que que consideramos "watchme.1st":

  • Guías de Diseño de Frameworks
  • Performance
  • Escalabilidad
  • Cloud Computing y Azure
  • El Modelo de Modelado "Oslo" (valga la redundancia smile_regular)
  • Lenguages Dinámicos
  • Caché Distribuido
  • Concurrencia y Paralelismo

 

 

Vas a encontrar en estos días un video roller justo en la home page donde podrás seleccionar las sesiones de tu interés, click allí y, voilà!: el espectáculo comienza cuando Ud llega. No es necesario loguearse, nada

Por supuesto, podés maximizar la ventana de video (me imagino que es lo que vas a hacer) gracias a la flamante tecnología Silverlight 2, o eventualmente visitar el sitio huesped (Channel 9) y descargar el powerpoint desde allí o, finalmente, una mezcla de todo

Publicado en Software Architecture | 2 comentarios

Guía de Arquitectura de Aplicación v2.0 – Beta 1 Liberada Recién

PnP Application Architecture Guidance Mejor que  prometer cosas es ofrecer algunas realidades y esto es algo real

Después del auspicioso éxito que la Guía de Arquitectura de Aplicación (versión 1.0) original había tenido, hubo una serie de libros en aspectos de sintonía fina tales como seguridad, rendimiento, escalabilidad, aspectos internos a los clientes inteligentes (smart client), aplicaciones web y otros

Pero todo eso pasó entre el 2002 y el 2004 durante las oleadas de .NET 1.0 y 1.1. Y parte del feedback recibido fue posteriormente usado durante las etapas de maduración de .NET 2.0 sin embargo…

Mientras que las mejores prácticas fueron saliendo de la agenda del arquitecto para aterrizar inherentemente en la plataforma de desarrollo (algo conocido como fase de comoditización), los arquitectos empezaban a quedarse con un sabor amargo en sus gargantas. Había muerto la Arquitectura con mayúsculas?

La pregunta emergía una y otra vez

MSDN Architecture Forums
Foro de Arquitectura MSDN, tópico: va a pasar algo con la Guía de Diseño de Aplicaciones y Servicios?

Hasta que finalmente el arquitecto de Patterns and Practices J.D. Meier tomó la posta y puso al motor de nuevo en marcha con su ahora legendario post "patterns & practices App Arch Guide 2.0 Project". J.D. comenzaba disculpándose en cierto modo: "It’s long overdo…" ("es muy exagerado…")

J.D. Meier's Blog

Hoy, coincidiendo con la inauguración de sesiones en el PDC (la Conferencia de Desarrollo Profesional de Microsoft) en Los Angeles, la Beta 1 del proyecto fue liberada

Application Architecture Guide 2.0 BETA 1

Estuve echando un vistazo (en la medida en que me hago tiempo, soy a la vez contribuyente de este proyecto), y puedo garantizar al lector de esta guía que no es sólo una migración de .NET 1.0/1.1 a .NET 3.5 SP1 sino una redefinición completa de lo que Arquitectura de Aplicación significa hoy. Incluso más allá de la plataforma .NET, por qué no

Este importante punto podría ser confirmado con sólo revisar cómo la información está organizada a lo largo del libro

Information Architecture

Tipos de aplicación, Estilos de Arquitectura, aspectos cruzados y un marco general de características que cualquier arquitectura debe tener en cuenta (más allá del tipo de aplicación soportado o del estilo que se siga como plano general)

J.D. estimula al lector a descargar y aplicar estos recursos como si fuera la versión final de la guía, de manera de proveer feedback sea a través del motor de discusión de Codeplex (ver pestañas "Discussions" y "Issue Tracker"), o contando tus experiencias de dar vuelta el partido al haber usado esta guía a MyStory@Microsoft.com

Es apenas la Beta 1 pero está sin dudas tomando forma. Sé parte del proyecto y ayudá a J.D. a hacer que la espera valga la pena! Open-mouthed

Publicado en Software Architecture | Deja un comentario

UML, Al Fin en Visual Studio (versión 2010, «Rosario»)

smile_omg   smile_secret   smile_party

Semana Visual Studio 2010 en Channel9
Semana Visual Studio 2010 en Channel9

 

Camino a
Camino a "Rosario"

Peter Provost cuenta para nosotros (arquitectos) que viene en Visual Studio 2010
Peter Provost cuenta para nosotros (arquitectos) que viene en Visual Studio 2010

Publicado en Software Architecture | 1 Comentario

Verde Que Te Quiero Verde: Computación Sustentable

Nuestro rancho Aquellos que siguen  mi blog en inglés saben que el número del Journal a aparecer hacia fin de año (es decir, no el siguiente Journal sino el que sigue a éste) estará abocado a explorar técnicas de computación eco-friendly. Esto es, que no dañen al medio ambiente (o que lo hagan, cuando sea inevitable, en la menor medida posible)

Me está asesorando Lewis Curtis, arquitecto de infraestructura de Microsoft y una de las voces más activas en la búsqueda de iniciativas que permitan alinear más y más la tecnología a las necesidades de la sociedad -en todos sus estratos: social, empresarial, educativo, etc- con, al mismo tiempo, un mínimo impacto de daño en el ya desequilibrado equilibrio ecológico y que además, ya que estamos, permita reducir el consumo energético de todo el parque tecnológico, habida cuenta del encarecimiento en los costos que la generación de energía viene experimentando (que tarde o temprano se trasladan al consumo)

De visita por mi oficina, Lewis me tiró unas ideas interesantes acerca de la correcta manera de entender y abordar la "Computación Verde" (Green Computing). Sintetizo su enfoque aquí

 

6 aristas

  • Físico. En esta perspectiva se estudian alternativas para mitigar el calor liberado por el uso intensivo de las unidades centrales de procesamiento (CPUs). La concentración creciente de CPUs en espacios físicos de dimensiones reducidas torna los centros de datos (datacenters) en verdaderos infiernos. Literalmente hablando. Aquí no son solamente los fabricantes de CPU (Intel, AMD, etc) quienes están batallando para lograr una mejor ecuación performance-per-watt (rendimiento por electricidad consumida) sino que existen algunos estudios que detallan la ideal posición física de las CPUs para que estén lo suficientemente separadas como para que el incremento de temperatura no se potencie pero a la vez lo suficientemente cerca como para maximizar el aprovechamiento del espacio físico
  • Plataforma Operativa. Cuando se asignan procesos a servidores, se lo hace normalmente en función de la carga esperada de trabajo que estos procesos van a tener. El estudio de un consumo más eficiente de recursos dio lugar a dos tácticas: la optimización y la consolidación. La optimización del uso de la plataforma operativa se puede alcanzar de varias maneras, sea mediante la asignación correcta de recursos (CPUs, ancho de banda, etc) como por la detección de estado ocioso prolongado y consecuente hibernación, entre otras (esto, claro está, es también lograble desde el mismo hardware). La consolidación tiene que ver con la aglomeración de varios procesos en un mismo hardware, de modo de maximizar el uso de recursos
    Claro, acá puede impactar el hecho de que diferentes procesos pueden requerir una diferente plataforma operativa, lo que limita las chances de consolidación. Pero esto es mitigado gracias a los avances alcanzados en virtualización de plataformas, lo que ha permitido tirar viejo hardware, costoso de mantener, sin discontinuar las aplicaciones que en el mismo corrían -en muchos casos sistemas legados o legacy systems, los cuales hasta cierto punto pueden resultar tan caros de mantener como de migrar-
  • Regulaciones. A nivel gubernamental los países están avanzando (?) en metas de reducción de niveles de dióxido de carbono (CO2), el principal responsable del efecto invernadero (greenhouse effect). A la corta o a la larga eso se va a trasladar a un sistema de premios y castigos en la calidad y cantidad de energía que las compañías -y a renglón seguido los hogares- consuman. Probablemente esto vaya ligado a excensiones o gravámenes impositivos
  • La "Nube". Las aplicaciones hosteadas en la web misma, y con esto no me refiero a accesibles vía web ya que esto incluye a aplicaciones hosteables en un servidor hogareño, sino a aquellas aplicaciones cuyo "dueño" las recibe distribuidas como un servicio ("as a Service"), en lugar de hacerse responsable de su ubicación física y operación; decía que tales aplicaciones plantean desafíos tanto para el que las consume -quien no debe hacerse cargo del datacenter con lo cual acá tiene un significativo problema menos- como del que las provée, quien tiene ante sí la oportunidad de optimizar la granja de servidores, consolidando los clientes de tales aplicaciones SaaS (por Software as a Service o Software como Servicio). En la ecuación general, bajo este esquema de tiempo compartido (tiempo de ejecución, claro, o creíste que pusimos SaaS y nos rajamos todos de vacaciones… Zaas! smile_omg), el consumo de recursos y de energía es inferior al esperado por el esquema tradicional donde cada consumidor se hostea su aplicación en sus propios servidores (lo que se conoce como on premise delivery)
    Cuanto mayor sea la penetración del esquema "as a Service", mayor el ahorre global. Sin embargo, claro, pasar de la nada a este esquema no es fácil, sobre todo si se necesita que la parte hosteada en la nube interopere con lo que nos quede on premise. Qué de la atomicidad de las transacciones, qué del single sign-on (login único o SSO), qué de muchas otras tantas cosas como disponibilidad, tiempo de respuesta, etc
  • Inteligencia Sustentable. Imaginate un tablero de control donde podés monitorear la energía consumida por tu plataforma respecto de la actividad real que cada una está haciendo. Imaginate que podés establecer umbrales de consumo, disparar alarmas. Imaginate que podés tirar estadísticas históricas de ese consumo a fin de determinar tendencias y consiguientemente predecir la demanda futura esperable. No hace falta imaginarse demasiado porque existen esos monitores. Scry, Cognos (adquirido por IBM) por mencionar algunos de ellos
  • Código de Aplicación. Y llegamos al último, que a su vez engloba a todos los anteriores. En pocas palabras, no es cuestión de echarle la culpa de todo a la infraestructura, al soft de base e ilusionarse con la idea de que la solución pase nada más que por ahí. Por ejemplo, en nuestra apliación distribuida, dónde se conserva el estado de la sesión de cada usuario conectado? Es ese estado persistido al cabo de un tiempo en que el usuario no da señales de vida (y siempre antes de que expire su sesión), a fin de liberar la memoria para otras sesiones activas? Son los servicios state-less (una instancia única para todos) o stateful (una instancia individual por cada sesión que los consume)? Y qué hay para decir del ancho de banda? Se usa en forma eficiente? Qué significa "ancho de banda eficiente"? Enviar la menor cantidad posible de información en cada interacción o tratar de anticipar cierta información que el caso de uso pueda necesitar con una alta probabilidad? Y qué se puede decir del paralelismo en plataformas de más de un núcleo? Se saca tajada del procesamiento paralelo o el binario de la aplicación está pensado para el denominador común mono-núcleo? Podría seguirme extendiendo pero creo que con ésto queda demostrado que nosotros desarrolladores de soft no podemos hacernos los osos por muy ecológico que sea todo este tema

Bueno, la consigna es enviar propuestas de artículos para computación verde que tengan un enfoque práctico (es decir, más allá del mero mensaje de que ahorremos gas, apaguemos luces y no imprimamos mails si los podemos leer de la pantalla). El plazo de envío se extiende hasta el 10 de Septiembre. Más detalles para hacernos llegar tu propuesta, acá

Publicado en The Architecture Journal | Deja un comentario

Mi Primer Journal Está en la Calle (#16, Identidades y Acceso)

Portada y editorial del numero 16 de The Architecture Journal

 Dos años atrás,  cuando un artículo mío era publicado en una revista independiente de TI, un colega me dijo, "Vos deberías escribir para The Architecture Journal." No podía haber predicho que me iba a encontrar ahora escribiendo para esta revista en mi nuevo rol de editor. Le quiero agradecer a Simon Guest, por esta oportunidad y este enorme compromiso -durante su lapso, la cantidad de lectores se más que duplicó, pasando de 30 mil a más de 62 mil

En este número, te invitamos a pensar en la Arquitectura de Identidades de tu organización. El manejo de identidades está evolucionando hoy del escenario simple, aislado, al escenario federado, en una forma que te puede sorprender

Empezamos este decimosexto viaje con la introducción de Fernando Gebara Filho a los conceptos y estrategias en identidades, cómo han evolucionado y el camino por recorrer. Después, Jesús Rodríguez y Joe Klug examinan un surtido de estrategias para hacer de las identidades componentes de primera línea en el portfolio de aplicaciones federadas. Gerrit van der Geest y Carmen de Ruijter Korver consideran el desafío de establecer un entorno de confianza a nivel de aplicación ya que las identidades de usuario, en un mundo orientado a servicios, deben fluir desde el consumidor de un servicio hacia el prestador

Para el perfil de arquitecto de este número, lo atajamos a Kim Cameron, autor de "Las Leyes de la Identidad", cuyas ideas en identidades federadas están dando forma a la siguiente generación de tecnologías de identidad de Microsoft. (Algo gracioso pasó el día que visité a Kim para esta entrevista: me olvidé mi tarjeta de acceso por lo que necesité que Kim "certifique" mi identidad en la entrada)

Retomando nuestro paseo, Mario Szpuszta describe cómo el sistema de salud austríaco convirtió una crisis administrativa de provisioning en una clara oportunidad para crear una federación de identidades abierta. Luego Vittorio Bertocci explica cómo ciertos patrones de arquitectura nos ayudan a construir soluciones que consideran demandas (claims), de modo que cuando "la Nube" llegue a las compañías, el manejo de identidades no se va a ver necesariamente nublado

Finalmente, Mike Morley y Barry Lawrence revelan cómo sincronizaron identidades en varios sistemas y aplicaciones legadas (legacy applications) desde una consola administrativa individual a través de un framework de consolidación

 

Querido lector, quisiera ser el primero en darte la bienvenida a este número, y deseo que te sientas identificado con sus artículos. A disfrutarlo!

 

Diego Dagum

Editorial del numero 16 de The Architecture Journal

Publicado en The Architecture Journal | 2 comentarios

Call for Papers Para el Número 17 de The Architecture Journal

Yo quiero escribir para el Journal El próximo número del Architecture Journal se va a enfocar en Computación Distribuida

Nos estamos arrimando a un punto de inflexión con el hardware y las tecnologías de hoy donde lo que hace unos pocos años atrás era apenas una visión hoy se va haciendo realidad -desde distribuir aplicaciones a dispositivos microscópicos hasta datacenters del tamaño del estadio de Boca y aún más, que ofrecen correr aplicaciones en la nube

No importa qué tan chico o grande, la distribución y la concurrencia de servicios múltiples puede introducir un número de desafíos

El foco de esta edición es entender cuáles son esos desafíos y cómo superarlos

 

Si esto logra inspirarte lo suficiente como para querer llevar tus opiniones a los más de 60000 lectores que el Journal tiene (solamente contando la edición en inglés, sin considerar las otras tres traducciones), por favor averiguá más datos en mi blog en la lengua de William (foto)

Publicado en The Architecture Journal | Deja un comentario

Recontruir Desde Adentro: Libro de Danija sobre Refactoring

"La optimización temprana es la causante de todos los males"

-Sir Charles Antony Richard Hoare, computador científico británico, después parafraseado por Donald Knuth en su libro El Arte de Programar Computadoras

 

 

Días atrás, mirando un documental sobre la vida del director de cine sudamericano Fabián Bielinsky, me llamó la atención algo que dijo en una entrevista. Decía que, cuando se filman escenas, usualmente pasa que una toma determinada no sale como el director inicialmente asumió que iba a ser. A veces esa escena se hace de vuelta hasta que el director consiga lo que quería, en tanto que en otras ocasiones se deja no más como salió, en la medida en que así como está queda bastante mejor que la idea original. Bielinsky concluía que el verdadero arte de hacer cine es saber decidir cuándo intentarlo de nuevo y cuando dejar lo que salió de entrada

 

Sorprendentemente, si así viene la mano con las películas, codificar componentes es muy parecido a filmar escenas. Siempre es posible encontrar una mejor solución a un algoritmo dado. Así que, con el sombrero de gerente en la cabeza, tenemos que decidir cuándo congelar una siempre posible mejora a efector del la carga GANTT, el presupuesto, las fechas de entrega y la satisfacción general del usuario, y cuándo ir por más

 

Y es acá donde enfrentamos la necesidad de refactorización: una serie de técnicas y mecanismos para mejorar la calidad -comprensibilidad, mantenibilidad, modularidad, extensibilidad, etc- de segmentos de código mediante la reformulación de sus sentencias en una forma en que la conducta general no cambie. En otras palabras, el comportamiento de los componentes afectados no debería variar como una consecuencia del proceso pero su calidad, y ojalá su vida útil, debería ser incrementada

 

La experiencia ha mostrado que algunas porciones de nuestro código van a ser, a la corta o a la larga, candidatas a refactorización, y las razones son varias:

 

  • Del lado del usuario, los usuarios no están completamente seguros de la aplicación que quieren hasta que ven instalado y corriendo lo que ellos pidieron originalmente. No es chiste! Al principio empiezan requiriendo algo que tienen en la cabeza pero vagamente (y eso es natural: de ninguna manera los estoy acusando). Olvidarse situaciones especiales cuando nos describen un caso de uso es como tener caries: no digo que sea bueno pero sí que es algo normal. Un efecto secundario indeseable de este tira y afloja es que nuestro código podría empezar a perder cierto grado de cohesión; sus diversos módulos pueden empezar a acoplarse arriba de los niveles aceptables como consecuencia de cambios de último minuto debidos a presiones del time to market
  • De nuestra perspectiva, la del desarrollo de software, nosotros no tenemos una idea cabal de a qué el código se va a parecer mientras estamos modelando. Al igual que los usuarios, nosotros también creémos que tenemos unas ideas impresionantes (o al menos buenas ideas al fin) hasta que tratemos de poner algunas de ellas en práctica. Equivocarse no es malo. Lo que es malo es obsecarse en cambiar de parecer sólo para evitar admitir que lo que habíamos considerado una gran idea no era, de hecho, tan fácil de implementar. Y acá de nuevo, cuando el tiempo agrega su presión, entregar un componente lo más rápido que podamos puede también dañar su calidad
  • Del lado de la tecnología, finalmente, hay una presión invisible aunque algo omnipresente a acompañar las tendencias de la industria. Ejemplos típicos son las APIs evolucionadas de .NET o Java (AJAX, servicios web, etc) que tornan obsoletas a las versiones previas, o estrategias generales como Arquitectura Orientada a Servicios (SOA), Modelo-Vista-Controlador (MVC), Mapeo entre Objetos y Relaciones (O/R-M), etc. Una vez más, en la medida en que reaccionamos a estas tendencias nuestro código es sometido a cierta manipulación que, a medida que el tiempo pasa, puede erosionar su calidad

 

Mientras tanto, el mundo real nos muestra que esmerarnos en mejorar la calidad de nuestro código es algo que tendemos a hacer en forma innata. Las técnicas de refactorización no son sino el más alto grado de maduración de esos intentos espontáneos, reforzadas con algunas herramientas de soporte disponibles por ahí para garantizar el éxito del proceso

 

La buena noticia es que podemos aplicar refactorización localmente, al nivel de un componente o método, allí donde estemos aplicando cualquier otra modificación; o globalmente, a nivel de módulo o aplicación, asignándole rango de proyecto. Decidir la dosis correcta de refactorización dependerá de la brecha de calidad a cerrar, el tiempo restante, el presupuesto disponible (siempre será más fácil justificar la refactorización donde ya teníamos algo más que hacer que donde ninguna actualización había sido pedida aún), entre otros factores

 

A lo largo de este libro, el autor abordará tópicos de refactorización desde la visión de sus beneficios a las maneras actuales de ponerlo en práctica. Danijel Arsenovski ha estado involucrado en técnicas de refactorización, tanto en las plataformas .NET como Java, desde sus versiones más tempranas. Dio varias conferencias, charlas y talleres en esta materia, dirigiendo proyectos exitosos de refactorización en la industria bancaria

 

Como uno de los líderes en herramientas de desarrollo, Microsoft ha estado comprometido a distribuir los mejores recursos para la gente que día a día lidia con actividades de codificación y proyectos de software en su totalidad. Mediante su indiscutidamente ganador entorno integrado Visual Studio, Microsoft hace de la refactorización una facilidad out-of-box apenas a un click de distancia de tu código. A lo largo de las páginas de este libro, Danijel te mostrará cómo la refactorización puede ser practicada en Visual Basic tan fácil como hacer copy / paste o cualquier otra actividad de edición!

 

Me atrevo a decirte, estimado, que vas a encontrar en este libro una de las guías más probadas y fundamentales en estas técnicas. Que disfrutes este libro!

 

 

Diego Dagum
Evangelista Técnico, Microsoft Corp.
Kingsgate, Invierno de 2007

 

(Lo que acabás de leer es el prólogo que escribí para el libro de Danija "Professional Refactoring in Visual Basic" – Ediciones Wrox)

Publicado en Software Management | Deja un comentario

Crisis = Oportunidad. América Latina A No Dormirse


La palabra Crisis, escrita en Chino, comparte un
caracter con la palabra Oportunidad. No es así
por casualidad

 No  es un secreto para nadie que el mundo se encamina a una recesión impulsada, esta vez, no por Brasil o Asia o Rusia sino por la primera economía mundial. Si se frena la locomotora (nos guste o no, es la primera unidad del convoy), los vagones que eran arrastrados inevitablemente van a perder impulso (nuevamente, nos guste o no)

Curiosamente en medio de estas crisis es cuando, usando un poco de inteligencia, podemos ver el lado bueno en los cambios de contexto. Como la fábula del burro que iban a sacrificar y para eso habían hecho un foso, lo habían tirado al fondo y pensaban enterrarlo vivo: el burro logro salir del foso porque en la medida que la tierra que tiraban se iba asentando, hacía pie en ésta

En el artículo que te linkeo acá, Gartner predice que en la medida que el parate económico de la primer superpotencia (la única hoy, bah) el outsourcing (tercerización) de servicios de software va a aumentar en forma considerable. El que la venía mirando con cariño, se va a decidir en la medida en que necesite mantener sus servicios de software (si es posible, incrementarlos para -en la crisis de demanda- mejorar la calidad de su oferta). El que ya estaba tercerizando y conoce las ventajas en lo que a reducción de costos se refiere, probablemente quiera cerrar un cachito más la brecha. Y finalmente, el que hasta ahora no pensaba en tercerizar, si empieza a estar con el agua al cuello quizás al menos comience a explorar esta alternativa (algo es algo)

Gartner predice que India primero y China después van a ser los grandes polos de atracción de tercerizadores. Latinoamérica no sale mencionada, no en el informe de Gartner al que yo no tuve acceso, sino en la nota que lo destaca

De todas maneras, si la montaña no viene a Mahoma, habrá que ir a la mountain no más… A preparar esas brochures en inglés. Primer mundo: allá vamoooooosssssssss!!!!!!! blacksheep

Publicado en Software Management | Deja un comentario