¿Cuál es la diferencia entre arquitectura de software y desarrollo de software?

Mi opinión: de niveles inferiores a superiores:

  • Los programadores informáticos escriben programas. Se ocupan principalmente de la programación de computadoras y el código. Podrían llamarse codificadores . Dado que esta es una visión limitada del mundo, estas funciones de trabajo estrechas y títulos de trabajo ya no son comunes.
  • Los desarrolladores de software tienen una vista más amplia. Además de la programación, están preocupados por otros aspectos más importantes del desarrollo de software, incluidos el diseño y las pruebas.
  • Los ingenieros de software tienen un título de trabajo más común, aunque son esencialmente los mismos que los desarrolladores. El título implica que practican una forma más estricta de Ingeniería de Software
  • Los arquitectos de software trabajan a nivel de arquitectura de software. Esto es más alto que el desarrollo, ya que considera decisiones de alto nivel, incluidas las plataformas, el entorno en el que se ejecuta el programa e incluso la consideración comercial. Tiene algunos aspectos en común, o puede considerarse como una disciplina de la arquitectura empresarial.

La arquitectura de software puede considerarse como las “decisiones de diseño principales sobre un sistema”: los arquitectos de software toman las decisiones de diseño dadas las diversas funcionalidades comerciales y no funcionales, es decir, los niveles de requisitos de servicio de las diversas partes interesadas y otros sistemas externos que deberían Necesito hablar con

Los desarrolladores de software codifican el diseño (macro) anterior y pueden (y lo hacen) tomar decisiones de diseño a nivel micro para ayudar a lograr / satisfacer las limitaciones impuestas por el arquitecto (ure). Muy a menudo, una decisión de diseño de desarrollo podría convertirse en una decisión arquitectónica: el arquitecto no lo pensó o pensó de manera diferente que el desarrollador; y la forma de los desarrolladores fue mejor por alguna razón.

Es bastante iterativo, pero como un usuario de Anon mencionó “Primero, arquitecto, luego codifica”, pero esto solo es posible si el entorno es lo suficientemente estable y una buena arquitectura se puede ‘predecir’ en esencia con los cambios previsibles. De lo contrario, la filosofía de que “el código es diseño” con una refactorización disciplinada valdría más la pena ya que el entorno sería demasiado caótico. Sin embargo, ciertas decisiones de alto nivel aún se tomarían antes de la codificación. Por ejemplo: diseñar una aplicación web RESTful o usar un MoM (Middleware orientado a mensajes) para hablar con servicios externos, etc. Así que realmente no puede escapar de la arquitectura, excepto para proyectos de juguetes.

Entonces, si piensa en la arquitectura como “decisiones de diseño principales de un sistema”, la diferencia entre un arquitecto y un desarrollador sería más pronunciada. El que toma las decisiones es el primero y el que se desarrolla obedeciendo esas decisiones es el segundo.

Creo que una mejor pregunta sería “¿Cuál es la diferencia entre la arquitectura de software y el desarrollo de software”. En mi opinión, independientemente de su título, ambos son su responsabilidad. El título simplemente sugiere un enfoque principal.

Los equipos de desarrollo de software de mayor rendimiento emplean arquitectos que codifican y codifican a ese arquitecto. El problema surge cuando los desarrolladores de software no le dan la debida consideración a la arquitectura general: tanto de su propia aplicación como de cómo su aplicación se adapta a la infraestructura de TI más grande de la organización. Igualmente perjudicial es un arquitecto que elige no codificar, lo que a menudo conduce a diseños de arquitectura idealistas y poco realistas.

Un enfoque primario (código o arquitectura) es valioso siempre que no sea exclusivo del otro. El enfoque principal de un desarrollador debe ser producir código bien diseñado y mantenible. El enfoque principal de un arquitecto debe ser permitir a los desarrolladores crear una aplicación bien diseñada que se integre bien con la infraestructura de TI más grande en su conjunto.

Trataré de responder esto con una analogía. Si desea construir una casa, consulte a un arquitecto, que dibuja el plan también llamado plan y luego el ingeniero de construcción y su equipo construyen la casa. El arquitecto de software es similar al arquitecto en este escenario, y diseña la aplicación (qué usar, cómo, dónde, por qué, etc.) y el equipo de desarrollo de software lleva el desarrollo.

Un desarrollador sabe lo que se puede hacer. Un arquitecto sabe lo que debe hacerse.

Primero eres Arquitecto, luego codificas.