Microsoft Data Explorer Preview para Excel

Hoy en Microsoft hemos anunciado la disponibilidad pública de Microsoft "Data Explorer" Preview para Excel.

Para aquellos que han seguido mi blog en el pasado, quizá recordaréis posts anteriores sobre la version “SQL Azure Lab” de Data Explorer… Como podréis intuir, en los últimos meses no he podido escribir aquí al haber estado bastante ocupados mejorando “Data Explorer” y convirtiéndolo en lo que podéis probar hoy como Preview (Excel add-in), y que estará disponible próximamente dentro de Excel.

Descarga Microsoft Data Explorer Preview para Excel

¿Qué aporta “Data Explorer”?

"Data Explorer" enriquece la experiencia de Self-Service Business Intelligence en Excel proporcionando una forma muy fácil de descubrir e importar datos desde una amplia variedad de fuentes de datos, refinar y aumentar esos datos fácilmente y ayudar a los usuarios a llevar estos datos a Excel para su análisis posterior con Excel, análisis en memoria con PowerPivot y visualización de datos con PowerView.

"Data Explorer" soporta una amplia variedad de fuentes de datos, incluyendo bases de datos relacionales (SQL Server, Windows Azure SQL database, Oracle, IBM DB2, Access, etc.), diferentes formatos de archivos (texto/Csv, Excel, XML, entre otros) y algunas otras fuentes de datos no tradicionales como Web (tablas de HTML, XML/JSON APIs, etc.), Hadoop (HDFS), OData, Active Directory, Facebook, etc.. Además, "Data Explorer" también proporciona capacidades de búsqueda en Internet sobre millones de tablas de Wikipedia, a través de Bing… Encuentra tablas de datos disponibles en la web, directamente desde Excel e impórtalos en tu hoja de Excel en un par de clicks!

Además de proporcionar conectividad a una gran variedad de fuentes de datos, con "Data Explorer" también es fácil transformar y refinar los datos al proporcionar una interfaz de usuario intuitiva que ayuda a los usuarios a definir pasos de transformación con gestos fáciles. Estas capacidades se ofrecen de forma consistente a través de todos los orígenes de datos soportados, sin necesidad de ningún conocimiento sobre las tecnologías subyacentes para el usuario final en Excel.

"Data Explorer" también permite aumentar tus datos fácilmente y te ayuda a combinar los datos provenientes de todas estas fuentes de datos mediante “Merge” (join) o “Append” (union).

Finalmente, la integración entre "Data Explorer" y el resto de las herramientas de BI en Excel (incluyendo PowerPivot y PowerView) es tan fácil como puedas imaginar… Simplemente importa tus datos en la hoja de Excel, o cárgalos en el modelo de datos de Excel 2013 en un solo click.

Escribiré unos cuantos artículos con análisis y ejemplos sobre cada una de estas áreas en las próximas semanas y meses, pero por ahora puedes ver este video de resumen y descargar “Data Explorer”.

 

Enjoy!

Disponible el vídeo de mi sesión sobre Data Explorer en “Las 12 horas de SQL Server 2012”

Desde hace unos días ya es posible acceder a los vídeos de las distintas sesiones del evento “Las 12 horas de SQL Server 2012”, evento en el cual tuve el privilegio de participar hace unas semanas con una sesión acerca de Microsoft Codename “Data Explorer”.

 

Si todavía no has tenido ocasión de probar “Data Explorer”, puedes solicitar acceso a nuestro cloud service y también probar la versión Desktop la cual tiene integración con Excel 2007/2010 y el resto de características disponibles en la versión Cloud a excepción de las opciones de publicación y colaboración.

Por último me gustaría reiterar mis agradecimientos y enhorabuena al equipo de organización del evento, a la asociación PASS Spanish Group, a Eladio Rincón, a la gente de Microsoft Iberica y al resto de colaboradores que hicieron posible que el evento fuera todo un éxito en participación y en nivel de contenidos.

Y tú… ¿has encontrado ya al poni escondido en tus datos?

Esta semana hemos lanzado oficialmente el lab de “Data Explorer”, disponible dentro de SQL Azure Labs… Desde hace unos días ya podéis descargar la versión local de “Data Explorer” y, si fuísteis de los primeros en pedir acceso a nuestro cloud service, ya habréis recibido o estaréis a punto de recibir vuestra invitación por email. También podéis visitar nuestra Learning Page donde encontraréis una cantidad considerable de tutoriales y vídeos sobre “Data Explorer” o nuestro blog oficial en MSDN.

