¿Cómo y por qué se separa una arquitectura de software en niveles o capas?

El acto mismo de escribir software (no escrito en código de máquina) utiliza inherentemente estas capas. Los lenguajes de programación en sí mismos son una abstracción, al igual que las API del sistema y los kits de herramientas. La abstracción ha estado en el corazón del software más o menos desde su inicio. La razón de esta abstracción es en gran medida hacer que el software sea más fácil de escribir y comprender mientras se aprovecha el trabajo de otros. Las tareas más complejas se dividen en funciones u objetos que ofrecen un mecanismo de nivel más alto que el que puede utilizar otro código fuente, evitando la complejidad de la implementación subyacente.

El número de capas depende demasiado de la naturaleza del problema para responder de manera sucinta. En general, las capas están ahí para ayudar al desarrollador, pero son un equilibrio entre la complejidad localizada y la jerarquía excesiva.

Distinguir y distribuir responsabilidades, si se hace de manera correcta y pragmática, brindará una serie de beneficios a sus proyectos:

  • Más fácil de entender El código será más fácil de entender, no solo para los desarrolladores que lo escribieron, sino también para los pobres que tienen que mantener el código una vez entregado. El código es más fácil de mantener cuando sabes dónde encontrarlo. El código se vuelve trazable.
  • Más fácil de escribir . He desarrollado aplicaciones durante más de veinte años, creo que tengo derecho a decir que un día de trabajo es más divertido escribir software bajo arquitectura. Es más limpio, más sereno.
  • Más fácil de probar . Aunque personalmente considero que probar software no es lo más divertido, creo que el software que está escrito bajo arquitectura es mucho más modular. Esto permite definir la unidad independiente mucho mejor, lo que hace que la prueba de la unidad sea más fácil y mejor. De hecho, la capacidad de prueba es uno de los motivos principales para definir su arquitectura en capas. Diseñe teniendo en cuenta las pruebas.
  • Más fácil de extender . Por último, pero no menos importante, tener una arquitectura en capas en su lugar le permitirá agregar nuevas características o cambiar las características actuales más fácilmente. Agregar un nuevo caso de uso al sistema, o extender las reglas de negocios en un objeto de dominio particular mucho más difícil si el proceso o la lógica de negocios se extienden por todo el código.

More Interesting

Escriba un programa que tome una matriz de enteros y devuelva una matriz de los productos de todos los enteros, excepto en el índice. Entrada: [1, 7, 3, 4] Salida: [84, 12, 28, 21] La siguiente será la forma de cálculo: [7 * 3 * 4, 1 * 3 * 4, 1 * 7 * 4, 1 * 7 * 3] NOTA: debe hacer esto en O (n) tiempo y O (n) espacio.

Escuché que con una licenciatura, para los ingenieros de software, tienes menos seguridad laboral que una maestría y tu salario alcanza un pico temprano, ¿es esto cierto?

Si alguien falla en su segundo año en ingeniería de software, ¿qué pasaría después de su cuarto año?

Cómo mostrar el ROI del negocio al agregar un desarrollador de software adicional a nuestro equipo

¿Cuál es la tasa de éxito de la programación funcional en comparación con otras estrategias de programación?

¿Qué son los patrones de comprensión y cómo se relacionan con el diagrama de secuencia?

¿Por qué la mayoría de los trabajos de software están en desarrollo web?

¿Cuáles son algunos recursos / software útiles para desarrolladores que usan Linux?

¿Es útil una certificación A + o una certificación Linux + para alguien que intenta entrar en el desarrollo de software con antecedentes que no son CS?

Si conoce muy bien C y Java, ¿qué otros lenguajes vale la pena aprender?

¿Cómo sería para los programadores / programadores si no hubiera www.stackoverflow.org?

¿Existe un software de computadora que clasifique las acciones de acuerdo con un criterio dado?

¿Qué tipo de proyecto expondría uno a muchos conceptos de programación concurrentes?

¿Por qué los sistemas operativos son tan grandes?

¿Cómo se pasa de ser un programador promedio a ser un buen programador?