domingo, 7 de diciembre de 2014

Curso Scrum Developer de Scrum Alliance vs ScrumStudy


En el 2012 tome un curso de Scrum Master de ScrumAlliance en la Cd. de México impartido por Mike Beedle, uno de los suscriptores del Manifiesto Agil.

El curso fue altamente provechoso por lo dinámico y por la experiencia emanada de Mike.

Aunque no he podido aplicar totalmente los conocimientos adquiridos porque el cliente de mi empleador actual no aplica metodologías agiles, lo que si me quedo claro es como funciona, como podría empezar y  bajo que condiciones es aplicable Scrum. 

Este diciembre de 2014 mi empleador me dio la oportunidad de tomar un curso de Scrum Developer perteneciente a la organización ScrumStudy impartido por un Partner de capacitaciones muy conocido en México.

En palabras del instructor hay principalmente 3 organizaciones que imparten estas capacitaciones: Scrum Alliance, Scrum.org y Scrum Study.

Aunque el rol de un Scrum Developer y Scrum Master son diferentes, si tengo elementos y no puedo evitar comparar el estilo de las capacitaciones de Scrum Alliance y ScrumStudy:



Curso de Scrum Master de Scrum Alliance México
  • Estructurado de forma no tan detallada pero altamente práctico y dinámico. Por la experiencia del Instructor nos cansamos de preguntar y ninguna duda quedo sin resolver.
  • El mensaje en resumen fue: Aprende las bases, aplica y adapta Scrum como mejor te funcione ya que al final es un framework.
  • El material del curso fue de apoyo, la 'carnita' fueron los ejercicios y la explicación. Al final mi material quedo plagado de notas. 
  • Capacitación de 16 horas
  • Costo aprox. 1200 USD que incluye el examen de certificación
  • Examen de certificación: 40 preguntas y 1 hora para resolverlo. Realmente sencillo después de haber tomado la capacitación. Todas las preguntas del examén de alguna forma preguntaron temas vistos.
  • Algo que no es muy consistente es que tu certificación tiene limite de vigencia de 2 años pero renovable si pagas 100 USD. Creo que deberia ser renovable por experiencia y no por fee. 

Curso de Scrum Developer de Scrum Study
  • El curso fue mas teórico que practico aun cuando en el nombre tiene Scrum Developer.
  • Altamente estructurado y basado en un libro, el SBOK (Scrum Base of Knowledge) disponible en el sitio de forma gratuita. 
  • El curso enseña los conceptos de Scrum basado en una implementación particular de Scrum (De la Scrumstudy) y enseña las reglas a seguir para que tu implementación sea la de ScrumStudy.
  • Nuestro instructor aunque sabía a detalle los conceptos del libro a la hora de preguntar por situaciones reales no tenía el mismo efecto contundente que en el otro curso. (Es importante saber pero más tener experiencia).
  • Considero que el curso es provechoso para personas que quieren dar forma a una implementación particular de Scrum en una compañía. Para quien parta de 0 y busque aprender y salir aplicando Scrum creo que se quedará con dudas. 
  • El costo del examen de certificación 200 USD + Costo del curso (No tengo el dato porque mi empleador lo pago)
  • El examen no fue difícil pero hubo preguntas de conceptos que no vimos en clase.
  • Algo interesante es que tiene un curso y certificación gratis en conocimientos básicos de la implementación de ScrumStudy. Esta certificación se puede hacer en el sitio.
Esta es mi reseña/comparación, espero sea útil para alguien que quiera invertir en una capacitación en Scrum en particular disponible en México.

Si me preguntan que curso recomiendo: El de Scrum Alliance y completaría la parte teórica con libros.


bye

jueves, 23 de octubre de 2014

Beta para el examen Java SE 8 Programmer

Hello gente

Tarde pero seguro, ahi va el aviso.

Oracle lanzo el Beta para el examen Java SE 8 Programmer .
El examen cuesta 50 USD y hay tiempo para presentarlo hasta el 15 de noviembre.

http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-808

Los temas son los mismos que el examen de java 7 (803) excepto por este tema adicional que se puede estudiar en algun tutorial:

  • Write a simple Lambda expression that consumes a Lambda Predicate expression
Algunos tutoriales que explican el tema:
http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html

Los examenes betas son pruebas anticipadas para sondear el examen antes de venderlo oficialmente. Debes ir preparado para estar 3 horas sentando resolviendo de 250 a 300 preguntas.
En caso de aprobarlo, tiene la misma validez que el oficial. La ventaja que tienes es que lo puedes aprobar con una inversion mas accesible.

Exito si decides tomarlo.

jueves, 14 de marzo de 2013

Beta Java EE 6 Enterprise Architect exam

Oracle ha lanzado un Beta para el examen Java EE 6 Enterprise Architect Certified Master Exam disponible desde hace algunos dias (marzo 2013) y concluye el 11 de Abril de 2013.

Los examenes Beta son examenes previos a la version final que te permiten certificarte si lo apruebas. A Oracle le permite recibir retroalimentación y afinar las preguntas antes de lanzarlos en forma comercial.

Antes Sun Microsystems los ofrecia en forma gratuita con la idea "Ayudame a afinar este examen y si lo pasas te certificas", Ahora Oracle te da el derecho de hacer el Beta por $ 50 USD.



Requisitos para certificarte como Arquitecto Java
 
El primer grupo de requisitos que sigue vigente es aprobar 3 partes para certificarte: 
1. Examen teorico, ($150 USD normalmente, Este Beta $50 USD)
2. Asignación, Desarrollar un proyecto de diseño ($150 USD)
3. Ensayo, Completar un examen donde se te pregunta acerca de tu proyecto y tus criterios de decision ($150 USD)