Y por supuesto, no os podéis perder hoy Lunes las “12 horas de SQL Server 2012” donde tendré el privilegio de compartir una hora con vosotros gracias a la enorme labor de organización llevada a cabo por el amigo Eladio Rincón y el resto de gente del PASS Spanish Group… Sin duda será uno de los mejores eventos del año en lengua hispana!

Probad “Data Explorer”, buscad al poni que se esconde en vuestros datos, enviadnos feedback

Gracias!!

Microsoft Codename “Data Explorer”: Un vistazo a fondo…

En mi post anterior anunciaba Microsoft Codename “Data Explorer”, un nuevo servicio en la nube de Azure que permite generar valor añadido a partir de tus fuentes de datos mediante la posibilidad de descubrir nuevas fuentes relacionadas con el dominio en cuestión, enriquecer esta información mediante la creación de nuevos “mashups” que integren varias de estas fuentes y finalmente publicar el resultado de diversas formas para compartirlo con quien tú quieras. En este post describiré un escenario de principio a fin empleando Data Explorer.

En este escenario, una consultora de negocio (Anna) debe asesorar a la empresa Contoso Yogurt para decidir dónde deberían abrir sus tres próximas tiendas en el área de Seattle.

A fin de responder a esta pregunta, Anna necesita considerar diversos aspectos acerca de los clientes objetivo, las características demográficas de cada ubicación potencial, etc. Anna también debe predecir la posible reacción de la gente que vive cerca de las nuevas ubicaciones después de que las tiendas estén abiertas; es decir, cuál es la percepción o sentimiento de estas personas acerca de estas tiendas.

Anna ya tiene acceso a la mayoría de las fuentes de datos que contienen la información que necesita, bien porque ella es propietaria de los datos o porque los datos son parte de los sistemas de información de su empresa. Además, Anna sabe que hay otras piezas útiles de información en “su entorno” que puede aprovechar, como páginas web, foros, redes sociales u otros lugares en Internet. Anna todavía no sabe cómo podría aprovechar estos valiosos datos, pero gracias a la potencia de «Data Explorer», ahora ella puede utilizar estos datos y obtener nuevas conclusiones.

Estas son las diferentes fuentes de datos que Anna tiene previsto emplear y considera útiles para ayudarle en el proceso de decisión:

  • Listado de tiendas de Contoso Yogurt existentes: Esta información está disponible en una base de datos de SQL Azure que pertenece a su empresa.
  • Listado de nuevas ubicaciones potenciales: Anna ha realizado algunas investigaciones y ha creado una lista de posibles ubicaciones para nuevas tiendas de Contoso Yogurt. Esta lista contiene algunos de los centros comerciales más populares en la zona. Estos datos se almacenan en una hoja de cálculo de Excel.

Anna tiene un amigo en el equipo de Data Explorer que le ha dado acceso a Data Explorer.

Una vez que ha iniciado sesión, se encuentra con la página de bienvenida.

En esta página, Anna selecciona Dashboard para comenzar a trabajar con sus datos.

Anna selecciona Add data source para añadir las dos fuentes de datos que necesita. Esto conduce a Anna a la página para agregar una nueva fuente de datos, en la que puede añadir una gran variedad de fuentes de datos… Puede conectar a recursos de red como bases de datos (SQL Server y SQL Azure), consumir contenidos de una página web, un feed de OData o datos provenientes de Windows Azure Marketplace. Alternativamente, puede añadir datos de su propia máquina (archivos de Excel, Access, texto, etc.) o incluso crear datos “in situ” tecleando, copiando/pegando o calcularlos empleando una fórmula.

Anna conecta a la base de datos de SQL Azure introduciendo información del servidor, base de datos, usuario y password…

A continuación, Anna añade el archivo de Excel con información de centros comerciales para las nuevas ubicaciones potenciales.

Ahora que Anna ha añadido sus dos fuentes de datos, regresa a la página de Dashboard, donde puede encontrar estas dos fuentes en la parte derecha. Además, obtiene información sobre clasificación semántica de los datos que ya ha añadido, así como recomendaciones de otros datasets interesantes que puede añadir a su análisis, provenientes de Azure Marketplace y Bing.

