La clave para gestionar la complejidad es la abstracción. También diría que es muy importante cuando se maneja un gran proyecto para poder retroceder a una vista de “milla de alta pulgada de profundidad”.
Por favor, dime ¿estás preguntando porque:
- Quiere pasar al siguiente nivel
- Quiere trabajar en un proyecto complejo existente
- ¿Desea comenzar un proyecto complejo y no sabe por dónde comenzar?
También depende del medio ambiente.
Las redes y los sistemas operativos son muy complejos, pero abstraen esto con capas. En un sistema operativo, tiene la capa de abstracción de hardware (HAL) y luego la capa de kernel, además de la capa de usuario y, en la parte superior, en el sentido de que tiene la capa de aplicación con la que interactúa el usuario, cada capa inferior se vuelve cada vez más especializada.
- ¿Qué son las pruebas rápidas de software y cuál es la diferencia con las pruebas exploratorias?
- ¿Cuál es la tasa de éxito de la programación funcional en comparación con otras estrategias de programación?
- Pruebas de rendimiento: ¿diferencia entre la línea de base y la referencia?
- ¿En qué circunstancias es aceptable no escribir pruebas automatizadas para su código?
- ¿Qué tan difícil es programar un software como Facebook?
Dentro de una sola capa, como la capa Kernel, todavía tiene mucha complejidad, no desea que el sistema de archivos tenga que preocuparse por cuándo se debe ejecutar el código en el procesador o la seguridad del sistema, por lo que tiene diferentes servicios independientes en ejecución en sus propios silos, como el servicio del sistema de archivos frente al programador del procesador.
Si bien desea mantener los servicios en una sola capa felizmente ignorantes entre sí, desea que puedan comunicarse entre sí cuando lo necesiten, si el usuario hace clic en el botón Nueva carpeta, no podrá contar el Archivo Sistema para crear un nuevo directorio. Entonces, tiene un sistema de mensajes o eventos para señalizarse entre sí.
Si estás en un nivel mucho más alto, sigue siendo el mismo. Los programas orientados a objetos usan objetos para abstraer la complejidad. Los mensajes se pasan entre objetos llamando a funciones / métodos. Para mayor complejidad, desea utilizar patrones de diseño http://en.m.wikipedia.org/wiki/D…
Incluso para sistemas más modernos, está buscando agrupar su software en servicios independientes (compuestos de código organizado en patrones) y hablar entre ellos mediante un sistema de mensajería estándar como SOAP / REST