El 4o requisito que introdujo Oracle es cursar, ni siguiera aprobar, el Curso Architect Enterprise Applications with Java EE. En Mexico cuesta aprox $2000 USD, en otros paises $4000 USD

El curso es bueno pero creo que esta obligatoriedad le resta valor al esfuerzo de quien tiene experiencia en Arquitectura Java y quiere estudiar por su cuenta los temas de certificación.
Y eso lo demuestran comentarios de personas que han pospuesto sus intenciones de obtener esta certificacion por este requisito. 

En este punto creo que es evidente la intención de Oracle de $acarle jugo a estos temas ya que el curso incluso lo puedes cursar después de que hayas hecho los 3 examenes.

Anyway

Si ya estabas pensando en hacer la Certificacion, el Beta puede darte un ahorro. Si es tu caso, checa este link donde coloque algunos materiales de estudio, tal vez te ayuden.

Finalmente, estos son materiales adicionales que pueden servirte:
Sun Certified Enterprise Architect for Java EE Study Guide (2nd Edition)
Your First Cup JEE
Java EE 6 Overview
Mock exam Sun Certified Enterprise Architect 5


bye.

martes, 12 de marzo de 2013

Certificacion en Java 7

Certificación en Java 7 (OCPJP 7)

La nueva certificación de Java 7 (OCPJP) esta disponible desde hace algunos meses pero hasta hace poco habia suficientes recursos para estudiar.

Si no tienes alguna certificación previa, Oracle ha establecido que debes hacer 2 examenes, el examen 1Z0-803 de temas generales y el 1Z0-804 que incluye temas avanzados y caracteristicas nuevas de java 7:


    Examen: 1Z0-803 Java SE 7 Programmer I
    Costo:  $150 USD (en Mexico)
    Pass Score: 77%
    Duración: 140 min, Preguntas:  90, aprox: 1.50 min por pregunta


    Examen: 1Z0-804 Java SE 7 Programmer II
    Costo:   $ 150 USD (en Mexico)
   
Pass Score: 65%     
    Duración: 150 min, 90 preguntas, aprox: 1.65 min por pregunta


Si ya tienes una certificacion previa puedes hacer el upgrade:
    Examen: 1Z0-805 Java SE 7 Programmer
    Costo:   $ 150 USD (en Mexico)
    Score: 60%
    Duración: 150 min, 80 preguntas, aprox: 1.87 min por pregunta


El nivel de dificultad de los examenes ha aumentado ya que el score ahora es mas alto y se redujo el tiempo disponible para resolver cada pregunta. 
Como referencia en el examen de java 6 tenias 2 minutos para cada pregunta ahora solo tienes minuto y medio.

Y bueno, este es el material que he encontrado para preparar esta certificación:

Sitio de estudio
Oracle ha creado un sitio especial para la certificación  para estudiar los temas de los 3 examenes:


Simulador
Una muy buena opcion que adquirí y recomiendo a mis alumnos es de enthuware.com, tiene 3 productos: 1 simulador para los 2 examenes (803 y 804) y otro para el upgrade (805), es realmente barato, aprox. 19.95 USD.
El simulador no tiene las restricciones de que solo se pueda instalar en una maquina y no tiene caducidad como el de Whizlabs.

Cuidado: Tengan cuidado con el simulador Pass4sure, al menos para este examen es un producto mediocre con muchos errores tanto en la redacción como en las respuestas.


Libros
El de Kathy Sierra es muy buena opcion, de hecho puedes estudiar del libro de la version 6 y complementar los temas de java 7 con el sitio de Oracle.

Finalmente, el obtener la certificacion no es un tema de dificultad. El principal obstaculo es la constancia, ya que debes fijar una fecha objetivo, planear las horas de cada tema y dedicarle el tiempo asignado.

Como ya lo he comentado en este sitio, la certificacion no te hace experto, es simplemente un diferenciador que te ayuda a obtener una ventaja competitiva a tu favor.

Exito en tu examen.

jueves, 25 de octubre de 2012

Reclamacion contra Telcel a favor gracias a Profeco


Les comparto la experiencia de ser favorecido en un reclamo que hice ante la Profeco contra un cobro indebido de Telcel.
 
 
La historia
 
Hice un viaje a Peru en agosto de 2012. Dias antes del viaje me llego un SMS de Telcel para invitarme a contratar un paquete viajero de internet.
 
Llame al *500, pedi informacion y precios del servicio de internet y minutos de voz.


Despues de la explicacion, muy amable claro, pedi un paquete de internet de 20MB por $410 pesos y un Paquete de voz de 40Min por $379 pesos para estar comunicado porque esperaba un correo importante.

 
Todo bien pero estando alla 2 dias antes de volver me suspendieron el servicio y regresando me dijeron que fue porque me excedi en mi cuota mensual. Telcel me cargo algunos miles de pesos de mas por 40MB de consumo a 'granel', es decir a precio de consumo normal sin promocion.
Al ir al CAC de Telcel me dijeron que lo que paso es que consumi servicios de internet que no estaban dentro del paquete contratado porque tenia una Blackberry y este telefono necesitaba 'otro' paquete
A la chica que me atendio le argumente que pedi el servicio de 'Internet' y que los expertos en los productos son ellos, que su deber es orientar al cliente en que incluye o no y no jugar con las letras chiquitas. Ahi hice una carta pidiendo alguna devolucion aclarando que no me negaba a pagar pero que respetaran lo contratado y si me excedi me cobraran lo justo por esos 40MB que use. Espere por una respuesta que me dijeron llegaria en 10 dias,
No hubo tal respuesta.
 
 
Yendo a Profeco 
 
