miércoles, 28 de noviembre de 2012

Unidad 5:Calidad de software

5.1. Definición de calidad y calidad del software.

•Conjunto de cualidades que lo caracterizan y que determinan su utilidad y existencia. la calidad es sinónimo de eficiencia, flexibilidad, corrección, confiabilidad, mantenibilidad, portabilidad, usabilidad, seguridad e integridad.

•Es medible y varía de un sistema a otro o de un programa a otro. Un software elaborado para el control de naves espaciales debe ser confiable al nivel de "cero fallas"; un software hecho para ejecutarse una sola vez no requiere el mismo nivel de calidad; mientras que un producto de software para ser explotado durante un largo período (10 años o más),. 

•Puede medirse después de elaborado el producto. Pero esto puede resultar muy costoso si se detectan problemas deriva dos de imperfecciones en el diseño, por lo que es imprescindible tener en cuenta tanto la obtención de la calidad como su control durante todas las etapas del ciclo de vida del software.




5.2 Importancia de calidad:

•Los fallos de software afectan a todos los sectores y a todos los países, actualmente se desarrolla software fiable y correcto a un costo razonable. los auténticos profesionales y las empresas bien organizadas son prudentes y saben que deben aplicar distintas técnicas de control y prevención, además de un buen proceso de desarrollo.

Administración de la calidad del software

• Se refiere a lograr un nivel de calidad requerido en el producto de software

• Involucra a la definición de estándares de calidad apropiados y procedimientos que permitan asegurar que estos se cumplan.

• Debe llevar a desarrollar una cultura de calidad en donde la calidad es responsabilidad de todos

• Comprobación independiente de los procesos de desarrollo

Los productos resultantes de los procesos se introducen en el proceso de administración de la calidad para asegurar su consistencia con estándares y objetivos de calidad

• Equipo de aseguramiento y control: independientes de los equipos de desarrollo

• Responsabilidad de la administración de la calidad

• Visión objetiva del proceso

• Informan de problemas y dificultades a los administradores principales de la organización



5.3 Calidad y globalizacion:

La calidad es la capacidad de hacer cosas distintas a las que se les debe mejorar para que puedan competir en el mercado, pero no solo en productos se puede hablar de calidad si también en los seres humano y el medio ambiente ya que los seres humanos, animales y plantas ha venido evolucionando para mejorar la calidad de vida para poder afrontar un mundo más diferente como el de hace años

La calidad está mejorando poco a poco mediante van evolucionando las habilidades de la especie humana, como podemos ver en la actualidad; ya que la globalización sobre pasa las fronteras nacionales es así como los consumidores se hacen cada vez más exigentes ante sus necesidades y es donde se tiende a perfeccionar cada cosa para poder satisfacer al consumidor, así como para poder permanecer en la línea de liderazgo empresarial.




5.4. Aseguramiento de la calidad del software(SQA): definición y propósito del SQA,problemas que resuelve el SQA, roles y responsabilidades de los equipos de desarrollo, habilidades y capacidades del personal del SQA, Actividades del SQA.


La función de aseguramiento de la calidad determina si las necesidades de los usuarios están siendo satisfechas adecuadamente.Para determinar si las necesidades de los usuarios están siendo satisfechas, se deben de evaluar tres áreas:

•Objetivos: Los objetivos de cualquier usuario deben de estar en armonía con los objetivos de la organización.
•Métodos: deben de utilizarse métodos que contengan u observen las políticas, procedimientos y estándares de la organización,
•Ejecución: optimización del uso de hardware y software al implementar los productos de software



Roles y responsabilidades SQA en una organización:

“como policía del proceso:asegura que el desarrollo sigue el proceso establecido. Entre sus funciones en este rol se encuentran:

•Auditar los productos del trabajo para identificar deficiencias.

•Determinar el cumplimiento del plan de desarrollo del proyecto y del proceso de desarrollo de software.

•Juzgar el proceso y no el producto.

“como abogado del cliente”: representa al cliente,entre sus funciones en este rol se encuentran:

•Identificar la funcionalidad que al cliente le gustaría encontrar.
•Ayudar a la organización a sensibilizarse con las necesidades del cliente.
•Actuar como un cliente de prueba para obtener una alta satisfacción del cliente.

“como analista” recaba información. entre sus funciones en este rol se encuentran:

•Juntar muchos datos sobre todos los aspectos del producto y del proceso.
•Con esta información ayudar a mejorar los procesos y los productos.

“como proveedor de información” revisa qué es lo que esté hecho y decir cuáles objetivos técnicos realmente están cumplidos para que la gerencia pueda tomar mejores decisiones de negocios. Entre sus funciones en este rol se encuentran:


Proveer información técnica objetiva para que la gerencia pueda usarla para tomar mejores decisiones.
Proveer información apropiada de las clases de productos y de los riesgos asociados con estos.
Concentrarse más en la reducción de los riesgos que en el cumplimiento del proceso.

“como responsable de la elaboración del proceso” participa en la definición de los planes, procesos, estándares y procedimientos para asegurar que se ajustan a las necesidades del proyecto y que pueden ser usados para realizar las evaluaciones de QA y cumplir los requerimientos del proyecto y las políticas de la organización. Para cumplir este rol el aseguramiento de la calidad debería comenzar en las fases tempranas del proyecto.

El equipo de SQA trabaja con la gerencia de proyectos durante los inicios del desarrollo para establecer los planes, estándares y los procedimientos que agregarán valor al proyecto de SW y satisfacer los problemas del proyecto y de las políticas de la organización,participa en establecer los planes, estándares y procedimientos. 

El equipo ayuda a asegurar que se cumplan con las necesidades del proyecto y verifica que sean usables para realizar revisiones e intervenciones durante todo el ciclo de vida.

Las revisiones proyectan las actividades y revisan el producto de trabajo de SW, además de proveer a la gerencia la posibilidad de saber si el proyecto está de acuerdo a los planes estándares y procedimientos establecidos

El grupo encargado de SQA.
¨- trabaja con el equipo del proyecto desde el inicio.
¨-debe ser objetivo e independiente.
¨- ayuda al proyecto, más que controlar sus actividades.

SQA resuelve problemas como:
•Aumentar las posibilidades de éxito del proyecto.
•Funcionalidad.
•Cumplimiento.
•Usuble

