miércoles, 25 de marzo de 2009

UNIDAD 3 (SEGUNDA PARTE)


PREGUNTAS DE TÉCNICAS DE DESCOMPOSICIÓN


1. ¿Qué son las técnicas de descomposición?

Permiten fragmentar el problema y coordinar la resolución de los subproblemas para alcanzar la solución del problema completo; las técnicas de descomposición se pueden ver como estrategias de partición del grafo que representa el árbol de escenarios y de resolución coordinada de los fragmentos del grafo.

2. ¿A qué se refieren las estimaciones basadas en el problema?
Puede usarse LOC o PF para hacer estimaciones.
Si se utiliza LOC, la descomposición es esencial y a menudo debe ser a detalle.
Si se utiliza PF, en vez de centrar la descomposición en la función, se calcula el PF como se estudió en el capítulo anterior, estimando de alguna forma, cada uno de los valores.
En ambos casos, mediante datos históricos o la intuición, se estiman valores optimista (O), medio (M) y pesimista (P) para cada función o contador, y se calcula el valor esperado (E) con la siguiente fórmula:
E = (O + 4 * M + P) / 6
3. ¿Qué son las estimaciones basadas en el proyecto?
Delimitar las funciones del software.
Identificar las tareas de ingeniería del software para cada una de las funciones y representarlas en una tabla.
Estimar el esfuerzo (número de personas/unidad de tiempo) de realización de cada tarea para cada una de las funciones del software.
Aplicar las tarifas laborales (coste/unidad de esfuerzo) correspondientes a cada una de las tareas.
Calcular los costes y el esfuerzo para cada función y cada tarea.

4. ¿Porque es inconveniente usar técnicas de descomposición?
La dificultad para contemplar los costes de actividades relacionadas con el proyecto como lectura de código, revisión, reuniones, y actividades no relacionadas con el proyecto relacionado con los hábitos de trabajo.

5. ¿Cual es la diferencia entre la descomposición de benders y la relajación langragiana?
Descomposición de Benders
La descomposición de Benders [Benders,1962], [VanSlyke,1969] propone separar en subproblemas las decisiones tomadas en diferentes etapas. Para ello se necesita que las decisiones de una etapa sólo dependan de las consecuencias de las decisiones tomadas en la etapa anterior. Con esta descomposición se plantea un problema por cada etapa, y en ese problema se incluye tanto la parte correspondiente a la propia etapa como la parte que liga esa etapa a las decisiones tomadas en la etapa anterior.
Relajación lagrangiana
El otro método de descomposición más relevante es la relajación lagrangiana [Geoffrion, 1970], En esta ocasión se intentan separar dentro de cada etapa las decisiones para grupos de variables que están relacionadas entre sí. Es decir, se pueden localizar conjuntos de variables que están muy conectadas con otras etapas, pero poco relacionadas con otras variables de la misma etapa.


TÉCNICAS DE DESCOMPOSICIÓN


Las estimaciones se hacen sobre cada componente en que se descompone el software o sobre tareas de bajo nivel en que se descomponen las tareas.
Las estimaciones de bajo nivel se combinan para producir una estimación del proyecto completo. Es decir, el coste total del proyecto es el resultado de sumar las estimaciones de todos los componentes en los que se ha dividido el proyecto.
Cuando se trata con problemas de gran tamaño que no pueden ser resueltos en los equipos informáticos disponibles, suele recurrirse a técnicas de descomposición, que permiten fragmentar el problema y coordinar la resolución de los subproblemas para alcanzar la solución del problema completo. En este sentido, las técnicas de descomposición se pueden ver como estrategias de partición del grafo que representa el árbol de escenarios y de resolución coordinada de los fragmentos del grafo. Este proceso de resolución es de naturaleza iterativa y amplía el tiempo de solución total, por lo que debe ser evitado siempre que sea posible la resolución directa. En el caso de los problemas de optimización estocástica, el empleo de técnicas de descomposición permite la consideración de gran cantidad de escenarios o de problemas con un mayor nivel de detalle en el modelado.
La estimación del proyecto completo se calcula mediante la suma de las cantidades parciales (enfoque abajo-arriba/bottom-up).
- En la estimación intervienen los responsables de cada componente y/o fase del proyecto.
- Lo más adecuado es utilizar las técnicas de descomposición estructurada (EDT/WBS, DFT/WFD).
Técnicas de descomposición:
Del proyecto (o por fases)
Del producto (o por módulos)
Del proyecto y del producto (por fases y por módulos). Es una combinación de las anteriores.
Entre las ventajas se encuentran:
La posibilidad de que el responsable del componente a estimar participe en dicha estimación.
Ayuda a analizar con detalle cada componente.

