viernes, 25 de mayo de 2012

Gestión de Riesgos y Gestión la configuración del software


Gestión de Riesgos RSKM - CMMI
¿Qué es un Riesgo?
Evento o condición incierta que, en caso de ocurrir, tiene un efecto positivo o negativo sobre los objetivos de un proyecto. PMI-127/129
Un riesgo puede tener una o más causas y de ocurrir puede tener uno o más impactos


Tres Condiciones de Riesgos
Para que el riesgo exista en cualquier circunstancia, las siguientes tres condiciones deben cumplirse 


1. El potencial de pérdida debe existir.
2. La incertidumbre con respecto al resultado final debe estar presente.
3. La decisión es necesaria para hacer frente a la incertidumbre y potencial de pérdida.


Componentes del riesgo
Probabilidad: Medida de la ocurrencia de una amenaza se produce
Impacto:  Medida de la pérdida que se producirá si la amenaza se hace realidad.
Exposición al riesgo: Medida de la magnitud del riesgo basado en los valores probabilidad y el impacto.


Gestión de riesgos
Es un enfoque sistemático para reducir al mínimo la exposición a potenciales pérdidas:


1. Proporciona un entorno disciplinado para evaluar continuamente lo que podría ir mal. (Evaluación de riesgos).
2. Establecimiento de las prioridades de mitigación.
3. La implementación de acciones para riesgos de alta prioridad y llevar a los riesgos dentro de la tolerancia.


Metas y Prácticas específicas
1. PREPARAR LA GESTIÓN DE RIESGO
1.1. Determinar las fuentes y las categorías de los riesgos


1.2. Definir los parámetros de los riesgos


1.3. Establecer una estrategia de gestión de riesgos




2. IDENTIFICAR Y ANALIZAR LOS RIESGOS.
2.1 Identificar riesgos.

2.2 Evaluar, categorizar y priorizar los riesgos.




3. MITIGAR LOS RIESGOS.
3.1 Desarrollar los planes de mitigación de riesgo.
3.2 Implementar los planes de mitigación de riesgo.


Para mas información visite:
http://www.sei.cmu.edu/library/assets/20090910webinar.pdf
http://www.sei.cmu.edu/library/assets/20090618webinar.pdf
http://www.sei.cmu.edu/library/abstracts/risk/upload/dorofeetutorialndia09_8819.pdf


Gestión  la configuración del software
Problemas
El cambio se encuentra presente en todo el ciclo de vida de una aplicación.
El desarrollo de software siempre es incremental 
El desarrollo iterativo consiste de en una evolución Controlada


GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE
Actividad constante aplicada durante todo el proceso de ingeniería de software para identificar, organizar y controlar las modificaciones que sufre el software.
Comienza cuando se inicia el proyecto de desarrollo de software y termina sólo cuando el software queda fuera de circulación.


OBJETIVOS

  • Maximizar la productividad y minimizar los errores.
  • Mejorar la facilidad para implantar cambios y reducir el esfuerzo para implementarlos
  • Garantizar la calidad del software.

Otras definiciones
“Es el conjunto total de actividades utilizadas para administrar el contenido de un producto de software desde el principio hasta el final del proceso de desarrollo.” Humphrey


“Es la disciplina de administrar y controlar los cambios en la evolución de los sistemas de software” Bruegge, Dutoit


Propósito 

  • Asegurar que el contenido del producto es conocido y se encuentra disponible siempre 
  • Apoyar el control de cambios.
  • Ayudar a la coordinación entre el equipo de desarrollo
  • Tener un repositorio (depósito) único para los entregables.
  • Tener una base histórica con los cambios del producto durante el tiempo.
  • Es el conjunto de características funcionales y físicas del software detalladas en la documentación técnica o alcanzadas en un producto. (IEEE610.12-90)

Evita el CAOS
porque:
Se identifica el cambio
Se controla el cambio
Se garantiza que el cambio se implementa adecuadamente
Se informa del cambio a todos los interesados 