Actividades de SQA:
•Establecimiento de un plan de calidad para un proyecto.
• Evaluaciones a realizar
• Auditorías y revisiones a realizar
• Estándares que se pueden aplicar al proyecto
• Procedimientos para información y seguimiento de errores.
• Documentos producidos por el grupo de SQA
• Participación en el desarrollo de la descripción del proceso de software del proyecto.
• Revisión de las actividades de ingeniería del software para verificar su ajuste al proceso de software definido.
• Auditoría de los productos de software designados para verificar el ajuste con los definidos como parte del proceso de software.
• Asegurar que las desviaciones del trabajo y los productos del software se documenten y se manejen de acuerdo con el procedimiento establecido.
• Registrar e informar lo que no se ajuste a los requisitos.
• Retroalimentación al equipo del proyecto


5.5 Derecho informático aplicado al software:piratería y falsificación, autoría y creación,contratos y licencias.

Pirateria del software:

Consiste en la copia o uso ilegal de los programas,es un problema enorme debido a que es muy fácil de hacer.

Los piratas de software renuncian al derecho de recibir actualizaciones y soporte técnico, pero obtienen el uso del programa sin pagar por él. Muchos programas de software comercial, sofware que debe comprarse antes de usarlo


Falsificacion de software:

Aunque nuevos tratados agresivos están obligados a los países a conceder más protección contra la piratería y la falsificación de software, la falsificación es un gran negocio en algunas partes del mundo,más notable en Europa y Asia. en muchos países, los productos de software y otros tipos de propiedad intelectual no disfrutan de las mismas protecciones de derechos de autor o marca registrada como otros tipos de productos.




Auditoria y creacion del software:

Auditar consiste en estudiar los mecanismos de control que están implantados en una empresa u organización, determinando si los mismos son adecuados y cumplen unos determinados objetivos o estrategias, estableciendo los cambios que se deberían realizar para la consecución de los mismos.

Los objetivos de la auditoría informática son:
•El control de la función informática
•El análisis de la eficiencia de los sistemas informáticos
•La verificación del cumplimiento de la normativa en este ámbito
•La revisión de la eficaz gestión de los recursos informáticos.

La auditoría informática sirve para mejorar ciertas características en la empresa como:
¨ Desempeño
¨ Fiabilidad
¨ Eficacia
¨ Rentabilidad
¨ Seguridad Privacidad




Creacion del software:

El proceso de creación de software puede llegar a ser muy complejo, dependiendo de su porte, características y criticidad del mismo.Si se trata de un sencillo programa puede ser realizado por un solo programador (incluso aficionado) fácilmente.

Normalmente se dividen en tres categorías según su tamaño o costo: de pequeño, mediano y gran porte. Existen varias metodologías para estimarlo, una de las más populares es el sistema COCOMO que provee métodos y un software que calcula y provee una estimación de todos los costos de producción en un proyecto software , es necesario realizar complejas tareas, tanto técnicas como de gerencia, una fuerte gestión y análisis diversos.

Contratos y licencias:

El software se rige por licencias de utilización

– En ningún momento un usuario compra un programa o se convierte en propietario de él

– Sólo adquiere su derecho de uso, aunque pague por él.

– Las licencias, son contratos suscritos entre los productores de software y los usuarios.

Tipos de licenciamiento:

Software propietario:

– Software cerrado, donde el dueño controla su

desarrollo y no divulga sus especificaciones.

– Es el producido principalmente por las grandes empresas, tales como Microsoft, Adobe, Corel muchas otras.

– Antes de utilizarlo se debe pagar por su licencia.

– Normalmente se tiene derecho a utilizarlo en una sola computadora, un solo usuario y a realizar una copia de respaldo pero la redistribución o copia para otros propósitos no es permitida.


Software de demostración:
• Comúnmente llamado software demo.
• Son programas que de entrada no son 100% funcionales o dejan de trabajar al cabo de cierto tiempo.
• Suelen conseguirse en los kioscos de periódicos y revistas.
• Similar al software shareware por la forma en que se distribuye, pero es sólo software propietario limitado.

Software de dominio público:

– Es software libre que tiene como particularidad la ausencia de copyright. es decir, software libre sin derechos de autor.

– En este caso los autores “renuncian” a todos los derechos que les puedan corresponder

Software semi-libre:

– Para LA FREE SOFTWARE FOUNDATION es software que posee las libertades del software libre, pero sólo se puede usar para fines sin ánimo de lucro, por lo cual lo cataloga como software no libre.

Software para virtualización:

• Llevar tu software a otro equipo más poderoso, afectaría la licencia
•Microsoft y otras empresas de software propietario lo están flexibilizando
• Nuevo tipo de licenciamiento aun en análisis

Unidad 4:Analisis del proyecto de software

4.1. Modelado: análisis, diseño, documentación.

Analisis:
Pressman establece que la tarea del analisis de requisitos es un proceso de descubrimiento,refinamiento,modelado y especificacion.Se refina en detalle el ambito del software y se crean modelos de los requisitos datos,flujo de informacion y control y del comportamiento operativo.Se realizan soluciones alternativas y se asignan a diferentes elementos del software.

El analisis de requisitos permite al desarrollador o desarrolladores especificar la funcion y el rendimiento del software,indica la interfaz del software con otros elementos del sistema y establece las restricciones que debe cumplir el software.Puede dividirse en cinco areas de esfuerzo que son:
•Reconocimiento del problema
•Evaluacion y sintesis
•Modelado
•Especificacion
•Revision


Diseño:

Es cuando se traducen los requerimientos funcionales y no funcionales en una representacion de software.El diseño es el primer paso en la fase de desarrollo o cualquer producto o sistema de ingenieria.
De acuerdo con Pressman el objetivo del diseño es producir un modelo o representacion de una entidad que va a construir posteriormente.

De acuerdo con McGlaughlin hay tres caracteristicas que sirven como parametros generales para la evaluacion de un buen diseño: 
  • El diseño debe implementar todos los requerimientos explicados obtenidos en la etapa de analisis. 
  • El objetivo debe ser una guia que puedan leer y entender los que construyenel codigo y los prueban y mantienen el software. 
  • El diseño debe proporcionar una idea completa de lo que es el software.

