Archivos de la categoría ‘Informática e Internet’

h1

Desempeño de C++ vs. Java: todo reside en la calidad del compilador (y del programador también)

13 diciembre, 2012

Wizdoc [Icon By Buuf]  Tips & Tricks.

Hay sólo dos tipos de lenguajes de programación: aquellos de los que la gente siempre se queja… y aquellos que nadie usa.

Bjarne Stroustrup (n. 1950), científico de la computación y catedrático Danés. creador del lenguaje de programación C++.

Para este año fiscal (FY-2013) nos han encargado construir una aplicación de rastreo, monitoreo y seguridad logística, muy parecida a otra que hemos traído desde Estados Unidos a México desde hace tiempo. La gran diferencia radica en que mientras la anterior estaba adaptada a un sólo tipo de dispositivo de rastreo o AVL, la nueva aplicación tiene como finalidad convertirse en nuestra “plataforma universal”, en la que consolidemos todas nuestras soluciones, incluyendo rastreo satelital.

Ahora bien, dentro de nuestras primeras definiciones de arquitectura tecnológica, nos hemos dado cuenta que requeriremos un gran poder de cómputo, ya que estaremos atacando dos grandes procesos: el primero consiste en leer y decodificar los mensajes enviados por 30,000 AVLs; el segundo se trata de procesar los eventos geoespaciales que resultan de éstos mensajes – tal como calcular la proximidad a un “punto de interés” o el evento de entrada y salida desde una geocerca. Hemos notado que una buena opción consiste en implementar una granja de procesadores digitales de señales (DSPs), que llevarían a cabo estas tareas de procesamiento. Sin embargo, en un momento dado los integrantes del equipo caímos en la disyuntiva: ¿Qué lenguaje será usado para desarrollar esta infraestructura: Java o C++? Aunque C++ parece la decisión lógica, es importante definir el lenguaje de forma objetiva, ya que la mayoría de las personas piensa que Java es lento, o que debido a que Java está implementada en C++, éste lenguaje es más poderoso (tip: ambas ideas son falsas). Convirtiéndome en Mythbuster, comparto alguna información al respecto:

¿”Java es lento”?

Java tuvo sus inicios en 1991, y Sun Microsystems lo liberó al público en 1995. Aunque el lenguaje heredó mucha de sus sintaxis de C/C++, los objetivos de Java en aquél entonces pueden resumirse en los siguientes principios:

• Simple, orientado a objetos y familiar.

• Robusto y seguro.

• Arquitectónicamente neutro y portable.

• Ejecutándose en “alto desempeño”.

• Interpretado, con soporte a paralelismo y dinámico.

El compilador de Java convierte el código fuente en archivos bytecode, que posteriormente son interpretados por la Máquina Virtual de Java o JVM, en un modelo de ejecución en pila o stack. Las primeras versiones de Java – previas a la 1.2 – no realizaban optimizaciones en el bytecode y debido a que las diferentes versiones de JVM eran más bien genéricas, la ejecución tenía un desempeño pobre.

A partir de la versión 1.2 (Diciembre de 1998), Java incluyó un compilador Just-In-Time o JIT, que optimizaba el bytecode en tiempo real de acuerdo a la carga de trabajo sobre el programa. Como contraste, un modelo de compilación estática como C/C++ “adivina” dónde se encuentran los cuellos de botella y se enfoca en esa parte del código para realizar la optimización, pero en el caso de ambientes dinámicos como las aplicaciones web, el compilador JIT mantiene una relativa ventaja. Por otro lado, con cada nueva versión de Java, el lenguaje ha ido mejorando su desempeño, ya sea por optimización en la JVM, el recolector de basura o el compilador JIT. De acuerdo a este artículo, podemos ver la comparación en desempeño entre C++ y Java en algunas funciones relativamente sencillas. Lo sorprendente es lo malo que se desempeña C++ si durante la secuencia de compilación y enlace (linking) se deshabilitan todas las banderas de optimización de código. Adicionalmente, de la versión 6 a la 7, Java mejora su desempeño en alrededor de un 33%:

Función Ejemplo Java SE 6 (2010) Java SE 7 (2012) C++ (optimizado) C++ (sin optimizar)
Aritmética entera int Y = rand(X) * 2 25 16 0.001427 70
Aritmética de punto flotante double Y = rand(X) * 2.0 47 28 0.001477 85
Comparación de enteros if A == B then X = B else X = B 50 33 0.001971 56
Acceso a memoria indexada for i = 0 to N: int X = array[n] 53 25 11 136
Asignación de memoria – tipo primitivo for i = 0 to N: int array[n] = X 12,994 7,589 3,661 8,567
Asignación de memoria – objetos for i = 0 to N: Object array[n] = X 710,788 191,581 29,348 70,436

Tiempos de ejecución en milisegundos (excepto la asignación de memoria, dada en nanosegundos) para algunas funciones en C++ y Java. La ejecución de J2SE 7 se realizó el 10/12/2012. Fuente: developer.com

Podemos deducir que el problema de desempeño no reside en el lenguaje mismo, sino en el compilador y en su caso, la JVM. De hecho, existen dos ejemplos de esta dependencia:

• Es bien sabido por muchos que JRockit, la JVM construida por BEA Systems (ahora Oracle) y publicada en 2002, es mucho más escalable en ambientes con una fuerte demanda de recursos que HotSpot, la JVM originalmente concebida por Sun Microsystems. Tanto así que la próxima Java SE 8, por liberar en Septiembre de 2013, tendrá integrado el core de JRockit.

• Por el contrario, algunas versiones de C++ para Linux sobre Intel pueden tener un nivel de optimización tan mediocre (por ejemplo, G++ [gcc] 3.3.1), que incluso con código escrito por el mejor programador, pueden tener un desempeño equivalente o más lento que el de Java, con lo que muchos fans de éste lenguaje justifican la afirmación de que “Java es más rápido que C++” (idea que por cierto, también es errónea).

Finalmente, debemos considerar la manera en que se está usando el lenguaje cuando hablamos de desempeño. En el caso de Java, tenemos el clásico ejemplo de Vector vs. ArrayList: mientras un Vector es una colección de datos “segura” para implementar hilos de ejecución y paralelismo, ésta genera un fuerte golpe al desempeño debido a que controla el acceso concurrente sobre los elementos que ésta almacena. Por ello, tampoco es sano realizar nuestras comparaciones sin primero verificar que el código fuente está optimizado, ya que en algunos casos la programación es tan mala que el tiempo de ejecución se incrementará enormemente.

Java vs. C++: una comparación histórica

¿Cómo se comparan Java y C++ en términos de programas “de la vida real”? Actualmente abundan muchos microbenchmarks como el arriba mostrado, donde se verifican funciones muy simples, como manipulación de arreglos o acceso a memoria. Sin embargo, la mayoría de los casos de prueba son demasiado básicos como para ser un indicador confiable del desempeño. En la actualidad, existe un estudio comparativo formal: desarrollado por J. P. Lewis y Ulrich Neumann, investigadores de la Universidad del Sur de California (USC), el estudio se basa en 5 pruebas con diferentes versiones de Java y C++. Sus resultados, en términos generales, fueron los siguientes:

• Al comparar algoritmos numéricos como FFT, factorización de matrices o SOR en diferentes arquitecturas y compiladores, los investigadores encontraron que el desempeño de Java en plataformas Intel es razonablemente cercano al de C++ y que Java era más rápido que al menos un compilador en C (KAI sobre Linux Red Hat 5.0). En hardware con Intel Pentium, especialmente con Linux, la diferencia en desempeño es lo suficientemente pequeña como para carecer de importancia.

• Al utilizar el benchmark SciMark2 en una plataforma Intel, ellos encontraron que el IBM JDK 1.3.0 generaba un poder de procesamiento de 84.5 MFlops, mientras que el compilador de linux2.2 gcc (2.9x) era marginalmente mejor con 87.1 MFlops. Es decir, Java era tan sólo 3% más lento que C++.

• Utilizando implementaciones de métodos numéricos mediante objetos, ellos encontraron que Java se aproximaba bastante a los tiempos que tardaba C++ en ejecutarse. Por ejemplo, para generar el Triángulo de Pascal, Java tardaba 9 milisegundos mientras C++ tardaba 1.1 segundos. Para una Factorización LU, Java tardaba 1 segundo en resolver el problema mientras C++ tardaba hasta 3.9 segundos.

• Implementando microbenchmarks con y sin cache, los investigadores encontraron que Java se encuentra justo a la mitad entre los mejores y los peores compiladores de C++. Es decir, Java 3 es mejor que gcc 3.2, pero nunca le ganará a un gcc 4.1.0.