Anna encuentra estas recomendaciones interesantes y las incorporará a su análisis más adelante. Lo próximo que va a hacer Anna es combinar la información de tiendas existentes con la lista de nuevas ubicaciones potenciales… Es decir, combinar una tabla de SQL Azure con otra tabla de Excel… Esto, generalmente, no es una tarea trivial; sin embargo, empleando Data Explorer, Anna puede conseguirlo simplemente seleccionando ambas fuentes y haciendo click en Mashup.

Al hacer esto, Anna accede al “Mashup Editor”, en el cual podrá comenzar a manipular, transformar y enriquecer los datos de ambas tablas.

En próximos posts hablaré en detalle acerca de este editor; no obstante, hay algunos conceptos básicos que introduciré hoy para hacer el resto del post más fácil de comprender…

En la esquina superior izquierda del editor, encontramos el panel de recursos, el cual muestra los dos recursos que Anna está tratando de combinar, ShoppingCenters y ContosoStoreTraq. La opción New le permite añadir otra fuente de datos, mientras que Merge le permite combinar ambos recursos en una única tabla.

 

El recurso seleccionado es ContosoStoreTraq, por lo que obtenemos una vista previa en el editor. Justo encima de la ribbon hay dos “cajas” de color gris; a esta región la conocemos como la Secuencia de Tareas (Task Stream), y representa el conjunto de tareas o transformaciones que han sido aplicadas al recurso actualmente seleccionado. Estas tareas son útiles para filtrar, reordenar, analizar, agrupar, transformar nuestros datos; y pueden ser encontradas en el ribbon.

Empleando la secuencia de tareas, podemos navegar por todas y cada una de las tareas, regresando a una tarea anterior para modificarla o incluso eliminarla o renombrarla. Al navegar por estas tareas, la vista previa se actualiza para mostrar el resultado parcial después de aplicar la tarea en cuestión.

Es importante mencionar también que ninguna de estas tareas modifica el estado de los datos en el origen; estamos construyendo una vista sobre estos datos, de sólo lectura. Después de definir una secuencia de tareas, esta secuencia es almacenada de modo que la podamos reutilizar posteriormente; definiremos o diseñaremos el flujo de datos y transformaciones una vez, para posteriormente aplicarlo cada vez que queramos de forma automatizada.

En el editor también encotramos recomendaciones sobre datasets relevantes en el dominio de datos en el que estamos actualmente trabajando (mostrados en la esquina inferior izquierda en color azul). Puesto que Anna está trabajando con direcciones de tiendas y centros comerciales, los datasets recomendados son datos demográficos en estas áreas (provenientes de Data Market) e información de Bing PhoneBook API.

A continuación, Anna quiere combinar estos dos recursos porque la información sobre tiendas existentes contiene un indicador de rendimiento/rentabilidad (basado en los ingresos generados por cada tienda). A Anna le gustaría que este indicador apareciera junto a cada centro comercial en los que ya existe una tienda de Contoso Yogurt. Puede hacer esto fácilmente añadiendo una columna de lookup en ShoppingCenters

Después de añadir esta columna, Anna selecciona el dataset recomendado con información demográfica y lo añade a su mashup… Seguidamente va a combinar este nuevo recurso con ShoppingCenters, relacionándolos mediante el Zip Code (Código Postal).

Una vez que ha combinado ambos recursos, Anna va a incorporar otro de los datasets recomendados, en este caso, añadiendo datos de Bing PhoneBook para complementar el listado de centros comerciales con información de números de teléfono.

Empleando la Bing Phone Book API, Anna es capaz de crear también una nueva columna con la cuenta de institutos y escuelas situadas en un radio inferior a 10 kilómetros respecto a cada una de las nuevas ubicaciones potenciales, para tratar de maximizar el beneficio de estas nuevas tiendas teniendo en cuenta que los niños y adolescentes son clientes habituales de este tipo de tiendas.

Adicionalmente, Anna podría incluir otro de los datasets recomendados para medir el sentimiento o afinidad de la gente por cada uno de los centros comerciales en la lista, de modo que pueda seleccionar aquellos que van a tener mejor aceptación por parte de los clientes.

Resumiendo, Anna ha comenzado su análisis con una tabla proveniente de SQL Azure y otra proveniente de un archivo de Excel, las ha relacionado y ha incorporado información de otros datasets recomendados que provienen de Azure Marketplace y Bing API. Un escenario de integración de datos bastante avanzado para un usuario de negocio, pero que Anna ha podido realizar de forma rápida, sencilla e intuitiva mediante el uso de Data Explorer.