Documentacion:

Se presenta en base a los metodos orientados a objetos propuestos por Martin y Odell.Se utilizan las siguientes tecnicas para documentar los componentes mas relevantes de la herramienta de software: 
  • Diagramas de eventos:Para ilustrar la manera en que el usuario del software interactua con los eventos virtuales. 
  • Diagramas de contexto:Para ubicar el campo de accion que abarca el software. 
  • Tarjetas CRC:Utilizadas para representar todas las clases dentro de un diseño.

4.2. Construcción: codificación, pruebas y evaluación, manual del usuario, manual técnico.

Construccion:

Es la creacion detallada de software operativo. 

Lenguajes de construccion pueden ser varias clases:

De configuracion.
De Toolkits.
De programacion.

Los principios fundamentales de la construccion de software son: 

•Minimizar la complejidad
•Anticipar los cambios
•Pensar en la verificacion posterior
•Aplicar estandares


Coodificacion:

La escritura del codigo fuente es el principal esfuerzo de costruccion de software:
•Aplicar tecnicas para crear codigo fuente comprensible
•Manejar condiciones de error
•Prevenir brechas de seguridad a nivel de codigo
•Uso eficiente de recursos escasos
•Organizar el codigo fuente
•Documentar el codigo

Pruebas:

Frecuentemente realizadas por los mismos que escriben el codigo.El proposito de estas pruebas es reducir el tiempo entre el momento en el que los fallos se insertan en el codigo y el momento en el que son detectados 

Implica la ejecucion del programa permite:

Evaluar la calidad de un producto. 
Mejorarlo identificando defectos y problemas.

El ambito o destino de las pruebas de software pueden variar en tres niveles:

Modulo unico:Pruebas unitarias
Grupo de modulos:Pruebas de integracion
Sistema completo:Pruebas del sistema


Tecnicas de prueba:
Principio basico:Intentar ser lo mas sistematico posible en identificar un conjunto representativo de comportamiento de programa.
Objetivo:romper el programa,encontrar el mayor de fallos posibles.Existen 2 enfoques diferentes:
•Caja negra:Funcional:Se basan en el comportamiento de entrada y salida.
•Caja blanca:Estructural:Informacion del software que a sido diseñada o codificada.

Evaluacion:

Evaluación de Proyectos es un proceso que permite emitir un juicio sobre la conveniencia del proyecto. Este criterio está presente en cada etapa del “Ciclo de proyecto”:
1ª Etapa:Pre-inversión
2ª Etapa:Inversión

Al igual que en las etapas, en cada fase se realiza una evaluación de acuerdo a sus características.

La etapa de Pre-inversión consta de las siguientes fases
1ª Etapa1ª FaseConcepción de la idea
1ª Etapa2ª FasePerfil
1ª Etapa3ª FasePre-factibilidad (Estudio de Alternativas)
1ª Etapa4ª FaseFactibilidad  (Ante- proyecto definitivo)

En la etapa de Inversión también se realiza el proceso de evaluar en cada una de sus fases.

La etapa de Inversión consta de las siguientes fases:
2ª EtapaDiseño definitivo
2ª EtapaMontaje y Operación

Como se puede apreciar, el trabajo de evaluación se encuentra en todo momento, cada etapa tiene su forma de evaluar. En la etapa de Pre-inversión, la evaluación es realizada en las distintas fases, comenzando por la concepción de la idea y terminando en la factibilidad del proyecto. En esta etapa la Evaluación suele ser llamada “Evaluación Ex-Ante”.

En la etapa de Inversión la Evaluación se da tanto en el Diseño definitivo como en el Montaje y Operación del proyecto. En esta etapa la Evaluación suele ser llamada “Evaluación Ex-Post”.

El camino al éxito de nuestros proyectos, solo se conseguirá siendo imparciales a los datos o resultados que otorgue la Evaluación correspondiente, adicionalmente se necesita cambiar algunos paradigmas tradicionales y desarrollar un sistema de control adecuado, de este modo se conseguirá el éxito.

La Evaluación de Proyectos es "un instrumento o herramienta que genera información, permitiendo emitir un juicio sobre la conveniencia y confiabilidad de la estimación preliminar del beneficio que genera el Proyecto en estudio".


 Manual de usuario:

Un manual de usuario se trata de una guía que ayuda a entender el funcionamiento de algo. Es un documento de comunicación técnica que busca brindar asistencia a los sujetos que usan un sistema o servicio.

Elaboración del Manual De Usuario.

Pasos del manual del usuario:

1. Portada: De que se trata el documento y ¿quién lo elaboro?
2. Introducción: Describe el uso del documento (¿para qué sirve?) y ¿de qué habla?
3. Análisis y requerimientos del sistema (¿que se ocupa para poder instalarlo y usarlo?)
3. Explicación del funcionamiento: Debes de poner paso a paso y con pantallas bien explicadas cómo funciona el programa
4. Glosario

Debe ser escrito de tal manera, que cualquier persona pueda entenderlo con la menor dificultad posible.
Es recomendable, detallar todos aquellos pasos que se llevan a cabo para usar el programa.
Especificar los alcances y las limitaciones que tiene el programa.
Un buen punto de partida para un manual de usuario, es hacer de cuenta que las personas que lo van a leer no tienen el más mínimo conocimiento sobre computadores.

Manual Técnico.

Este documento contiene toda la información sobre los recursos utilizados por el proyecto, llevan una descripción muy bien detallada sobre las características físicas y técnicas de cada elemento. Por ejemplo: características de procesadores, velocidad, dimensiones del equipo, garantías, soporte, proveedores y equipo adicional.
Su extensión depende de la cantidad de recursos y equipo utilizado y generalmente se presenta en forma de fichas técnicas en donde se describe en cada una las características de cada recurso.

Elaboración del Manual Técnico.

Un manual técnico es aquel que va dirigido a un público con conocimientos técnicos sobre algún área, mientras que, por ejemplo, un manual de usuario va dirigido a un público más general, el cual no necesariamente debe tener conocimientos específicos en el área de interés.

En este caso el manual técnico, debe incluir:
Paradigma de programación seleccionado y sus beneficios.
Lenguaje de programación seleccionado y sus beneficios frente a otros lenguajes.
Estandarización de código utilizada.
Diseño del sistema.