El problema que tengo con este estudio es que fue desarrollado hace ya algún tiempo – en aquél entonces, Lewis y Neumann compararon Java 2 o 3 contra las versiones de C++ disponibles entre 2003 y 2004 – por lo que si bien podemos darnos una mejor idea de que la velocidad de los programas definitivamente depende del compilador, hoy por hoy tendríamos que correr todas estas pruebas en plataformas multi-core, con la última versión de software disponible para darnos cuenta cuál es el estatus actual de esta “carrera armamentista”.

Java 7 vs. C++ (gcc) 4.6.3

Afortunadamente, los amigos de Debian han hecho su tarea de forma magnífica. Mediante crowdsourcing, ellos han estado comparando no sólo Java y C++, sino también implementaciones de otros lenguajes como Fortran, Ruby o Perl. Incluyendo árboles binarios, fractales de Mandelbrot o el cálculo de Pi (π), los resultados son bastante coherentes. Aunque las pruebas se desarrollaron en diferentes plataformas, para este caso nos enfocaremos en los resultados de correr estos programas en Intel Q6600 (Quad Core) con Ubuntu 5.10 x64:

Prueba Java SE 7 C++ 4.6.3 Mejor de su tipo (factor = 1.0)
N-Body 2.1 1.0 C++
Fannkuch-redux 1.9 1.4 ADA 2005 GNAT
Meteor-contest 15.0 1.0 C++
Fasta 3.4 1.7 C
Spectral-norm 2.3 1.0 Fortran Intel, ADA 2005 GNAT, C++ (empate)
Reverse-complement 1.9 1.0 C++
Mandelbrot 1.9 1.7 Fortran Intel
K-nucleotide 1.1 1.0 C++
Regex-dna 5.3 1.7 C
Pidigits 2.4 1.2 ATS
Chameneos-redux 7.8 1.1 ADA 2005 GNAT, C (empate)
Thread-ring 41.0 21.0 Haskell GHC
Binary-trees 1.6 1.6 C

Factor de desempeño en Java y C++ para diversos algoritmos matemáticos. El factor se mide como 1.0 = tiempo con el mejor desempeño. En la tabla se muestra que para el programa Fannkuch-redux, Java tardó 1.9 veces el mejor tiempo, mientras que C++ tardó 1.4 veces el mejor tiempo. En este ejemplo, el mejor tiempo se lo llevó el lenguaje ADA 2005 GNAT. Fuente: debian.org

Obteniendo la media, mejores y peores tiempos, también incluidos en el estudio, nos damos cuenta que Java no está lejos de alcanzar la velocidad de C++, aunque todavía permanece por debajo del desempeño logrado por éste lenguaje y sus optimizaciones:

Lenguaje Mejor Tiempo Peor Tiempo Media
C++ 1.00 1.69 1.21
Java 7 1.13 3.46 1.95

Comparación de desempeño para todas las pruebas en Java y C++. Fuente: debian.org

De hecho, si sólo tomamos los valores de la media, nos daremos cuenta que el factor de desempeño de Java es de 3.46/1.69 = 2.06 contra el de C++. Es decir, una relativamente amplia variedad de programas escritos en Java tardarían aproximadamente el doble de lo que tardarían si fueran escritos en C++. Esto es un precio a pagar muy pequeño si tomamos en cuenta los otros beneficios de Java, como portabilidad, facilidad de uso, o impedir que los programadores administren la memoria directamente (apuntadores, ¿alguien?).

Conclusiones

Aunque todavía le falta camino por recorrer, durante los últimos años Java ha disminuido su factor de desempeño contra C++ hasta alrededor del doble en plataformas Linux-Intel. Por lo que es necesario “iluminar a los no iniciados” para que se den cuenta que la “lentitud de Java” es una leyenda urbana que ha perdurado por más de 15 años sin un verdadero análisis que lo respalde. Por otro lado, es importante reconocer que ningún lenguaje es la “bala de plata”, por lo que Java o C++ deben implementarse de acuerdo al problema que queremos resolver: para acceder a recursos de bajo nivel como drivers, rutinas matemáticas o código embebido de alto desempeño, la respuesta la encontramos en C++. Para programas orientados a negocios o web que requieran facilidad de modificación, portabilidad o simplemente, cuyos problemas de desempeño puedan ser “matados a billetazos” (es decir, pagando por agregar hardware más potente), Java es una buena opción. Para finalizar, esto no debería ser una competencia para ver “quién es el mejor”, sino encontrar la manera de complementar ambos lenguajes. Después de todo, ambos son los más populares entre los programadores. En nuestro caso particular, una opción interesante será tener el procesamiento geoespacial en C++, mientras dejamos todo lo demás en Java y sus múltiples frameworks de desarrollo.

h1

Sobre Agil y “Radical Management”

1 noviembre, 2012

Wizdoc [Icon By Buuf]  Tips & Tricks.

Sólo hay una definición válida para un objetivo de negocios: crear un nuevo cliente.

Peter Drucker (1909 – 2005), consultor de gestión, educador y autor Austriaco-Estadounidense.

Desde hace tiempo muchas organizaciones han buscado adoptar del paradigma ágil (Scrum, XP, Lean, Kanban) con el afán de mejorar la tasa de éxito en sus proyectos de desarrollo de software y a final de cuentas, mejorar las ganancias de la compañía. Sin embargo, en un contexto más general, ¿qué pasaría si los mismos principios que rigen estas metodologías se adoptaran no sólo al desarrollo de software, sino que formaran parte de la actitud predominante dentro de la compañía? Es interesante ver los resultados de este modelo organizacional en la práctica:

Stock Quotes: Salesforce, Cisco, Amazon, Apple and General Electric


Mientras ciertas empresas han “sobrevivido” con márgenes mínimos durante los últimos 4 años, otras han crecido enormemente. En la gráfica, el crecimiento accionario de Salesforce (púrpura: CRM), Amazon (amarillo, AMZN), Apple (rojo, AAPL), Cisco Systems (azul rey: CSCO) y General Electric (azul obscuro, GE). (Fuente: Google Finance)

¿Qué permite que empresas como Salesforce, Amazon o Apple logren un crecimiento de hasta 600% en 4 años mientras organizaciones como Cisco Systems y General Electric apenas se mantienen a flote? La respuesta es que están aplicando ágil a toda la empresa: no sólo al desarrollo de software, un producto, bien o servicio. Estas empresas basan su operación diaria en una nueva cultura organizacional denominada Gestión Radical; sus principios se enumeran a continuación:

• Deleitar a los clientes. En vez de decirle al cliente esto es lo que tenemos: tómalo o déjalo, la compañía se enfoca en ser vista como un solucionador de problemas o socio de negocios: entendemos tus problemas y te sorprenderemos resolviéndolos.

• Equipos auto-organizados. Dejar de lado el modelo de comando y control, donde el gerente o líder funge como capataz, asignando tareas y haciendo “marcación personal” a los miembros del equipo. Ahora, éste se vuelve un facilitador, eliminando obstáculos que impiden a sus subalternos hacer su trabajo.

• Coordinación dinámica. En vez de seguir procesos llenos de reglas, reportes y burocracia, el trabajo es iterativo; los objetivos de cada ciclo se basan en lo que más deleita al cliente; las decisiones sobre cómo debería hacerse el trabajo se delegan al equipo que directamente realizará la labor y el progreso es medido en base a la retroalimentación directa del cliente.

• De valor a valores. Es decir, cambiar de un enfoque meramente económico y de maximización de eficiencia hacia uno donde se inculquen valores como innovación y crecimiento sostenible.

• Conversación. Un cambio en la comunicación, tradicionalmente top-down, compuesta por órdenes jerárquicas en un solo sentido, hacia conversaciones maduras que solucionan problemas y generan nuevas ideas.

En realidad este concepto no es nuevo y tampoco es radical: sólo que muchas organizaciones han adoptado estos principios de forma aislada o local, e incluso algunas veces han echado estos principios por la borda, obteniendo pobres resultados: Google, que es reconocida como una de las empresas más innovadoras del mundo, ha metido la pata de vez en cuando; al obsesionarse con el éxito de Facebook, incursionó en las redes sociales con su Google+. Sobra decir, todo terminó en un enorme fiasco. Oponiéndose al principio de deleitar a los clientes, Google incluyó ideas propias que no gustaron a los usuarios (esto es lo que tenemos, tómalo o déjalo). A final de cuentas, a todos nos encanta el motor de búsqueda, pero pocos realmente queremos migrar a Google+.

Una crisis global… y quienes salen mejor parados

De acuerdo al estudio The Shift Index publicado por la consultora Deloitte, la mayoría de las empresas Estadounidenses – y por ende, del resto del mundo desarrollado – están viendo una disminución gradual en su desempeño desde 1965. La principal causa de este problema es el uso continuo de modelos de gestión empresarial completamente obsoletos, así como el hecho de que las tecnologías emergentes (internet, redes sociales, aplicaciones en “la nube”) le han dado suficiente empowerment al cliente como para “botar” un mal proveedor y encontrar rápidamente otro, incluso si éste se encuentra del otro lado del mundo.