Mande mi queja a Concilianet de Profeco, dias despues me respondieron y me dijeron que la queja procedia, me citaron a una audencia virtual con un representante de Telcel. Tuve que registrarme en el sitio, subi mi IFE y mis facturas donde se veia el cobro excesivo.
 
El dia de la cita me instale en un Sanborns y desde ahi me conecte al sitio de Concilianet. Entre a sesion 10 minutos antes, el Conciliador y el Proveedor ya estaban alli.
 
La conversacion la inicio el Conciliador, colocando los textos que yo habia enviado en mi queja y la respuesta que habia enviado la parte de Telcel negandose a aceptar el reclamo. Me cedieron la palabra y argumente lo mismo, que se valian de la falta de informacion para cobrar un servicio que no contrate y el que pedi no me lo dieron.
 
El proveedor replico que segun 'el contrato' decia que yo debia pagar todos los cargos extras que se generaran y que habia disfrutado del servicio. Yo aclare que el contrato fue telefonico y que no habia algun documento donde se hiciera incapie en que incluia o no y ademas que no me negaba a pagar y si hubiera algun cobro de esos 40MB fuera a un precio justo.
 
El Proveedor dijo, "Estamos concientes que el paquete no funciono como se esperaba y sin embargo se propone hacer una devolucion,......, no completa como si el cliente hubiera contratado el paquete Blackberry" (Insolito: Si Telcel sabe que tengo Blackberry porque no me activo el paquete internet para Blackberry?, entonces Que me activó?)
 
El proveedor me ofrecio la devolucion del 90% del cobro indebido, el conciliador me pregunto si aceptaba y por supuesto lo acepte porque mas vale mal arreglo que buena pelea.
El Conciliador pidio a el Proveedor especificar cuando y como se me iba a hacer el reembolso y quedo que en menos de 10 dias yo veria el reembolso en mi tarjeta.
 
El conciliador de Profeco nos pidio esperar en el chat en lo que elaboraba el acta con todo el texto que habiamos escrito y nos dio fecha para volver a la audiencia para corroborar que el Proveedor me hubiese hecho la devolucion.
 
Esta fue una historia con final feliz, la verdad ya daba por perdido ese dinero.

Por cierto, en el centro de Atencion otra persona tambien se quejaba de un cobro indebido y al ver que no tenia muchas opciones juro que se cambiaria de compañia, pense lo mismo. Pero si te vas, esa lana de la discordia se la queda Telcel.
 
Por este problema contrate a Iusacell para probar el servicio y pese a mi situacion tuve que renovar el plan tarifario con Telcel pero con una tarifa minima, primero amenace con cancelar (Ya sabia que no iba a cancelar, porque Telcel es un mal necesario) y de ultima hora me ofrecieron un plan con celular gratis, que por el precio del celular paga todo el plan anual. Porque no ofrecen esto desde inicio?


Muy mal porque Slim ha hecho fortuna con este tipo de practicas, pudiendo dar un servicio bueno podria tenernos cautivos por calidad y no por fianzas, por penalizaciones ni por ofertas de ultima hora cuando vas a cancelar.

Tips para el reclamo:
  • Conserven todas sus facturas, mensajes SMS de promociones, recuerden fechas de contratacion, a la persona que los atendio.
  • Antes del dia de la conciliacion preparen muy bien que van argumentar y escribir porque todo lo que escriban se agrega al acta que levanta la Profeco.
  •  Si ya iniciaron el tramite completenlo por que la Profeco estipula que si levantas la queja y no la sigues, das por entendido que renuncias a la reclamacion.
  • Advertencia: Profeco solo es facilitador, Si la compañia no quiere aceptar culpabilidad Profeco no puede obligarlo. 

Tip para viajar al extranjero y querer estar comunicados:
 
No se lleven su Telcel, mi esposa me dijo, 'Compra un cel alla, es mas barato' y era cierto, en Peru, con Movistar pagan 30 o 40 USD por el servicio con todo e internet con telefono patito incluido. De haberlo hecho no hubiera caido en este caso y el riesgo de no tener ninguna devolucion.

Espero esto le sirva a alguien mas.
 

viernes, 4 de junio de 2010

Tips de Certificación en Tecnologías de Información


Tips de Certificación en Tecnologías de Información


En este artículo les comento de algunos tips que les pueden ayudar a obtener una certificación en Tecnologías de Información, mi intención no es entrar en debate si son útiles o no, o si quien las obtiene es mejor laboralmente que otra persona que no ha obtenido ninguna.

¿Por qué certificarse?
Hay muchas razones, económicas, laborales, personales, de forma general es porque se busca una ventaja competitiva.

¿Vale la pena la inversión o es un gasto? ¿Voy a obtener algún beneficio?
Para poder obtener una certificación tienes que pagar y aprobar uno o varios exámenes. Este desembolso puede convertirse en una inversión o en un gasto dependiendo de la empresa, la tecnología y el entorno.

Para ti puede ser una inversión para aprender más conocimientos y para obtener un mejor posicionamiento ante un reclutador si es tu primer trabajo o dentro de la empresa actual.

Para la compañía puede ser de gran ayuda si en un concurso para un proyecto se pide personal certificado. Algunas compañías que quieren ser partners de una empresa como IBM u Oracle necesitan de personal certificado en los productos para poder estar dentro del grupo de partners.