Configuración del software
Una configuración de software es el conjunto de elementos
que componen toda la información producida en el proceso
de desarrollo de software.
Cada uno de estos elementos se denomina: “Elemento de
Configuración de Software” (ECS). Los ECS pertenecen a alguna de las siguientes categorías:

  • Programas (código fuente y ejecutables)
  • Documentos técnicos o de usuario que describen los programas
  • Datos internos o externos al programa



Tareas

  • Identificación de los ECS individuales
  • Control de versiones
  • Control de cambios
  • Auditoria de la configuración del software
  •  Generación de informes sobre cambios de configuración



LINEA BASE (Baseline)
Es una especificación o producto que se ha revisado formalmente y sobre el cual se ha llegado a un acuerdo y, que de ahí en adelante, sirve como base para un desarrollo o modificación posterior




CONTROL DE VERSIONES
Es la combinación de herramientas y procedimientos para gestionar las versiones de los objetos de configuración creadas durante el proceso de Ing. de Software.


La GCS permite a un usuario especificar configuraciones alternativas del sistema de software mediante la selección de las versiones adecuadas de los ECS. Para ello se asocian atributos a cada versión del software


Atributo:
Número especifico de versión
Cadena de variables lógicas (indicadores) 


Proceso de control de cambios
1. Petición de cambio
2. Evaluación del cambio: Esfuerzo técnico, efectos secundarios,  impacto sobre otros componentes, costos.
3.Informe de Cambios (resultados evaluación) a la ACC (Autoridad de Control de Cambios). 
4.Se genera una OCI (Orden de Cambio de Ingeniería) para cada cambio: qué se cambiará; restricciones, criterios de revisión y auditoría. 
5.Objeto dado de baja 
6.Realización del cambio 
7.Revisión del cambio. 
8.Objeto dado de alta aplicando mecanismos de control de versión.


miércoles, 2 de mayo de 2012

Calidad Del Sotware y mitos del ingeniero

Calidad

La calidad en el desarrollo y el mantenimiento del software, se ha convertido hoy en día en uno de los principales objetivos estratégicos de las organizaciones, debido a que cada vez más, los procesos principales de las organizaciones – y su supervivencia - dependen de los sistemas informáticos para su buen funcionamiento.
El principal instrumento para garantizar la calidad de las aplicaciones sigue siendo el Plan de Calidad, el cual se basa en normas o estándares genéricos y en procedimientos particulares. 
Los procedimientos pueden variar en cada organización, pero lo importante es que estén escritos, personalizados, adaptados a los procesos de la organización y que se sean cumplidos. 
La Calidad del Software es resultado del movimiento global dentro del proceso de mejoramiento continuo de los modelos y/ o estándares de producción de sistemas de información y software especializado.
A la hora de definir la calidad del software se debe diferenciar entre la calidad del Producto de software y la calidad del Proceso de desarrollo. No obstante, las metas que se establezcan para la calidad del producto van a determinar las metas a establecer para la calidad del proceso de desarrollo, ya que la calidad del producto va a estar en función de la calidad del proceso de desarrollo. Sin un buen proceso de desarrollo es casi imposible obtener un buen producto. 
La Calidad del Software debe implementarse en todo el ciclo de vida del mismo. 



Aseguramiento
-  Son las medidas preventivas que se toman paso a paso durante un proceso para evitar que el resultado final no sea defectuoso
-  Diferente de Control de Calidad

  • No es solo la Revisión al final del proceso
  • No es solo enfocado al cliente


Modelos De Calidad
Son aquellos documentos que integran la mayor parte de las mejores prácticas
Proponen temas de administración en los que cada organización debe hacer énfasis, 
Integran diferentes prácticas dirigidas a los procesos clave. Permiten medir los avances en calidad




Estándares de Calidad
Son aquellos que permiten definir un conjunto de criterios de desarrollo.
Guían la forma en que se aplica la Ingeniería del Software. 
Suministran los medios para que todos los procesos se realicen de la misma forma
Son una guía para lograr la productividad y la calidad


