ScholarGate
Asistente

Diseño y Arquitectura de Software

El diseño y la arquitectura de software se refieren a cómo un sistema de software se estructura en componentes y conectores, cómo se descomponen las responsabilidades y cómo las decisiones de diseño satisfacen las necesidades funcionales y los atributos de calidad.

Encontrar tema con PaperMindPróximamenteFind papers & topics
Tools & resources
Descargar diapositivas
Learn & explore
VídeoPróximamente

Definition

El diseño de software es el proceso de definir la arquitectura, los componentes, las interfaces y otras características de un sistema, y la arquitectura de software es el conjunto de estructuras que comprenden los elementos del sistema, sus relaciones y las propiedades de ambos.

Scope

Esta área abarca estilos y patrones arquitectónicos (en capas, cliente-servidor, microservicios, impulsado por eventos, tubería y filtro); principios de diseño como modularidad, ocultamiento de información, cohesión, acoplamiento y separación de preocupaciones; diseño orientado a objetos y basado en componentes; patrones de diseño; atributos de calidad arquitectónica y sus compensaciones; y notaciones de modelado como UML utilizadas para expresar diseños.

Sub-topics

Core questions

  • ¿Cómo debe descomponerse un sistema en módulos y componentes?
  • ¿Qué estilo arquitectónico soporta mejor los atributos de calidad requeridos?
  • ¿Cómo guían los principios de diseño como el acoplamiento y la cohesión una buena estructura?
  • ¿Cómo se resuelven los problemas de diseño recurrentes mediante patrones reutilizables?

Key theories

Ocultamiento de información y modularidad
Parnas argumentó que los módulos deben definirse para ocultar las decisiones de diseño propensas a cambiar detrás de interfaces estables, de modo que el cambio se localice; este principio subyace a la modularidad, la encapsulación y el bajo acoplamiento.
Atributos de calidad arquitectónica y compensaciones
La arquitectura está impulsada por atributos de calidad como el rendimiento, la modificabilidad, la disponibilidad y la seguridad; debido a que estos entran en conflicto, la arquitectura se trata fundamentalmente de razonar sobre las compensaciones guiadas por tácticas y patrones.
Patrones de diseño
Los problemas de diseño recurrentes tienen soluciones bien comprendidas y nombradas —patrones creacionales, estructurales y de comportamiento— que capturan la práctica experta y proporcionan un vocabulario compartido para el diseño orientado a objetos.

Clinical relevance

Las decisiones de arquitectura son las más difíciles de cambiar posteriormente y las que más determinan los atributos de calidad de un sistema, por lo que un diseño y una arquitectura sólidos reducen el costo de mantenimiento a largo plazo, permiten la escalabilidad y la evolución, y dan forma a la organización del equipo.

Evidence & guidelines

La norma ISO/IEC/IEEE 42010 estandariza la descripción de la arquitectura, y el área de conocimiento de Diseño de Software de SWEBOK junto con textos de referencia como Software Architecture in Practice proporcionan orientación consensuada.

History

Los principios de diseño modular fueron articulados por Parnas a principios de la década de 1970. El diseño orientado a objetos y los patrones de diseño maduraron en las décadas de 1980 y 1990, la arquitectura de software surgió como una disciplina distinta con el trabajo de Shaw y Garlan a mediados de la década de 1990, y los estilos orientados a servicios y microservicios siguieron en las décadas de 2000 y 2010.

Debates

Arquitectura monolítica versus microservicios
Se debate ampliamente si construir sistemas como un único monolito desplegable o como muchos servicios desplegables de forma independiente; los microservicios ofrecen escalado y despliegue independientes a costa de la complejidad del sistema distribuido, por lo que la elección correcta depende de la escala y la estructura organizacional.

Key figures

  • David Parnas
  • Mary Shaw
  • Len Bass
  • Erich Gamma
  • Grady Booch

Related topics

Seminal works

  • parnas1972
  • gamma1994
  • bass2012

Frequently asked questions

¿Cuál es la diferencia entre diseño y arquitectura?
La arquitectura se refiere a las estructuras de más alto nivel y a las decisiones más costosas de cambiar —componentes principales, sus interacciones y atributos de calidad de todo el sistema—, mientras que el diseño cubre la estructura interna más detallada de esos componentes; el límite es de importancia más que una línea divisoria clara.
¿Por qué son importantes los patrones de diseño?
Los patrones capturan soluciones probadas a problemas de diseño recurrentes y proporcionan a los ingenieros un vocabulario compartido, lo que facilita la comunicación, el razonamiento y la evolución de los diseños; son una guía para aplicar con criterio, no recetas obligatorias.

Methods for this concept

Related concepts