Archive for category ALM

[# ALM] Automate processes save costs in the long term (more than you think)

ALM 03

Buenas,

I repeat the title of the post that more that a title is a statement

AUTOMATE PROCESSES IS SAVE A LONG TIME

This is not an easy task, but one of the ways of addressing the same is as follows

1. Identify the repetitive tasks that we perform manually during the development of an application

2 Assess the possibility of creating an automated process to deal with these tasks

3 Define a period of trial for the implementation of this process

4 Verify the gained time using this process

If you follow these steps during the implementation of a process of automation, we’ll probably see one of these two options

-What initially appeared to be a task that could be quickly replaced by a script is then quite complicated and no sense abandoning the manual process

-automated process begins to be part of a process of increasing automation that helps us to gain quality in our developments

This seems a little theory of Friday night beer actually is fairly close to our day to day. Here is an example with one of the great "Gallardo Javi" (to see when create you a blog che!)

It was necessary to compress it in a special format, separate the compressed file in multiple chunks, sign them, and couple of steps more to share the output of an application.

When we did this process by hand, it took us less than a minute. But there was always the possibility of wrong put password of the ZIP, separate evil chunks, etc. Javi took 30 minutes and created a script that was responsible for this process.

In this way, we always have the same OUTPUT from a repetitive and predictable process (which is one of the bases on which we must work).

To metric level, simply avoiding Javi is wrong in the generation of a package already we had won the the script generation time. Javi is a crack, but if we assume that 2 times a day I could be wrong.

All subsequent executions gave us a profit of + 300 seconds. Finally, after a couple of months we had won 2 days/man. (This translated into €uros always gives us a joy)

With Javi not we went further, with the script us enough, but there is always the possibility of a little thinking out-of-the-box

  • delegate the responsibility to carry out this process in a Team Foundation build.
  • process the result of this process only occasionally successful compilation and if the tests are executed correctly
  • automate the packaging and distribution from this process
  • etc.

When we arrived at these scenarios are closer to having Continuous Delivery scenarios (about what spoke in this link), simply automating tasks.

There are many scenarios where it can automate, most result in deployments, but quickly occur to me the following

  • Deployments, for example when we deploy to AZURE, are why it doing always manually?
  • Tests, the main point where automate guarantees us quality
  • Code generation, is not one of the most recommended, but work with templates for example is a way to always ensure the same OUTPUT from a given INPUT
  • Many more…

Finally, discuss the best time where we can apply these processes is perhaps in time to integrate our code. In the case of working with Team Foundation, the definition of a build is incredibly powerful to implement these processes.

AVANADE Spain we have a number of Build definitions that allow us to perform different tasks of automation. From processes to ensure the quality, as the execution of analysis of coding style (StyleCop), generation of custom reports based on unit testing and testing of MTM, until deployments automated AZURE, ClickOnce, WebDeploy, etc.

Saludos @ Home

El Bruno

image image image

Dejar un comentario

[#ALM] Automatizar procesos es ahorrar a largo plazo (por mas que a muchos les cueste verlo)

ALM 03

Buenas,

repito el título del post que más que un título es una afirmación

AUTOMATIZAR PROCESOS ES AHORRAR A LARGO TIEMPO

Esto no es una tarea fácil, pero una de las formas de encarar la misma es la siguiente

1. Identificar las tareas repetitivas que realizamos manualmente durante el desarrollo de una aplicación

2. Evaluar la posibilidad de crear un proceso automático que se encargue de realizar esas tareas

3. Definir un período de prueba para la implantación de este proceso

4. Verificar el tiempo ganado utilizando este proceso

Si seguimos esos pasos durante la implantación de un proceso de automatización, seguramente veremos una de estas dos opciones

- lo que inicialmente parecía una tarea que podía ser sustituida rápidamente por un script luego se complica bastante y no tiene sentido abandonar el proceso manual

- el proceso automatizado comienza a ser parte de un proceso de automatización cada vez mayor que nos ayuda a ganar calidad en nuestros desarrollos

Esto que parece un poco de teoría de cerveza de viernes por la noche en realidad es bastante cercano a nuestro día a día. He aquí un ejemplo con uno de los grandes “el Javi Gallardo” (a ver cuando te creas un blog che!)

Resulta que para compartir el output de una aplicación era necesario comprimir la misma en un formato especial, separar el archivo comprimido en varios chunks, firmarlos, y par de pasos más.

Cuando realizábamos este proceso a mano, el mismo nos tomaba menos de un minuto. Pero siempre existía la posibilidad de poner mal la clave del ZIP, de separar mal los chunks, etc. Javi se tomó 30 minutos y se creó un script que se encargaba de realizar este proceso.

De esta forma, logramos tener siempre el mismo OUTPUT a partir de un proceso repetitivo y predecible (que es una de las bases sobre las que debemos trabajar).

A nivel métricas, simplemente evitando que Javi se equivocase en la generación de un paquete ya habíamos ganado el tiempo de generación del script. Javi es un crack, pero si asumimos que se podía equivocar 2 veces al día.

Todas las ejecuciones posteriores nos dieron una ganancia de +300 segundos. Finalmente, después de un par de meses habíamos ganado 2 días/hombre. (Esto traducido a €uros siempre nos da una alegría)

Con Javi no fuimos más allá, ya que con el script nos bastaba, pero siempre existe la posibilidad de pensar un poco out-of-the-box

  • delegar en una build de Team Foundation la responsabilidad de realizar este proceso.
  • procesar el resultado de este proceso solo en ocasiones de compilación exitosa y si los tests se ejecutan correctamente
  • automatizar el empaquetado y distribución a partir de este proceso
  • etc.

Cuando llegamos a estos escenarios estamos más cerca de tener escenarios de Continuous Delivery (sobre lo que hablé en este link), simplemente automatizando tareas.

Existen muchos escenarios donde podemos automatizar, la mayoría se traducen en despliegues, pero rápidamente se me ocurren los siguientes

  • Despliegues, por ejemplo cuando desplegamos a AZURE, ¿porqué lo hacemos SIEMPRE manualmente?
  • Pruebas, el principal punto donde automatizar nos garantiza calidad
  • Generación de código, no es uno de los más recomendados, pero trabajar con plantillas por ejemplo es una forma de garantizar siempre el mismo OUTPUT a partir de un INPUT determinado
  • Muchos más …

Finalmente, comentar que tal vez el mejor momento donde podemos aplicar estos procesos es en el momento de integrar nuestro código. En el caso de trabajar con Team Foundation, la definición de una build es increíblemente potente como para implementar estos procesos.

En AVANADE Spain tenemos una serie de definiciones de Build que nos permiten realizar diferentes tareas de automatización. Desde procesos para garantizar la calidad, como la ejecución de análisis de estilo de código (StyleCop), generación de informes personalizados a partir de pruebas unitarias y de pruebas de MTM, hasta despliegues automatizados a AZURE, ClickOnce, WebDeploy, etc.

 

Saludos @ Home

El Bruno

image image image

2 comentarios

[# ALM] Tips for working with static code analysis

ALM 03

Hi,

Today I was thinking to write about some of the new features of Static Code Analysis in Visual Studio 11, but better get this post of the draft  folder and make it public.

When working on a project, regardless of the tool that we use for the analysis of static code (Code Analysis, FxCop, etc.) it is always advisable to apply the following rules

  • At least a minimum set of analysis rules apply to all projects. Based on the principle of "least da a stone", this helps us protect us from future mistakes. In the case of Code Analysis, the set of "Minimun Rules" is ideal.
  • You have to work in a continuous integration environment, this so am assuming. In the event that the analysis process consume too much time in local, it is advisable not to perform validation of Code Analysis in local. That Yes, in the process of continuous integration is due to force static code analysis
  • Fundamental. Do not ignore the Warnings in the builds, dedicate time and solve the problems detected in them. Many times I prefer to change the mode of Warning Notice error, only to force to resolve the problems detected on static code analysis.
  • Finally, and optional. If someone wants to have local detail, activates the process of Code Analysis in local. Visual Studio allows you to do in 2 clicks.

 

Saludos @ Home

El Bruno

image image image

References:

List of tools for static code analysis

http://en.Wikipedia.org/wiki/List_of_tools_for_static_code_analysis

Dejar un comentario

[#ALM] Consejos para trabajar con analisis de codigo estatico

ALM 03

Buenas,

tenía pensado escribir sobre algunas de las novedades de Static Code Analysis en Visual Studio 11, pero mejor saco este post del draft y lo publico.

Cuando trabajamos en un proyecto, independientemente de la herramienta que utilicemos para el análisis de código estático (Code Analysis, FxCop, etc.) siempre es recomendable aplicar las siguientes reglas

  • Como mínimo aplicar un conjunto mínimo de reglas de análisis a todos los proyectos. Basado en el principio de “menos da una piedra”, esto nos ayuda a protegernos de errores a futuro. En el caso de Code Analysis, el set de “Minimun Rules” es lo ideal.
  • Tienes que trabajar en un entorno de Integración Continua, a esto lo doy por hecho. En el caso de que el proceso de análisis consuma mucho tiempo en local, lo recomendable es no realizar la validación de Code Analysis en local. Eso sí, en el proceso de integración continua se debe forzar el análisis de código estático
  • Fundamental. No ignorar los Warnings en las builds, dedicarle tiempo y solucionar los problemas que se detectan en los mismos. Muchas veces prefiero cambiar el modo de aviso de Warning a Error, solamente para forzar a que se resuelvan los problemas que detecta en análisis de código estático.
  • Finalmente, y opcional. Si alguien quiere tener el detalle local, activa el proceso de Code Analysis en local. Visual Studio lo permite hacer en 2 clics.

 

Saludos @ Home

El Bruno

image image image

References:

List of tools for static code analysis

http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis

Dejar un comentario

[# TFS2010] Practical Kanban Guidance

image

Good,

ALM Rangers team is increasingly active. Through this post, I find the projects that are in beta (that now not take more that Beta, RC, RTM, etc.) of a project for the introduction of Kanban for Team Foundation Server.

If you don’t know Kanban, the video I mention in this post is an excellent introduction to the subject and obviously, but 20 pages you I spend in my book "working as a team with Visual Studio ALM" also give a Kanban for TFS approach.

But well, what it was. ALM Rangers team is closing a project called "Practical Kanban Guidance" which aims to illustrate the use of this methodology in TFS with the following contents (shot of codePlex)

  • Guidance contains scenario based practical guidance, frequently asked questions and quick reference posters
  • Hands-on Lab contains the HOL that provides a walkthrough of the planning, based on the guidance
  • HOL Package includes a setup part which prepare and configure your environment for this lab
  • HOL Videos which showcase the hands-on labs and guidance in quick 5-10 min videos

I have already "follow" mode and will closely follow the progress of this project.

 

Saludos @ Home

El Bruno

image image image

Source: http://blogs.msdn.com/b/visualstudioalm/archive/2012/02/29/welcome-to-visual-studio-11-alm-rangers-readiness-beta-wave.aspx

Dejar un comentario

[#TFS2010] Practical Kanban Guidance

image

Buenas,

el equipo de ALM Rangers está cada vez más activo. A través de este post, me entero de los proyectos que están en fase Beta (por más que ahora no se lleve más eso de Beta, RC, RTM, etc.) de un proyecto para la implantación de Kanban para Team Foundation Server.

Si no conoces Kanban, el video que comento en este post es una excelente introducción al tema y obviamente, sino las 20 páginas que le dedico en mi libro “Trabajando en equipo con Visual Studio ALM” también dan un acercamiento de Kanban para TFS.

Pero bueno, a lo que iba. El equipo de ALM Rangers está cerrando un proyecto llamado “Practical Kanban Guidance” que pretende ilustrar el uso de esta metodología en TFS con los siguientes contenidos (fusilados de codePlex)

  • Guidance contains scenario based practical guidance, frequently asked questions and quick reference posters
  • Hands-on Lab contains the HOL that provides a walkthrough of the planning, based on the guidance
  • HOL Package includes a setup part which prepares and configures your environment for this lab
  • HOL Videos which showcase the hands-on labs and guidance in quick 5-10min videos

Ya lo tengo en modo “follow” y seguiré de cerca los avances de este proyecto.

Saludos @ Home

El Bruno

image image image

Fuente: http://blogs.msdn.com/b/visualstudioalm/archive/2012/02/29/welcome-to-visual-studio-11-alm-rangers-readiness-beta-wave.aspx

Dejar un comentario

[# ALM] Video: ALM World

image47dd1de4

Hi,

today plays a little more than auto bass drum on the work on global projects using Visual Studio 2010 Alm A bit of experience with projects of Avanade, another bit of personal experience and finally presentation of VSAnywhere.

http://www.globbtv.com/flv/flowplayer.commercial-3.2.3.swf

 

And if you are looking for something about Kinect > > for http://globbtv.com/12/microsite/2021/12-horas-visual-studio-programacion-de-aplicaciones-con-kinect

Greetings @ Málaga

The Bruno

Video: http://www.globbtv.com/12/microsite/2039/microsoft-alm-sessions-2012-planeta-alm

Dejar un comentario

[#ALM] Video: Planeta ALM

image47dd1de4

Buenas,

hoy toca un poco más de auto bombo sobre el trabajo en proyectos globales utilizando Visual Studio 2010 ALM. Un poco de experiencia con proyectos de Avanade, otro poco de experiencia personal y finalmente la presentación de VSAnywhere.

 

http://www.globbtv.com/flv/flowplayer.commercial-3.2.3.swf

 

Y si lo que buscas es algo de Kinect >> pues http://globbtv.com/12/microsite/2021/12-horas-visual-studio-programacion-de-aplicaciones-con-kinect

 

Saludos @ Málaga

El Bruno

   

Video: http://www.globbtv.com/12/microsite/2039/microsoft-alm-sessions-2012-planeta-alm

Dejar un comentario

[# ALM] Continuous Deployment, here we go!

Hi,

Since a few days ago is being conducted an interesting discussion in Agile Spain groups about Continuous Deployment.While some of the entries are for autoafirmar that each is the best implementer of SCRUM that exists, or to explain the why of a practice such as continuous integration, there are many deserving read only by the fact of starting to change our way of thinking. First things first, and before it’s always: to achieve an environment with CD, need to have a 100% of management support, a very seamless integration between development teams and teams of systems, etc. etc. etc. In other words, this is a practice that requires a very high level of maturity in terms of practices is required. If you look for example at Wikipedia, the definition of Continuous Deployment does not exist, but if there is an invalid link from Continuous Integration.

What if it exists on Wikipedia is the concept of Continuous Delivery, explaining as applying the practices of Automated Testing, Continuous Integration and Automated Deployment is possible to mount a Continuous Deliveryenvironment. One of the principles of this practice is to accelerate the time of deploying an application to a specific environment, either a test or even production environment. In my case, leveraging the capabilities of Team Build 2010 and Azure that I can get this in the next project that I have in hand.

Note: the only major problem I have in vista now that I am planning to this model, is the limited capacity of deployment that has an environment like Windows Phone, let is a chestnut to automate this same. You ask the crack of Joshua Yeray (@ JosueYeray ) to see which recommends.

At this point, my working model will initially be based on 2 lines of development (with a very mature model of branching weAvanade Spain) where it will always be available (i.e. displayed) for testing

  • An environment with the application deployed from the last output of a build with a correct implementation (build + unit tests) of the line of development.
  • An environment of AZURE to TEST with the application deployed from the last output of a build of a branch that has passed a battery of tests of UX.

Obviously behind all this, will continue to apply Test Driven Development, ensuring a uniform syntax using StyleCop, ensuring control of projects through TFS and some good practice to define, etc. But come on, that in the end the idea remains the same:

Improve the way in which we develop software on a daily basis

image

When you have implemented and you can evaluate the results of implement and maintain this practice for a time, ´comentaré my impressions.

Greetings @ Home

The Bruno

Resources:

PS: Just buy the book at Amazon (http://bit.ly/zbiP9A) from just €28.

Dejar un comentario

[#ALM] Continuous Deployment, alla vamos !!!

Buenas,

desde hace unos días se está llevando a cabo una discusión interesante en los grupos de Agile Spain sobre Continuous Deployment. Si bien algunas entradas son para autoafirmar que cada uno es el mejor implementador de SCRUM que existe, o para explicar el porqué de una práctica como integración continua, hay muchas que merece leer solo por el hecho de comenzar a cambiar nuestra forma de pensar. Primero lo primero, y antes lo de siempre: para lograr un entorno con CD, necesitas tener un apoyo 100% de la dirección, una integración muy fluida entre los equipos de Desarrollo y los equipos de Sistemas, etc. etc. etc. En otras palabras esta es una práctica que requiere un nivel de madurez muy alto en cuanto a prácticas se requiere. Si nos fijamos por ejemplo en Wikipedia, la definición de Continuous Deployment no existe, aunque si existe un link inválido desde Continuous Integration

Lo que si existe en Wikipedia es el concepto de Continuous Delivery, donde se explica como aplicando las prácticas de Automated Testing, Continuous Integration y Automated Deployment es posible lograr montar un entorno de Continuous Delivery. Uno de los principios de esta práctica es acelerar los tiempos de despliegue de una aplicación a un entorno específico, ya sea un entorno de test o inclusive de producción. En mi caso aprovechando las capacidades de Team Build 2010 y Azure que podré ponerme con ello en el próximo proyecto que tengo en manos.

Nota: El único gran problema que tengo en vista ahora que estoy planeando este modelo, es la poca capacidad de despliegue que posee un entorno como Windows Phone, vamos que es una castaña para automatizar esto mismo. Le preguntaré al crack de Josué Yeray (@JosueYeray ) para ver que recomienda.

En este punto, mi modelo de trabajo inicialmente se basará en 2 líneas de desarrollo (gracias a un muy maduro modelo de branching que tenemos en Avanade Spain) donde siempre estarán disponibles (es decir desplegado) para probar

  • Un entorno con la aplicación desplegada a partir del último output de una build con una ejecución correcta (build + unit tests) de la línea de desarrollo.
  • Un entorno de AZURE para TEST con la aplicación desplegada a partir del último output de una build de una rama que ha pasado una batería de pruebas de UX.

Obviamente detrás de todo esto, seguiremos aplicando Test Driven Development, asegurando una sintaxis homogénea utilizando StyleCop, asegurando el control de proyectos gracias a TFS y alguna buena práctica a definir, etc. Pero vamos, que al final la idea sigue siendo la misma:

Mejorar la forma en la que desarrollamos software diariamente

image

Cuando lo haya implementado y pueda evaluar el resultado de implementar y mantener esta práctica por un tiempo, ´comentaré mis impresiones.

 

Saludos @ Home

El Bruno

   

Recursos:

PD: Acabo de comprarme el libro en Amazon (http://bit.ly/zbiP9A) a tan solo €28.

1 comentario

Seguir

Get every new post delivered to your Inbox.

Únete a otros 908 seguidores