Esto variará según la persona, pero aquí hay una pregunta para ti. ¿Está absolutamente seguro de que sabe lo que es un sistema? ¿Puedes identificar un sistema, cualquier sistema, e identificar sus límites exactos? ¿Es el sitio web de Quora un sistema? ¿Está seguro de que lo sabe? ¿Cuáles son sus límites exactos?
Para mí, responder a estas preguntas es donde comienza la arquitectura de software.
Hay un libro que tiene unos cuantos capítulos sobre los fundamentos del análisis de sistemas. Es el único que he visto. Es un libro antiguo, pero los principios básicos de lo que son los sistemas no cambian.
Sin esa base, la arquitectura de software no tiene sentido para mí. La gente consigue hacer cosas todo el tiempo sin ataduras firmes a los fundamentos, así que' depende de ti. Para los fundamentos que acabo de mencionar, "Modern Systems Analysys", de Ed Yourdon. La mayor parte del libro está dedicada al estudio de los diagramas de flujo de datos. Ese tema en ese libro debe ser ignorado y rechazado como inútil y un mal uso del tiempo. Los capítulos sobre los fundamentos de los sistemas son casi impagables.
¿Quieres saber los límites exactos del sistema Quora? Te lo diré, y tú serás el juez de su corrección. Los límites exactos sólo pueden determinarse mediante definiciones arbitrarias. Puede que esta pantalla de mi teléfono forme parte de Quora, puede que no, depende de dónde quieras trazar la línea. Sin embargo, aunque los límites exactos son arbitrarios, son importantes, porque donde pones el límite afecta a cómo gestionas tu esfuerzo en tu trabajo con el sistema. ¿Suena bien?
Ed proporciona una lista de cosas que es bueno saber sobre los sistemas. Que los límites son arbitrarios es un punto. Esa lista es genial. Realmente ayuda a saber que los sistemas crecen. Ese es otro elemento de la lista.
Tema de bonificación: asegúrese de que lo suficiente sobre el software orientado a objetos que usted sabe por qué es bueno y también por qué el software no orientado a objetos es igualmente bueno. Tendrás que discutir con la sabiduría convencional para eso, y hacer frente a los fanáticos.
BONUS 2: Para entender la arquitectura de datos, escribe programas que usen sql. Sql es el lenguaje de los datos, no hay forma más eficiente de entender los datos y su estructura que sumergirse en sql para lograr las cosas que necesitas hacer. Todas las demás construcciones de datos son complicaciones.
BONUS 3: entender los sistemas de archivos y el papel que juegan en el software.
BONUS 4: saber qué es una red.
BONUS 5: todo el software está hecho con archivos que almacenan comandos para leer y escribir datos y otros archivos que son accesibles en una red. Una vez que estés a mano con ese concepto, todo el tema de la arquitectura es mucho más fácil de entender.
BONUS 6: la arquitectura del software te lleva un minuto y ya está. Hacer que los sistemas funcionen independientemente de la arquitectura es donde se va el tiempo.
Diviértete leyendo.