Este desembolso puede ser un gasto, en algunos países alguien que posee un Master, aún sin experiencia, puede tener más ventaja que alguien certificado. En este caso la certificación no ayuda a mejorar tu perfil. Igualmente para una empresa puede no representar ninguna ventaja competitiva el tener gente certificada porque no lo necesita para vender proyectos y por lo tanto no lo va a valorar.


¿La certificación garantiza que seas un experto?
No.
Coincido con colegas que argumentan que es mejor tener conocimientos prácticos que una certificación y que el tenerla no garantiza que la persona sea realmente un experto. En un proceso de reclutamiento se deben cubrir de forma integral varias cualidades para tener un buen colaborador en el equipo: conocimientos acerca de tecnología, habilidades para resolver problemas, comunicación, trabajo en equipo.




Una certificación solo es una constancia de que conoces en cierto grado un campo (Java, Net, Liderazgo, análisis) y te ayuda a elevar tu posición en él.

Asumiendo que consideras que las certificaciones te pueden dar un valor agregado en el campo de los conocimientos técnicos, he aquí algunos tips para obtener tu primera certificación.


Tips.
Primero que nada definir ¿Hacia dónde vas profesionalmente?, ¿Hacia donde vas a mediano plazo y en que forma estas certificaciones te van a a ayudar a llegar al objetivo?.

¿Vale la pena la inversión de tiempo y dinero?
Debes considerar que vas a tener que dedicarles tiempo y vas a dejar de dárselo a tus ocupaciones actuales, hobbies, familia, etc.
(Importante: Pídele autorización por escrito a tu espos@/novi@ J)


Hay diferentes tipos de exámenes de certificación: En algunos se debe responder un examen teórico, en otros acumular varios exámenes aprobados, en otros realizar un proyecto. Los siguientes tips son para exámenes teóricos que presentas en un centro de certificación Prometric o Pearson Vue.


Planeación
  • ¿Qué me van a preguntar?, Todos los exámenes de certificación tienen su lista de objetivos, obtén los del examen que vas a hacer. Es necesario que sepas que te van a preguntar. Imprime la lista de objetivos y ve marcando tu avance.
  • Fíjate una fecha meta, "Quiero certificarme en X meses". Planea las horas de estudio y asígnales un tiempo razonable de estudio dependiendo de tus actividades. Por ejemplo si el examen tiene 8 temas, podrías como meta estudiar 1 tema por semana, 2 horas diarias. Realiza tus ajustes, tal vez después de la 1ª semana te des cuenta de que necesitas reorganizar tu tiempo.
  • Agenda tu examen, casi todos los exámenes son aplicados por centros de certificación autorizados www.prometric.com ó www.parsonvue.com , contacta al centro de certificación de tu localidad, verifica el costo, regístrate y agenda en una fecha conveniente. Cuando te registran los centros te dan un Candidate Id, conserva este número porque lo necesitarás para administrar tu información: actualizar tus datos personales, actualizar el domicilio para la entrega del certificado o para reagendar tu examen en caso de que el día planeado no puedas hacerlo.
  • Busca un lugar adecuado para estudiar. Si puedes estudia temprano, llega una hora antes al trabajo, al final del horario laboral no es muy recomendable porque siempre hay pendientes. Puedes ir a un Starbuks si te gusta el ruido o a una biblioteca pública si te gusta el silencio. Si vives en el DF y viajas en transporte puedes imprimir los temas de estudio y aprovechar el viaje.
  • Busca en la red materiales de estudio necesarios: guías, páginas, mock exams (exámenes de prueba). Más adelante anexo links de recursos de estudio.
  • Busca un grupo de estudio en internet o crea un grupo pequeño en la empresa, pueden reunirse a estudiar varios miembros de la empresa. Puedes buscar en la red algo así como: "Oracle Certification Group"
  • Test yourself – Ya que te sientas preparado, puedes resolver exámenes de prueba o usar un simulador, debes obtener más de 80% para suponer que te va ir bien en el examen. Debes responder las preguntas en minutos, en un examen típico puede haber 60 preguntas y 2 horas para resolverlo, así que tienes que resolver 1 pregunta cada 2 minutos, el examen reta tu conocimiento y tu administración del tiempo.
  • Ingles – Casi todos los exámenes son en ingles, debes poder leer sin problemas ingles técnico, sería desastroso no responder a una pregunta por no saber la diferencia entre shall, should, must, might, could.
El día del examen
  • Descansa bien el día anterior
  • Si puedes programa tu examen en la mañana, llegas fresco y no andas en el trabajo pensando en otra cosa.
  • Llega a tiempo, por lo menos con 30 minutos de anticipación, siempre en el primer examen llegas con nervios
  • Generalmente no te dejan pasar al examen con celulares, plumas, USBs, libretas, por lo tanto no cargues de más, lleva solo tus identificaciones.
Durante el examen
  • No dejes preguntas sin responder, aun con duda, resuélvelas, todos los exámenes te permiten marcar las preguntas para revisarlas al final. Tal vez más adelante te acuerdes y regreses a resolverla.
  • En cuanto tiempo debes resolver cada pregunta?, Si notas que una pregunta ya te llevo 3min y el tiempo límite eran 2.5min, elige alguna opción, márcala para revisión y continua con la siguiente. Si te da tiempo al final podrás regresar a resolverla pero está no te detuvo para resolver las demás.
  • Siempre te dan una pequeña pizarra para hacer tus anotaciones, usala.
  • No te distraigas y voltees a ver a los demás candidatos que están haciendo el examen, en la mayoría de los centros hay una cámara que te vigila y si te detecta distraído o haciendo trampa te suspenden el examen y de la oportunidad de hacer cualquier certificación de ese producto.
     
