Principios de Calidad y Diseño en el Desarrollo de Software
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 6,01 KB
Características de un Sistema de Software de Calidad
Un buen sistema es aquel que cumple con las necesidades del cliente. Para lograrlo, el software debe poseer las siguientes propiedades esenciales:
- UTIL y UTILIZABLE: Un buen software hace más fácil o mejor la vida a las personas.
- CONFIABLE: Un buen software tiene pocos errores y funciona de manera predecible.
- FLEXIBLE: Las necesidades cambian con el tiempo, incluso mientras el software se está desarrollando. Por ello, es importante poder hacer cambios posteriores al software y que este pueda recibir mantenimiento después de ser liberado.
- ACCESIBLE: Tanto para comprar como para mantener. Debe ser razonablemente fácil y rápido poderlo desarrollar o darle mantenimiento.
- DISPONIBLE: De otra forma, no importa cuán bueno sea. Debe ser capaz de ejecutarse en el hardware y con el SO disponible, entre otros factores. El software prometido debe existir y entregarse.
El Mito del Hombre-Mes y la Productividad en Proyectos de Software
El mítico concepto del Hombre-Mes postula que, mientras más personas se integren a un proyecto de desarrollo de un sistema, más tiempo tomará desarrollar el sistema en cuestión.
Debido a la posibilidad de comunicación entre los desarrolladores y a la adición de personas al desarrollo para acelerarlo, al final el proyecto termina retrasándose y con grandes posibilidades de fracasar. Este principio es conocido como la Ley de Brooks.
Principios de Diseño para Sistemas Robustos
Fundamentos de Construcción de Sistemas
Los buenos sistemas se construyen siguiendo un ciclo de vida definido, recolectando datos precisos y adhiriéndose a principios de diseño clave:
- Acoplamiento Bajo: Los módulos deben ser lo más independientes posible.
- Cohesión Alta: Las funciones dentro de un módulo deben estar fuertemente relacionadas.
- Interfaz Definida: Cada módulo debe tener una interfaz clara y bien documentada.
- Encapsulación: Ocultamiento de los detalles internos de un módulo.
- Abstracción: Presentación de solo la información esencial.
- Componente Insertable y Reutilizable: Facilidad para integrar y usar componentes en diferentes contextos.
Cohesión Alta y Abstracción
Los buenos módulos tienen la propiedad de que sus interfaces proveen una abstracción de algo que se entiende intuitivamente, lo cual, sin embargo, puede ser complejo de implementar. Tales módulos se dice que poseen una alta cohesión.
La interfaz realiza una abstracción de las cosas que el desarrollador no tiene que entender para usar el módulo, dejando una visión coherente de lo que el usuario de un módulo quiere conocer.
Abstracción es cuando un cliente de un módulo no necesita saber más de lo que está en la interfaz.
Encapsulación es cuando un cliente de un módulo no es capaz de conocer más de lo que está en la interfaz.
Modularidad e Interfaces Definidas
Aun una interfaz muy pobre para un módulo incorrectamente seleccionado puede hacer a un sistema más fácil de entender y modificar. ¿Por qué?
Cualquier elemento que reduzca lo que tiene que ser conocido acerca de un módulo es beneficioso en varias formas:
- Cuando se desarrolla un módulo, solo se debe entender la interfaz del módulo, no cómo funciona internamente.
- Se pueden ignorar algunos aspectos del sistema, dando prioridad a los que sí necesitan ser conocidos.
- Los errores deberían ser más fáciles de encontrar y corregir.
Conectividad
Conectividad es la propiedad que tienen los componentes de poder ser unidos.
Las partes tienen que ser compatibles entre sí, y eso depende de la presencia de una arquitectura adecuada.
Actores y Requisitos en el Desarrollo de Sistemas
Tipos de Actores
En el contexto del desarrollo de sistemas, los actores se clasifican en:
- Principales: Personas que usan directamente el sistema.
- Secundarios: Personas que mantienen o administran el sistema.
- Material Externo: Dispositivos y materiales de mantenimiento del ámbito de la aplicación.
- Otros Sistemas: Otros sistemas con los cuales este interactúa.
Requisitos del Sistema
Los requisitos definen las funcionalidades y restricciones del sistema. Algunos ejemplos incluyen:
- Fácil uso (Usabilidad)
- Tiempo de respuesta
- Tolerancia a fallos
- Plataforma de desarrollo/implementación
- Fiabilidad y precisión
- Mantenibilidad
- Prioridad de implementación
Determinación de Casos de Uso
Los casos de uso se determinan observando y precisando, actor por actor, las secuencias de interacción desde el punto de vista del usuario.
Intervención de Casos de Uso en el Ciclo de Vida
Los casos de uso intervienen durante todo el ciclo de vida del software, definiendo gráficamente los sucesos que van ocurriendo.
Criterios para un Requerimiento Efectivo
Para que un elemento sea considerado un requerimiento válido, es fundamental:
- Analizar correctamente el problema.
- Entender las necesidades reales del usuario o cliente.
- Documentar formalmente el requerimiento.