Fundamentos diseño de software

Ingeniería y diseño del software

Definición según Taylor

image

"Proceso de aplicar distintas técnicas y principios con el propósito de definir un dispositivo, proceso o sistema con los suficientes detalles como para permitir su realización física"

Diseño arquitectonico

Diseño procedimental

Diseño de datos

Modelo de campo de información, en estructuras de datos

Definición de relaciones entre principales elementos estructurales del programa

Transforma elementos estructurales en una descripción procedimental del software

Proceso de diseño

2 etapas:

Diseño preliminar

Diseño detallado

Transformación de los requisitos en los datos y la arquitectura del software

Refinamiento y representación arquitectónica del software

Diseño y calidad del software

La calidad del diseño se evalúa con una serie de Revisiones Técnicas Formales (RTF)

Verificar que el software alcanza sus requisitos.

Garantizar que el software se ha representado según los estándares
establecidos.

Hacer que los proyectos sean manejables.

Descubrir los errores en la función, la lógica o la implementación

Conseguir un software desarrollado de forma uniforme.

Características comunes de las metodologías de diseño

Heurísticas para el refinamiento y la partición

Criterios para la valoración de la calidad

Notación para representar los componentes funcionales y sus
interfaces

Mecanismo para la traducción de requisitos

Fundamentos del diseño

Abstracción

De datos

Procedimental

Conjunto de datos que describen un
objeto

Secuencia de instrucciones que tienen una función limitada y específica

Refinamiento

Se desarrolla una jerarquía descomponiendo una función de forma sucesiva hasta que se llega a las sentencias del lenguaje de programación

Modularidad

Componentes con nombres y ubicaciones
determinados que se integran para satisfacer los requisitos

Mientras menos, mejor, pero hasta cierto punto

Arquitectura del software

Se obtiene mediante un proceso de partición, que relaciona los problemas del mundo real con las soluciones software

Se divide en dos

La estructura jerárquica de los módulos del software

La estructura de los datos

Jerarquía de control

Representa la
organización jerárquica de los módulos de un programa

Se suele representar con diagramas de árbol

Estructura de datos

Representación de la lógica que existe entre los elementos individuales de información

Dicta la organización, los métodos de acceso, el grado de asociatividad y las alternativas para el tratamiento de la información

Procedimientos del software

Se centra en los detalles de procesamiento de cada módulo individual

Debe proporcionar una especificación precisa del procesamiento

Ocultamiento de información

La información contenida dentro de un módulo debe ser inaccesible a otros módulos que no necesiten tal información

Diseño modular efectivo

Tipos de módulos

Independencia funcional

Secuenciales

Incrementales

Paralelos

Se ejecutan sin interrupción aparente por parte del software

Se ejecuta a la vez que otro módulo en entornos multiprocesadores

Pueden ser interrumpidos antes de
que terminen por el software de la aplicación, y restablecerse posteriormente su ejecución en el punto en que se interrumpió.

Cohesión

Acoplamiento

Un módulo cohesivo realiza, idealmente, una función

Medida de la interconexión entre los módulos de una estructura de programa

Se busca una alta cohesión

Se busca un bajo acoplamiento

image

image

image