Al final del examen
  • Felicidades! Tu certificado te llegara entre 2 y 4 semanas.
  • En caso contrario no te preocupes, se siente uno mal, pero te recuperas. Los fabricantes del examen te dejan presentar otra vez el examen después de 2 o 3 semanas.
Recursos de Estudio
Sitio para descarga de guías de estudio para certificaciones en RedHat, Microsoft, Cisco, PMI, Sun, Oracle.
http://www.flazx.com/category60.php


Hay muchos sitios para obtener guías, tips, mock exams de las propias empresas o de grupos independientes:
Java    http://www.coderanch.com/forums/c/7/certification
Sun    http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=365
Spring    http://www.springsource.com/training/certification/springprofessional
Oracle    http://blogs.oracle.com/certification/
IBM    http://www-03.ibm.com/certify/
https://www-304.ibm.com/isv/welcome/vic.html

Si te interesan más tips acerca de las diferentes certificaciones de Java, checa este link.
http://jiturbide.blogspot.com/search/label/Certificacion

Conclusión
El tener una certificación no garantiza que eres experto, que te contraten u obtener un aumento, pero ayuda como diferenciador ante situaciones de evaluación.

miércoles, 23 de diciembre de 2009

Especificación de Arquitectura de Software

Las siguientes lineas están dirigidas a las personas que se inician como Arquitectos de Software, trato de explicar que es lo que hace un Arquitecto y las actividades necesarias para especificar Arquitectura, el contenido es un punto de vista personal que no pretende ser una guía, para más detalles es mejor consultar el material de referencia que se anexa al final.

¿Por que la importancia de la Arquitectura?
La complejidad en el desarrollo de sistemas empresariales donde hay requerimientos de alta disponibilidad, de integración, componentes distribuidos y seguridad ha ocasionado que sea necesario contar con un desarrollador de software experimentado en la combinación de las tecnologías adecuadas para lograr que un sistema con estas características sea exitoso y cumpla así los objetivos del sistema.

¿Qué es Arquitectura?

Es la especificación de la estructura de un sistema para soportar correctamente su operación.

Metas de la arquitectura

  • Reducir los riesgos tecnológicos del proyecto asociados a sistemas de gran escala
  • Diseñar los componentes de software que soporten la operación del sistema y cumplan con los requerimientos no funcionales
  • Facilitar el diseño, implementación y despliegue de la aplicación.

¿Qué es un Arquitecto de Software?

Una persona como cualquiera de nosotros que cuenta con suficiente experiencia para poder proponer soluciones. Contrario a lo que podríamos pensar, un Arquitecto no es un gurú del desarrollo, no se centra en detalles de codificación y no tiene porque conocer los detalles codificación de todos los frameworks conocidos. El Arquitecto debe conocer cómo funcionan las diferentes opciones tecnológicas, sus ventajas y desventajas para poder proponer una o varias alternativas de solución que normalmente deben sujetarse a restricciones de presupuesto, tiempo y recursos. La elección debe ser cuidadosa ya que uno de sus objetivos es tratar de eliminar los riesgos del desarrollo sistema y garantizar la operación del sistema una vez liberado. Los proyectos siempre tienen variantes o requieren de ciertos frameworks que nunca habíamos utilizado, por ello también el Arquitecto debe saber investigar y entender rápidamente cómo funciona la tecnología.

Actividades del Arquitecto


El insumo de un Analista Funcional de Sistemas son los requerimientos de Negocio y Funcionales para encontrar ¿Qué funcionalidad debe proporcionar el sistema?. El insumo de un Arquitecto son los Requerimientos No Funcionales y las Restricciones Iniciales para determinar ¿Cómo debe ser construido el sistema para soportar tal funcionalidad?.
El Arquitecto al igual que el Analista de Sistemas debe realizar actividades de Análisis, Diseño y Construcción con la diferencia que su objetivo son los Requerimientos No Funcionales del Sistema, todo aquello que determina como debe funcionar el sistema.


¿Cómo proponer una solución?

El Arquitecto obtiene los requerimientos iniciales, las restricciones, los supuestos, identifica riesgos, analiza la información y formula una o varias propuestas de solución tomando en cuenta todo lo anterior. Dentro de la solución no elige un framework porque es el favorito del Arquitecto, no elige el lenguaje de desarrollo porque quiere aprenderlo o porque es el de moda, los elementos que conforman la solución deben elegidos de forma adecuada para que en conjunto cumplan con los requerimientos no funcionales y las restricciones de tiempo, costo y recursos.

¿Cuál es el resultado de las actividades de análisis de un Arquitecto?
El resultado es un entregable al que llamo en este artículo: Documento de Arquitectura, este documento puede tener diferentes nombres dependiendo de la metodología y de la empresa: Documento de Arquitectura (Vision Consulting), Service Level Agreement (SLA), TCH100 (GNP) etc.
Las siguientes son algunas de las actividades que debe realizar el Arquitecto para poder proponer una solución de Arquitectura.

Obtención y Análisis de Requerimientos


Requerimientos de Negocio
Al igual que el Analista Funcional, el arquitecto debe identificar y conocer cuáles son los objetivos de negocio que motivan el desarrollo del sistema. Esto permitirá proponer la solución más adecuada en función de estos objetivos y evitar cualquier desviación.

Requerimientos No Funcionales
Los Requerimientos No Funcionales (NFRs) son los niveles de servicio y restricciones que el sistema debe cumplir, cuando un cliente es experimentado puede definirlas por el mismo, en otras ocasiones es el arquitecto quien debe ayudar a identificarlas.
En el Documento de Arquitectura el listado de Requerimientos No funcionales puede ir en una tabla como la siguiente escritas con palabras propias del cliente.
Clave
Descripción
NFR01
Descripción del Requerimiento No Funcional
NFR 02