Entre los inconvenientes se encuentran:
La dificultad para contemplar los costes de actividades relacionadas con el proyecto como lectura de código, revisión, reuniones, y actividades no relacionadas con el proyecto relacionado con los hábitos de trabajo.
Estimación basada en el problema.
Puede usarse LOC o PF para hacer estimaciones.
Si se utiliza LOC, la descomposición es esencial y a menudo debe ser a detalle.
Si se utiliza PF, en vez de centrar la descomposición en la función, se calcula el PF como se estudió en el capítulo anterior, estimando de alguna forma, cada uno de los valores.
En ambos casos, mediante datos históricos o la intuición, se estiman valores optimista (O), medio (M) y pesimista (P) para cada función o contador, y se calcula el valor esperado (E) con la siguiente fórmula:
E = (O + 4 * M + P) / 6
Estimación basada en el proceso
Delimitar las funciones del software.
Identificar las tareas de ingeniería del software para cada una de las funciones y representarlas en una tabla.
Estimar el esfuerzo (número de personas/unidad de tiempo) de realización de cada tarea para cada una de las funciones del software.
Aplicar las tarifas laborales (coste/unidad de esfuerzo) correspondientes a cada una de las tareas.
Calcular los costes y el esfuerzo para cada función y cada tarea.
Existen dos técnicas principales de descomposición que pueden considerarse como duales entre sí, ya que realizan la descomposición en dos dimensiones transversales. Estas dos técnicas son la descomposición de Benders y la relajación lagrangiana, que se explican en los dos siguientes apartados.
Descomposición de Benders
La descomposición de Benders [Benders,1962], [VanSlyke,1969] propone separar en subproblemas las decisiones tomadas en diferentes etapas. Para ello se necesita que las decisiones de una etapa sólo dependan de las consecuencias de las decisiones tomadas en la etapa anterior. Con esta descomposición se plantea un problema por cada etapa, y en ese problema se incluye tanto la parte correspondiente a la propia etapa como la parte que liga esa etapa a las decisiones tomadas en la etapa anterior.


Relajación lagrangiana


El otro método de descomposición más relevante es la relajación lagrangiana [Geoffrion, 1970], En esta ocasión se intentan separar dentro de cada etapa las decisiones para grupos de variables que están relacionadas entre sí. Es decir, se pueden localizar conjuntos de variables que están muy conectadas con otras etapas, pero poco relacionadas con otras variables de la misma etapa.



ESTIMACIÓN DEL PROYECTO DE SOFTWARE


La estimación del coste y del esfuerzo del software no es una ciencia exacta, sondemasiadas las variables- humanas, técnicas , de entorno, políticas- que pueden afectar alcoste final del software y al esfuerzo aplicado para desarrollarlo.Para estimaciones seguras de costes y esfuerzos tenemos varias opciones posibles:

- dejar la estimación para cuando se ha acabado el proyecto, pero esto no espráctico pues las estimaciones de los costes han de ser a priori.- basarse en proyectos similares ya terminados, no fiable.

- usar técnicas de descomposición (divide_y_vencerás).

- modelo empírico para el cálculo de costes y esfuerzos del software.Las dos últimas opciones son métodos viables para la estimación del proyecto software,incluso pueden aplicarse conjuntamente.