Modelos y Estándares de Calidad
El objetivo es implantar el Modelo o Estándar de Calidad del Software adecuado y aplicable a las características de la empresa de que se trate. 
La base para diseñar e implantar un buen Modelo o Estándar de Calidad del Software es conocer profundamente las características y necesidades de la empresa que lo aplicará y los deseos y pretensiones de sus clientes actuales y potenciales
Es necesario que todos los elementos del Modelo o Estándar de Calidad se estructuren en forma tal que permitan un control y aseguramiento de todos los procesos involucrados con la calidad.


Estructura de un Modelo de Calidad de Software


Factores de Calidad: representan la calidad desde el punto de vista del usuario y son las características que componen la calidad. También se denominan Atributos de Calidad Externos


Criterios de Calidad del Producto: Estos criterios son atributos que, cuando están presentes, contribuyen al aspecto de la calidad que el factor asociado representa. Se trata de una visión de la calidad desde el punto de vista del producto de software. También se denominan Atributos de Calidad Internos. 


Métricas del Producto: cuales son medidas cuantitativas de ciertas características del producto que, cuando están presentes, dan una indicación del grado en que dicho producto posee un determinado atributo de calidad. 



Atributos De La Calidad De Software

  • Cumplir con los siguientes atributos:
  • Seguro, Fiable, Tolerante a fallas
  • Comprensible, Fácil de usar
  • De complejidad baja,
  • Fácil de aprender a manejar
  • Mantenibilidad
  • Fácil de probar
  • Auditable
  • Extensibilidad
  • Homogeneidad, Adaptable, Modular, Reutilizable
  • Eficaz, Preciso, Exacto
  • Compatible, Portable y Acorde al contexto Tecnológico vigente
  • Viable financieramente (Costos de Adquisición y Mantenimiento Vs Beneficios en generación de Valor)
Cual Es La Necesidad Que El Software Debe Satisfacer
  1. Ser el medio (herramienta) que permita contribuir a “poner en orden la organización”
  2. Que problema puede resolver:
  • Mejor gobernabilidad de los procesos de negocio
  • Mejorar el ambiente colaborativo y los Niveles de Satisfacción de sus Stakeholders
           •Clientes
           •Accionistas
           •Empleados
           •Aliados de Negocios
           •Proveedores
  • Métricas (Indicadores de Desempeño)
  • Posición Competitiva

Propósito Del Software
Mejorar la productividad de las organizaciones y los negocios.
Mejorar la calidad de vida del ser humano (Contrarrestar lo tedioso, riesgoso, incomodo, etc)



Panorama Mundial De La Ingeniería Del Software

  • Costo de $(1 ingeniero USA) = $(2.5 ingenieros Colombianos) = $(5 ingenieros de India) = $(8 ingenieros de China)
  • Si nuestra industria de software no se fortalece aplicando modelos y mejores practicas que internacionalmente sean reconocidos (Cmmi, ISO´s, IEEE, etc) y se capitalicen las tecnologías disponibles ;los grandes negocios (> 500mUsd) se los llevaran las potencias del Software
Mitos De La Ingeniería Del Software
Mitos de Gestión
  • Resistencia al cambio en la gestión de proyectos
  • Con un libro de estándares es suficiente
  • Computadores modernos = Buen entorno de desarrollo
Mitos de Gestión
  • Experiencia para saltarse las metodologías
  • Incapacidad de los usuarios para comunicar sus necesidades
Mitos del Cliente
  • Ideas genéricas al principio, detalles al final
  • Requisitos en continua evolución
Mitos del Desarrollador
  • El trabajo acaba cuando se ha escrito el programa y funciona
  • Hasta que no se ejecuta el programa no puede comprobarse su calidad
  • Sólo se entrega un programa funcionando
  • Lo que uno crea sólo debe entenderlo él