Finalmente, Anna quiere compartir los resultados de su análisis con sus compañeros y para ello hace uso de las opciones de publicación incluidas en Data Explorer, que le permiten publicar los resultados en diversos formatos de archivo (Excel, texto, etc.), o exponer el resultado de forma que sea consumible desde otras herramientas de análisis como por ejemplo PowerPivot, o incluso exponer un feed de OData que pueda ser consumido desde cualquier otra aplicación. En próximos posts entraré en detalle a describir cada una de estas alternativas de publicación…

Pronto tendréis la oportunidad de probar Data Explorer, podéis registraros aquí para recibir acceso próximamente.

Desde el equipo de Data Explorer estamos trabajando intensamente para que la funcionalidad y calidad de Data Explorer sea óptima. Como consecuencia de esto, quizá el aspecto de alguna de estas capturas sea diferente de lo que encontréis en el producto cuando lleguéis a usarlo dentro de unas semanas…

No obstante, espero que el post haya servido a modo de ejemplo ilustrativo de uso de Data Explorer y de las nuevas posibilidades que representa.

Anunciando Microsoft Codename "Data Explorer"

Durante la keynote de Ted Kummert en PASS Summit 2011, hemos realizado el primer anuncio oficial acerca de Microsoft Codename «Data Explorer».

Regístrate aquí si quieres probarlo…

¿En qué consiste «Data Explorer»?

«Data Explorer» proporciona una revolucionaria forma de trabajar con tus datos! Estas son algunas de las características principales (de las cuales hablaré largo y tendido en próximos posts…): 

  • Identifica las fuentes de datos relevantes para ti, bien aquellas que te pertenecen u otras disponibles «en la nube». 
  • Obtén recomendaciones automáticas sobre conjuntos de datos (feeds, servicios, etc.) que puedan ser de interés para ti, basados en el tipo de información con la que estás trabajando. 
  • Enriquece y combina todas estas fuentes de datos para generar valor e información que te ayude a tomar decisiones. 
  • Trabaja con fuentes de datos heterogéneas como si fueran una única fuente, olvídate de los detalles sobre cómo acceder a todas estas fuentes y céntrate en generar valor a partir de ellas (datos de SQL Server y SQL Azure, feeds de OData y Windows Azure DataMarket, archivos de Excel, documentos de texto, etc.) 
  • Colabora y comparte tus «mashups» con quien tú quieras para refinar la información. 
  • Publica los resultados para que otros puedan visualizarlos, o incluso consumirlos desde otras aplicaciones.

 

¿Suena interesante?

 

                Regístrate aquí para probar «Data Explorer» próximamente.

                – Sigue nuestro blog oficial (en Inglés).

                – Participa en nuestros foros de MSDN.

                – Síguenos en Facebook, y en Twitter.

 Y, por supuesto, sigue pendiente de este blog… Prometo publicar nuevos posts con mucha mayor frecuencia que en estos últimos meses… : )

Modeling in Text: Serie de screencasts sobre el lenguaje M

Durante las últimas semanas he tenido la oportunidad de grabar una serie de cinco screencasts sobre el lenguaje M para nuestra web en MSDN.

La serie está dividida en cinco capítulos, en los cuales partimos de un conocimiento previo sobre M prácticamente nulo para posteriormente incrementar la funcionalidad de nuestro ejemplo a medida que introducimos nuevos conceptos del lenguaje. El contenido de cada uno de los capítulos es el siguiente:

  1. “Modeling a Language”: En este capítulo explico de qué forma podemos modelar nuestros propios lenguajes, comenzando por la creación de un lenguaje sencillo que reconozca una única sentencia (“Chris is 24 years old”) para posteriormente incorporar nuevos conceptos y funcionalidades del lenguaje y poder generalizar dicho lenguaje, así como modificar la estructura del AST / proyección resultante.
  2. “Data”: Esta segunda parte de la serie se centra en explicar cómo consumir el resultado obtenido en el capítulo anterior (estructuras de datos en M generadas a partir de la “compilación” de un archivo de texto escrito en nuestro propio DSL), de modo que podamos importar dichos datos a SQL Server, vía herramientas de línea de comandos (M.exe y Mx.exe), así como visualizar dichos datos en Quadrant una vez forman parte de nuestro repositorio en SQL Server.
  3. “Transformation”: En este vídeo veremos la estructura general de la transformación de M a sentencias T-SQL, así como diferentes alternativas para escribir funciones de manipulación sobre dichos datos en M, que posteriormente serán transformadas en vistas de SQL.
  4. “Constraints”: Este capítulo muestra de qué forma podemos imponer restricciones sobre nuestros datos (definir el tipo de datos de cada atributo, etc.), y analizamos cómo su traducción a T-SQL resulta diferente en función de dichos cambios.
  5. “Identity and relationships”: En la última parte de la serie, describimos cómo crear relaciones entre distintas entidades, mediante el uso de IDs, etiquetas y colecciones que referencian a dichos elementos.