Estimación de recursos y costes La estimación de recursos y costes es una actividad importante que debe llevarse a cabo con el mayor detalle posible, porque permite al comprador establecer una aproximación al coste total y plazos del desarrollo del sistema.Para ello se requiere experiencia, acceso a una buena información histórica y determinación para confiar en medidas cuantitativas cuando todo lo que existe son datos cualitativos.Factores que afectan a esta estimación:La complejidad del proyecto, cuantificando la misma en función de:Número de módulos y nivel de interrelación entre los mismos.Número y tipo de las interfaces externas con otros sistemas, programas o datos.Grado de distribución y heterogeneidad del entorno de implantación.Grado de sofisticación de las herramientas de desarrollo.Naturaleza de los algoritmos que se deben diseñar y programar.

Otros factores específicos del proyecto.

La dimensión del sistema a desarrollar: conforme aumenta el tamaño de un sistema de información, la interdependencia entre los distintos elementos del sistema de información crece rápidamente y la descomposición del problema en partes más pequeñas se hace más difícil.


El grado de estructuración del proyecto: por estructuración se entiende la facilidad con que las funciones pueden ser compartimentalizadas y la naturaleza jerárquica de la información a tratar. A medida que el grado de estructuración aumenta, la posibilidad de estimar con precisión mejora y, por consiguiente, el riesgo disminuye.

Existen varias técnicas de estimación para el desarrollo de sistemas de información. Aunque cada una tiene sus puntos fuertes y débiles, todas tienen en común las siguientes características:Se ha de establecer de antemano el alcance del proyecto.


Como base para la realización de estimaciones, se usan las métricas del software, es decir, medidas relativas al esfuerzo de desarrollo del equipo lógico.El proyecto se desglosa en partes más pequeñas cuyos costes y recursos se estiman individualmente.Ejemplos de estas técnicas son:Análisis de puntos de función.Técnicas de descomposición.Modelos empíricos de estimación.Herramientas automáticas de estimación.Una vez estimado el tiempo y recursos necesarios para el desarrollo de la aplicación y teniendo en cuenta las tarifas de los distintos profesionales del desarrollo, se puede establecer una aproximación al presupuesto que va a exigir el desarrollo del sistema de información objeto del pliego.La Administración ha promovido el desarrollo de una herramienta, SISDEL (Sistema Integrado de Soporte al Desarrollo de Equipos Lógicos), que sirve como ayuda a la gestión de la calidad, a la planificación y control de plazos, y a la estimación de proyectos de desarrollo de sistemas de información.




1.-¿son una de las técnicas de estimación del proyecto de software mas utilizadas y recomendadas?

Técnicas de descomposición (divide_y_vencerás) y Modelo empírico para el cálculo de costes y esfuerzos del software


2.-¿En qué consiste la técnica de descomposición a grandes rasgos?Descomponemos el problema en pequeños problemas. Se puede dividir en enfoque directo que se refiere a las LDC(líneas de código). Si se selecciona un enfoque indirecto se refiere a PF(puntos de función) esta ultima no se centra en la función, se estiman cada unade las características del dominio de información - entradas, salidas, archivos de datos,peticiones, e interfaces externas.


3.-¿Cuales son las estimaciones seguras de costes y esfuerzos dentro de la estimación del proyecto de software?· Dejar la estimación para cuando se ha acabado el proyecto, pero esto no es práctico pues las estimaciones de los costes han de ser a priori.· Basarse en proyectos similares ya terminados, no fiable.· Usar técnicas de descomposición (divide y vencerás).· Modelo empírico para el cálculo de costes y esfuerzos del software.

4.-¿Cuales son las características de las técnicas de estimación para el desarrollo de sistemas de información?

-Análisis de puntos de función.-Técnicas de descomposición.-Modelos empíricos de estimación.-Herramientas automáticas de estimación.Describe brevemente la herramienta SISDEL(Sistema Integrado de Soporte al Desarrollo de Equipos Lógicos), que sirve como ayuda a la gestión de la calidad, a la planificación y control de plazos, y a la estimación de proyectos de desarrollo de sistemas de información.


