Arquitectura de Software lógica y física
Arquitectura física
La Arquitectura Física expresa cuáles son los componentes físicos (cliente, servidor, servidor Web, BD, etc.) que participan en nuestra solución, y la relación entre ellos. (Ochoa D, 2011)
La especificación de la Arquitectura Física normalmente consta de uno o más diagramas, y la explicación de estos (actores y relaciones entre ellos). (Ochoa D, 2011)
En la explicación de los diagramas se debe especificar el nombre y la función de cada actor, y el tipo de relación que existe entre ellos (si existe alguna). También se pueden incluir ejemplos para clarificar aspectos un tanto abstractos. Típicamente, la arquitectura física es una formalización del ambiente operacional definido en el SRD (Docum. de Req. de Software). (Ochoa D, 2011)
Arquitectura lógica
La Arquitectura Lógica expresa cuáles son los componentes lógicos (subsistemas, o macro funciones) que participan en nuestra solución, y la relación entre ellos. La especificación de esta arquitectura es similar a la arq. física. Se especifican actores y relaciones entre ellos, sólo que los actores ahora son: subsistemas de mi solución o macro funciones de la misma. En los diagramas que expresan tanto la arq. lógica como la física, se puede utilizar casi cualquier simbología que clarifique el escenario (DFD, Diagr. de clases, bloques, casos de uso, dibujo informal, etc.) … a menos que existan restricciones al respecto. (Cervantes Meceda, Velasco-Elizondo, & Castro Careaga, 2016)

Patrones de diseño
Un patrón de diseño es una descripción de clases y objetos que se comunican entre sí para resolver un problema de diseño general en un contexto particular. (Universidad Autónoma Metropolitana de Azcapotzalco)
Entre sus elementos se encuentra:
- Nombre del Patrón.
- El problema que resuelve. Se presenta el tipo de problema que se resuelve. Explica el problema y su contexto. Puede incluir las condiciones que deben darse para aplicar el patrón.
- La solución. Describe que elemento forman parte del diseño. La manera en que se relacionan. Sus responsabilidades y cómo colaboran.
- Consecuencias. Resultados a obtener tras aplicar el patrón y las ventajas y desventajas de aplicarlo.(Universidad Autónoma Metropolitana de Azcapotzalco)
El desarrollo de software con patrones de diseño se fundamenta en la mejora de la calidad del sistema generado y las fortalezas; esta forma de desarrollo se basa en las ventajas que ofrecen los patrones de diseño. (Ponce Rodriguez)
Pero cabe recalcar que a pesar de los grandes beneficios que proveen los patrones de diseño, también se deben considerar las debilidades, que si bien es cierto son pocas, estas son lo suficientemente considerables, al punto que pueden anular los beneficios que los patrones ofrecen. (Ponce Rodriguez)
Beneficios del uso de patrones de diseño de software
La idea del uso de patrones de diseño es la de poder establecer soluciones a problemas recursivos en el desarrollo de software, de manera que se los pueda utilizar siempre que se presente el mismo problema; para poder cumplir con esto, las soluciones deberán ser bien definidas. (Ponce Rodriguez)
Los patrones de diseño aportan en varios aspectos a mejorar el proceso de desarrollo de software, entre los aportes más importantes debemos destacar:
- Ofrecen mayor utilidad que los lenguajes de programación para un gran porcentaje de los problemas que se presentan en el desarrollo.
- Proveen una solución más equilibrada.
- Ofrecen un alto nivel de cohesión.
- Fácil identificación de objetos.
- Reutilización de software.
- Reusabilidad, extensibilidad y mantenimiento.
- Ofrecen soluciones concretas.
(Ponce Rodriguez)