Fundamentos Esenciales de la Ingeniería de Software: Principios para el Diseño y la Evolución
Enviado por Programa Chuletas y clasificado en Economía
Escrito el en
español con un tamaño de 3,92 KB
Rigor y Formalismo en la Ingeniería de Software
Si bien el desarrollo de software es una actividad “creativa”, la rigurosidad es el complemento necesario en la creación de cualquier actividad de ingeniería.
- El nivel más alto de rigurosidad es el formalismo.
- Formalismo: Requiere que el software sea evaluado y derivado mediante reglas matemáticas y lógicas. (Formalismo implica rigurosidad)
Separación de Intereses (Separation of Concerns)
Este principio distribuye o reparte aspectos individuales y diferentes de un problema, y permite concentrarse en ellos separadamente.
- Es una práctica de sentido común, aplicable en la vida diaria.
- Este principio se aplica en el desarrollo de software para poder manejar la complejidad.
En un proyecto de ingeniería de software se deben tomar múltiples decisiones: del producto, del proceso, etc.
Estrategias para Dominar la Complejidad
Para dominar la complejidad, deben separarse los intereses. Algunas estrategias clave incluyen la separación:
- En el tiempo.
- Según las calidades del producto.
- Según las visiones del software.
Modularidad
Un sistema de software complejo se debe dividir en piezas más simples o módulos. Un sistema modular está compuesto por módulos.
Aplicación de la Separación de Intereses mediante la Modularidad
La organización modular permite aplicar el principio de separación de intereses en dos sentidos:
- Trabajando con los detalles de un módulo en forma aislada.
- Trabajando con todas las características de todos los módulos y sus relaciones para integrarlos.
Abstracción
Es el proceso por el que podemos identificar aspectos importantes de un fenómeno y dejar de lado los detalles.
- Es un caso especial de separación de intereses.
- La abstracción es una técnica poderosa aplicada por los ingenieros.
Anticipación al Cambio
Este principio distingue al software de otros productos de ingeniería. Se basa en la propiedad de maleabilidad del producto.
- La habilidad del software para evolucionar requiere un esfuerzo adicional para anticipar cuándo y dónde se pueden requerir los cambios.
- El principio de anticipación al cambio se usa para alcanzar las cualidades de evolutividad y reusabilidad.
Generalidad
Antes de resolver un problema, se debe descubrir la familia de problemas a la que pertenece.
Ventajas de la Generalidad
- El problema más general no es siempre más complejo.
- Generalizando la solución del problema se obtienen módulos reusables.
- Es posible que la solución ya esté provista.
Desventajas y Consideraciones
- La generalidad tiene desventajas: puede ser más costosa en tiempos de ejecución, requerimientos y tiempos de desarrollo.
- El ingeniero de software deberá decidir qué enfoque conviene.
- Es fundamental si se desarrollan herramientas de propósito general.
Incrementalidad
Caracteriza a los procesos que se construyen por “adelantos” basados en el anterior.
- Una manera de aplicar este principio consiste en identificar los primeros subconjuntos útiles de una aplicación para desarrollar y distribuir.
- Favorece la retroalimentación (feedback) entre desarrolladores y clientes.
- Si los incrementos no son documentados, el desarrollo de software rápidamente se transforma en una tarea no disciplinada.
Conclusión
La Incrementalidad y la Anticipación al Cambio son pilares fundamentales de la evolución del software.