Aprovecho para recomendar a aquellos interesados en SQL Server Modeling (M, Quadrant, Repositorio) que visiten nuestra sección de videos en la cual no sólo podréis encontrar esta serie sino también vídeos de las sesiones del PDC de Don Box, Chris Anderson, Chris Sells, etc., así como bastantes más screencasts sobre las tecnologías que estamos construyendo.

Enjoy!

He leído: “CLR Via C#”, 3ª Edición

Este fin de semana he tenido la ocasión de leer la última edición del libro “CLR via C#”, que saldrá a la venta próximamente.

CLR via C# 3rd Edition (Pro-Developer)

No descubro nada diciendo que este es uno de los libros de imprescindible lectura para todo aquel programador de .Net que se precie… Sin embargo, me gustaría destacar algunas de las novedades incluídas en esta nueva edición, que constituyen un motivo más que suficiente para que aquellos que han leído alguna de las ediciones anteriores se animen a volver a leerlo… En realidad, creo que quien haya leído este libro con anterioridad, no necesita motivos que le animen a volver a leerlo, más allá de la noticia de que una nueva edición ha sido publicada…

En esta edición, la principal novedad es la inclusión de una nueva sección (unas 200 páginas extra) dedicadas a Threading, mecanismos de gestión concurrente en Windows y su correspondencia en el “nuevo” CLR 4.0, operaciones asíncronas y políticas de sincronización entre hilos.

Otra sección totalmente nueva que ha sido incorporada al libro está dedicada a serialización en tiempo de ejecución.

En el resto de secciones, se han añadido o modificado conceptos para adaptarlos a las nuevas versiones del CLR y del propio lenguaje C#.

En cuanto a C# 4.0, algunos de los conceptos incorporados al libro son: tipo dynamic, parametros opcionales, variables locales implícitamente tipadas, propiedades implementadas automáticamente, tipos anónimos, inicializadores de objetos y de colecciones, uso de expresiones lambda para delegados, etc.

Respecto al CLR 4.0, se ha reescrito completamente el capítulo dedicado al manejo de excepciones en el framework, así como modificaciones notables en cuanto a la gestión automática de memoria (novedades en el garbage collector), soporte para múltiples CLRs cargados en un mismo proceso, novedades en el manejo de AppDomain, etc.

Sin duda, una lectura más que recomendable…

Disfrutadlo!

Pongamos que hablo de MSN Entretenimiento

Me cuenta un pajarito que el próximo jueves 4 de Febrero, a partir de las 23:30h (GMT+1) podremos disfrutar a través de MSN Entretenimiento en primicia mundial del nuevo videoclip del Maestro Sabina: “Viudita de Clicqcuot”.

MSN Entretenimiento es un servicio de MSN que pone a nuestra disposición una gran variedad (y cantidad) de contenidos multimedia online, de forma gratuita: Series de TV, música, videoclips, juegos, etc. Todo en Español…

A disfrutarlo compañer@s!!

Por qué no me gusta la métrica LOC (Lines Of Code)

[ Aprovechando las vacaciones navideñas y las 15 horas de vuelos desde Seattle hasta España para redactar unos cuantos posts que tenía en mente desde hace tiempo… ]

Hoy os hablaré sobre por qué considero que LOC no es una métrica de código demasiado útil (por decirlo eufemísticamente), algo sobre lo que estoy seguro de que habréis leído ya en bastantes ocasiones pero me gustaría aportar mi visión particular.

De vez en cuando me he encontrado con gente que me realiza preguntas del tipo: “¿Cuántas líneas de código tiene el proyecto Oslo SQL Server Modeling Services?" (cambiad esta última parte por Windows 7, o Visual Studio 2010, o SQL Server 2008, etc), o también “Miguel, ¿cuantas líneas de código escribes al día?”…