4.3. Medida, métrica e indicador.

Medida:

Proporciona una indicación cuantitativa de la cantidad, dimensiones o tamaño de algunos atributos de un producto.


Se debe medir el software para:

Indicar la calidad del producto.
Evaluar la productividad del agente que desarrolla el producto.
Evaluar los beneficios en términos de productividad y calidad mediante el uso de nuevos métodos y herramientas de ingeniería de software.
Establecer una línea de base para la estimación.
Ayudar a justificar el uso de nuevas herramientas o de formación adicional.

Las métricas

Son medidas cuantitativas que permiten obtener una visión de la eficacia del proceso de software y los proyectos que se llevan a cabo utilizando ese proceso como marco de trabajo.




Permiten valorar el estado de un proyecto en curso, así como también rastrear los riesgos potenciales y descubrir las aéreas problema antes que se vuelvan “criticas”, también permite ajustar el flujo de trabajo o las tareas y evaluar la habilidad del equipo del proyecto. Las métricas del proyecto se usan con fines tácticos

Indicador:

Son datos esencialmente cuantitativos, que nos permiten darnos cuanta de cómo se encuentran las cosas en relación con algún aspecto de la realidad que nos interesa conocer.
Los Indicadores pueden ser medidas, números, hechos, opiniones o percepciones que señalen condiciones o situaciones específicas.vvv


4.4. Tipos de métricas: métricas de proceso,métricas de proyecto, métricas orientadas a punto de función,
métricas orientadas al tamaño, métricas para la calidad del software.

Metricas de proceso: 

Permiten obtener un conjunto de indicadores de proceso que conduzcan a la mejora de los procesos de software a largo plazo, las cuales se usan con fines estratégicos

Metricas de proyecto:

Permiten valorar el estado de un proyecto en curso, así como también rastrear los riesgos potenciales y descubrir las aéreas problema antes que se vuelvan “criticas”, también permite ajustar el flujo de trabajo o las tareas y evaluar la habilidad del equipo del proyecto. Las métricas del proyecto se usan con fines tácticos

Metricas orientadas a punto de funcion:

Son medidas indirectas del software y del proceso. Se centran en la funcionalidad o utilidad del programa. “Emplean como un valor de normalización una medida de la funcionalidad que entrega la aplicación. La métrica orientada a la función utilizada con mayor amplitud es el punto de función (PF)

Metricas orientadas al tamaño:

Son medidas directas del software y del proceso por el cual se desarrolla. Se obtiene considerando las medidas de productividad y normalizándolas por el tamaño del código, es decir las líneas de código LDC.

Se lista cada proyecto de desarrollo de software de los últimos años y los correspondientes datos orientados al tamaño de cada uno, se basan en a utilización de registros sencillos para las medidas más relevantes al desarrollo de nuestro proyecto.

Metricas para calidad del software:

Existen medidas de la calidad del software como: la corrección, la facilidad de mantenimiento, la integridad y la facilidad de uso ofrecen indicadores utilices para el equipo del proyecto, Gilb[GIL88]sugiere definiciones y mediciones para cada una de ellas:
Corrección: es el grado en que el software desempeña la funcionara la que fue creado y se mide en defectos por KLOC.
Facilidad de Mantenimiento:es la sencillez con que un programa puede corregirse si se encuentra unerror; al adaptarse si su entorno cambia o mejorar si el cliente cambia los requisitos y se mide en forma indirecta en TMC (tiempo medio de cambio).
Integridad: es la habilidad de un sistema para resistir ataques que requiere la definición de amenaza y seguridad y se calcula:
integridad = 1 – (amenaza x (1 - seguridad))



4.5. Implementación y mantenimiento: entrega,retroalimentación del cliente.


Implementacion:Es la actividad durante la cul los desarrolladores traducen el diseño a codigo.

Mantenimiento:Es el proceso de mejora y optimizacion del software asi como tambien correccion de los defectos.

Entrega:Proporciona el conjunto de actividades necesarias para llevar a cabo las entregas software y de documentación asociada a un proyecto, desde la formalización de la entrega hasta la revisión y validación de la misma, con la finalidad de homogeneizar todas las entregas software y facilitar su revisión y tratamiento.

Retroalimentacion del cliente:

El proceso de retroalimentación del cliente es una parte crítica del sistema de gestión de la calidad, y por lo tanto debe recibir una atención adecuada durante una auditoría de tercera parte. La retroalimentación del cliente es uno de los indicadores primarios de desempeño que puede ser utilizado para juzgar la eficacia general del SGC. Por lo tanto, es importante para el auditor verificar que:
a) Las entradas a este proceso incluya datos relevantes, representativos y confiables.
b) Estos datos se analizan eficazmente.
c) La salida de este proceso proporciona información útil para la revisión por la dirección y otros procesos del SGC, para aumentar la satisfacción del cliente y llevar hacia la mejora continua

Bibliografia:
http://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CFYQFjAE&url=http%3A%2F%2Fblog.espol.edu.ec%2Fgestioncalidadlsi%2Ffiles%2F2009%2F03%2Findicadores_de_calidad.ppt&ei=dHO2UKreHMXQ2QWTvICQBQ&usg=AFQjCNFt7FJqCeNL0dOqfPhinzSZ3LEU6A&sig2=Xqg50UnyY5TCTaZNrvc5Rw

lunes, 26 de noviembre de 2012

Unidad 3:Planificacion del proyecto de software:

3.1. Aplicación de herramientas para estimación de tiempos y costos de desarrollo de software: GANTT, PERT/CPM, uso de software para la estimación de tiempos y costos.

La planeación efectiva de un proyecto de software depende de la planeación detallada de su avance, anticipando problemas que puedan surgir y preparando con anticipación soluciones tentativas a ellos. Se supondrá que el administrador del proyecto es responsable de la planeación desde la definición de requisitos hasta la entrega del sistema terminado.

Panorama, plan de fases, plan de organización, plan de pruebas, plan de control de modificaciones, plan de documentacion,plan de capacitacion,plan de revisión e informes, plan de instalación y operación, plan de recursos de entregas,indice,plan de mantenimiento.