5.-Describe brevemente la herramienta SISDEL

(Sistema Integrado de Soporte al Desarrollo de Equipos Lógicos), que sirve como ayuda a la gestión de la calidad, a la planificación y control de plazos, y a la estimación de proyectos de desarrollo de sistemas de información.



HERRAMIENTAS AUTOMATICAS DE ESTIMACIÓN


¿Cual es el objetivo de utilizar las herramientas automáticas de estimación?


Con ellas podemos cuantificar todo con respecto al proyecto y con ellas podemos reducir tiempos o tomar mejores deciciones en el proyecto o sobre el equipo de trabajo porque podemos utilizarlas en el proyecto pero tambien en la vida cotidiana.


¿Cuales son las funciones genéricas en las herramientas automáticas de estimación?

Herramientas Automaticas de Estimacion:
Funciones Genericas:
Dimensionamiento de las entregas del proyecto.
Seleccion de las actividades del proyecto.
Prediccion de los niveles de la plantilla.
Prediccion del esfuerzo del software.
Prediccion del coste del software.
Prediccion de la planificacion del software.
¿Que nos proporcionan las herramientas automáticas de estimación?

Nosproporcionan la información referente a estimar costes y esfuerzos, ademas de llevar a cabo un análisis con las variables del proyecto como púeden ser la fecha de entrega o la seleccion del personal.
¿Cuantas herramientas automáticas de estimación son y cuales son?

son 6 herramientas:

Herramientas Automaticas de Estimacion:

Funciones Genericas:
· Dimensionamiento de las entregas del proyecto.

· Seleccion de las actividades del proyecto.

· Prediccion de los niveles de la plantilla.

· Prediccion del esfuerzo del software.

· Prediccion del coste del software.

· Prediccion de la planificacion del software.


3.7 La desicion desarrollar - comprar

Esta forma parte de la Planificacion de proyectos de software como podemos ver en el siguieinte esquema !!



Muchas veces es más rentable adquirir el software de computadora que desarrollarlo los gestores pueden optar por desarrollar el software o comprarlo Hay diversas opciones de adquisición:– Comprarlo ya desarrollado bajo licencia.– Adquirir componentes ya experimentados o parcialmente experimentados.– Construirse de forma personalizada por una empresa externa para cumplir las Especificaciones del comprador.
• Si es evidente que una opción es mucho más rentable que la otra se elige• Si no, hacemos una comparación basada en:

1. Desarrollo de una especificación del software.
2. Estimación del coste interno de desarrollo y de la fecha de entrega.
3. Selección de tres o cuatro aplicaciones que mejor cumplan las especificaciones.
4. Selección de componentes software que ayudarán en la construcción de la aplicación.
5. Desarrollo de una matriz de comparación.
6. Evaluación de cada paquete o componente.
7. Contacto con usuarios y petición de opiniones.

