Ninguna de las dos respuestas hasta ahora parece abordar su pregunta real. A menos que pueda encontrar algunos proyectos de código abierto con documentación detallada de la arquitectura del software, lo cual dudo mucho. La mayoría de los proyectos de código abierto están dirigidos por personas como yo que solo dedican tiempo libre a trabajar en una idea [christopherpow / nesicide], y el producto final se forma como la acumulación de un planeta a partir de escombros interestelares, en lugar de un inicio cuidadosamente planeado y documentado. arquitectura de software hasta su finalización. Lo triste / divertido es que probablemente también sea el caso en su carrera. La gente se entusiasma al seguir un complejo proceso de desarrollo de software, que convierte el acto de crear software en algo que solo puede hacer en su tiempo libre, porque pasará la mayor parte de su tiempo trabajando para mantener el proceso a flote para mantener la métrica. -Los vendedores felices. Vea mi pregunta: ¿Vale la pena recopilar métricas en proyectos de software?
Ahí, eliminé mi odio al proceso. A tu pregunta.
La arquitectura de software es algo que merece mucha reflexión. Más pensamiento que la escritura real del software para desarrollar la arquitectura misma. La mayoría de las veces encontrará que es útil pensar en su software como una colección de objetos que operan dentro de algunas reglas de colaboración. No quiero decir que debas comprar el libro Patrones de diseño o Análisis y diseño orientado a objetos. No quiero decir que solo debas considerar la programación OO. Simplemente acostúmbrese a pensar en su software como una colección de cosas que pueden hacer cosas a otras cosas. Acostúmbrese a dibujar imágenes de su software, incluso si solo está en Microsoft Visio. [Descargo de responsabilidad: hago todas mis arquitecturas de software en MS Visio. Herramientas como Rose, Rhapsody, Enterprise Architect, etc. son más problemáticas de lo que valen. Se interponen, y son terreno fértil para los traficantes de procesos.] Limite la complejidad de cada cosa a una pila manejable. Si te encuentras poniendo funcionalidad en una cosa que realmente no debería estar allí, según tu descripción inicial de la cosa, entonces reconsidera tu montón de cosas. Si te encuentras intercambiando demasiado estado interno de una cosa por otra cuando intentas hacer que la otra cosa haga algo, reconsidera tu montón de cosas o sus relaciones.
- ¿Cómo debería uno comenzar su objetivo de convertirse en ingeniero de software y trabajar en las principales empresas tecnológicas como Google?
- ¿Es mejor convertirse en desarrollador de software ahora o en el futuro?
- ¿Los ingenieros de Google siguen siendo de primera categoría?
- ¿Los bootcamps de codificación son un movimiento inteligente en lo que respecta a las finanzas, en lugar de una universidad de cuatro años?
- Cómo desarrollar un software de protocolo de transferencia de archivos
Algunos conceptos muy útiles a tener en cuenta con respecto a la arquitectura de software, especialmente para el diseño de la interfaz de usuario, son los conceptos Modelo-vista-controlador. Este modelo le ayuda a separar claramente el comportamiento de su software [un juego, un navegador web, un cliente de correo electrónico, lo que sea] de la interfaz de usuario y cómo el usuario interactúa con el programa.
Creo que el punto más importante es acostumbrarse a dibujar imágenes de su arquitectura de software. Encontrarás imágenes mucho más fáciles de trabajar que el texto. Ni siquiera tiene que ser complicado. Una vez dibujé una imagen de la arquitectura de software de un dispositivo de puente E1 a Ethernet con un cuadro y tres flechas (y algunas anotaciones de texto). Eso fue todo lo que necesitaba para transmitir el concepto. Inherentes a esas flechas hay hilos para manejar la recepción desde un enlace E1, transmitiendo en un enlace Ethernet, y una de las flechas se curvó de un enlace E1 a otro para implicar que el dispositivo también manejó el cruce E1 a E1.
Asistí a una conferencia muy útil sobre “diseño de información” Edward Tufte: Cursos. Este fue, con mucho, el día más maravilloso de mi carrera en términos de ayudar a solidificar en mi mente los pensamientos / sentimientos que habían estado dando vueltas caóticamente: “¡Estamos haciendo esto demasiado sangriento!” La arquitectura del software debe ser simple de transmitir a otros. Si no es así, la arquitectura es demasiado compleja. Volviendo a mi proceso original de quejas: esas mismas personas se entusiasman con las llamativas presentaciones de PowerPoint. Incluso me han acusado de no saber de qué estoy hablando porque mi imagen es demasiado simplista [es decir. no tenía pelusa de PowerPoint y basura llamativa para ofuscar los detalles simples].
Solo tenga en cuenta la simplicidad. Si tiene dificultades para conectar dos cuadros en una mezcla de una arquitectura de software en la página, es probable que le resulte casi imposible de implementar y sangrientamente ridículo intentar probar.
¡Buena suerte!