Mitos Del Ingeniero De Software (punto de vista)
Los ingenieros de software día a día se posicionan más en nuestra sociedad, convirtiéndose así en pilares fundamentales para la creación de software que suplan necesidades de las distintas empresas. Somos profesionales que nos encargamos de maximizar la calidad y minimizar el coste, además no solo nos centramos en el área de los sistemas, sino también en muchas otras áreas, ¿Por qué? Porque hoy día la mayoría de las empresas necesitan de sistemas inteligentes que manejen, organicen y contabilicen lo que se hace, se vende, se produce y la mejor forma de llevar estos datos, son mediantes software que lleven o guarden una mejor consistencia de los datos, almacenándolos en bases de datos en la cual la información esté segura y la empresa no se vea perjudicada por la mala manipulación de estos.
Hoy por hoy en el ámbito de la ingeniería de sistemas se han creado muchos mitos; claro que un ingeniero de sistemas debe estar informado de todo en cuanto a tecnología, pero muchas veces las personas asociamos el concepto de tecnología con un computador, dado que la tecnología abarca mucho más que esto, ahora bien asociando esto con los ingenieros de sistemas vemos como muchas personas tienen ideas o conceptos diferentes al cual se debería dar, por ejemplo, una persona común por decirlo así diría que los ingenieros de sistemas deben saber todo en cuanto a un computador (estructura, componentes, como armarlo y desarmarlo..) en fin debe saber todo acerca de ellos y sí, nos compete a nosotros saber lo que pasa en la tecnología, cuanto avanza, ya que es nuestra herramienta de trabajo, pero no es parte de nuestro trabajo desarmar y arreglar un computador, dado que la verdadera labor de un ingeniero de sistemas abarca muchos ámbitos en especial el ingeniero de software que realiza todas las actividades referentes al desarrollo de software, aunque el Ingeniero sabe desarrollar software, No es un desarrollador. Es decir, no solo se dedica a programar aplicaciones sino que tiene toda la formación para diseñarlo correctamente.
Otro mito que se podría generar alrededor de este tema, es que muchas veces vemos a los ingenieros como personas exitosas que se ganan el dinero fácil, y no es así, como cualquier otra profesión nosotros como ingenieros tenemos que dedicarnos a satisfacer los requerimientos de un cliente y al igual que las demás personas, recogemos frutos trabajando y esforzándonos en lo que hacemos; quizás muchos de nuestros padres nos ven como Bill Gates, uno de los fundadores de Microsoft, como un gran empresario , no sabiendo que para llegar allá, fue con mucho esfuerzo , sacrificio y dedicación.
Un colega Ingeniero de Sistemas, que esta al mismo nivel que yo, me ve con la capacidad de asumir grandes retos, de mostrar grandes resultados a la hora de realizar un proyecto, de desenvolverme de la mejor manera en cualquier escenario y ámbito,  como un profesional con muchas expectativas, pero la realidad es que considero que me falta mucho por aprender, tengo la disposición y las ganas, pero con tantos ingenieros muy bien preparados, es lógico que el campo laboral cuente con muchas personas altamente capacitadas y por ello me falta mucha preparación y experiencia.
Por último, yo como ingeniera de software me veo como la súper empresaria exitosa, como lo piensan mis padres, siendo buscada por muchas empresas para desarrollar grandes proyectos, y aunque yo me vea así, la realidad es otra, actualmente hay muchos ingenieros y tenemos mucha competencia, empresas las cuales por pagar menos contrata a técnicos y tecnólogos, además de no darle suficiente valor al trabajo que se está realizando y no apreciar lo que hacemos, y muchas veces  por ello pienso que el camino es largo, con mucho esfuerzo, pero sobre todo mucha dedicación, la cual sé que al final dará resultados positivos.
En conclusión, se han creado muchos mitos alrededor de los ingenieros de software y no solo de ellos, sino también de los ingenieros de sistemas en general, los cuales valen la pena aclarar, ya que son ideas erróneas en cuanto a lo que realmente hacemos y queremos, pero ya está de parte de nosotros inculcar y demostrar a las demás personas que sus ideas son equivocadas y que estamos acá para generar una nueva visión de las cosas y dar un aporte al desarrollo del entorno en el que vivimos.


Diagrama Arquitectura Cliente/Servidor- saas-soa-mvc-Cloud Computing