Según el mismo estudio, las empresas que deseen mejorar sus prospectos a futuro tendrán que reinventarse a sí mismas, cambiando el enfoque basado en el jefe dentro de la compañía como centro del universo, hacia un modelo donde la organización y sus trabajadores se encuentren gravitando alrededor de las necesidades del cliente. De hecho, Michael Hugos, director del Centro para Innovación en Sistemas (c4si), comenta:

La profesión de TI está en un punto de inflexión: un grupo de profesionales de TI ha aprendido que ágil es el camino a seguir, pero los practicantes más tradicionales todavía lo consideran radical. Sin embargo, los tradicionalistas siguen aplicando las mismas viejas formas de hacer las cosas que dan lugar a los mismos proyectos terriblemente caros, multianuales, que producen sistemas apenas mejores de lo que había antes, si es que llegan a funcionar del todo. Cada vez más ejecutivos están llegando a la conclusión de que el apoyo efectivo a la agilidad del negocio es la razón principal de que su empresa cuente con un grupo interno de TI.

Five Reasons Why CIOs Should Consider Agile Development. Ryan Martens. (Rally’s AgileBlog, 2010).

Así que en realidad ágil ha pasado de ser algo “exclusivamente de los desarrolladores” a un modelo que debería ser adoptado por el resto de la organización.

Y un poco más cerca de casa

Y todo este análisis viene de un simple hecho: la compañía en la que estoy trabajando está poco a poco cortando el cordón umbilical con Estados Unidos – de hecho por eso no he posteado artículos estas últimas semanas. Ya que los mercados Norteamericano y Mexicano tienen necesidades diferentes (allá todo se trata de eficiencia, aquí es la seguridad), estamos buscando pasar de ser meramente reactivos y “tropicalizar y vender lo que hicieron los gringos” a innovar y crear cosas de forma local. Y desde el punto de vista económico no es difícil, pues sí hay plata, pero nos falta reorganizarnos para escuchar las necesidades del cliente y salir a resolver sus necesidades, en vez de ofrecer productos que se venden bien, pero cada vez tienen menos ingresos.

Aunque todavía nos falta mucho por hacer, ya estamos trabajando para incrementar la colaboración entre las diferentes áreas de la compañía y mejorar el proceso de “liberación de producto”, desde que se genera una necesidad, pasa por el área de desarrollo (tanto de hardware como software), hasta que la solución se etiqueta y libera comercialmente. ¿Todo va sobre ruedas? No del todo: viejas formas de pensar, procesos legados y ciertamente, la posibilidad de que no se dé un apoyo completo e incondicional por parte de “top management” pueden descarrilar la iniciativa. Así que… veremos si pasamos a ser un poco más ágiles e independientes como empresa o nos aplican un doloroso bitchslap.

h1

CMMI in Mexico and around the world (2012)

23 julio, 2012

Wizdoc [Icon By Buuf]  Tips & Tricks.

Quality is free, but only to those who are willing to pay heavily for it.

– Tom DeMarco, Timothy Lister. Peopleware: Productive Projects and Teams. New York: Dorset House, 1987.

A couple of years ago I published an entry regarding what is CMMI and how are distributed the certifications of this popular quality model around the world. Nowadays, there have been many changes in the process itself and the publication of the results by the SEI, so it seems aproppriate to explain some points relevant to this version:

• CMMI has evolved not only to diagnose the processes of management or development of products and services. There are currently six “constellations” that detect the level of maturity in other areas within the organization:

  • CMMI-DEV: focused on product development.
  • CMMI-SVC: for definition, delivery and management of services.
  • CMMI-ACQ: emphasizes the acquisition of products and services from third parties.
  • CMMI-DEV+IPPD: model that evaluates the development of industrial products and services, using good practices from the Integrated Product and Process Development – IPPD. This is a model used by system integrators such as Boeing, General Dynamics or Raytheon.
  • CMMI-SVC+SSD: for deployment of call centers, software for quality management or consulting services based on systems that are part of software as a service.
  • People CMM: focused on managing and developing the workforce of the organization.

• Because of the different types of evaluations, some companies may have more than one active certification. For example, the Mexican company Taak Corporativo [assessment 17013, valid until August 10, 2014] has two certifications: one based on the CMMI-DEV v1.3 model (software development) and another based on the CMMI-SVC v1.3 model (consulting services). For purposes of this analysis, both assessments are accounted for separately.

• Again, there are many certifications shared between different countries through the integration of globalized services and business models where suppliers are outsourced around the world. A representative example is taken by the Indian company Tata Consultancy Services Limited [assessment 15250, effective until December 8, 2013] which has distributed business units among India, Argentina, Brazil, Chile, China, the United States, Hungary, Ireland, Japan, Mexico, the United Kingdom, South Africa and Uruguay. On this study, the evaluation for each country is accounted for separately, as the certification includes an assessment of each business unit independently.

• The appraisal results page by the SEI now includes a filter by country. However, care must be taken with the assessments presented, because clearly there are some errors in the distribution of certificates. For example, if we look for certifications of Jamaica, the page shows a certification awarded to Infosys Technologies Limited. Closer inspection allows us to realize due to a typographical error, this company which is from India, is incorrectly attributed to Jamaica.

• As in the previous version, some evaluations have a CMMI level 1 (chaotic). While they are published on the appraisal results page, these are not accounted for in the study. On the other hand, there are certifications that do not provide the level of the evaluation, or due to customer requirement, the level is not published. These certifications are not considered in the count.

Who is certified?

As of July 17, 2012, there were 4,031 active certifications around the world, spread across 84 countries. This represents an increase of just over 14% annually in the number of certifications from 2010 (3,135 certifications). The medal table is shown below:

Country/Level L2 L3 L4 L5 Total
China 39 1376 45 48 1508
United States 309 496 4 56 865
India 20 263 5 94 382
Spain 90 53 1 9 153
Korea, Republic of 31 52 9 9 101
Brazil 55 38 1 7 101
Mexico 51 33 2 8 94
Japan 17 54 8 10 89
Taiwan 19 43 4 1 67
France 41 23   1 65
Argentina 17 20   5 42
United Kingdom 15 22 1 4 42
Germany 17 19     36
Malaysia 4 29   2 35
Thailand 9 22   3 34
Italy 18 14     32
Egypt 13 15   1 29
Colombia 13 10 1 4 28
Canada 7 12 1 3 23
Chile 11 9   2 22
Vietnam   13 1 4 18
Portugal 7 8   2 17
Turkey   14   2 16
Philippines 3 8   4 15
Singapore 4 8 1   13
Saudi Arabia 2 6 2 2 12
Peru 6 5     11
Sri Lanka 2 8     10
Hong Kong 4 3   2 9
Jordan   8 1   9
Israel   5   3 8
United Arab Emirates 1 6   1 8
Russia 2 2   3 7
Australia 1 4   2 7
Pakistan 4 2   1 7
Switzerland 5 2     7
Poland 2 3 1   6
Bangladesh   6     6
Netherlands 2 4     6
Paraguay 6       6
Ukraine   3 1 1 5
Uruguay   2   2 4
Ireland 1 2   1 4
Belgium   4     4
Syria 1 3     4
Romania 2 2     4
Hungary 1   1 1 3
South Africa 1 1   1 3
Morocco 2   1   3
Slovakia   3     3
Panama 1 2     3
Norway 2 1     3
Denmark   1   1 2
Latvia   2     2
Lebanon   2     2
Austria 1 1     2
Costa Rica 1 1     2
Czech Republic 1 1     2
Kuwait 1 1     2
Qatar 1 1     2
Tunisia 1 1     2
Bulgaria 2       2
New Zealand       1 1
Belarus     1   1
Angola   1     1
Bahrain   1     1
Cambodia   1     1
El Salvador   1     1
Finland   1     1
Ghana   1     1
Guatemala   1     1
Indonesia   1     1
Kenia   1     1
Luxembourg   1     1
Malawi   1     1
Mauritius   1     1
Nepal   1     1
Oman   1     1
Brunei Darussalam 1       1
Cuba 1       1
Chipre 1       1
Iraq 1       1
Macedonia 1       1
Sweden 1       1
TOTAL 872 2766 92 301 4031

CMMI appraisal table by country, for each maturity level. Information last updated on July 17, 2012.

Again, interesting situations arise from the numbers obtained:

• The top ten with certifications is composed by the same countries that represent some of the largest economies in the world:

Country Appraisals
2012
Appraisals
2010
Growth Change in rank
China 1508 1048 44% (-)
United States 865 680 27% (-)
India 382 294 30% (-)
Spain 153 131 17% (-)
Korea, Republic of 101 71 42% (+2)
Brazil 101 98 3% (-1)
Mexico 94 70 34% (+2)
Japan 89 87 2% (-2)
Taiwan 67 67 0% (+1)
France 65 70 -7% (-2)
Rest of the World 606 519 17%  
TOTAL 4031 3135 29%  