En el análisis final se deben tener en cuenta las siguientes condiciones:
- Fecha de entrega.
- Coste total.
- Coste de mantenimiento-
soporte.
Podemos utilizar un árbol de decisiones para facilitar el proceso de decisión supongamos que debemos decidir entre:– Construir un sistema totalmente.– Reutilizar componentes de experiencia parcial.– Comprar un producto disponible y modificarlo.– Contratar el desarrollo a una empresa externa.
El coste no debe ser el único criterio además, debemos tener en cuenta:- Disponibilidad.- Experiencia del desarrollador/vendedor/contratado.- Conformidad con los requisitos.- Política local.- Probabilidad de cambio.La decisión desarrollar...Subcontratación• Subcontratación (outsorcing): contratar las actividades de IS a un tercero, quien hace el trabajo a bajo coste, asegurando una alta calidad• El trabajo de software de la compañía origen se reduce a la gestión de contratosPuede ser una decisión estratégica o táctica• Ventajas:- Ahorros de costos.• Inconvenientes:- Pérdida del control del software.- Ponerse en manos de terceros.Precio de un proyecto• El coste de un proyecto software depende de tres parámetros:- Costes hardware y software, incluido su mantenimiento.- Costes de viajes y formación.- Costes de esfuerzo.
En la mayoría de proyectos, el determinante, es el coste de esfuerzo, ya que:- El coste de hardware es cerrado y, hoy en día, no demasiado alto.- Aunque algunos proyectos tengan elevados costes de desplazamiento y/o formación, para la mayoría de proyectos son costes bajos.• En las tarifas medias, no solamente se incluye el coste por esfuerzo• También se incluyen los costes totales y se dividen por el número de programadores (y meses)• Los siguientes costes también son parte del coste del esfuerzo total:- Coste de mantenimiento de la oficina.- Costes del personal no programador.- Costes de red y comunicación.- Costes de pensiones y/o seguros.- Otros costes.• Normalmente, el coste total es tres o cuatro veces el sueldo del programador:tarifa programador: 2000(€/pm)tarifa media: 7000(€/pm)En base a esto podemos determinar:precio = coste + beneficios• Esta regla es muy sencilla• Podemos ajustarla en base a los siguientes factores:- Cuota de mercado (alta/baja).- Estimación de costes poco clara.- Términos del contrato (propiedad del código).- Volatilidad de los requisitos (honestos/inteligentes).- Salud financiera
La decisión de desarrollar – comprarPueden ser decisiones estratégicas o tácticas para el desarrollo del software, ya que el costo no debe ser el único criterio en el cual tengamos en cuenta, también debemos tener en cuenta, la disponibilidad y posibilidad de cambio.(Fernando Ortega Trejo)
La decision desarrollar comprar
Pienso que en este caso depende la decision del giro de nuestro negocio ya que cuando tenemos actividades muy generales podemos optar por comprar un software ya generico y en caso de actividades muy generales si debemos optar por desarrollar nuestro propio software es decir para que cumpla con esos requerimientos especiales ya que el modificar el ya hecho puede ser mas costoso que uno nuevo
La decisión desarrollar comprar Es la forma de decidir si para nuestra necesidad es mejor comprar un producto ya hecho con una licencia, comprar un producto para modificarlo, o pagar por crear un producto. También te ayuda a tener el conocimiento de verificar el precio del producto todo esto se obtiene con los coste y beneficios del producto otros factores que te ayuda también a tener en mente son los Costes del personal no programador, Costes de red y comunicación, Costes de pensiones y/o seguros. En todo esto se incluye lo que es el mantenimiento del software o hardware

1.-¿que entiendes por decision comprar-desarrollar?
Decisiones estratégicas o tácticas para el desarrollo del software, ya que el costo no debe ser el único criterio en el cual tengamos en cuenta, también debemos tener en cuenta, la disponibilidad y posibilidad de cambio.

2.-¿que factores podemos usar para decidir?
Hay diversas opciones de adquisición:– Comprarlo ya desarrollado bajo licencia.– Adquirir componentes ya experimentados o parcialmente experimentados.– Construirse de forma personalizada por una empresa externa para cumplir las Especificaciones del comprador.

3.-¿que factores intervienen en la compra?
Precio de un proyecto• El coste de un proyecto software depende de tres parámetros:- Costes hardware y software, incluido su mantenimiento.- Costes de viajes y formación.- Costes de esfuerzo.

4.-¿que factores intervienen en el desarrollo?
Subcontratación• Subcontratación (outsorcing): contratar las actividades de IS a un tercero, quien hace el trabajo a bajo coste, asegurando una alta calidad• El trabajo de software de la compañía origen se reduce a la gestión de contratosPuede ser una decisión estratégica o táctica• Ventajas:- Ahorros de costos.• Inconvenientes:- Pérdida del control del software.- Ponerse en manos de terceros.
5.-¿que harias tu y en que casos?





1 comentario:

  1. como menciona mi compañero miguelon las herramientas nos facilitan el poder de tomar desiciones, para realizar software de buena calidad; son de gran utilidad y te brindan una mayor vision en tu plan de desarrollo de software

    ResponderEliminar