Estás características dictan Como?, Que tan bien? o Que tan rápido? se debe realizar la funcionalidad del sistema. Estas características técnicas están clasificadas y bien definidas, Sun Microsystems en su Metodología de Arquitectura, Sun Tone Methodology las llama Cualidades Sistémicas o Quality of Service (QoS)

Cualidades Sistémicas
Las cualidades sistémicas están definidas por Sun Microsystems de la siguiente manera:

Manifiestas u obvias para el usuario 
  • Desempeño (Performance)Que tan rápido el sistema debe cumplir la petición. 
  • Confiabilidad (Reliability) El sistema debe ser exacto. 
  • Disponibilidad (Availability) – Cantidad de tiempo en línea en el que el sistema puede procesar solicitudes. (De hecho el tema es más complejo) 
  • Usabilidad (Usability) – Que tan fácil es usar el sistema.  
 
Cualidades operacionales que están ligadas al sistema en ejecución 
  • Rendimiento de trabajo (Throughput) – Cantidad de trabajo hecho por el sistema medido en operaciones por unidad de tiempo.  
  • Posibilidad de ser Administrado (Manageability).  
  • Seguridad (Security) – Prevención de uso no autorizado del sistema y su información.  
  • Serviceabilidad (Serviceability) – Esfuerso necesario para actualizar o reparar el sistema.  
  • Facilidad de hacer pruebas (Testeability) – Esfuerzo requerido para identificar y aislar una falla en el sistema.
    Cualidades Evolucionarias relacionadas de cómo se comporta el sistema cuando es modificado o actualizado. 
    • Escalabilidad (Scalability) – Capacidad de crecer y mantener buenos niveles de operación ante un incremento en el número de usuarios o peticiones.  
    • Mantenibilidad (Maintainability) – Que tan susceptible es de ser corregido o reparado.  
    • Extensibilidad (Extensibility) – Posibilidad de agregar funcionalidad nueva.  
    • Flexibilidad (Flexibility) – Costo de implementar una corrección o una funcionalidad nueva.  
    • Reusabilidad (Reusability) – Esfuerzo ahorrado apoyándose en componentes existentes  
    • Portabilidad (Portability) – Esfuerzo ahorrado cuando se migra a una infraestructura diferente.


    Cualidades de Desarrollo que afectan como se está construyendo 
    • Realizabilidad (Realizabilidad) – Probabilidad o confianza en que el sistema puede desarrollarse, se ve reflejado en la facilidad de estimación, planeación y construcción.  
    • Planeabilidad (Serviceability) – Confianza en que el sistema puede ser planeado en costo y esfuerzo.
      Algunas cualidades sistémicas son excluyentes entre sí, por ejemplo Desempeño Vs Seguridad, el cumplimiento de una minimiza a otra por lo que es necesaria una priorización en las cualidades sistémicas para poder decidir de entre varias opciones de solución cual es la más adecuada y que no comprometa el cumplimiento de una o varias cualidades.
      Las cualidades sistémicas identificadas se listan y priorizan en un listado como el siguiente:
      QoS
      Prioridad
      Descripción del Requerimiento
      Propuesta para cubrir el requerimiento
      Disponibilidad
      Alta
      El sistema no debe quedar fuera de línea en las horas pico o dentro de la ventana de servicio.
      Opción 1: Se propone escalar el sistema con XX Memoria RAM y mover las aplicaciones existentes a otro servidor con menos recursos

      Opción 2: Se propone el uso de 2 servidores YYY y 1 balanceador de carga.
      Seguridad
      Alta


      Tiempos de Respuesta
      Alto
      Ver tabla anexa



      Tiempos de respuesta esperados (Ejemplo)

      Tipo operación
      Respuesta en Hora Promedio


      Respuesta en Hora Pico
      Volumen promedio de datos
      Accesos concurrentes, (prom. futuro.)
      Latencia detectada hacia Server
      Latencia detectada hacia BD
      Escritura
      ¿?
      ¿?
      50k
      825
      Por probar
      Por probar
      Lectura
      ¿?
      ¿?
      50k
      300
      Por probar
      Por probar
      Reportes
      ¿?
      ¿?
      50k
      300
      Por probar
      Por probar
      General
      1seg
      5seg
      50k
      300
      Por probar
      Por probar


      Características operacionales

      Característica
      Operaciones del Sistema Detectadas
      Descripción
      Transaccional
      *Asignación del folio

      *Calculo de número de referencia
      Se desarrollarán los componentes de negocio con EJBs

      Los demás componentes de negocio se desarrollarán con POJOs para poder llegar a los tiempos de respuesta solicitados.
      Concurrencia
      * Registro de un solicitante

      * Consulta de reportes

      * Configuración de procesos de registro






      Restricciones

      Todo proyecto tiene restricciones, las más comunes son tiempo, recursos, presupuesto y tecnología a utilizar. El arquitecto debe proponer alternativas de solución que se muevan dentro de estas restricciones. En algunos casos será necesario sacrificar una buena opción porque no cumple alguna de estas.
      Es muy importante documentar las restricciones iniciales del proyecto y a lo largo del desarrollo documentar los cambios sobre estas restricciones. Al final del proyecto es común que alguien sin contexto cuestione: ¿Por qué se hizo de esta manera? La respuesta puede estar en las restricciones iniciales y los cambios a lo largo del proyecto.


      Suposiciones

      Al inicio del proyecto no siempre tenemos toda la información necesaria para poder plantar una propuesta, incluso el cliente puede no tenerla. Esta incertidumbre puede hacer que dudemos en proponer una solución porque no sabemos qué implicaciones puede tener ese faltante de información, pero por otro lado no podemos quedarnos inmóviles a esperar a que se defina ese faltante, esto puede resultar en la pérdida de un posible cliente. Ante estos casos se deben hacer supuestos y actuar en base a estos. Cuando por ejemplo se hace una propuesta estos supuestos se deben notificar a todos los involucrados y denotar que cierta solución es válida bajo ciertas consideraciones.
      Ejemplo. El cliente no tiene idea de cuantos reportes se tienen que generar en el sistema.
      Supuesto: Se realiza una propuesta suponiendo que solamente se requerirán 100 horas de construcción de reportes.


      Riesgos

      El manejo de riesgos es un tema importante en la administración de proyectos y de igual forma para la Actividad de Arquitectura. Unos de los objetivos de la arquitectura es precisamente disminuir los riesgos tecnológicos.
      La idea es identificar todos aquellas situaciones que pueden poner en riesgo el éxito del proyecto dentro de las restricciones de tiempo y presupuesto, crear un plan de mitigación y de contingencia en caso de que se de el problema.
      Riesgo
      Descripción
      Probabilidad
      Impacto
      Plan de mitigación
      Ejemplo:

      Diferente comportamiento entre el ambiente de desarrollo y de producción
      El ambiente de desarrollo es Windows y el de Producción es UNIX puede haber problemas de ambientación
      ALTA / MEDIA / BAJA
      ALTO / MEDIO / BAJO
      * Desarrollar en maquinas virtuales

      * Realizar deploys y revisiones periódicas del sistema en el ambiente AIX
      Ejemplo:

      El cliente propone el uso de un framework web open source que no ha sido probado en el servidor final
      La especificación dice que el servidor de aplicaciones que adquirirá el cliente cumple con le especificación XXX y el framework necesita de esa especificación para poder funcionar. Hay una probabilidad de que el framework no funcione correctamente
      BAJA
      ALTO
      RESUELTO

      Se realizaron pruebas de operaciones complejas con el framework usando la misma versión y sistema operativo del servidor de aplicaciones.
      Ejemplo:

      Tiempos de respuesta arriba del valor requerido
      Se está solicitando el tener tiempos de respuesta de máximo 5 segundos para operaciones de consulta en horario pico

      Dada la configuración de topología red donde se tiene … …
      MEDIO
      ALTO



      Es un criterio de aceptación para la liberación
      Se deben hacer pruebas de desempeño en el servidor de pruebas usando los mismos elementos de hardware e identificar posibles cuellos de botella fuera de la aplicación


      Esta tabla es un ejemplo y nos ayuda a identificar y prepararnos para saber que debe hacerse en caso de que se presente un problema previamente identificado.
      Esta lista de riesgos debe actualizarse y mantenerse durante todo el desarrollo del proyecto


      Sizing y Planeación de la Capacidad

      Dentro de este rubro se puede mencionar la medición del crecimiento de espacio en disco por elementos propios de la aplicación, información tales como archivos o datos de la base de datos o número de peticiones de clientes considerando cifras iniciales y a futuro.
      Esta recolección de cifras ayudará a determinar qué tipo y cantidad de hardware es necesaria para soportar la operación del sistema en un horizonte de tiempo dado.


      Numero de Accesos

      Operaciones más demandantes
      Accesos concurrentes Iníciales, Horario Pico

      (Operaciones / min)
      Accesos concurrentes

      Iníciales, Horario No Pico

      (Operaciones / min)
      Accesos concurrentes Futuros, Horario Pico

      (Operaciones / min)
      Accesos concurrentes

      Futuros, Horario No Pico

      (Operaciones / min)
      Registro de X
      750
      200
      825
      220
      Consulta de reportes
      300
      50
      330
      55
      Configuración de catalogos
      -
      -
      330

      A 1 año
      55

      A 1 año


      Crecimiento de espacio en Disco Duro

      Descripción del archivo
      Tipo de Archivo
      Cantidad inicial (6 meses) MB
      Tamaño al final del año (MB)
      Porcentaje semestral
      Periodicidad
      EARs, Wars de la aplicación
      Aplicación



      Archivos
      Archivos




      Base de datos
      Base de Datos




      Log
      Archivo de texto




      Esquema de Base de Datos
      Esquema



      Total







      Crecimiento de la base de datos

      Tabla
      Tamaño inicial en registros (primeros 6 meses)
      Incremento semestral (% o núm)
      Operación



      Consulta
      Actualización
      Nombre


      Oper
      Frec
      % o núm.
      Oper
      Frec
      % o núm.
      CSI_AREA
      13
      0%
      S
      DIA
      525
      -----
      -----
      0
      CSI_COLONIA
      91500
      0%
      S
      DIA
      525
      -----
      -----
      0
      CSI_DEPENDENCIA
      30
      0%
      S
      DIA
      525
      -----
      -----
      0
      CSI_ESTADO
      32
      0%
      S
      DIA
      525
      -----
      -----
      0










      Propuesta de Solución (Diseño)

      Tipo de Sistema

      Se debe especificar qué tipo de sistema se desarrollará.
      • Cliente / Servidor 
      • Multicapa 
      • Multicapa web

      Diagrama de Capas y Filas


      Este diagrama es un artefacto de la metodología Sun Tone Methodology, muestra la tecnología a utilizar en cada una de las capas del sistema y por cada capa define niveles de productos que participan en la solución. Cada una de las tecnologías elegidas da solución a los requerimientos detectados en la fase de Análisis.
      Ejemplo: Este es un diagrama de ejemplo, Algunas de las celdas pueden haber sido dadas de inicio por las restricciones tecnológicas del cliente y las otras se llenan con la propuesta tecnológica del Arquitecto
      Capa

      Nivel
      Capa Cliente
      Capa de Presentación
      Capa de Negocio
      Capa Integración o Acceso a Datos
      Capa de Recursos
      API, Framework
      *HTML ver. 4.01

      *CSS 2.1

      *DOM 2

      *Javascript

      *Plugins:

      *Adobe Reader PDF

      *Ajax Prototipe

      Presentación:

      *Web Components JSP1.2, Servlet 2.5,

      *Struts 1.3

      *JSE 6.0

      Reportes:

      *Jasper Reports

      *JFree Chart

      Utilerias:

      *apache-commons
      *POJOs con JSE 6.0

      *Hibernate 3.0

      *JSE 6.0

      *Webservices con JAX-WS

      *Correo con apache-mail

      *Java IO para lectura de archivos

      *WebServices con AXIS2.0
      BD:

      *Tablas

      *No Habra triggers, ni stored procedures
      Producto
      Explorer >=6.0, Mozilla>=2.0
      *JBoss 4.3.2GA con soporte para JEE5.0

      *Workflow: jBPM 3.3.2

      *SQL Server 2005 para la BD del sistema (En server 1)

      Sistema Operativo
      Cualquiera





      *Linux Ubuntu Server 8.04
      *Windows 2003 Server en server 1.
      Hardware
      Cualquiera





      *Servidor 2: Opteron AMD dual core serie 800
      *Servidor 1: intel xeon 3.2 MHZ



      Capa de Cliente: Es la capa donde se ejecuta una aplicación de consola, dispositivo móvil, pc desktop o con navegador web.
      Capa de Presentación: Aquí residen los componentes dinámicos de vista y control que generan una salida HTML, XML y los Reportes que se envían al cliente, por ejemplo JSP, Servlets.
      Capa de Negocio: Aquí residen los procesos de negocio, workflow, timers.
      Capa de Integración: Aquí residen los componentes que permiten la comunicación al exterior tal como componentes de acceso a base de datos, web services, correo, colas de mensajes, clientes de web service, conectores.
      Capa de Recursos: Aquí se encuentran todas las fuentes de información externas, tales como Bases de Datos, sistemas de Archivos, Content Managers, Mainframes.


      Diagrama de Componentes

      El diagrama de componentes inicial es una propuesta de que componentes de software intervendrán en la solución.

      Diagrama de Despliegue

      El Diagrama de Despliegue inicial nos ayuda a saber con qué otros sistemas interactuarán y convivirá el nuestro dentro.

      Prototipo

      Provee una demostración o implementación de principio a fin de los componentes tecnológicos primarios, demuestra la viabilidad de la solución y sirve como guía para el desarrollo del sistema.
      Estos prototipos pueden ser implementaciones base o presentaciones ppt dependiendo del nivel de cliente para el cual se desea hacer una prueba


      Usabilidad

      La usabilidad toma en cuenta el tipo de personas que serán usuarios del sistema para proporcionarles una interfaz de usuario que permita hacer productivo su trabajo y por ninguna circunstancia dañe su información. En este sentido es necesario al inicio del proyecto hacer pruebas de usabilidad ya sea con un demo o una presentación que muestre la forma en la que se interactuará con el sistema.
      Principios de Diseño a seguir:
      • Visibilidad – Claridad en la información a presentar.
      • Retroalimentación – Enviar información en respuesta a una acción del usuario.
      • Facilidad - Uso de elementos obvios y sencillos para el usuario.
      • Simplicidad – Mantener una interfaz simple.
      • Estructura – L a interfaz de usuario está dispuesta en una forma lógica y con sentido.
      • Consistencia – Uniformidad y la navegación hacen fácil el uso
      • Tolerancia – La aplicación debe tolerar los errores de usuario, (uso de confirmaciones, mensajes de error)
        El realizar esta exploración de los elementos de interfaz de usuario requeridos ayudará a elegir la tecnología de la capa de presentación que debe usarse desde el inicio del proyecto. No es lo mismo utilizar simples JSPs que utilizar AJAX, esta diferencia implica requerimientos del servidor de aplicaciones, de recursos humanos y de costos.

        Conclusión

        Si bien el Arquitecto de Sistemas es una persona experimentada, su responsabilidad no jugar el rol de Analista, Diseñador, Líder de Proyecto y Tester al mismo tiempo, más bien tiene como responsabilidad el asegurar que el sistema sea desarrollado minimizando riesgos tecnológicos y que el sistema una vez liberado opere sin poner en riesgo los objetivos de negocio para los cuales fue creado. Para esto es necesario que aplique su experiencia y buenas prácticas de diseño de sistemas.
        Así mismo el entregable del Arquitecto no es un "Si" "No" a capricho en la elección de la tecnología a usar. Todo el proceso de análisis, las alternativas de solución y la decisión final deben estar sustentados y plasmados en un Documento de Arquitectura que documente las decisiones de diseño y guie el desarrollo.


        Referencias

        Software Architecture in Practice
        http://books.google.com.mx/books?id=mdiIu8Kk1WMC

        The J2EE Architect's Handbook
        http://www.theserverside.com/tt/books/DVTPress/J2EEArchitectsHandbook/index.tss

        Developing Architectures for Enterprise Java Applications (SL-425) Course
        http://www.sun.com/training/catalog/courses/SL-425.xml

        Sun Tone Methodology
        http://rieck.dyndns.org/architecture/suntoneam_wp_5.24.pdf?version=1