Top 10 countries with certifications. Information last updated on July 17, 2012.

The most significant changes over the 2010 version took place in China, Korea and Mexico, as they grew in number of certifications by 44%, 42% and 34% respectively. By contrast, France lost 5 certifications because these were not renewed.

• For Level 5 certifications, India remains to be the country with more maturity in their organizations; Korea is tied with Spain for the fifth place, now there are four Latin American countries included in the top ten and there is a tie between four nations for the 9th position and four for the 10th spot:

Country Certifications L5
2012
Certifications L5
2010
Growth
1.India 94 64 30
2.United States 56 40 16
3.China 48 20 28
4.Japan 10 2 8
5.Korea, Republic of
5.Spain
9
9
2
2
7
7
6.Mexico 8 6 2
7.Brazil 7 4 3
8.Argentina 5 2 3
9.United Kingdom
9.Vietnam
9.Colombia
9.Philippines
4
4
4
4
4
1
2
-
-
3
2
4
10.Canada
10.Thailand
10.Israel
10.Russia
3
3
3
3
3
1
3
1
-
2
-
2
Rest of the World 27 21 6
TOTAL 301 178 123

Top 10 of certifications level 5. Information last updated on July 17, 2012.

• Latin America keeps moving ahead with a sustained increase from 280 to 316 certifications. The region is still dominated by Brazil and Mexico with 62% of the region’s total, but the surprise here is Colombia, who went from 18 to 28 certifications in less than two years. We also have to celebrate that Cuba has acquired its first certification, however for now it is only for academic purposes.

• The United States and Canada have grown in number of certifications from 702 to 888 altogether. This represents an increase of 26% since 2010.

• Europe groups together 406 certifications, from which not surprisingly, Spain has almost 38%. Its closest competitors include France, the United Kingdom, Germany, Italy and Portugal, however these nations are well below the massive participation shown by the Iberian country, for while the latter included 22 new certifications since 2010, the rest of the continent only contributed with 13 additional certifications.

• Sub-Saharan Africa remains to be the last region from them all, with a growth from 5 to 8 certifications assigned to South Africa, Angola, Ghana, Kenya, Malawi and Mauritius.

• By contrast, the Islamic world is emerging as a new player, with 137 certifications under its belt, almost doubling the 78 it had in 2010. Countries with more certifications in this group include Malaysia, Egypt, Turkey, Saudi Arabia and Jordan.

• Australia and New Zealand have decreased from 11 to 8 certifications altogether, almost all of them attributed to operational support organizations and manufacture of embedded systems.

• Russia has increased the number of certifications from 4 to 7, almost all acquired by financial and research and development organizations.

• Finally, as expected, growth is focused on Asia, from 1718 to 2248 certifications. Of particular importance we have China, India, Japan and South Korea, which have 93% of the certifications from this region.

CMMI 2012 Map



Map showing the CMMI appraisals by country. Information last updated on July 17, 2012.(Click on image or here to see at larger scale)

     1      17 – 32      513 – 1024
     2      33 – 64      1025 >
     3 – 4      65 – 128      Without appraisals
     5 – 8      129 – 256
     9 – 16      257 – 512

♫ Mexico lindo y querido… ♫

Mexico comprises 94 certifications, of which four are shared with Colombia, the United States and India. The list includes two certifications that are not being recorded, as the CMMI level with which they were certified is not known:

Organization Constellation Level Cities
LINK TECHNOLOGIES S.A.P.I. DE C.V. CMMI-DEV v1.2(Continuous) Sponsor Requests No ML Monterrey
Interfases y Sistemas Electrónicos, S.A. de C.V. (INTERSEL) CMMI-DEV v1.2(Continuous) Not Given Hermosillo
Hildebrando S.A. de C.V. CMMI-DEV v1.2(Staged) 5 Mexico, Queretaro, Aguascalientes
IBM (Application Management Services Mexico) CMMI-DEV v1.2(Staged) 5 Guadalajara
PRAXIS DE MÉXICO, S.A. DE C.V. CMMI-DEV v1.2(Staged) 5 Mexico
PSL S.A. CMMI-DEV v1.3(Staged) 5 Mexico, Medellin (Colombia)
QuarkSoft S.A. de C.V. CMMI-DEV v1.3(Staged) 5 Mexico, Zacatecas, Leon, Aguascalientes
Softtek CMMI-DEV v1.2(Staged) 5 Monterrey
Tata Consultancy Services Limited CMMI-SVC+SSD v1.2(Staged) 5 Mexico, Hyderabad (India)
ULTRASIST S.A. de C. V. CMMI-DEV v1.3(Staged) 5 Mexico
INNEVO CMMI-DEV v1.2(Staged) 4 Guadalajara
SERVICIOS TELEPRO S.A. de C.V. CMMI-DEV v1.3(Staged) 4 Mexico
Accenture CMMI-DEV v1.2(Staged) 3 Mexico
AD INFINITUM S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
AsTecI S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Queretaro
Brain Up Systems S.A. de C.V. CMMI-SVC v1.2(Continuous) 3 Mexico
Business Intelligent Software S.A.P.I. de C.V. CMMI-DEV v1.2(Continuous) 3 Culiacan
Coppel SA de CV CMMI-DEV v1.2(Continuous) 3 Culiacan
D&T Tecnología S de RL de CV CMMI-DEV v1.2(Staged) 3 Guadalajara, Celaya
DESARROLLADORA HOMEX S.A. DE C.V CMMI-DEV v1.2(Staged) 3 Culiacan
Expert Sistemas Computacionales S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
Expresión Informativa y Técnicas Organizadas, S.A. de C.V. CMMI-SVC v1.2(Continuous) 3 Los Mochis
GONET México S.A. de C.V. CMMI-DEV v1.3(Staged) 3 Mexico, Monterrey, Cd. Obregon, Cuernavaca
IBM AMS México (GNP Account) CMMI-DEV v1.2(Staged) 3 Mexico
IBM AMS México (Modelo Account) CMMI-DEV v1.2(Staged) 3 Mexico
IDS COMERCIAL CMMI-DEV v1.2(Staged) 3 Mexico
ImagenSoft by Imagen y Sistemas Computacionales, S.C. CMMI-SVC v1.2(Continuous) 3 Los Mochis
INNOX-Innovacion Inteligente S. de R.L. de C.V. CMMI-DEV v1.2(Staged) 3 Guadalajara, Zacatecas
Intellego SC CMMI-DEV v1.3(Staged) 3 Mexico
Intelligent Network Technologies S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Saltillo
Logica Interactiva S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Tijuana, Cd. Juarez
MEDISIST SA DE CV CMMI-DEV v1.2(Staged) 3 Guadalajara
NOVUTEK S.C. CMMI-DEV v1.3(Staged) 3 Cd. Obregon
PROCETI CONSULTORES S.A DE C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
Qualtop SA de CV CMMI-SVC v1.3(Continuous) 3 Guadalajara, Los Mochis, Culiacan
Schneider Electric India Pvt Ltd CMMI-SVC v1.3(Staged) 3 Monterrey, Bangalore (India)
Servicios Estratégicos OPTA SMART S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
SOL SER SISTEM S.A DE C.V. CMMI-DEV v1.2(Staged) 3 Queretaro
SYTECSO, S.A. de C.V CMMI-DEV v1.2(Staged) 3 Monterrey
Taak Corporativo (Product development and implementation projects) CMMI-DEV v1.3(Staged) 3 Guadalajara
TSI ARYL S. de R.L. de C.V. CMMI-DEV v1.2(Staged) 3 Hermosillo
T-Systems México, S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Puebla
Vision Consulting CMMI-DEV v1.2(Staged) 3 Mexico
Vision Software Factory, S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Queretaro
Zentrum Ziztemaz S.A. De C.V. CMMI-DEV v1.2(Staged) 3 Tijuana
Applied Protocol Interfaces S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Culiacan
Ariesware Soluciones S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
Asesores en ERP S.C. (Estrasol) CMMI-SVC v1.3(Staged) 2 Guadalajara, Leon
Atalaya Systems S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Guadalajara
Bioxor S. de R.L. de C.V. CMMI-DEV v1.3(Staged) 2 Guadalajara
Bufete Consultor Mexicano, S. A. de C. V. CMMI-DEV v1.2(Staged) 2 Mexico
Centro de Inteligencia Competitiva S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Mexico
Cibernética de México S.A. de C.V. CMMI-SVC v1.3(Staged) 2 San Miguel de Allende, Aguascalientes, Guadalajara
Compu Campo S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Zapopan
Computación Interactiva de Occidente, S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
Consiss S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Monterrey
Consultoría en Comercio Electrónico S.C. CMMI-SVC v1.3(Staged) 2 Guadalajara
CONSULTORÍA Y APLICACIONES AVANZADAS DE ECM, S.A. DE C.V. CMMI-DEV v1.3(Staged) 2 Mexico
DAWCONS: DW IT SERVICES S.A. DE C.V. CMMI-DEV v1.2(Staged) 2 Guadalajara
DEMOSOFT S.C. CMMI-DEV v1.3(Staged) 2 Guadalajara
Ejecutivos en Computación y Servicios S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Guadalajara
Escucho Consultoría SC CMMI-SVC v1.3(Staged) 2 Guadalajara
Factor Informático de Negocios S.A. de C.V. CMMI-SVC v1.2(Staged) 2 Los Mochis
Gestión de Tecnología Especializada S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Mexico
GEUSA, Grupo Embotelladoras Unidas S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Guadalajara
Gobierno Digital S.A. de C.V. CMMI-DEV v1.3(Staged) 2 Queretaro
Grupo Empresarial EISEI S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Monterrey
Infoware, Servicios en Tecnología e Ingeniería de Información, S. C. CMMI-DEV v1.3(Staged) 2 Mexico, Leon
INGENIA GROUP INTERNET DESARROLLO SAPI de CV CMMI-DEV v1.3(Staged) 2 Mexico
Innovación y Control de México S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO CMMI-DEV v1.2(Staged) 2 Irapuato
Instituto Tecnologico Superior del Sur de Guanajuato (ITSUR) CMMI-DEV v1.2(Staged) 2 Uriangato
Interlatin CMMI-SVC+SSD v1.2(Continuous) 2 Mexico, Guadalajara
Mapdata S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Mexico
MASFUSION MULTIMEDIA S.C. CMMI-SVC v1.3(Staged) 2 Guadalajara
MG MICROS DE OCCIDENTE S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
MKIdeas Tech S.A. de C.V CMMI-DEV v1.2(Staged) 2 Guadalajara, Mexicali
Pounce Consulting S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara, Mexico, Palo Alto (California, USA)
PRODESIS MÉXICO, S.A. DE C.V. CMMI-DEV v1.2(Staged) 2 Mexico
Punto Medio Operadora S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
RESET S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Irapuato, Silao, Villagran
RQPortillo Firm S. de R.L. de C.V. CMMI-SVC v1.2(Staged) 2 Culiacan
SIMBIOSYS S.C. CMMI-DEV v1.2(Staged) 2 Leon
Sinergit S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Guadalajara
Sistemas Avanzados Integrales SC CMMI-DEV v1.2(Staged) 2 Guadalajara
Sistemas Digitales en Telefonía, S.A de C.V CMMI-DEV v1.3(Staged) 2 Mexico, Guadalajara
SPOT Consultoria SC CMMI-DEV v1.3(Staged) 2 Mexico
SUSOC CMMI-SVC+SSD v1.2(Continuous) 2 Guadalajara
SYE SOFTWARE SA DE CV CMMI-DEV v1.3(Staged) 2 Guadalajara
Taak Corporativo (Service desk services) CMMI-SVC v1.3(Staged) 2 Guadalajara
Tecnología de Gestión y Comunicación S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Chihuahua
Tecnología en Informática y Administración S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Guadalajara
Tecnología, Asesoría, Sistemas, S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Mexico
Universidad Tecnologica de León (UTL) CMMI-DEV v1.2(Staged) 2 Leon
Universidad Tecnologica del Norte de Guanajuato (UTNG) CMMI-DEV v1.2(Staged) 2 Dolores Hidalgo
VERSATIL CMMI-DEV v1.2(Staged) 2 Guadalajara

