Adsence

jueves, 27 de noviembre de 2014

Como integrar TSP y CMMI

Como habiamos hablado anteriormente sobre TSP y CMMI, el primero es un conjunto de practicas para el desarrollo de software y el segundo es un conjunto de modelos que nos ayuda a generar productos y servicios de calidad, ambos son diseñados y certificados por el SEI (Instituto de Ingenieria de Software), podria decirse que el TSP es un implementacion de los modelos del CMMI hasta un cierto punto.

Areas de Proceso CMMI

A continuacion mostramos las diferentes areas de proceso del CMMI .

 
Como nos damos cuenta el CMMI cubre 4 areas de procesos que son partes tecnicas y administrativas, pues el TSP nos ayuda a implementar un gran porcentaje de las practicas requeridas para las areas de proceso de gerencia de proyectos e ingenieria.

Niveles Operacionales

La relacion entre TSP y PSP se la puede visualizar teniendo claro los niveles operacionales de los mismos como se muestra en el siguiente grafico.

Ahora que implica esto?. Pues esta claro hay que realizar una inversion en capacitacion para el personal tecnico en PSP, trabajar con proyectos aplicando TSP y a esto agregarle un conjunto de procesos que nos ayude a cubrir los niveles de madurez del CMMI.
La cobertura en cuanto a practicas y niveles de madurez del TSP dentro del CMMI es el siguiente:
En cuanto a areas de proceso abarcadas se describe en el siguiente grafico:

Implementacion TSP a CMMI

Existe una metodologia para implementarlo diseñada por el mismo SEI llamada AIM  (metodo acelerado de mejora) el cual consiste en aplicar las practicas del TSP a esto agregar practicas implementadas dentro de Six Sigma com la finalidad de cubrir los procesos y las areas de proceso necesarias para poderse certificar en nivel de madurez 3 del CMMI, la aplicacion de este metodo acelerado de mejora tiene un plazo nominal dentro de empresas PYMES de 18 meses hasta conseguir certificacion de CMMI nivel 3, esto obviamente una vez capacitado el personal en PSP y TSP.



miércoles, 26 de noviembre de 2014

Introduccion a CMMI (Capability Maturity Model Integration)

Es un conjunto de modelos que permite a las empresas mejorar sus practicas con la finalidad de alcanzar sus objetivos empresariales, es decir es una referencia que indica practicas a seguir mas nos procesos como tal, por lo la recomendacion es interpretar el modelo e implementar los procesos de acuerdo a la realidad propia de la empresa.
Estos modelos son resultado de la experiencia en el desarrollo de software de varias empresas, y es normada por el SEI (Instituto de Ingenieria de Software).

Constelaciones

Es un modelo formado por 3 constelaciones, la primera trata los procesos de desarrollo de software, la segunda sobre la oferta de servicios y por ultimo adquisiciones , como vemos abarca todos los ambitos de una empresa de TIC (Tecnologia de la informacion y comunicaciones).



Niveles de Madurez

El modelo CMMI esta compuesto por 5 niveles de madurez que es la forma en que la empresa va abarcando la administracion de procesos de negocio , y las empresas pueden irse certificando por niveles.
 

Aca esta el link donde se puede consultar las empresas certificadas con su nivel de madurez.
Otra cosa importante es para poderce certificar como CMMI en el nivel que sea es necesario para por SCAMPI que es el metodo de evaluacion del SEI para empresas y asi poder saber en que nivel se encuentra.


martes, 25 de noviembre de 2014

Team Software Process (TSP)


El TSP es una metodologia dictada por el Instituto de Ingenieria de Software para equipos de desarrollo donde cada desarrollador tiene que conocer las practicas dictadas por el PSP (Personal Software Process), esta cumpuesto por un conjunto de fases que abarcan el proceso de desarrollo en equipos.

Ciclo de vida del Proyecto.

Cada parte del ciclo del proyecto tiene que estar guiada por coach certificado.

Lanzamiento


Se definen los roles del equipo, los objetivos a cumplir, metas individuales y de equipo, estrategia de desarrollo.

Proceso de Lanzamiento


Productos del Lanzamiento


