Comparto con la comunidad la presentación que usé para apoyar mi disertación sobre el Proyecto Nombre Clave «Menarva» en el «Foro de Iniciativas y Proyectos TIC» realizado el pasado jueves 29 de noviembre de 2007 en las instalaciones del Centro de Tecnologías de Información y Comunicación (CENTIC) de la Universidad Industrial de Santander (UIS), en Bucaramanga, Departamento de Santander, Colombia, organizado por la Asociación Colombiana de Usuarios de Internet (ACUI) con el auspicio del Instituto Municipal de Empleo y Fomento Empresarial de Bucaramanga (IMEBU).
Menarva, además de ser la diosa etrusca de la sabiduría, el conocimiento, la guerra, el arte, las escuelas y el comercio, es el nombre clave que lleva un proyecto de Tecnologías de la Información y de las Comunicaciones (TIC) en el cual estamos embarcados con un grupo de profesionales de Sistemas de Información, Ingeniería de Software y Sistemas de Gestión, cuyo cometido es llevar a la realidad una plataforma tecnológica en línea, colaborativa y con especificaciones abiertas para que las organizaciones puedan montar sus respectivos sistemas de gestión —calidad, medio ambiente, responsabilidad social empresarial (RSE), salud ocupacional, higiene y seguridad industrial, etcétera.
Por supuesto, iré dando mayores detalles sobre este asunto más adelante en este mismo espacio.
Desde este enlace al sitio web de Expértika ya se puede acceder a la presentación en línea correspondiente a la charla introductoria «Mejora de Procesos para Desarrollar Software Mejor» que, tal como anuncié en este mismo espacio, tuve el gusto de brindar ayer 28 de junio de 2007 en el Auditorio Menor de la Sede Bucaramanga de la Universidad Cooperativa de Colombia (UCC), en el marco de las actividades de SPIN Colombia.
En general, todo salió bastante bien, a pesar que un partido de fútbol entre las selecciones Colombia y Paraguay jugado a la misma hora que la charla provocó que la asistencia no fuera la esperada. De todas formas, fue importante para comenzar a difundir y planear los siguientes pasos para activar la SPIN en la ciudad colombiana de Bucaramanga y su área metropolitana.
El modelo ha sido bastante difundido en los últimos años. Básicamente, la práctica conocida como offshoring se basa en la reubicación de procesos de negocio —tales como producción, manufactura o servicios— de un país a otro. Hay varios elementos que lo refuerzan en relación con la industria del software, como la diferencia de costos en la producción de software en los diferentes países, la imposibilidad de algunos países de autosatisfacer la demanda de software, etcétera. En parte por ello es que los países cuyos mercados necesitan adquirir este tipo de servicios a empresas de otros países, promueven la certificación o evaluación en modelos —como el Capability Maturity Model Integration (CMMI)— a empresas de estos otros países para que puedan proveer algún tipo de garantía en los procesos de producción —¿o creías que era de buenos nomás?
Sin embargo y más allá de cualquier certificación y/o evaluación, debemos hacer las cosas bien. Resulta que me han llegado algunos comentarios, uno de ellos de alguien que estuvo allí, sobre una charla titulada «Extreme Programming (XP) and Productivity Measures — What the Numbers Say» que dio Michael Mah y fue organizada por el grupo de la Software Process Improvement Network (SPIN) de la ciudad de New York. Para quien no sepa quién es, Mah es un referente en materia de Ingeniería de Software que mantiene su propio blog, Optimal Friction, y está al frente de QSM Associates.
En esta charla y entre otras cosas, Mah manifestó, tal como nos confirma el propio Ed Yourdon, que la enorme base de datos de proyectos que su empresa mantiene arroja un resultado preocupante: los desarrollos contratados off-shore poseen una tasa de defectos de 2,8x —¡un 280%!— con respecto al promedio. Casi nada, considerando que esta base de datos contiene información sobre 7.300 proyectos que representan unas 685 millones de líneas de codígo (LOCs), de 500 empresas en 18 países y escritas en 600 lenguajes de programación distintos.
Por supuesto, toda estadística tiene un margen de error, pero de todas formas este resultado es preocupante, tanto para el mercado que compra este tipo de servicios como para la industria mundial que los vende —o que pretende venderlos.
Entonces... ¿qué hacemos? ¿Seguimos cumpliendo como podemos los requisitos que tenemos que cumplir según normas, modelos, etcétera, o además hacemos lo que es bueno para el proceso de desarrollo? Sí, señores, no se trata sólo de certificarse y/o evaluarse en modelos —lo cual es necesario, no lo dudo—, sino pensar en lo que estamos haciendo y hacerlo mejor, empleando también modelos de bajo nivel y estándares, sin eludir responsabilidades para reducir costos, respetando a la gente, siendo éticos, sin «fabricar» evidencias y haciendo lo que se debe hacer para producir software. Les aseguro que funciona y da beneficios de todo tipo. Es más difícil, no es para cualquiera, pero funciona...
Así se traduce el nombre de un modelo que Jim Heumann para IBM/Rational desarrolló en 2003, Requirements Management Maturity (RMM), y que Scott Sehlhorst yuxtapone y compara en Tyner Blain con el Capability Maturity Model Integration (CMMI).
Esta comparación es lógica, pues también se trata de un modelo de cinco niveles —aunque no hay una relación paralela entre un mismo nivel para ambos modelos—, los cuales son:
- RMM Nivel 1: Requerimientos Escritos.
- RMM Nivel 2: Requerimientos Organizados.
- RMM Nivel 3: Requerimientos Estructurados.
- RMM Nivel 4: Requerimientos Trazados.
- RMM Nivel 5: Requerimientos Integrados.
Además, RMM también promete cubrir los aspectos relacionados con la gestión de los requerimientos necesarios para evaluarse, al menos, en los primeros tres niveles de CMMI, por lo cual considero interesante su análisis por parte de las empresas para emplearlo como modelo de bajo nivel y complementar al CMMI.
El documento completo en inglés, de título «The Five Levels of Requirements Management Maturity», puede descargarse desde el sitio de IBM.
Según el Software Engineering Institute (SEI) de la Carnegie Mellon University (CMU), la transición a la versión 1.2 del Capability Maturity Model Integration (CMMI) fue un reto mayor debido al significativo aumento en usuarios y aliados en comparación con la anterior transición entre las versiones 1.0 y 1.1. Así lo indica Mike Phillips, Director de Proyectos Especiales del SEI y encargado de liderar el proyecto CMMI, en su interesante artículo «CMMI: A New Transition», publicado en la columna CMMI in Focus de la edición de enero de 2007 de News@SEI. Por supuesto, el artículo está en inglés.
Tal como menciona Phillips, la versión 1.2 incluye varias modificaciones en todo el paquete de productos CMMI para hacer esta herramienta de mejora de procesos más útil y aumentar la confianza en los resultados de la mejora de procesos basada en CMMI.
Por último, recuerda que los períodos de transición siempre presentan retos conocidos e inesperados, ante lo cual agradece personalmente a la comunidad de aliados y usuarios de CMMI por la ayuda para hacer esta transición lo más rápida y efectiva posible.
Hace tiempo me preguntaron sobre los estándares que The Institute of Electrical and Electronics Engineers (IEEE) ha desarrollado en torno a la disciplina Ingeniería de Software, por lo cual aprovecho este espacio para responder.
Primero, cabe una aclaración. El IEEE desarrolla sus estándares a través de una de sus entidades, la IEEE Standards Association (IEEE-SA). Asimismo, este desarrollo se potencia mediante otras entidades técnicas abarcadas por el Instituto. En el caso puntual de este conjunto de estándares, estas entidades técnicas son la IEEE Computer Society (IEEE-CS) y el IEEE Technical Council on Software Engineering (TCSE), las cuales participan de esta actividad mediante un comité: el Software & Systems Engineering Standards Committee (S2ESC).
Lo mencionado es desde lo institucional relacionado directamente con el IEEE. Sin embargo, no debemos olvidar que en el desarrollo de estos estándares también participan organizaciones de todo tipo, como empresas del sector privado, universidades, otras organizaciones no gubernamentales y gobierno. He hablado sobre el procedimiento completo y cómo participar de estas actividades en alguna que otra de mis charlas en los diferentes eventos de los cuales he participado.
Este conjunto de estándares abarcan todos los aspectos técnicos relacionados con la Ingeniería de Software. Son un excelente complemento para modelos de alto nivel como el Capability Maturity Model Integration (CMMI) aunque, por supuesto, deben ser interpretados y adaptados a las necesidades particulares de cada organización para sacarles el máximo provecho.
Ahora bien, para quien desee tener un listado completo de este conjunto de estándares, siempre actualizado a la fecha con sus respectivos estados, puede acceder mediante este enlace. Se trata sólo del listado con su estado y descripción, no del texto completo pues, como ocurre con la mayoría de los estándares, acceder a ellos tiene un costo —el cual es preferencial para los miembros del IEEE.
Con resultados exitosos considera la Federación de Software Colombiana (Fedesoft) que se desarrolló la conferencia que di ayer miércoles 11 de octubre de 2006 en las instalaciones de la Cámara de Comercio Colombo Americana en Bogotá, Colombia, de título «Desarrollando Software de Clase Mundial: ¿Cuál es la Clave?» y que anuncié en este mismo espacio hace unos días.
En esta ocasión tuvimos la oportunidad de hacer planteos y reflexionar con un selecto auditorio conformado mayormente por empresarios, directivos e ingenieros con capacidad de toma de decisiones en sus respectivas empresas, sobre los asuntos que desde el lado estratégico se le imponen como reto a los participantes de la pujante industria del software colombiana de cara a las nuevas oportunidades de negocio que brinda la apertura de mercados internacionales mediante los tratados de libre comercio que se están estableciendo con distintos países.
Muchos de los temas son los que acostumbro a tratar en mi blog y, por supuesto, sobre los mismos asesoramos a empresas del sector desde Expértika, nuestra firma de consultoría.
Comparto con todos algunas de las fotografías que se tomaron durante el evento. Las memorias del mismo pueden descargarse desde el sitio web de la Federación.
Luego de unos días arduos abocado a la fundación de una firma de consultoría, Expértika Compañía Ltda., en la cual ejerzo como Gerente General, vuelvo al ruedo con mi blog y les cuento que el próximo miércoles 11 de octubre de 2006 de 8:30 a 11:00 horas estaré dando en la ciudad de Bogotá, Colombia, mi conferencia «Desarrollando Software de Clase Mundial: ¿Cuál es la Clave?», orientada principal aunque no excluyentemente a empresarios, directivos e ingenieros con capacidad de toma de decisiones en sus respectivas empresas de la industria del software.
Con el patrocinio y la organización de la Federación de Software Colombiana (Fedesoft) y la Cámara de Comercio Colombo Americana, el evento tendrá lugar en las instalaciones de la Cámara, sitas en Calle 98 N° 22-64, oficina 1209, Bogotá, Colombia.
Esta vez, enfocaré la disertación según la perspectiva empresarial y de gerencia. El planteo introductorio de esta conferencia es que para desarrollar software de clase mundial, este debe pensarse para serlo. Pero ello no basta. Las empresas deben adaptarse a la proyección internacional y descubrir la importancia de su interacción gremio-industrial. Compartiré en esta charla experiencias propias y de terceros relacionadas con el tema, y de aspectos como el aseguramiento de la calidad, cuestiones a tener en cuenta relacionadas con el producto software, software propietario y libre, metodología, organización y equipos de trabajo, usabilidad y accesibilidad, entre otros asuntos que adoptan carácter estratégico para los participantes de la industria del software de clase mundial de cara a las oportunidades de negocio que se le presentan a la industria colombiana del software.
Pueden obtener más información en esta página del sitio web de Fedesoft. Por consultas y para inscribirse, comunicarse con el Departamento Comercial de la Cámara, al teléfono +57 1 623 7088 o por correo electrónico.
Al margen, les comento que es posible que también dé esta conferencia más adelante en Bucaramanga, Medellín, Cali y Cartagena —o Barranquilla—, pero esto está por confirmarse. Por supuesto, los tendré al tanto por medio de este espacio.
Tal como comenté antes, participé como conferencista de la «Segunda Jornada Técnica IEEE del Oriente Colombiano», organizada por IEEE Sección Colombia y la Rama Estudiantil del IEEE en la Universidad Francisco de Paula Santander (IEEE-UFPS). Este evento que se desarrolló el día viernes 1° de septiembre de 2006 en la ciudad de Cúcuta, Departamento de Norte de Santander.
Tal como se ve en las fotografías que acompañan a estas líneas de texto, diserté en una conferencia dentro de las áreas de incumbencia de IEEE Computer Society, de título «Desarrollando Software de Clase Mundial: ¿Cuál es la Clave?».
En esta conferencia planteé que para desarrollar software de clase mundial, el producto software debe pensarse para serlo. Pero ello no basta. Las empresas deben adaptarse a la proyección internacional y descubrir la importancia de su interacción gremio-industrial. Compartí en esta charla experiencias propias y de terceros relacionadas con el tema, cubriendo aspectos como el aseguramiento de la calidad, cuestiones a tener en cuenta relacionadas con el producto software, software propietario y libre, metodología, organización y equipos de trabajo, usabilidad y accesibilidad, entre otros asuntos que adoptan caracter estratégico para los participantes de la industria del software de clase mundial.
Hace unos años, tuve la oportunidad de participar de un emprendimiento cuyas características eran bastante peculiares para la época. Para ser sincero, esa no fue precisamente la experiencia más rentable. De todas formas, esto no se debió a cuestiones organizativas, de proceso o técnicas, sino a un factor de riesgo no previsto —al menos no previsto a tal escala—: los efectos de la caída del NASDAQ y los consiguientes problemas con el flujo de inversión. En todo caso, puedo calificarla como una de esas experiencias que dejan mucho, pues realmente gracias a la misma he aprendido mucho —valga la redundancia— sobre gerencia y estrategia.
Se trataba de una empresa dedicada a la consultoría y al desarrollo y comercialización de software, lo cual no era nada sorprendente, salvo por el hecho que habíamos planteado su funcionamiento en forma distribuida. Lo cierto es que, si bien el mercado no estaba lo suficientemente abierto a un modelo de tales características, el equipo societario sí lo estaba, por lo cual, lejos de ser problemático, era genial —y doblemente en esa época. Además de ser socio en este emprendimiento, también me desempeñaba como Gerente de Desarrollo.
De esta experiencia y lo aprendido posteriormente, menciono algunos de los planteos que, a mi entender, deberían tomar en cuenta quienes quieran implementar un modelo de negocio similar:
- Aplicar en comunicaciones los gastos que bajo otro modelo deberían dedicarse a infraestructura. Para el caso, no se requiere una gran oficina, pues con una pequeña pensada para mantener reuniones y labores de recepción sería más que suficiente. Incluso, hay alternativas posibles para los primeros tiempos de funcionamiento, como establecer una oficina hogareña, alquilar una oficina amoblada —en muchas ciudades hay proveedores de este tipo de servicios que en sus paquetes básicos de bajo costo incluyen cosas como un número telefónico privado, una secretaria telefónica que contesta en forma personalizada siguiendo instrucciones, toma de mensajes y retransmisión por correo electrónico, un domicilio comercial con manejo de correspondencia física, el mobiliario e instalaciones de oficina, conexión a Internet, atención a clientes, servicio de cafetería, etcétera— o establecer un convenio con alguna empresa que cuente con instalaciones subutilizadas, entre otras.
- Aplanar la estructura organizacional, lo cual ayuda a reducir los costos fijos, aumentar la capacidad de adaptación, mejorar la velocidad de respuesta, estar más cerca de los requerimientos y necesidades de los clientes, mejorar las comunicaciones internas y eliminar la resistencia al cambio en niveles medios.
- La mejor forma de lograr aplanar la estructura organizacional es por medio de técnicas como el «empowerment» y el trabajo en equipos multidisciplinarios, sustentado en la capacitación, mejores formas de comunicación y un nuevo tipo de liderazgo.
- Para lograr del personal un mayor compromiso y una menor necesidad de supervisión, es fundamental capacitar al personal en las técnicas de resolución de problemas y toma de decisiones, fomentando en ellos su creatividad y capacidad de innovación, dándole la posibilidad de sentirse totalmente a gusto con su trabajo, representando éste todos los días una nueva motivación. No hay forma de «pedirle» a la gente que «se ponga la camiseta» porque sí; esto sería una gran falacia y sólo generaría sensaciones de explotación. Al encarar las acciones mencionadas, no hace falta pedírselo, pues sienten de verdad lo que ocurre: que «todos están en el mismo barco».
- Establecer y comunicar objetivos estratégico claros y precisos, en los cuales haya tomado algún tipo de participación el personal, hace que éste tenga más claro su norte. Pero cuidado, no se trata de «hacerlos participar» para que se sientan parte de la empresa. Se trata de que participen porque SON la empresa.
- Implementar un sistema de gestión de calidad. Si puede certificarse, perfecto; pero si no, implementarlo igual. La idea es que una operación distribuida sin un sistema de gestión es un peligro pues, por la situación particular del caso, más que en cualquier otra situación se necesita el nivel de organización que este tipo de sistema sin duda brinda.
- Devenido de la concepción propia de la gestión de calidad, llevar al personal a tomar una mayor participación por medio del autocontrol y la conformación de equipos de mejoras, con lo cual se facilite aún más la implementación de una organización más plana y eficiente.
- Diferenciar los gastos de los costos y gestionar los activos intangibles. Poder identificar qué es pérdida, qué es inversión, cuáles son nuestros activos intangibles y cuánto valen nos permite visualizar la empresa en su verdadera magnitud. He visto organizaciones que metían costos y gastos en una misma bolsa, un error con consecuencias nefastas —en particular cuando hay un Directorio de Accionistas u otro tipo de junta directiva que no conocen la operación más allá de lo que nosotros le mostramos. Ni hablar de las que desconocen sus intangibles y cuánto valen, lo cual puede dar la sensación que no se logró nada o afectar seriamente los procesos de toma de decisiones relacionados con el control, la protección y la estimación de dichos intangibles, los productos y la imagen marca.
- Gestionar riesgos. La experiencia me dice que tal vez este sea el elemento fundamental, al punto que puede ser un factor determinante para la continuidad del negocio —no soy el único que lo menciona... He visto de todo en este sentido, desde empresas que no lo gestionan, otras que lo gestionan mal —como si fuera un trámite, para cumplir—, otras que lo intentan sobrecargándose, y otras que establecen esta práctica como una espina dorsal para la empresa, sus procesos internos y la toma de decisiones. Demás está decir que en estas últimas es en las que funciona...
- Mantener el modelo del negocio al día y ensayar en el mismo cualquier cambio que se plantee. Esto permite dominar mejor los cambios —básicamente, saber lo que pasa o puede pasar— y que no tengamos que parar la operación cuando necesitemos mostrar un modelo a, por ejemplo, perspectivas de inversionistas o aliados estratégicos.
- Establecer y gestionar alianzas estratégicas que potencien a nuestra empresa. Esto puede ser difícil para algunas idiosincracias, pues muchas veces se trata de establecer vínculos muy fuertes con empresas que podrían considerarse competencia. Lo cierto es que es más que posible y necesaria la potenciación mutua entre empresas del mismo sector. Si vamos a ser estrictos, la figura de «competencia» debe analizarse en una manera diferente hoy en día —escribiré sobre el tema en futuros artículos.
Leo en la Wikipedia que un oxímoron es «una figura literaria que armoniza dos conceptos opuestos en una sola expresión, formando así un tercer concepto que dependerá de la interpretación del lector. Dado que el sentido literal de un oxímoron —por ejemplo, un instante eterno— es absurdo, se fuerza al lector a buscar un sentido metafórico —en este caso, un instante que, por la intensidad de lo vivido durante el mismo, hace perder el sentido del tiempo». Pues bien, soy de la opinión que, aunque parezca un oxímoron en función de lo que nos tiene acostumbrado el mercado, no tenemos que oponer a los métodos ágiles y al Capability Maturity Model Integration (CMMI) —en su rol de representante de los métodos tradicionales— en una expresión como la del título. Ese aparente oxímoron diría: «¡métodos ágiles y CMMI!». Y digo aparente, porque en realidad no lo es.
Explico. Creo que...
- la industria está plagada de tecnócratas desorientados, quienes en lugar de hacer ingeniería están más pendientes de apoyar hasta el fin ciertos inexplicables fanatismos personales, lo cual nubla la visión abierta que DEBE tener un ingeniero, y...
- CMMI puede convivir perfectamente con métodos ágiles —al contrario de cómo se esfuerzan en demostrar, no son para nada opuestos.
Que software libre, que software propietario, que métodos ágiles, que métodos tradicionales, que enfoque estructurado, que enfoque orientado a objetos, que tecnología de objetos, que Microsoft Visual Basic, que Java, etcétera. Vergonzoso... Las tecnologías están para que nosotros, los seres humanos que incurrimos en la ingeniería —seamos o no ingenieros—, las aprovechemos como mejor nos convenga... Nada más... Cada una de ellas puede convivir perfectamente con otra, si el proyecto lo justifica. No podemos ser fanáticos inquisidores en este marco. El fanatismo está para otras áreas en las cuales la lógica es distinta: fútbol, política, religión, etcétera. Pero no nos podemos permitir fanatismos en términos profesionales e ingenieriles.
Ahora bien, dejo de «hacer amigos» —aunque conozco muchos profesionales que me inspiran el más profundo de los respetos y que concuerdan con lo expresado— para focalizarme en la segunda de las afirmaciones, eso de que «CMMI puede convivir perfectamente con métodos ágiles».
En primer lugar, el Software Engineering Institute (SEI) de la Carnegie Mellon University, que es la entidad titular de los derechos de evaluación del modelo CMMI, no dice que tenemos que hacer todo lo que plantea dicho modelo. A pesar que CMMI puede aplicarse tanto en organizaciones grandes como en pequeñas, estas últimas suelen carecer, en gran medida, de los recursos y el conocimiento requerido para iniciar un proceso de mejora basado en CMMI.
Como CMMI es un modelo, por definición no es perfecto. Las prácticas del modelo necesitan ser interpretadas a la luz del trabajo a realizar y ser escaladas para proveer valor, no sobrecarga. Tenemos que ser lo suficientemente coherentes en nuestras labores de ingenieros para detectar aquellos puntos que nuestra organización no necesita o que en función de sus procesos no le conviene cubrir. Si hacemos esto y lo podemos justificar —cosa que no es negociable—, la evaluación arrojaría que es válido. Por lo tanto, podemos y debemos ajustar el modelo a nuestras necesidades particulares.
Por otro lado, al tiempo que CMMI da ejemplos de procesos y prácticas a nivel organizacional, no provee detalles específicos para los desarrolladores de software y los equipos que integran. Allí es donde entran en juego modelos de un nivel más bajo que ayuden a implementar las prácticas identificadas en CMMI. Ejemplos de ellos serían el Personal Software Process (PSP) y el Team Software Process (TSP), los cuales fueron desarrollados también dentro del SEI allá por 1998 por Watts Humphrey para complementar el «qué hacer» del CMMI —CMM en ese entonces— y acelerar la adopción proveyendo el «cómo hacerlo». Eso mismo se puede lograr mediante muchos y distintos modelos existentes, o nuevos o híbridos por modelar para el caso.
Además, también conviene complementar o extender CMMI con otras iniciativas de mejor práctica como las prácticas de línea de producto, la gestión del valor ganado —o «Earned Value Management» (EVM)—, sistemas basados en COTS, adquisición, mercadeo, Six Sigma, ISO 9001 y un amplio etcétera.
Más allá de su reputación, CMMI, PSP y TSP cubren el optimismo infundado, la irresolución de cronogramas y las metas no cumplidas en una forma ágil. Esta conclusión surge si comparamos los enunciados del «Manifiesto Ágil» con TSP, por ejemplo. Las relaciones son claras, pero por supuesto: tenemos que saber un poco de CMMI, PSP, TSP y agilidad para notarlo. En próximos artículos detallaré este asunto. Por ahora, lo dejo para que quien lo desee investigue un poco.
Tomar nota explícita de cosas malas que pueden ocurrir (riesgos) y planear de acuerdo a ellas es un indicador de madurez. Pero esa no es la forma en que tendemos a usar la palabra madurez en la industria de tecnologías de la información. Nosotros, la gente de software, tendemos a igualar madurez con competencia técnica. Incluso tenemos un esquema de cinco niveles para medir tal madurez, el Capability Maturity Model (CMM). (Todo lo que necesitamos ahora es un programa de doce pasos para ayudarnos a destetarnos de medir la madurez en un esquema de cinco niveles.) Pero la palabra madurez en castellano estándar no tiene nada que ver con la competencia técnica. Es, en cambio, una cualidad de crecimiento, un indicador de que una persona u organismo ha alcanzado el estado adulto.
—Tom DeMarco y Timothy Lister,
«Waltzing With Bears: Managing Risk on Software Projects»
(Dorset House, 2003)
Nota: Original en inglés.
Tal como lo reportó el Software Engineering Institute (SEI) de la Carnegie Mellon University y oportunamente reseñó Juan Palacio en Navegapolis, ha sido liberada la versión 1.2 del Capability Maturity Model® Integration (CMMI). CMMI 1.2 incluye mejoras significativas a todas las porciones del CMMI Product Suite dando así respuesta a asuntos que fueron surgiendo en la práctica con la versión anterior. Los cambios hacen foco en mejorar la calidad de los productos CMMI y la consistencia con que son aplicados.
Este paquete, el CMMI v1.2 Product Suite, está compuesto por los siguientes elementos:
- Modelo CMMI para Desarrollo —o «CMMI for Development (CMMI-DEV)», como se llama ahora—, versión 1.2.
- La versión 1.2 de sendos productos para la evaluación CMMI —la famosa «Appraisal»—: requerimientos para la evaluación CMMI —o «Appraisal Requirements for CMMI (ARC)»— y el documento de defición del método de evaluación SCAMPI A —o «SCAMPI A Method Definition Document».
- Curso introductorio a CMMI versión 1.2 —o «Introduction to CMMI V1.2 course».
Básicamente y para quienes ya conocen la versión anterior de CMMI, entre las mejoras al modelo se desatacan:
- Ambas representaciones, escalonada y continua, ahora están juntas.
- Fueron eliminados los conceptos de «práctica avanzada» y «característica común».
- El objetivo genérico y las descripciones de las prácticas fueron movidas a la parte dos.
- Fueron agregadas ampliaciones con respecto a hardware y ejemplos.
- Todas las definiciones fueron consolidades en el glosario.
- Las prácticas de Integrated Product and Process Development (IPPD) fueron consolidadas y simplificadas. No hay más áreas de proceso separadas para IPPD.
- Se han consolidado Supplier Agreement Management (SAM) e Integrated Supplier Management (ISM), y se ha eliminado el anexo de Supplier Sourcing.
- Fueron agregadas elaboraciones de prácticas genéricas a las prácticas genéricas de nivel 3.
- Se agregó una explicación sobre cómo las áreas de proceso apoyan la implementación de prácticas genéricas.
- Fue agregado material para asegurar que los procesos estándar sean desplegados en los proyectos desde su inicio.
Puede descargarse una presentación con un detalle de estos cambios al modelo desde el sitio web del SEI. También hay mejoras sustanciales para el método de evaluación SCAMPI y para las cuestiones relacionadas con los entrenamientos, que tendremos que actualizar quienes hemos tomado cursos sobre la versión anterior.
Como bien mencioné, esta liberación corresponde a CMMI para Desarrollo; lo que queda pendiente para 2007 es CMMI para Servicios. A esto podemos sumarle el módulo adicional para adquisiciones. Más detalles al respecto en la página de modelos y módulos de CMMI en el sitio web del SEI.
Desde que comencé con este blog me han venido preguntando sobre las comunidades virtuales que menciono en la barra lateral de este sitio o menciono cuando aplica en mis artículos. Es por ello que se me ocurrió publicar el siguiente listado de comunidades virtuales alineadas a la temática de este espacio y con las que, de alguna forma, tuve y/o tengo algo que ver:
Gestión y Gerencia (Management)
- Gestión de Departamentos de Cómputo, Sistemas, Tecnología y Automatización.
- Gestión de la Calidad.
- Toma de Decisiones en el Ámbito de la Dirección Empresarial.
Ingeniería
- Análisis y Diseño de Sistemas de Información.
- Aseguramiento de la Calidad del Software.
- Auditoría de Sistemas.
- Ingeniería de Software.
- Inteligencia Artificial y Sistemas Expertos.
- Objetos Distribuidos.
- Prueba de Software.
Desarrollo
- Desarrollo de Sitios Web Dinámicos con Active Server Pages.
- Desarrollo de Sitios Web Dinámicos con PHP Hypertext Preprocessor (PHP).
- Desarrollo de Sitios Web Dinámicos con PHP-Nuke.
- Desarrollo de Sitios Web Dinámicos con Zope.
- Desarrollo de Software en C/C++.
- Desarrollo de Software en C#.
- Desarrollo de Software en CA-Clipper/CA-Visual Objects/FiveWin/Harbour.
- Desarrollo de Software en Borland Delphi.
- Desarrollo de Software en Borland Kylix.
- Desarrollo de Software en Java/J++/J#.
- Desarrollo de Software en LANSA.
- Desarrollo de Software en LISP.
- Desarrollo de Software en Microsoft Visual Basic.
- Desarrollo de Software en Microsoft Visual FoxPro.
- Desarrollo de Software en Oracle Forms Developer.
- Desarrollo de Software en Oracle JDeveloper.
- Desarrollo de Software en Pascal.
- Desarrollo de Software en Perl.
- Desarrollo de Software en PowerBuilder.
- Desarrollo de Software en Progress.
- Desarrollo de Software en Prolog y Programación Lógica.
- Desarrollo de Software en Python.
- Desarrollo de Software sobre Microsoft .NET.
- Diseño y Desarrollo en Macromedia Flash/Flash MX.
Bases de Datos
- Administración de Bases de Datos IBM DB2.
- Administración de Bases de Datos IBM Informix.
- Administración de Bases de Datos InterBase/Firebird.
- Administración de Bases de Datos InterSystems Caché.
- Administración de Bases de Datos Microsoft SQL Server.
- Administración de Bases de Datos MySQL.
- Administración de Bases de Datos Oracle.
- Administración de Bases de Datos PostgreSQL.
- Administración de Bases de Datos SAP DB/MaxDB.
- Administración de Bases de Datos Sybase.
- Construcción de Consultas en ANSI-SQL y Teoría de Bases de Datos Relacionales.
Aplicaciones
Espero que estas referencias les sean útiles. Cuentas con múltiples funcionalidades, como publicación de mensajes tipo foro, espacio para almacenamiento de archivos —en los que suele haber documentación relacionada con el tema que se trata—, álbumes de fotos, enlaces, encuestas, etcétera.Si quieren recomendar alguna otra comunidad virtual, pueden hacerlo mediante comentarios a este artículo.
Hace unos días les contaba sobre la próxima realización de la «Segunda Jornada Técnica IEEE del Oriente Colombiano», organizada por IEEE Sección Colombia y la Rama Estudiantil del IEEE en la Universidad Francisco de Paula Santander (IEEE-UFPS), evento que se desarrollará el día viernes 1° de septiembre de 2006 en la ciudad de Cúcuta, Departamento de Norte de Santander, y del cual participaré como conferencista.
Disertaré en una conferencia dentro de las áreas de incumbencia de IEEE Computer Society, de título «Desarrollando Software de Clase Mundial: ¿Cuál es la Clave?», en la cual compartiré experiencias propias y de terceros al respecto. Hablaré sobre aseguramiento de la calidad, cuestiones a tener en cuenta relacionadas con el producto software, software propietario y libre, metodología, equipos de trabajo y usabilidad, entre otras cosas.
Para obtener más información e inscribirse en el evento, pueden acceder al sitio web de la Rama IEEE-UFPS o enviarle un mensaje de correo electrónico a Samuel Villamizar Berdugo, el Coordinador Local del evento.
Esta semana ya he escrito en este blog sobre la condición de producto del software, en dicho caso incursionando en los terrenos de la usabilidad del mismo y nuestra responsabilidad al respecto. También hablé sobre la interacción del producto software con el usuario, lo cual nos hace pensar en las acciones que debemos encarar para interpretar al usuario, su ambiente y sus necesidades. Y esto desencadena este artículo.
Sabemos que debemos fabricar productos software de calidad, pero… ¿qué es la calidad? Y más puntualmente, ¿qué es la calidad del software? Hay dos definiciones que me gustan sobre esto, que son igualmente válidas aunque mantienen dos enfoques diferentes. Las mismas son:
- Enfocándonos en el cliente, calidad del software es el grado en que un cliente y/o usuario percibe que el producto software satisface sus necesidades.
- Enfocándonos en la condición industrial del producto, calidad del software es la habilidad de un producto software de satisfacer su especificación de requerimientos.
- Foco en el cliente.
- Liderazgo.
- Resultados basados en los procesos.
- Gerencia de las interrelaciones entre procesos.
- Implicación del personal.
- Mejora continua.
- Relación con los proveedores.
- Decisiones basadas en el análisis de la información.
Aseguramiento de la calidad del software... Es básico y sería falaz pensar siquiera en que la calidad podría llegar a «inyectarse» al producto software finalizando el proceso de desarrollo —el viejo enfoque del control de la calidad. El simple control no puede asegurarnos más que que estaremos muy concientes de los dolores de cabeza que tendremos y la cantidad de dinero que perderemos. La calidad del producto software depende de tareas realizadas durante todo el proceso: detectar errores en forma temprana ahorra esfuerzos, tiempo y recursos.
No hacer las cosas bien se manifiesta en muchas formas. Estos problemas, que listo a continuación, son los más generalizados en las empresas del sector cuyos procesos no tienen calidad y no tienen forma de asegurar la calidad del producto software:
- Compromisos consistentemente incumplidos, expresados en términos de entregas tardías, afluencia constante de defectos de última hora —algo que aquí en Colombia llaman coloquialmente «chicharrones»— y costos espiralados.
- Reducida visión gerencial en el progreso, con la ocurrencia de sorpresas constantes.
- Problemas propios de la calidad, como demasiado «reproceso» o «retrabajo», que las funciones no operen correctamente y un elevado número de quejas de los clientes luego de la entrega —lo cual no es menor si pensamos en el impacto que esto puede tener sobre la imagen marca de la empresa al estar dejando gran parte de las detecciones de defectos en manos de los clientes.
- Moral pobre, que se percibe en forma de gente frustrada y la sensación de que nadie está a cargo.