Certified organizations in Mexico as of July 17, 2012.

If we consider all business units as independent entities, Mexico had 117 certifications. Now it is the state of Jalisco (35) taking the lead, followed closely by Mexico City (28). Guanajuato (13) has had a significant growth while Nuevo Leon (10) and Sinaloa (10) are lagging behind. Queretaro (5), Sonora (3), Aguascalientes (3) and Baja California (3) have maintained a small but steady growth while Chihuahua (2), Puebla (1) and Coahuila (1) remain almost unchanged. On the contrary, Zacatecas (2) and Morelos (1) are now part of the CMMI club, but this is rather due to the expansion of organizations whose headquarters are outside those states.

Conclusions

In an increasingly competitive environment, we must use every tool at our disposal to attract business and investment: CMMI is clearly a means to achieve that. And these are not only castles in the air, as countries as diverse as Malaysia, Egypt, Chile and Vietnam are becoming suppliers of high technology and consulting services that already compete in the global market.

In the case of Mexico, we can see how it is steadily becoming an information technology powerhouse, because it has a reasonable number of qualified professionals, decent infrastructure and significant support from the Mexican government and organizations providing support to bolster competitiveness. Are we now part of the first world? Of course not, but considering the progress made in recent years, the future looks bright.

h1

CMMI en México y el mundo (2012)

20 julio, 2012

Wizdoc [Icon By Buuf]  Tips & Tricks.

La calidad es gratis, pero sólo para aquellos que están dispuestos a pagar un alto precio por ello.

– Tom DeMarco, Timothy Lister. Peopleware: Productive Projects and Teams. New York: Dorset House, 1987.

Hace un par de años publiqué un post relacionado a qué es CMMI y cómo están distribuidas las certificaciones de este popular modelo de calidad alrededor del mundo. Hoy por hoy, se han dado bastantes cambios en el proceso y la publicación de los resultados por parte del SEI, así que me parece pertinente explicar algunos puntos relevantes para esta versión:

• CMMI ha ido evolucionando no sólo para diagnosticar los procesos de gestión o desarrollo de productos y servicios. Actualmente existen seis “constelaciones” que permiten detectar el nivel de madurez en otras áreas dentro de la organización:

  • CMMI-DEV: enfocado al desarrollo de productos.
  • CMMI-SVC: para la definición, entrega y gestión de servicios.
  • CMMI-ACQ: hace hincapié en la adquisición de productos y servicios de terceros.
  • CMMI-DEV+IPPD: modelo que evalúa el desarrollo de productos y servicios industriales, usando buenas practicas del Desarrollo Integrado de Productos y Procesos (Integrated Product and Process Development – IPPD). Este es un modelo usado por integradores de sistemas como Boeing, General Dynamics o Raytheon.
  • CMMI-SVC+SSD: para despliegue de centros de atención telefónica, software de gestión de calidad o servicios de consultoría basados en sistemas de software como servicio.
  • People CMM: enfocado en la gestión y desarrollo de la fuerza de trabajo de la organización.

• Debido a los diferentes tipos de evaluaciones, algunas empresas pueden tener más de una certificación activa. Por ejemplo, la empresa mexicana Taak Corporativo [evaluación 17013, vigente hasta el 10 de Agosto de 2014] posee dos certificaciones: una basada en el modelo CMMI-DEV v1.3 (desarrollo de software) y otra basada en el CMMI-SVC v1.3 (servicios de consultoría). Para efectos de este análisis, ambas evaluaciones son contabilizadas por separado.

• De nueva cuenta, existen muchas certificaciones compartidas entre diferentes países gracias a la integración de servicios globalizados, así como modelos de negocio donde se subcontratan proveedores de diversas partes del mundo. Un ejemplo representativo lo lleva la compañía india Tata Consultancy Services Limited [evaluación 15250, vigente hasta el 8 de Diciembre de 2013] que tiene unidades de negocio distribuidas entre la India, Argentina, Brasil, Chile, China, Estados Unidos, Hungría, Irlanda, Japón, México, Reino Unido, Sudáfrica y Uruguay. En este estudio dicha evaluación cuenta para cada país por separado, ya que la certificación incluye una evaluación de cada unidad de negocios de manera independiente.

• La página de certificaciones otorgadas por el SEI finalmente ya incluye el filtro por país. Sin embargo, es necesario tener cuidado con las evaluaciones presentadas, porque claramente existen errores en la distribución de las certificaciones. Por ejemplo, si buscamos las certificaciones de Jamaica, la página nos muestra una certificación otorgada a Infosys Technologies Limited. Una inspección más detallada nos permite darnos cuenta que por un error tipográfico, esta empresa que es de la India, está incorrectamente atribuida a Jamaica.

• Así como en la versión anterior, algunas evaluaciones poseen un CMMI nivel 1 (caótico) que si bien están publicadas en la página de certificaciones otorgadas, no son contabilizadas en el estudio. Por otro lado, existen certificaciones en las que no se proporciona el valor de la evaluación o por requerimiento del cliente no se publica el nivel. Estas certificaciones tampoco son consideradas en el conteo.

¿Quiénes están certificados?

Al 17 de Julio de 2012, existían 4,031 certificaciones activas alrededor del mundo, repartidas entre 84 países. Esto representa un crecimiento de poco más del 14% anual en número de certificaciones desde el 2010 (3,135 certificaciones). El “medallero” se muestra a continuación:

País/Nivel L2 L3 L4 L5 Total
China 39 1376 45 48 1508
Estados Unidos 309 496 4 56 865
India 20 263 5 94 382
España 90 53 1 9 153
Corea del Sur 31 52 9 9 101
Brasil 55 38 1 7 101
México 51 33 2 8 94
Japón 17 54 8 10 89
Taiwán 19 43 4 1 67
Francia 41 23   1 65
Argentina 17 20   5 42
Reino Unido 15 22 1 4 42
Alemania 17 19     36
Malasia 4 29   2 35
Tailandia 9 22   3 34
Italia 18 14     32
Egipto 13 15   1 29
Colombia 13 10 1 4 28
Canadá 7 12 1 3 23
Chile 11 9   2 22
Vietnam   13 1 4 18
Portugal 7 8   2 17
Turquía   14   2 16
Filipinas 3 8   4 15
Singapur 4 8 1   13
Arabia Saudita 2 6 2 2 12
Perú 6 5     11
Sri Lanka 2 8     10
Hong Kong 4 3   2 9
Jordania   8 1   9
Israel   5   3 8
Emiratos Árabes Unidos 1 6   1 8
Rusia 2 2   3 7
Australia 1 4   2 7
Pakistán 4 2   1 7
Suiza 5 2     7
Polonia 2 3 1   6
Bangladesh   6     6
Países Bajos 2 4     6
Paraguay 6       6
Ucrania   3 1 1 5
Uruguay   2   2 4
Irlanda 1 2   1 4
Bélgica   4     4
Siria 1 3     4
Rumania 2 2     4
Hungría 1   1 1 3
Sudáfrica 1 1   1 3
Marruecos 2   1   3
Eslovaquia   3     3
Panamá 1 2     3
Noruega 2 1     3
Dinamarca   1   1 2
Letonia   2     2
Líbano   2     2
Austria 1 1     2
Costa Rica 1 1     2
República Checa 1 1     2
Kuwait 1 1     2
Qatar 1 1     2
Túnez 1 1     2
Bulgaria 2       2
Nueva Zelanda       1 1
Belarús     1   1
Angola   1     1
Bahréin   1     1
Camboya   1     1
El Salvador   1     1
Finlandia   1     1
Ghana   1     1
Guatemala   1     1
Indonesia   1     1
Kenia   1     1
Luxemburgo   1     1
Malawi   1     1
Mauricio   1     1
Nepal   1     1
Omán   1     1
Brunei Darussalam 1       1
Cuba 1       1
Chipre 1       1
Irak 1       1
Macedonia 1       1
Suecia 1       1
TOTAL 872 2766 92 301 4031

Tabla de certificaciones por país, para cada nivel de madurez. Información actualizada al 17 de Julio de 2012.

Nuevamente, surgen interesantes situaciones a partir de los números obtenidos:

• El top ten de certificaciones se lo vuelven a llevar los mismos países que representan algunas de las economías más grandes del mundo:

País Certificaciones
2012
Certificaciones
2010
Crecimiento Cambio en ranking
China 1508 1048 44% (-)
Estados Unidos 865 680 27% (-)
India 382 294 30% (-)
España 153 131 17% (-)
Corea del Sur 101 71 42% (+2)
Brasil 101 98 3% (-1)
México 94 70 34% (+2)
Japón 89 87 2% (-2)
Taiwán 67 67 0% (+1)
Francia 65 70 -7% (-2)
Resto del Mundo 606 519 17%  
TOTAL 4031 3135 29%  

Top 10 de certificaciones. Información actualizada al 17 de Julio de 2012.

Los cambios más significativos con respecto a la versión del 2010 se dieron en China, Corea y México, pues crecieron en número de certificaciones en 44%, 42% y 34%, respectivamente. Por el contrario, Francia perdió 5 certificaciones debido a que éstas no fueron renovadas.

• Con respecto a certificaciones nivel 5, la India sigue siendo el país con mayor madurez en sus organizaciones; Corea está empatando con España por el quinto puesto; ahora cuatro países Latinoamericanos se incluyen en el top ten y hay un empate entre cuatro naciones por la posición número 9 y otras cuatro por la posición número 10:

País Certificaciones L5
2012
Certificaciones L5
2010
Crecimiento
1.India 94 64 30
2.Estados Unidos 56 40 16
3.China 48 20 28
4.Japón 10 2 8
5.Corea del Sur
5.España
9
9
2
2
7
7
6.México 8 6 2
7.Brasil 7 4 3
8.Argentina 5 2 3
9.Reino Unido
9.Vietnam
9.Colombia
9.Filipinas
4
4
4
4
4
1
2
-
-
3
2
4
10.Canadá
10.Tailandia
10.Israel
10.Rusia
3
3
3
3
3
1
3
1
-
2
-
2
Resto del Mundo 27 21 6
TOTAL 301 178 123

Top 10 de certificaciones nivel 5. Información actualizada al 17 de Julio de 2012.

• Latinoamérica sigue avanzando con un crecimiento sostenido de 280 a 316 certificaciones. La región sigue dominada por Brasil y México con 62% del total regional; sin embargo, la sorpresa se la lleva Colombia, que pasó de 18 a 28 certificaciones en poco menos de dos años. También es de celebrarse que Cuba haya adquirido su primera certificación, aunque de momento sea sólo por motivos académicos.

• Estados Unidos y Canadá han crecido en número de certificaciones de 702 hasta 888 de manera conjunta. Esto representa un aumento del 26% con respecto a 2010.

• Europa agrupa 406 certificaciones, de las cuales no es de sorprenderse, España posee casi el 38%. Sus competidores más cercanos incluyen Francia, el Reino Unido, Alemania, Italia y Portugal; sin embargo, estas naciones están muy por debajo de la enorme participación mostrada por el país Ibérico, ya que mientras éste incluyó 22 el certificaciones nuevas desde 2010, el resto del continente sólo contribuyó con 13 adicionales.

• El África Subsahariana sigue estando al último, con un crecimiento de 5 a 8 certificaciones asignadas a Sudáfrica, Angola, Ghana, Kenia, Malawi y Mauricio.

• Por el contrario, el mundo islámico se está perfilando como un nuevo jugador, con 137 certificaciones en su haber, casi duplicando las 78 que tenía en 2010. Los países con más certificaciones de este grupo incluyen Malasia, Egipto, Turquía, Arabia Saudita y Jordania.

• Australia y Nueva Zelanda han disminuido de 11 a 8 certificaciones conjuntamente; casi todas ellas atribuidas a organizaciones de soporte operativo y manufactura de sistemas integrados.

• Rusia ha aumentando el número de certificaciones de 4 a 7, casi todas adquiridas por organizaciones financieras o de investigación y desarrollo.

• Finalmente, como era de esperarse, el crecimiento se centra en Asia, pasando de 1718 a 2248 certificaciones. De especial importancia tenemos a China, India, Japón y Corea del Sur, que poseen el 93% de las certificaciones de esta región.

CMMI 2012 Map



Mapa que muestra las certificaciones CMMI por país. Información actualizada al 17 de Julio de 2012. (Dar click en imagen o aquí para ver a mayor escala)

     1      17 – 32      513 – 1024
     2      33 – 64      1025 >
     3 – 4      65 – 128      Sin certificaciones
     5 – 8      129 – 256
     9 – 16      257 – 512

♫ México lindo y querido… ♫

México agrupa 94 certificaciones, de las cuales cuatro son compartidas con Colombia, Estados Unidos y la India. El listado incluye dos certificaciones que no se están contabilizando, ya que se desconoce el nivel CMMI con el que fueron certificadas:

Organización Constelación Nivel Ciudades
LINK TECHNOLOGIES S.A.P.I. DE C.V. CMMI-DEV v1.2(Continuous) Restringido Monterrey
Interfases y Sistemas Electrónicos, S.A. de C.V. (INTERSEL) CMMI-DEV v1.2(Continuous) No Disponible Hermosillo
Hildebrando S.A. de C.V. CMMI-DEV v1.2(Staged) 5 México, Querétaro, Aguascalientes
IBM (Application Management Services Mexico) CMMI-DEV v1.2(Staged) 5 Guadalajara
PRAXIS DE MÉXICO, S.A. DE C.V. CMMI-DEV v1.2(Staged) 5 México
PSL S.A. CMMI-DEV v1.3(Staged) 5 México, Medellin (Colombia)
QuarkSoft S.A. de C.V. CMMI-DEV v1.3(Staged) 5 México, Zacatecas, León, Aguascalientes
Softtek CMMI-DEV v1.2(Staged) 5 Monterrey
Tata Consultancy Services Limited CMMI-SVC+SSD v1.2(Staged) 5 México, Hyderabad (India)
ULTRASIST S.A. de C. V. CMMI-DEV v1.3(Staged) 5 México
INNEVO CMMI-DEV v1.2(Staged) 4 Guadalajara
SERVICIOS TELEPRO S.A. de C.V. CMMI-DEV v1.3(Staged) 4 México
Accenture CMMI-DEV v1.2(Staged) 3 México
AD INFINITUM S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
AsTecI S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Querétaro
Brain Up Systems S.A. de C.V. CMMI-SVC v1.2(Continuous) 3 México
Business Intelligent Software S.A.P.I. de C.V. CMMI-DEV v1.2(Continuous) 3 Culiacán
Coppel SA de CV CMMI-DEV v1.2(Continuous) 3 Culiacán
D&T Tecnología S de RL de CV CMMI-DEV v1.2(Staged) 3 Guadalajara, Celaya
DESARROLLADORA HOMEX S.A. DE C.V CMMI-DEV v1.2(Staged) 3 Culiacán
Expert Sistemas Computacionales S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
Expresión Informativa y Técnicas Organizadas, S.A. de C.V. CMMI-SVC v1.2(Continuous) 3 Los Mochis
GONET México S.A. de C.V. CMMI-DEV v1.3(Staged) 3 México, Monterrey, Cd. Obregon, Cuernavaca
IBM AMS México (GNP Account) CMMI-DEV v1.2(Staged) 3 México
IBM AMS México (Modelo Account) CMMI-DEV v1.2(Staged) 3 México
IDS COMERCIAL CMMI-DEV v1.2(Staged) 3 México
ImagenSoft by Imagen y Sistemas Computacionales, S.C. CMMI-SVC v1.2(Continuous) 3 Los Mochis
INNOX-Innovacion Inteligente S. de R.L. de C.V. CMMI-DEV v1.2(Staged) 3 Guadalajara, Zacatecas
Intellego SC CMMI-DEV v1.3(Staged) 3 México
Intelligent Network Technologies S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Saltillo
Logica Interactiva S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Tijuana, Cd. Juarez
MEDISIST SA DE CV CMMI-DEV v1.2(Staged) 3 Guadalajara
NOVUTEK S.C. CMMI-DEV v1.3(Staged) 3 Cd. Obregon
PROCETI CONSULTORES S.A DE C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
Qualtop SA de CV CMMI-SVC v1.3(Continuous) 3 Guadalajara, Los Mochis, Culiacán
Schneider Electric India Pvt Ltd CMMI-SVC v1.3(Staged) 3 Monterrey, Bengaluru (India)
Servicios Estratégicos OPTA SMART S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
SOL SER SISTEM S.A DE C.V. CMMI-DEV v1.2(Staged) 3 Querétaro
SYTECSO, S.A. de C.V CMMI-DEV v1.2(Staged) 3 Monterrey
Taak Corporativo (Product development and implementation projects) CMMI-DEV v1.3(Staged) 3 Guadalajara
TSI ARYL S. de R.L. de C.V. CMMI-DEV v1.2(Staged) 3 Hermosillo
T-Systems México, S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Puebla
Vision Consulting CMMI-DEV v1.2(Staged) 3 México
Vision Software Factory, S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Querétaro
Zentrum Ziztemaz S.A. De C.V. CMMI-DEV v1.2(Staged) 3 Tijuana
Applied Protocol Interfaces S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Culiacán
Ariesware Soluciones S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
Asesores en ERP S.C. (Estrasol) CMMI-SVC v1.3(Staged) 2 Guadalajara, León
Atalaya Systems S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Guadalajara
Bioxor S. de R.L. de C.V. CMMI-DEV v1.3(Staged) 2 Guadalajara
Bufete Consultor Mexicano, S. A. de C. V. CMMI-DEV v1.2(Staged) 2 México
Centro de Inteligencia Competitiva S.A. de C.V. CMMI-DEV v1.2(Staged) 2 México
Cibernética de México S.A. de C.V. CMMI-SVC v1.3(Staged) 2 San Miguel de Allende, Aguascalientes, Guadalajara
Compu Campo S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Zapopan
Computación Interactiva de Occidente, S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
Consiss S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Monterrey
Consultoría en Comercio Electrónico S.C. CMMI-SVC v1.3(Staged) 2 Guadalajara
CONSULTORÍA Y APLICACIONES AVANZADAS DE ECM, S.A. DE C.V. CMMI-DEV v1.3(Staged) 2 México
DAWCONS: DW IT SERVICES S.A. DE C.V. CMMI-DEV v1.2(Staged) 2 Guadalajara
DEMOSOFT S.C. CMMI-DEV v1.3(Staged) 2 Guadalajara
Ejecutivos en Computación y Servicios S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Guadalajara
Escucho Consultoría SC CMMI-SVC v1.3(Staged) 2 Guadalajara
Factor Informático de Negocios S.A. de C.V. CMMI-SVC v1.2(Staged) 2 Los Mochis
Gestión de Tecnología Especializada S.A. de C.V. CMMI-SVC v1.3(Staged) 2 México
GEUSA, Grupo Embotelladoras Unidas S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Guadalajara
Gobierno Digital S.A. de C.V. CMMI-DEV v1.3(Staged) 2 Querétaro
Grupo Empresarial EISEI S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Monterrey
Infoware, Servicios en Tecnología e Ingeniería de Información, S. C. CMMI-DEV v1.3(Staged) 2 México, León
INGENIA GROUP INTERNET DESARROLLO SAPI de CV CMMI-DEV v1.3(Staged) 2 México
Innovación y Control de México S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO CMMI-DEV v1.2(Staged) 2 Irapuato
Instituto Tecnologico Superior del Sur de Guanajuato (ITSUR) CMMI-DEV v1.2(Staged) 2 Uriangato
Interlatin CMMI-SVC+SSD v1.2(Continuous) 2 México, Guadalajara
Mapdata S.A. de C.V. CMMI-DEV v1.2(Staged) 2 México
MASFUSION MULTIMEDIA S.C. CMMI-SVC v1.3(Staged) 2 Guadalajara
MG MICROS DE OCCIDENTE S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
MKIdeas Tech S.A. de C.V CMMI-DEV v1.2(Staged) 2 Guadalajara, Mexicali
Pounce Consulting S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara, México, Palo Alto (California, EE.UU.)
PRODESIS MÉXICO, S.A. DE C.V. CMMI-DEV v1.2(Staged) 2 México
Punto Medio Operadora S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
RESET S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Irapuato, Silao, Villagran
RQPortillo Firm S. de R.L. de C.V. CMMI-SVC v1.2(Staged) 2 Culiacán
SIMBIOSYS S.C. CMMI-DEV v1.2(Staged) 2 León
Sinergit S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Guadalajara
Sistemas Avanzados Integrales SC CMMI-DEV v1.2(Staged) 2 Guadalajara
Sistemas Digitales en Telefonía, S.A de C.V CMMI-DEV v1.3(Staged) 2 México, Guadalajara
SPOT Consultoria SC CMMI-DEV v1.3(Staged) 2 México
SUSOC CMMI-SVC+SSD v1.2(Continuous) 2 Guadalajara
SYE SOFTWARE SA DE CV CMMI-DEV v1.3(Staged) 2 Guadalajara
Taak Corporativo (Service desk services) CMMI-SVC v1.3(Staged) 2 Guadalajara
Tecnología de Gestión y Comunicación S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Chihuahua
Tecnología en Informática y Administración S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Guadalajara
Tecnología, Asesoría, Sistemas, S.A. de C.V. CMMI-DEV v1.2(Staged) 2 México
Universidad Tecnologica de León (UTL) CMMI-DEV v1.2(Staged) 2 León
Universidad Tecnologica del Norte de Guanajuato (UTNG) CMMI-DEV v1.2(Staged) 2 Dolores Hidalgo
VERSATIL CMMI-DEV v1.2(Staged) 2 Guadalajara

Organizaciones certificadas en México por el SEI al 17 de Julio de 2012.

Si consideramos las unidades de negocio como entidades independientes, México tendría 117 certificaciones. Ahora es el estado de Jalisco (35) el que lleva la delantera, seguido de cerca por el Distrito Federal (28). Guanajuato (13) ha tenido un crecimiento muy importante mientras Nuevo León (10) y Sinaloa (10) se han quedado rezagados. Querétaro (5), Sonora (3), Aguascalientes (3) y Baja California (3) han mantenido un crecimiento pequeño pero estable mientras Chihuahua (2), Puebla (1) y Coahuila (1) permanecen casi sin cambios. Por el contrario, Zacatecas (2) y Morelos (1) ya forman parte del club CMMI, aunque más bien esto se debe a la expansión de organizaciones cuya casa matriz se encuentra fuera de dichos estados.

Conclusiones

En un entorno cada vez más competitivo, es necesario aprovechar todas las herramientas a nuestro alcance para atraer negocios e inversión: CMMI es claramente un medio para lograrlo. Y esto no sólo son castillos en el aire, ya que países tan diversos como Malasia, Egipto, Chile o Vietnam se están transformando en proveedores de alta tecnología y servicios de consultoría que ya compiten en el mercado global.