El objetivo de la planificación del proyecto de software es proporcionar un marco de trabajo que permite al gestor de planificación hacer estimaciones razonables de recursos, costos y planificación temporal

Estas estimaciones se hacen dentro de un marco de tiempo limitado al comienzo de un proyecto de software, y deberían actualizarse regularmente a medida que progresa el proyecto.

Las estimaciones deberían definir los escenario del mejor caso, y peor caso de modo que los resultados del proyecto pueden limitarse.El objetivo de la planificación se logra mediante un proceso de descubrimiento de la información que lleve a estimaciones razonables.


ESTIMACION DEL PROYECTO DE SOFTWARE.

En el principio el costo del software constituía un pequeño porcentaje del costo total de los sistemas basados en computadoras. Hoy en día el software es el elemento mas caro de la mayoría de los sistemas informáticos. Es una pequeña planeación sobre que es lo que va a ser mi proyecto. Una de las actividades cruciales del proceso de gestión del proyecto del software es la planificación.

Cuando se planifica un proyecto de software ese tiene que obtener estimaciones de esfuerzo humano requerido, de la duración cronológica del proyecto y del costo. Pero en muchos de los casos las estimaciones se hacen valiéndose de la experiencia pasada como única guía. Si un proyecto es bastante similar en tamaño y funciona un proyecto pasado es probable que el nuevo requiera aproximadamente la misma cantidad de esfuerzo, que dure aproximadamente lo mismo que el trabajo anterior. Si el proyecto es distinto entonces puede que las experiencias obtenidas no sean suficientes.


Diagrama de Gantt:

Herramienta gráfica que muestra el tiempo de dedicación previsto para diferentes tareas o actividades a lo largo de un tiempo total determinado,en principio, no indica las relaciones existentes entre actividades, la posición de cada tarea a lo largo del tiempo hace que se puedan identificar dichas relaciones einterdependencias,para la planificación del desarrollo de proyectos complejos se requiere el uso de técnicas basadas en redes de precedencia como CPM o los grafos PERT.

Estas redes relacionan las actividades de manera que se puede visualizar el camino crítico del proyecto y permiten reflejar una escala de tiempos para facilitar la asignación de recursos y la determinación del presupuesto. El diagrama de Gantt, sin embargo, resulta útil para la relación entre tiempo y carga de trabajo.


Metodo Pert:

Se utiliza en todo método espacial .El método CPM busca el control y la optimización de los costos de operación mediante la planeación adecuada de las actividades componentes del proyecto.Ambos métodos aportaron los elementos administrativos necesarios para formar el método del camino crítico actual, utilizando el control de los tiempos de ejecución y los costos de operación, para buscar que el proyecto total sea ejecutado en el menor tiempo y al menor costo posible.


DIFERENCIAS ENTRE LOS METODOS PERT Y CPM:

La principal diferencia entre los métodos es la manera en que se realizan los estimativos de tiempo.
PERT:

• Probabilístico.
• Considera que la variable de tiempo es una variable desconocida de la cual solo se tienen datos estimativos.
• El tiempo esperado de finalización de un proyecto es la suma de todos los tiempos esperados de las actividades sobre la ruta crítica.
• Suponiendo que las distribuciones de los tiempos de las actividades son independientes, la varianza del proyecto es la suma de las varianzas de las actividades en la ruta crítica.

Considera tres estimativos de tiempos: el más probable, tiempo optimista, tiempo pesimista. CPM:

• Determinantico. Ya que considera que los tiempos de las actividades se conocen y se pueden variar cambiando el nivel de recursos utilizados.
• A medida que el proyecto avanza, estos estimados se utilizan para controlar y monitorear el progreso.

• Si ocurre algún retardo en el proyecto, se hacen esfuerzos por lograr que el proyecto quede de nuevo en programa cambiando la asignación de recursos.

• Considera que las actividades son continuas e interdependientes, siguen un orden cronológico y ofrece parámetros del momento oportuno del inicio de la actividad.

• Considera tiempos normales y acelerados de una determinada actividad, según la cantidad de recursos aplicados en la misma.



Usos:

El campo de acción de este método es muy amplio, dada su gran flexibilidad y adaptabilidad Para obtener los mejores resultados debe aplicarse a los proyectos que posean las siguientes características:

1. Que el proyecto sea único, no repetitivo, en algunas partes o en su totalidad. 

2. Que se deba ejecutar todo el proyecto o parte de el, en un tiempo mínimo, sin variaciones.

3. Que se desee el costo de operación más bajo posible dentro de un tiempo disponible. Dentro del ámbito aplicación, el método se ha estado usando para la planeación y control de diversas actividades 

Ventajas de PERT y CPM:

1. Enseña una disciplina lógica para planificar y organizar un programa detallado de largo alcance.

2. Proporciona una metodología Standard de comunicar los planes del proyecto mediante un cuadro de tiempo, personal, costo.

3. Identifica los segmentos más críticos del plan, en que problemas potenciales puedan perjudicar el cumplimiento del programa propuesto.

4. Ofrece la posibilidad de simular los efectos de las decisiones alternativas o situaciones imprevistas y una oportunidad .

5. Aporta la probabilidad de cumplir exitosamente los plazos propuestos. 

3.2. Ámbito del software: recursos humanos, recursos de software reutilizables, recursos del entorno.

Describe el control y los datos a procesar, la función, el rendimiento, las restricciones, las interfaces y la fiabilidad. Se evalúan las funciones descoritasen la declaración del ámbito, y en algunos casos se refinan para dar mas detalles antes del comienzo de la estimación.

Comprende la estimación de los recursos necesarios para emprender el desarrollo del software. Los recursos de desarrollo son:

Recursos Humanos:

Se debe establecer las habilidades que se necesitan para llevar a cabo el desarrollo del proyecto. Hay que especificar tanto la posición dentro de la organización como la especialidad. El número de personas requerido para un proyecto de software se determina después de hacer una estimación del esfuerzo de desarrollo.
žGestor
žIngeniero de software
žAnalista de sistemas


Recusrsos del software reutilizable;

•Creación y de bloques de construcción de software. Se deben tener encuentra a medida que se avanza con la planificación:

•Componentes ya desarrollados: componentes que ya han sido validados totalmente se pueden utilizar e implementar en el desarrollo del proyecto actual. 

