You are on page 1of 6

El diseño del software generalmente se considera

un proceso de dos pasos:


 Diseño arquitectónico: describe cómo el
software se descompone y organiza en
componentes (la arquitectura del software).
 Diseño detallado: describe el comportamiento
específico de estos componentes.
La salida de este proceso es un conjunto. de
modelos y artefactos que registran las principales
decisiones que se han tomado.

PRINCIPIOS DE DISEÑO DE SOFTWARE


Abstracción: dos mecanismos de abstracción clave
son la parametrización y la especificación. La
abstracción por especificación conduce a tres tipos
principales de abstracción:
 abstracción procesal
 abstracción de datos
 control (iteración) abstracción.
"Acoplamiento y cohesión": El acoplamiento se
define como la fuerza de las relaciones entre los
módulos, mientras que la cohesión se define por la
forma en que se relacionan los elementos que
componen un módulo.
"Descomposición y modularización".:Descomponer
y modularizar software grande en varios más
pequeños e independientes.
Encapsulación / ocultación de información:
Significa agrupar y empaquetar los elementos y
detalles internos de una abstracción y hacer que
esos detalles sean inaccesibles.
Separación de la interfaz e implementación.
Implica la definición de un componente mediante la
especificación de una interfaz pública, conocida por
los clientes, separada de los detalles de Cómo se
realiza el componente.
"Suficiencia e integridad". Lograr la suficiencia y la
integridad significa garantizar que un componente
de software capture todas las características
importantes de una abstracción, y nada más.

CUESTIONES CLAVE EN EL DISEÑO DE SOFTWARE


Concurrencia: cómo descomponer el software en
procesos, tareas e hilos y tratar los problemas
relacionados con la eficiencia, la atomicidad, la
sincronización y la programación. Control y manejo
de eventos: Cómo organizar datos y controlar el
flujo, cómo manejar eventos reactivos y temporales
a través de diversos mecanismos, tales como la
implicación implícita y la devolución de llamadas.
Distribución de componentes: Cómo distribuir el
software en el hardware, cómo se comunican los
componentes, cómo se puede usar el middleware
para tratar con software heterogéneo.
Manejo de errores y excepciones y tolerancia a
fallos: Cómo prevenir y tolerar fallos y lidiar con
condiciones excepcionales .
Interacción y presentación: Cómo estructurar y
organizar las interacciones con los usuarios y la
presentación de información (por ejemplo, la
separación de la presentación y la lógica
empresarial mediante el enfoque Modelo-Vista-
Controlador).
Persistencia de los datos: Cómo se manejarán los
datos de larga duración

El diseño arquitectónico tiene que ver con


comprender cómo se debe organizar un sistema y
diseñar la estructura general de ese sistema.
Una vista representa un aspecto parcial de una
arquitectura de software que muestra propiedades
específicas de un sistema de software:
 la vista lógica (que satisface los requisitos
funcionales)
 La vista de proceso (problemas de
concurrencia)
 la vista física (problemas de distribución)
 la vista de desarrollo (cómo el diseño se divide
en unidades de implementación con
representación explícita de las dependencias
entre las unidades).
ATRIBUTOS DE CALIDAD
Por lo general, se considera que varios atributos son
importantes para obtener un diseño de software de
buena calidad: mantenibilidad, portabilidad,
comprobabilidad, trazabilidad, corrección,
rendimiento, seguridad, disponibilidad,
funcionalidad, facilidad de uso, modificabilidad,
integridad.

DEFINICIÓN DE ARQUITECTURA DE SOFTWARE


La arquitectura de software es el diseño de más alto
nivel de la estructura de un sistema.
Una arquitectura de software consiste en un
conjunto de patrones y abstracciones coherentes
que proporcionan un marco definido y claro para
interactuar con el código fuente del software. Una
arquitectura de software se selecciona y diseña con
base en objetivos (requisitos) y restricciones. La
arquitectura de software define, de manera
abstracta, los componentes que llevan a cabo
alguna tarea de computación, sus interfaces y la
comunicación entre ellos.
DESCRIPCIONES ESTRUCTURALES (VISTA ESTÁTICA):
 Describe qué componentes tiene la
arquitectura.
 Lenguajes de descripción de arquitectura (ADL):
lenguajes textuales, a menudo formales,
utilizados para describir una arquitectura de
software en términos de componentes y
conectores.
 Diagramas de clase y objeto.
 Diagramas de componentes.
 Tarjetas de responsabilidades de colaboración
(CRC): se utilizan para denotar los nombres de
los componentes (clase), sus responsabilidades
y los nombres de sus componentes
colaboradores.
 Diagramas de implementación: se utilizan para
representar un conjunto de nodos (físicos) y sus
interrelaciones y, por lo tanto, para modelar los
aspectos físicos de un sistema.
 Diagramas de entidad-relación (ERD).
 Lenguajes de descripción de interfaz (IDL):
programación como lenguajes utilizados para
definir las interfaces (nombres y tipos de
operaciones exportadas) de los componentes
de software.
DESCRIPCIONES DE CONDUCTA (VISTA DINÁMICA):
 describe cómo se comportan los componentes
a lo largo del tiempo y como interactúan entre
sí.
• Diagramas de actividad
• Diagramas de colaboración.
• Diagramas de flujo de datos (DFDs)
• Tablas de decisión y diagramas.
• Diagramas de flujo y diagramas de flujo
estructurados.
• Diagramas de secuencia
• Transición de estados y diagramas de
diagramas de estado.
• lenguajes de especificación formal
• Pseudocódigo y lenguajes de diseño de
programas (PDL)

You might also like