En el caso particular de México, es posible ver cómo se está convirtiendo poco a poco en una potencia en tecnologías de información, debido a que cuenta con una razonable cantidad de profesionistas calificados, una infraestructura decente y apoyos significativos que el gobierno y asociaciones mexicanas proporcionan para mejorar la competitividad. ¿Ya somos del primer mundo? Por supuesto que no, pero considerando los avances obtenidos en los últimos años, el futuro que nos espera se ve brillante.

h1

Las leyes del diseño ingenieril

13 julio, 2012

Wizdoc [Icon By Buuf]  Tips & Tricks.

Primero, resuelve el problema. Luego escribe el código.

– Anónimo

No cabe duda que uno de los procesos más importantes durante el desarrollo de cualquier proyecto de ingeniería tiene que ver con el diseño, ya que del 25 al 35% del tiempo total del plan de trabajo lo dedicaremos a definir y planear cómo vamos a solucionar el problema a resolver. Éste proceso va desde seleccionar los componentes y reglas más básicos, hasta definir una arquitectura completa de todo el sistema hasta su último detalle. Por ello, la mayoría de las veces sólo la gente con mayores conocimientos y experiencia tienen la capacidad para llevarlo a cabo de forma efectiva.

Es así como me topé con el sitio web de David Akin, director del laboratorio de sistemas espaciales en la Universidad de Maryland, Estados Unidos. De entre varias curiosidades, encontré las Leyes de Akin para el diseño de naves espaciales, que me parecen muy relevantes porque nos dan pequeñas joyas de sabiduría relacionadas a cualquier proyecto de ingeniería, ya sea civil, de electrónica, mecánica o software. Adaptadas a la ingeniería en general e incluyendo un poco de explicación en las menos aparentes, las muestro a continuación:

1. La ingeniería se hace con números; un análisis sin números es tan sólo una opinión. Adjetivos como pequeño, mediano, grande, lento o rápido te ayudan a enfocar la idea general del mensaje, pero estimar el costo incurrido para solucionar un problema y proporcionar las cifras exactas puede ser algo revelador.

2. Para diseñar un sistema correctamente se necesita un monto de esfuerzo infinito. Por eso es una buena idea diseñarlos para operar cuando las cosas salen mal.

3. El diseño es un proceso iterativo. El número necesario de iteraciones es igual a una más de las que has hecho hasta ahora. Esto es cierto en cualquier punto en el tiempo.

4. Tus mejores esfuerzos de diseño inevitablemente resultarán inservibles durante el diseño final. Aprende a vivir con la decepción.

5. (Ley de Miller) Tres puntos determinan una curva. Si estás basando tus cálculos en una tendencia, estos tres números te están diciendo que la tendencia está cambiando.

6. (Ley de Mar) Todo es lineal si lo graficamos con un marcador lo suficientemente grueso.

Scatter Plot

7. Al principio de cualquier esfuerzo ingenieril, la persona que más desea convertirse en líder del grupo es probablemente la menos capacitada para serlo.

8. En la naturaleza, el óptimo se encuentra casi siempre en un punto medio. Desconfía de aseveraciones donde el óptimo está en algún extremo.

9. No tener toda la información que necesitas no es una excusa válida para no empezar el análisis.

10. Cuando tengas dudas, estima. En una emergencia, adivina. Pero debes estar seguro de regresar y limpiar el batidillo cuando los números reales hagan su aparición.

11. Algunas veces, la manera más rápida de llegar al final es tirar todo a la basura y empezar nuevamente, desde el principio.

12. Nunca existe una solución correcta. Sin embargo, existen múltiples soluciones incorrectas.

13. El diseño está basado en requerimientos. No hay justificación para diseñar algo “un poco mejor” de lo que los requerimientos dictan.

14. (Ley de Edison) “Mejor” es el enemigo de “bueno”.

15. (Ley de Shea) La habilidad de mejorar un diseño ocurre primeramente en las interfaces (con otros sistemas). Este es también el primer lugar donde metemos la pata.

16. La gente que hizo un análisis previo al tuyo no tenía una línea directa al conocimiento de futuras generaciones. Por lo tanto, no existe razón alguna para creer en su análisis más que en el tuyo. No existe una razón especial para presentar su análisis como si fuera tuyo.

17. El hecho de que un análisis aparezca impreso no tiene relación con la probabilidad de que sea correcto.

18. Las experiencias pasadas son excelentes para proporcionar una inspección de la realidad. Sin embargo, demasiada realidad puede condenar un diseño por demás valioso.

19. La probabilidad de que seas más brillante que los demás en la industria trabaja inmensamente en tu contra. Si tu análisis dice que tu velocidad terminal es el doble de la velocidad de la luz, puede que hayas inventado la propulsión warp, pero la posibilidad de que hayas metido la pata es mucho mayor.

20. Un mal diseño con una buena presentación estará condenado eventualmente. Un buen diseño con una mala presentación está condenado inmediatamente.

21. (Ley de Larrabee) La mitad de todo lo que escuchas en el salón de clases es basura. La educación consiste en averiguar qué mitad lo es.

22. Cuando dudes, documenta. (Los requerimientos de documentación alcanzarán un máximo poco después de la terminación del proyecto).

23. El calendario que desarrolles parecerá un trabajo de ficción hasta el momento en que el cliente te despida por no haberlo alcanzado. Sólo porque sabes que te lo estás inventando todo no significa que el cliente no lo tomará en serio. Ten cuidado con lo que prometes.

24. Es llamada una “estructura desmenuzada de trabajo” (Work Breakdown Structure) porque el trabajo (Work) pendiente crecerá hasta que tengas un punto de ruptura (Breakdown), a menos que lo estructures (Structure).

25. (Ley de Bowden) Después de una falla en las pruebas, siempre es posible refinar el análisis para demostrar que tuviste márgenes negativos todo este tiempo.

Margen de seguridad = ( carga para punto de quiebre / carga máxima diseñada ) – 1


El margen de seguridad como lo definen en los libros de texto: si una pieza es cargada con la capacidad máxima que podría soportar durante el servicio, ¿cuántas cargas con la misma fuerza puede soportar antes de fallar? En efecto, esta es una medida de capacidad excedente. Si el margen es negativo, significará que la pieza fallará incluso antes de que alcance su capacidad máxima diseñada.

26. (Ley de Montemerlo) No hagas nada tonto.

27. (Ley de Varsi) Los calendarios sólo se mueven en una dirección.

28. (Ley de Ranger/Heinlein) No existe tal cosa como un almuerzo gratis.

29. (Ley de Von Tiesenhausen sobre la administración de programas) Para tener un cálculo preciso de los requerimientos, multiplica los estimados iniciales de tiempo por pi (π) y desliza el punto decimal de los estimados en costo un lugar a la derecha.

30. (Ley de Von Tiesenhausen sobre el diseño ingenieril) Si quieres tener el máximo efecto en el diseño de un nuevo sistema, aprende a dibujar. Los ingenieros siempre acaban por diseñarlo para parecerse al boceto inicial del artista.

31. (Ley de Mo sobre el desarrollo evolutivo) No puedes llegar a la Luna trepando árboles sucesivamente más altos. Básicamente, más de lo mismo no te llevará a ningún lado: algunas veces es útil construir prototipos o modelos a escala como prueba de concepto; sin embargo, sistemas ad-hoc diseñados para soportar cien usuarios en una intranet no necesariamente son escalables para un millón de usuarios desde Internet.

32. (Ley de Atkin sobre demostraciones) Cuando el hardware funciona perfectamente, los visitantes realmente importantes no llegan a la demostración.

33. (Ley de Patton sobre la administración de programas) Un buen plan ejecutado violentamente ahora es mejor que un plan perfecto ejecutado la próxima semana.

34. (Ley de Roosevelt sobre planeación de tareas) Haz lo que puedas, donde estés, con lo que tengas disponible.

35. (Ley de Saint-Exupéry sobre el diseño) Un diseñador sabe que ha alcanzado la perfección no cuando ya no haya más que agregar, sino cuando ya no hay nada más que quitar.

36. Cualquier ingeniero promedio puede diseñar algo elegante. Un buen ingeniero diseña sistemas para ser eficientes. Un gran ingeniero los diseña para ser efectivos.

37. (Ley de Henshaw) Una clave del éxito en una misión consiste en establecer claras líneas de recriminación.

38. La funcionalidad guía los requerimientos, sin importar lo que los libros de texto de ingeniería digan.

39. Las tres claves para mantener un proyecto en costo y tiempo:

    1) No cambiar la plataforma.

    2) No cambiar la plataforma.

    3) Sin importar lo que hagas, no cambies la plataforma.

40. Producción es un ambiente implacable. Si metes la pata en la ingeniería, alguien puede sufrir las consecuencias. Y no existen créditos parciales porque casi todo el análisis estuvo bien…

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 25 seguidores