Portada » Diseño e Ingeniería » Fundamentos de Ingeniería de Software: Modelos, Riesgos y Estimación de Proyectos
Consiste en basarse en la descripción inicial para incrementar poco a poco (por versiones), empezando por versiones alpha (en construcción) iniciales, beta en desarrollo y finales en validación. Es interactivo y el cliente evalúa las novedades, pero puede generar problemas similares a la cascada.
Creado por los autores del UML, se basa en diagramas que “construyen” la descripción del software, formando su arquitectura. Es iterativo e incremental. Consta de 4 fases:
Sus ventajas son su flexibilidad al cambio, pero su desventaja es que está muy ligado a su arquitectura.
Se basa en la impredecibilidad real de los requisitos y la planificación. Intercala diseño con desarrollo. Tiene una alta adaptabilidad, necesita retroalimentación del cliente y se basa en versiones (incrementos).
Modelo iterativo de ciclos muy cortos, alta adaptabilidad, comunicación con el cliente, pruebas automatizadas, etc. El ciclo es: codificar, probar, evaluar, diseñar y repetir. Es útil para especificaciones cambiantes, pero poco útil en grandes proyectos o equipos.
Se basa en equipos de trabajo que se dedican a “hacer su parte”, una parte que ha sido acordada en una primera reunión diaria de 15 minutos en la que se coordinan los equipos, sus resultados y próximos objetivos.
No tiene un jefe permanente. Se nombra un jefe en función de cada tarea. Las decisiones, problemas y enfoques se llevan a consenso del grupo. La comunicación entre los miembros del equipo es horizontal.
Tiene un jefe de equipo para las tareas y jefes secundarios para subtareas. La resolución de problemas se hace en grupo. El jefe de grupo distribuye la implementación de tareas entre los subgrupos. La comunicación entre subgrupos e individuos es horizontal. Hay comunicación vertical entre los jefes secundarios y el jefe de equipo.
Hay un único jefe de equipo. Este jefe resuelve los problemas a alto nivel y coordina el equipo. La comunicación es vertical entre el jefe y los miembros del equipo. Fue el primer organigrama que se empezó a aplicar.
Amenazan el plan del proyecto. Si se materializan, aumentan el esfuerzo y/o coste. Identifican problemas potenciales en: Presupuesto, planificación, personal, recursos, participantes y requisitos.
Amenazan la calidad del software. Aparecen cuando el sistema puede ser más difícil de lo esperado. Identifican problemas potenciales en: Requisitos, diseño, implementación, interfaz, verificación, mantenimiento, incertidumbre técnica y tecnologías desconocidas.
Amenazan la viabilidad del proyecto. Identifican riesgos potenciales.
Supervisa el proyecto en previsión de posibles riesgos. Se asignan recursos por si los riesgos se convierten en problemas. No se preocupa de los riesgos hasta que algo va mal. Cuando se falla, entra en acción la gestión de crisis. El proyecto se encuentra en riesgo real.
Comienza antes que los trabajos técnicos. Se identifican riesgos potenciales. Se evalúa su probabilidad y consecuencias. Se produce un plan de gestión del riesgo.
Ejemplo de gestión de riesgo: Falta de experiencia desarrollando proyectos.
RISK, Probability/Impact: Lack of experience developing projects (
Identify
)
Plan de Contingencia (
Manage
):
Es una actividad que distribuye el esfuerzo estimado a lo largo de la duración prevista del proyecto, asignando el esfuerzo a las tareas de trabajo concretas. La planificación temporal no es estática, evoluciona con el tiempo.
El objetivo del gestor es:
El ciclo de gestión se resume en el acrónimo:
Planning (Planificación), Organizing (Organización), Monitoring (Monitorización), Adjusting (Ajuste).
Valor Esperado (VE):
$$VE = (V_o + 4V_m + V_p)/6$$
Cálculo de Esfuerzo y Coste:
$$EFFORT = \frac{424 \text{ (LOC)}}{65 \text{ (LOC/pm)}} = 65 \text{ (pm)}$$
$$COST = 65 \text{ (pm)} \times 780 \text{ (€/pm)} = 5070 \text{ (€)}$$
Donde LOC son Líneas de Código y pm son persona-mes.
Los Function Points pueden usarse para estimar las LOC (Líneas de Código) dependiendo del número promedio de LOC por FP para un lenguaje dado.
$$LOC = AVC \times \text{número de function points}$$
Disciplina de ingeniería multicapa para la aplicación de métodos y herramientas que crean software fiable en máquinas reales (contando con sus restricciones), y que abarca todos los aspectos del mismo (especificación, mantenimiento, administración y gestión).
Un modelo de proceso, o paradigma de IS, es una plantilla, patrón o marco que define el proceso a través del cual se crea software.
Pueden ser: Comunicación con el cliente, Planificación, Análisis de riesgos, Ingeniería, Construcción y adaptación, y Evaluación por el cliente.
Estructura típica de descripción de un caso de uso:
Description. Actors Involved. Actor’s Goal. Windows where takes places. Precondition. PostCondition. Basic Path. Alternative Path.
Describen las funciones y respuestas del sistema ante distintos casos de uso.
Describen restricciones, a nivel de producto (tasa de fallos, memoria mínima), organizativo (lenguajes o procedimientos) o externos (legalidad o ética).
Describen el entorno en que debe funcionar el sistema.
Las pruebas se hacen piramidalmente: primero se prueba cada elemento, luego cada módulo, cada subsistema, el sistema y finalmente se aceptaría el programa.