•Componentes ya experimentados: se puede utilizar Especie ficaciones,diseños, código o datos de prueba existentes que ya han sido desarrollados para proyectos anteriores.

•Componentes con experiencia parcial: se puede utilizar especificaciones,diseños, código o datos de prueba existeantes que ya han sido desarrollados para proyectos anteriores y que requieren una modificación sustancial.

•Componentes nuevos: componentes que el equipo de software requiere construir específicamente para el proyecto.


3.3. Análisis y gestión del riesgo: estrategias, identificación, proyección, refinamiento, reducción, supervisión y gestión del riesgo.

Proyeccion:

La estimación del riesgo mide: La probabilidad de que el riesgo sea real. Las consecuencias de los problemas asociados con el riesgo, si ocurriera.Actividades de proyección del riesgo: 

1.Establecer una escala que refleje la probabilidad percibida del riesgo

2.Definir las consecuencias del riesgo

3.Estimar el impacto del riesgo en el proyecto y en el producto

4.Apuntar la exactitud general de la proyección del riesgo de manera que no haya confusiones.

Por medio del uso de la siguiente tabla se facilita una proyección del riesgo.
Riesgos
Categoria
Probabilidad
Imapacto
Mayor mumero de usuarios previstos
TP
30%
3
1.En la columna: Riesgo, se registran todos los riesgos

2.En la columna: Categoría, cada riesgo se categoriza así:


Tamaño del producto (TP)
Ingeniería del Software
Impacto en la organización (IO)
Tipo de cliente (TC)
Proceso de producción (PP)
Entorno de desarrollo (ED)
Tecnología (T)

Experiencia técnica (ET) se pueden utilizar las iniciales que se encuentran entre paréntesis o puede asignar unas específicas.

3.En la columna probabilidad, se registra la probabilidad de aparición de cada riesgo.

4.En la columna impacto, Se valora y se registra el impacto de cada riesgo así:

1.-Catastrófico

2.-Crítico

3.-Marginal

4-Despreciable

Por último la tabla es ordenada por probabilidad y por impacto.

Aquellos riesgos que presentan alta probabilidad y alto impacto pasan al inicio de la tabla y los que presentan baja probabilidad e impacto pasan al final de la tabla. Una vez la tabla ha sido ordenada, el encargado del proyecto debe traza runa línea de corte donde los riesgos que se encuentren por encima de ésta línea se les prestara una mayor atención.

El objetivo es evitar y tratar un riesgo. Desarrolle un plan de reducción del riesgo. Este plan de reducción del riesgo involucra para cada riesgo una serie de pasos y acciones que debe tomar e implementar el equipo de desarrollo del software. 


El plan RSGR

Se puede incluir una estrategia de gestión de riesgo en el plan del proyecto de software o se podrían organizar los pasos de gestión del riesgo en un plan diferente de reducción, supervisión y gestión del riesgo (Plan RSGR). Todos los documentos del plan RSGR se llevan a cabo como parte del análisis de riesgo y son empleados por el jefe del proyecto.

Se expone un esquema del Plan RSGR: 
žI. Introducción
ž1. Alcance y propósito del documento
ž2. Visión general de los riesgos principales
ž3. Responsabilidades. Gestión. Personal técnico
žII. Tabla de riesgo del proyecto.
ž1. Descripción de todos los riesgos por encima de la línea de corte
ž2. Factores que influyen en la probabilidad e impacto
žIII. Reducción, supervisión y gestión del riesgo. Riesgo. Reducción. Estrategia general. Pasos específicos
ž.b. Supervisión
žFactores a supervisar
ž Enfoque de supervisión
žGestión
žPlan de contingencia. Consideraciones especiales.
žIV. Planificación temporal de revisión del Plan RSGRV


Una vez que se ha desarrollado el plan RSGR y el proyecto ha comenzado, empiezan los procedimientos de reducción y supervisión del riesgo.

La reducción del riesgo es una actividad para evitar problemas.
La supervisión del riesgo es una actividad de seguimiento del proyecto centres objetivos principales:
1. Valorar cuando un riesgo previsto ocurre de hecho.
2. Asegurarse de que los procedimientos para evitar el riesgo definidos para el riesgo en cuestión se están aplicando apropiadamente.
3. Recoger información que pueda emplearse en el futuro para analizar
También intentar determinar el "origen" a lo largo de todo el proyecto.

Unidad 2:Modelos de Ingenieria del software

2.1Modelo de capacidad de madurez
Éste corresponde a uno de los modelos más conocidos creado por el SEI (Software Engineering Institute) de la Carnegie Mellon University. El CMM pretende conseguir mejorar la calidad del software mejorando la calidad de los procesos utilizados en su desarrollo. "Las herramientas y las plataformas cambian de forma continua. Pero siempre podemos usar el mismo proceso si éste está bien definido y se sabe utilizar de forma adecuada."
Niveles de madurez:
El primer nivel (Caos) se produce cuando en la empresa no existe ningún modelo y que todo se hace sobre la marcha es decir no se emplea ningún proceso definido. 

En el segundo nivel (Repetible) se encuentran las empresas en las que existe planificación y seguimiento de proyectos y está implementada la gestión de los mismos.
El tercer nivel (Definido) documenta y normaliza los procesos a nivel organizativo. Las claves de este nivel son la gestión de los requisitos, planificación de proyectos y su seguimiento a través de toda la organización

El cuarto nivel (Medible) pone énfasis en la calidad del proceso y del producto. Lo tienen las empresas capaces de medir el estado de un proyecto y utilizar esta información para que los jefes introduzcan los cambios y correcciones necesarias. Una vez adquirido este nivel en la gestión de los proyectos se pueden establecer objetivos. 

El quinto nivel (Mejora continua) se conoce como proceso continuo de mejora. Las áreas clave del proceso incluyen prevención de defectos, administración de cambios tecnológicos y gestión de cambios en los procesos

Metodos de evaluacion:

Para conseguir la certificación CMM, es necesario contactar con algún evaluador acreditado por el SEI. Éstos utilizan distintos métodos para determinar en las organizaciones el nivel de madurez en el que se encuentra el proceso utilizado en el desarrollo de software.