En el caso de la segunda pregunta, mi respuesta suele ser: “En algunos de los mejores días de mi vida como desarrollador, mi LOC ha sido un valor negativo. Afortunadamente, LOC no es directamente proporcional a mi productividad”.   : )

Hay dos matices que considero bastante descriptivos en cuanto a LOC:

  1. Para lo único que LOC es una medida válida es para medir el tamaño de la base de código de un proyecto.
  2. Un valor de LOC enorme en nuestra codebase no resulta ser, en muchas ocasiones, algo bueno.

Mi opinión personal es que LOC es prácticamente inútil para gestión de proyectos, para lo único que nos sirve es para hacer análisis del tipo:

  1. El módulo A es el doble de grande que el módulo B. (considerando que ambos están escritos en el mismo lenguaje (aunque esto sería también discutible, hay estudios que afirman que LOC es independiente del lenguaje empleado, pero no estoy de acuerdo en la mayoría de casos), que las coding guidelines son las mismas para ambos, etc… En cualquier otro caso, ni siquiera serían comparables)
  2. El módulo C ha crecido un 25% en los últimos 6 meses.
  3. Podemos ver cómo el módulo D tiene un elevado número de bugs, debido a su gran tamaño.

Para cuestiones relacionadas con el análisis del crecimiento/progreso en un determinado proyecto, es claramente mejor fijarse en otras métricas diferentes a LOC, como por ejemplo el número de features completadas/pendientes, etc. Si empleáramos LOC, el análisis sería incorrecto ya que alguien podría añadir 1.000 líneas de código a un proyecto sin completar una feature concreta, de igual forma que alguien podría eliminar 1.000 líneas de código y ser capaz de completar tres features.

Respecto a este último ejemplo, comentar que un índice LOC negativo es en bastantes casos el resultado de un trabajo de refactorización de código realizado como parte de la implementación de una nueva feature y puede tener un impacto significativo en el tamaño global de nuestra base de código.

Ahora que ya os he dado mi opinión personal, veamos qué dicen otras fuentes más documentadas que yo al respecto. Por ejemplo, la siguiente tabla (extraída del libro “Code Complete”) nos muestra la relación entre el tamaño del proyecto y el LOC por persona/año:

Tamaño del proyecto (LOC) LOC por persona/año
1.000 2.5K – 25K
10.000 2K – 25K
100.000 1K – 20K
1.000.000 0.7K – 10K
10.000.000 0.3K – 5K

El aspecto a destacar en esta tabla es que la cantidad de líneas de código que un desarrollador es capaz de escribir disminuye a medida que el proyecto aumenta de tamaño. Esto se debe a diversos factores, como son el hecho de que la complejidad aumenta, el impacto de las modificaciones realizadas es mucho mayor en otras partes del proyecto, el esfuerzo de testing necesario aumenta, el número de bugs aumenta, etc.

Por tanto, idealmente, un buen desarrollador no es aquel con mayor LOC, sino con mayor ratio Feature/LOC ya que eso significaría que el desarrollador está implementando nuevas funcionalidades (y por tanto aportando valor añadido para el cliente) a la vez que mantiene el tamaño de code base en unos límites razonables, lo cual permite incrementar la productividad de él mismo y del resto de compañeros en el equipo de desarrollo del proyecto.

Otros factores negativos sobre LOC los podemos encontrar en el libro “Applied Software Measurement” de Capers Jones, entre los que destacaré los siguientes:

  1. Las métricas LOC penalizan a los lenguajes de programación de alto nivel.
  2. Análisis comparativos de proyectos en los que se ha empleado más de un lenguaje de programación y que se fundamenten en LOC deberán ser considerados una mala práctica profesional.
  3. Las métricas de “Coste por bug” penalizan la calidad y hacen que un software lleno de bugs pueda parecer mejor de lo que en realidad es, a juzgar por los resultados de un estudio basado en LOC. Para este tipo de estudios, es mejor emplear métricas de Puntos de Función.

Por último, me gustaría recomendar otro libro bastante interesante “Measuring and Managing Performance in Organizations”, de Robert Austin. En este libro, Austin entrevista a varios expertos de la industria del software que aportan su opinión acerca de qué cosas conviene (o no) medir. Al final, casi todos ellos coinciden en que medir todo aquello que convendría medir en el desarrollo software es prácticamente imposible…

Merry Christmas!