Problemas de software
- Los sistemas no responden a las expectativas de los usuarios.
- Los programas “fallan” con cierta frecuencia.
- Los costos del software son difíciles de prever y normalmente superan las estimaciones.
- La modificación del software es una tarea difícil y costosa.
- El software se suele presentar fuera del plazo establecido y con menos prestaciones de las consideradas inicialmente.
- Normalmente, es difícil cambiar de entorno hardware usando el mismo software.
- El aprovechamiento óptimo de los recursos (personas, tiempo, dinero, herramientas, etc.) no suele cumplirse.
Deficiencias comunes en el desarrollo de software
- Escasa o tardía validación con el cliente.
- Inadecuada gestión de los requisitos.
- No existe medición del proceso ni registro de datos históricos.
- Estimaciones imprecisas de plazos y costos.
- Excesiva e irracional presión en los plazos.
- Escaso o deficiente control en el progreso del proceso de desarrollo.
- No se hace gestión de riesgos formalmente.
- No se realiza un proceso formal de pruebas.
- No se realizan revisiones técnicas formales e inspecciones de código.
Actividades fundamentales:
- Especificación de software: Se debe definir la funcionalidad y restricciones operacionales que debe cumplir el software.
- Diseño e Implementación: Se diseña y construye el software de acuerdo a la especificación.
- Validación: El software debe validarse, para asegurar que cumpla con lo que quiere el cliente.
- Evolución: El software debe evolucionar, para adaptarse a las necesidades del cliente.
Actividades protectoras
Seguimiento y control de proyecto de software.
Revisiones técnicas formales.
Garantía de calidad del software.
Gestión de configuración del software.
Preparación y producción de documentos.
Gestión de reutilización.
Mediciones.
Gestión de riesgos.
Modelos de proceso software
Codificar y corregir
Modelo en cascada
Desarrollo evolutivo
Desarrollo formal de sistemas
Desarrollo basado en reutilización
Desarrollo incremental
Desarrollo en espiral
Calidad del software
Estética
Funcionalidad
Eficiencia
Algunas métricas o indicadores
Índice de productividad = tamaño / esfuerzo = líneas de código generado / horas trabajadas.
Tasa de defectos = defectos / tamaño = número de errores / líneas de código generadas.
CMMI
es un modelo utilizado en el ámbito de la informática para evaluar si una empresa mantiene ciertos niveles de calidad en relación al software.
Las métricas
permiten saber, entre otras cosas, el número o importancia de los errores que se detectan en los tests o correspondientes a reclamaciones recibidas del cliente.
El objetivo de la planificación del proyecto de software es proporcionar un marco conceptual que permita al gerente hacer estimaciones razonables de recursos, costo y calendario. planificación de proyectos de software abarca cinco grandes actividades: Estimación*Calendarización*Análisis de riesgos*Planificación de gestión de la calidad*Planificación de gestión del cambio
Tareas para planificación de proyectos
Establecer ámbito del proyecto.
Determinar la factibilidad.
Analizar los riesgos
Definir recursos requeridos.
a) Determinar recursos humanos requeridos. b) Definir recursos de software reutilizables. c) Identificar recursos ambientales.
Estimar costo y esfuerzo. a) Descomponer el problema. b) Desarrollar dos o más estimaciones usando tamaño, puntos de función, tareas de proceso o casos de uso. c) Reconciliar las estimaciones.
Desarrollar un calendario del proyecto
Establecer un conjunto de tareas significativas.
Definir una red de tareas.
Usar herramientas de calendarización para desarrollar un cronograma.
Definir mecanismos de seguimiento de calendario.
El ámbito se define usando una de dos técnicas:
Una descripción narrativa del ámbito del software se desarrolla después de la comunicación con todos los participantes.
Los usuarios finales desarrollan un conjunto de casos de uso.
Estimar es difícil, ya que:*Los requisitos iniciales no están totalmente delimitados.*Puede que necesitemos utilizar tecnologías nuevas.*Las personas involucradas en el proyecto pueden tener distintos grados de experiencia.
La estimación depende de varios factores:
Complejidad del proyecto.
Tamaño del proyecto.
Estabilidad de los requisitos.
Facilidad de identificar funciones.
Estructura de la información.
Disponibilidad de información histórica
Los recursos pueden estimarse como:
Personas
Componentes de software reutilizables
Herramientas de hardware/software
Estrategias de adquisición de software
- Desarrollo a la medida
- Actualización de sistema heredado
- Personalización de software comercial
- Outsourcing
- Integración de sistema a la medida con software comercial