Durante el lanzamiento, el equipo produce:
  • Metas documentadas del equipo
  • Definición de los roles de los miembros del equipo
  • Definición de la estrategia de desarrollo y de los procesos del equipo
  • Lista de los productos planeados del proyecto
  • Estimaciones de tamaño para los productos planeados
  • Un calendario general del proyecto
  • Un plan de calidad cuantitativo
  • Planes detallados para la siguiente fase para cada ingeniero
  • Un plan balanceado para la siguiente fase
  • Evaluación de los riesgos claves del proyecto

Estrategia

Se realiza un diseño conceptual del producto, se realizan estimaciones iniciales, se realiza un plan de configuración del producto, se establecen riesgos.

Planeamiento

Estima el tamaño de cada artefacto a ser desarrollado, se identifican las tareas, se estima el tiempo para completar cada tarea, se asignan tareas a los miembros del equipo, hacer un plan de calidad.

Requerimientos

Se analizan las necesidades del cliente y se entrevistan, se especifican los requerimientos, se hace inspección de los requerimientos, se diseña un plan de pruebas del sistema.

Diseño

Se crea un diseño de alto nivel, se especifica el diseño, se inspecciona el diseño, se desarrolla un plan de pruebas de integración.

Implementación

Se crea el diseño detallado de los módulos y unidades, se revisa el diseño, se convierte el diseño al código, se inspecciona el código, se compilan y prueban los módulos y unidades, se analiza la calidad de los módulos/unidades.

Pruebas

Se construye e integra el sistema, se llevan a cabo las pruebas del sistema, se produce la documentación de usuario.

Postmortem

Análisis de resultados, se escribe el reporte del ciclo, se produce producen evaluaciones de pares y equipo, evaluaciones del plan de calidad. Esta es una fase en la que se puede decir que se generan las lecciones aprendidas del proyecto

Estas fases del proyecto se las hace de forma incremental de acuerdo a la metodologia tomada, es una implementacion de los modelos indicados por el CMMI que una de las certificaciones de calidad para una empresa.

Cabe recalcar que no exite un certificacion para los equipos, mas sin embargo el cumplimiento de uno o varios proyectos con esta metodologia implica que la empresa puede ser certificada con TSP PICE esta certificacion es otrogada por el SEI (Instituto de Ingenieria de Software)

lunes, 24 de noviembre de 2014

Personal Software Process (PSP)

Es una metodologia de desarrollo aplicada para desarrolladores, tiene un conjunto de practicas que hacen de un desarrollador un profesional disciplinado y le permite llegar a estimar de mejor manera el tamaño de esfuerzo a realizar en base a estadisticas y metricas historicas del trabajo individualizado.

Métricas por Desarrollador (PSP)

Existen un conjunto de metricas que se pueden ir tomando sin embargo estas son las mas trascendentes:

  • Densidad de defectos = Nro Defectos *1000/Nro de líneas de código.
  • Porcentaje de Revisión= Líneas de código/hora.
  • Tiempos de Revisión
  • Tiempo de diseño/tiempo de codificación.
  • Tiempo de revisión de diseño/Tiempo de diseño.
  • Tiempo de revisión de código/tiempo de codificación.
  • Porcentaje de Defectos.- Comparar los nros de defectos en cada etapa respecto de otra, por ejemplo:
  • Nro de defectos en revisión de código/Nro de defectos en compilación.
  • Defectos por Hora.

Niveles Modelo PSP (Desarrolladores)

https://lh4.googleusercontent.com/w1Yfj28073njQUxNOalM67Z0auQFkSA0AyQL0yZyBE1fOtvlL4elYYuoWUG53SFcQ8-0k_UssLV02hG6fkiXjkr5jeU-tS8Ic9WMMfVr0l_EUCtiz9aI26eBlazl

Como vemos es un conjunto de practicas individuales que son aprovechadas de mejor manera en el siguiente nivel, que es cuando un desarrollador forma parte de un equipo.
Existe una certificacion individual para esta metodologia que es otorgada por el Instituto de Ingenieria de Software (SEI).

viernes, 21 de noviembre de 2014

Reflexion Certificaciones de Calidad en las empresas