Entre estos métodos destaca el SCE consiste en una auditoría y el CBA-IPI utiliza entrevistas y otros procedimientos encaminados a ayudar a la mejora de los procesos seguidos en la organización.

2.2 Marco de trabajo para el proceso:

Base para el proceso de software completo.
•Es como un libro de recetas de cocina. 

•La adaptacion es especial
•Aplicable a lo largo del proceso de software.
•Su objetivo la gestion,el ratreo y el control del proyecto,
•Garantiza la calidad del software.

Actividades del marco de trabajo: 

Aplicable a todos los proyectos
•Comunicación 

•Planeacion
•Modelado
•Construccion
•Despliegue

Conjunto de tareas: 

Actividades que hacen que el marco de trabajo se adapte a las caracteristicas particulares de cada proyecto.Define el trabajo real a cumplirse:

  • Tareas 
  • Hitos,entregas. 
  • Puntos SQA 
2.3. Modelos de la ingeniería del software:modelo de cascada, modelo de prototipos,modelo de espiral,modelo de Proceso Unificado Racional (RUP).

Modelo cascada:

•Es un modelo sencillo para explicar al cliente.
•Tambien llamado ciclo de vida clasico sugiere un enfoque sistematico. secuencial en el desarrollo del software.
•Requiere que los requerimientos esten bien definidos y estables en forma razonable.
•Es el paradigma mas antiguo para la Ingenieria del Software.


Fases:

•Ingenieria y Analisis del Sistema:Debido a que el software siempre es parte de un sistema mayor el trabajo comienza estableciendo los requerimientos de todos los elementos del sistema y luego asignando algun subconjunto de estos requisitos al software.
•Analisis de los requerimientos del software:El proceso de recopilacion de los requerimientos se centra e intensifica especialmente en el software.El ingeniero del software debe comprender el ambito de la informacion del software asi como la funcion del rendimiento y las interfaces requeridas.
.
•Diseño:Se enfoca en cuatro atributos distintos del programa la estructura de los datos,la arquitectura del software,el detalle procedimental y la caracterizacion de la interfaz.
•Codificacion :Debe traducirse en una forma legible para la maquina.
•Prueba:Se centra en la logica interna del software y en las funciones externas,realizando pruebas que aseguren que la entrada definida produce los resultados que realmente se requiere.

•Mantenimiento:El software sifriria cambios despues de que se entrega al cliente ocurren debido a que hayan encontrado errores que el software deba adaptarse a cambios del entorno externo o que el cliente requiera aplicaciones funcionales o del rendimiento.

Caracteristicas:

  • Es el mas utilizado. 
  • Es una vision del proceso de desarrollo de software como una sucesion de etapas que producen productos intermedios. 
  • Para que el proyecto tenga éxito deben desarrolllarse todas las fases. 
  • Las fases continuan hasta que los objetivos se han cumplido. 
  • Si se cambia el orden de las fases, el producto final sera de inferior calidad.
Ventajas:

oLa planificacion es sencilla.
oLa calidad del producto resultante es alta.
oPermite trabajar con personal poco calificado.

Deventajas:
  • No refleja realmente el proceso de desarrollo del software. 
  • Se tarda mucho tiempo en pasar por todo el ciclo. 
  • El mantenimiento se realiza en el codigo fuente. 
  • Las revisiones de proyectos de gran complejidad son muy dificiles.
Modelo de prototipos:

•Es una vision preliminar del modelo futuro.
•Es un modelo operable.
•Facilmente ampliable y modificable.
•Tiene todas las caracteristicas propuestas pero realmente es un modelo basico que tiene que ser mejorado 

Ventajas:

•La posibilidad de cambiar el modelo. 
•La oportunidad para suspender el modelo del desarrllo del modelo sino es funcional.
•La oportunidad de crear un nuevo modelo que se ajuste a mejor a las necesidades y expectativas de los usuarios.

Relaciones de usuario:

Las sugerencias obtenidas de los usuarios lleven al analista hacia adecuaciones o cambios que se ajustan mejor a las necesidades de los usuarios y que no habian sido pensadas antes de la interaccion del usuario con el prototipo.Debe ser construido en poco tiempo ,no debe de utilizarse mucho dinero,cuando este sea aprobado podemos inciar el verdadero desarrollo del software.Prodra ser construido si con el software es posible experimentar.  

Desventajas:

Debido a que el usuario ve que funciona piensa que este es el producto terminado y no entienden que recien se va a desarrollar el software .
Debe ir acompañado de otro modelo para su desarrollo.

Tipo de modelo de prototipo:
•Desechable.:Nos sive para eliminar dudas sobre las que realmente quiere al cliente ademas para desarrrollar la interfaz que mas le convenga al cliente.
•Evolucionario.:Es parcialmente construido que puede pasar de ser prototipo a ser software pero no tiene una buena documentacion y calidad.
 
A favor:

oUtiles cuando los requerimientos son cambiantes.
oCuando nose conoce bien la aplicación.
oCuando el usuario no se quiere comprometer con los requerimientos.
oCuando se quiere probar una arquitectura o tecnologia.Cuando se requiere rapidez en el desarrollo.

En contra:

No se conoce cuando se tendra un producto aceptable.
No se sabe cuantas interacciones seran necesarias.
Da una falsa ilusion al usuario sobre la velocidad del desarrolllo.
Se puede volver al producto aun y cuando no este en los estandares.


Modelo en espiral:

Las actividades se conforman en un espiral en la que cada bucle o interaccion representa un conjunto de actividades,no estan fijadas a prioridad sino que las siguientes se eligen en funcion de analisis de riesgo comenzando por el bucle interior.

Caracteristicas:

•Encada giro se construye un nuevo modelo del sistema completo.
•Este modelo puede combinarse con otros modelos de proceso de desarrollo .
•Mejo ir modelo para desarrollo de grandes sistemas.
•El analisis de riesgo requiere la participacion del personal con alta calificacion.
•No hay numero definido de interacciones ,deben de decidirlas el equipo de gestion de proyecto.

Ventajas:

  • Modelo espiral de cuatro regiones o modelo original de Boehm. 
  • Modelo espiral de seis regiones. 
  • Modelo espiral WINWIN.
Modelo espiral de cuatro regiones o modelo original de Boehm.


Modelo de seis regiones:


Modelo espiral WINWIN:

WINWIN(Victoria) sugiere una actividad del marco de trabajo que aborda la comunicación con el cliente.El objetivo de esta actividad es mostrar los requisitos del cliente.En un contexto ideal del desarrollador simplemente pregunta al cliente lo que se necesita y proporciona detalles suficientes para continuar.

Ventajas:

•El modelo en espiral es un enfoque realista del desarrollo de sistemas.
•Modelo de proceso adaptable.
•El modelo en espiral puede s aplicarse a lo largo de la vida del software.
•El desarrollador y el cliente comprenden y reaccionan mejor ante riegos en cada uno de los niveles evolutivos.
•Permite a quien lo desarrolla aplicar el enfoque de construccion de prototipos en cualquier etapa de evolucion del producto.
•Demanda una consideracion directa de los riesgos tecnicos en todas las etapas del proyecto y si se aplicada adecuadamente debe reducir los riesgos antes de que se conviertan en problemas.
•Modelos evolutivos como el espral son apropiados oarticularmente parael desarrollo de Sistemas OO.
•Trata de mejorar los ciclos de vida de clasicos y prototipos.
•Permite acomodar otros modelos.
•Incorpora objetivos de calidad y gestion de riesgos.
•Elimina errores y alternativas no atractivas al comienzo.

Desventajas:

•Resulta dificil convencer a grandes clientes de que el enfoque evolutivo es controlable.
•Es nuevo y no se a utilizado tanto como otros modelo de ciclo de vida.
•Requiere una considerable habilidad para la evaluacion del riesgo y cuenta con esta habilidad para el éxito.
•Si un riesgo es importante no es detectado y gestionado a tiempo indudablemente surgiran problemas.

Hitos del modelo WIN-WIN:

Introduce tres hitos son los procesos llamados puntos de fijacion que ayudan a establecer la completitud de un ciclo alrededor de la espiral y proporcionan hitos de decisión antes de continuar el proyecto de software.
Los puntos de fijacion representan tres visiones diferentes del progreso mientras que el proyecto recorre la espiral.

2.4. Tendencias modernas de modelos de la ingeniería del software.

XP:Programacion extrema:

De todas las metodologias habiles esta recibe mas atencion.Valores :
  • Retroalimentación. 
  • Comunicación. 
  • Simplicidad . 
  • Coraje. 

Contruye un proceso de diseño evolutivo refactora un sistema simple en cada iteraccion que se centra en la iteraccion actual no se hace nada anticipadamente.Combina la disiplina con la adaptabilidad.Kent Beck escribio Extreme Programming Explained qu es clave de la XP.

La familia de cristal de Cockburn:

Tipos diferentes de proyectos requieren tipos diferentes de metodologia.

Costituye:el numero de personas de un proyecto y las consecuencias de los errores.Alistar requiere que las personas sigan un proceso diciplinado,explora a metodologia menos disiplinada que aun pueda tener éxito intercambiando productividad.El cristal es menos productivo que la XP maas personas seran capaces de seguirlo.

Codigo abierto:Es un estilo de software,en particular su proceso se engrana a equipos fisicamente distribuidos,la mayoria de los procesos adaptables exigen procesos locales.La mayoria tiene uno mas mantenedores.Un mantenedor es la unica persona a la que se permite hacer cambioen el almacen de codigo fuente,otras personas tambien pueden hacer cambios pero necesitan madarlas a mantenedor para que las revise aplique.

El desarrollo de software adaptable de Highsmith:

Trabajando con metodologías predictivas. él las desarrolló, instaló, enseñó, y concluyó que son defectuosas: particularmente para los negocios modernos. En ASD hay tres fases, no lineales: especulación, colaboración, y aprendizaje. En un ambiente adaptable, aprender desafía a todos - desarrolladores y sus clientes - a examinar sus asunciones y usar los resultados de cada ciclo de desarrollo para adaptar el siguiente.

Scrum:

Scrum divide un proyecto en iteraciones (que ellos llaman carreras cortas) de 30 días. Antes de que comience una carrera se define la funcionalidad requerida para esa carrera y entonces se deja al equipo para que la entregue. el punto es estabilizar los requisitos durante la carrera.
Todos los días el equipo sostiene una junta corta (quince minutos), llamada scrum, dónde el equipo discurre lo que hará al día siguiente. la literatura de scrum se enfoca principalmente en la planeación iterativa y el seguimiento del proceso.

Desarrollo manejado por rasgo:

Fue desarrollado por Jeff de Luca y Peter Coad. Las iteraciones duran dos semanas. Tiene cinco procesos. los primeros tres se hacen al principio del proyecto. 

•desarrollar un modelo global
•construir una lista de los rasgos
•planear por rasgo
•diseñar por rasgo
•construir por rasgo
Los últimos dos se hacen en cada iteración. Cada proceso se divide en tareas y se da un criterio de comprobación.
Los desarrolladores entran en dos tipos: dueños de clases y programadores jefe.

DSDM (MÉTODO DE DESARROLLO DE SISTEMA DINÁMICO)

Empieza con un estudio de viabilidad y negocio. Viabilidad considera si DSDM es apropiado para el proyecto. Negocio es una serie corta de talleres para entender el área de negocio dónde tiene lugar el desarrollo. También propone arquitecturas de esbozos del sistema y un plan del proyecto. 

El resto del proceso forma tres ciclos entretejidos: el ciclo del modelo funcional produce documentación de análisis y prototipos, el ciclo de diseño del modelo diseña el sistema para uso operacional, y el ciclo de implantación se ocupa del despliegue al uso operacional.

Bibliografia:
http://www.eumed.net/libros-gratis/2008a/351/Modelo%20de%20Madurez%20de%20Capacidad.htm
http://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CC0QFjAA&url=http%3A%2F%2Fmedia.wix.com%2Fugd%2F68304f_ca07630d69cf122707afd77c97db80d8.pdf%3Fdn%3D2.4.pdf&ei=MdetUNjrCsa9yAGuioDQCQ&usg=AFQjCNGMuGiiNjdLKZYFwTZAOjIiJlEPRw&sig2=_Kxy5yYC49IqIsXtSH3ZQQ