Este es un tema un tanto abierto y depende del contexto que se lo tome, existen puntos de vista los cuales dicen que no hace falta incurrir en los gastos de una certificacion, que lo importante es la "reputacion" como empresa delante de los clientes, y otro punto de vista que es el que el obtener un certificado o un aval abre mercados.
En mi opinion los dos puntos de vista tienen sentido por un lado tenemos las diferentes certificaciones de calidad que son un aval de entidades autorizadas en cuanto a que cumples determinados procesos en la elaboracion de productos y servicios, este tipo de certificaciones son de gran ayuda a la hora de buscar nuevos mercados sin embargo requieren de inversiones un tanto fuertes para las empresas. En este punto hay quie dejar algo claro el empezar a manejar procesos dentro de las empresas no es una tarea facil pues por lo general es romper el status quo para imponer nuevas reglas al principio existe gran resistencia pero con el pasar del tiempo la empresa lo empieza a tomar como propio, el exito en estos procesos es no abandonar los procesos pues siempre que se empieza algo hay que terminarlo pues si no ocurre asi no se puede generar una evaluacion completa del proceso.
Por otro lado tenemos el que los productos y servicios normalmente esta hechos por personas si una empresa tiene una nomina de empleado "elite" por llamarlos asi, es natural que la empresa tenga resultados exitosos, dentro del desarrollo de software existen la metodologias agiles que son la que nos ayudan para los procesos de desarrollo de un producto determinado y son realmente efectivas.Sin embargo en las empresas ( de mi pais al menos) existe el problema de la rotaciòn de personal por lo que los exitos se van con las personas y no necesariamente son repetibles ademas que estas metodologias no atacan todos los procesos de la empresa y se enfocan en el proceso de desarrollo.
Existen certificaciones de calidad que se enfocan en modelos donde las implementaciones dependen del contexto de la empresa que nos sirven de guia para implementar en las empresas.
Creo que depende de la realidad de una empresa el irse por una certificacion sin embargo hay que tener en cuenta que el proceso es solo una parte para obtener un producto o servicio, las personas son otro componente asi como la tecnologia.

jueves, 20 de noviembre de 2014

Habilitar auditoria ORACLE

Oracle permite auditar los cambios realizados en los datos, estructura o modificaciones del sistema de varias maneras, una de las cuales es el habilitar el "audit_trail" que es un parametro de inicializacion del SGBD.
Para verificar si se encuentra activada la auditoría de debe ejecutar la siguiente consulta:

SHOW PARAMETER AUDIT

NAME                       VALUE
---------------------- ------------------------------
audit_file_dest         C:\ORACLE\PRODUCT\10.2.0\ADMIN\DB10G\ADUMP
audit_sys_operations     FALSE
audit_trail              NONE

Si en el resultado el campo VALUE de audit_trail = NONE o NULL quiere decir que no se encuentra habilitada la audoria.

Para habilitar la auditoria se debe ejectuar el siguiente comando y reiniciar la base de datos.

SQL> ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE;

System altered.

SQL> SHUTDOWN
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
ORACLE instance started.

Total System Global Area  289406976 bytes
Fixed Size                  1248600 bytes
Variable Size              71303848 bytes
Database Buffers          213909504 bytes
Redo Buffers                2945024 bytes
Database mounted.
Database opened.

Los parámetros para el comando pueden ser los siguientes:

AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended }

  • NONE o FALSE - Deshabilita la auditoria. 
  • DB o TRUE - La auditoría se encuentra habilitada, y todos los registros se almacenan en (SYS.AUD$).
  • DB,EXTENDED - Funciona de igual manera que la anterior pero además las columnas de SQL_BIND y SQL_TEXT se llenan con los datos de la sentencia SQL y las variables BIND si existieran.
  • XML- La auditoría está habilitada,  y todos los registros se almacenan como un archivo XML en el sistema de archivos del SO.XML,EXTENDED - Igual que el anterior, pero además los campos SQL_BIND y SQL_TEXT se llenan con los datos de la sentencia SQL y las variables BIND si existieran .
  • OS- La auditoría está habilitada, almacenando los registros del auditoria en el log del sistema operativo.