He hecho esta transición recientemente y puedo evaluar objetivamente las diferencias entre ingenieros y arquitectos. Primero profundizaré en lo que un arquitecto debería ser capaz de hacer.
El arquitecto necesita diseñar el sistema para que estos atributos de calidad sean los mejores.
CALIDADES DE DISEÑO
- ¿Aconseja dejar caer un año para obtener un B.Arch?
- ¿Debo abandonar mi sueño de unirme a la marina mercante si uso gafas de alta potencia?
- Cómo cambiar exitosamente de una carrera de trabajo técnico a una de trabajo social
- Soy un ingeniero de software de 22 años de la India que comenzará a trabajar en el Área de la Bahía en mayo. ¿Cómo debo comenzar a construir mi cartera de rupias?
- ¿Cuántas asignaturas hay en la AMIE?
Integridad conceptual:
Decidir sobre el estilo de codificación, denominación variable.
Ejemplo : simple es mejor que complejo. La legibilidad cuenta. Si la implementación es difícil de explicar, es una mala idea … Para más información, visite Zen of Python.
Mantenibilidad :
El sistema debe sufrir cambios (componentes, arreglos, funcionalidad) con facilidad.
Ejemplo : Un buen ejemplo es la diferencia entre un acoplamiento apretado y sin apretar. Para obtener más información, consulte esta publicación en StackOverflow
Reusabilidad :
Capacidad para que los componentes y subsistemas sean adecuados para su uso en otras aplicaciones y en otros escenarios.
Ejemplo : Parte de la lógica empresarial se puede dividir en subsistemas separados que pueden interactuar entre sí a través de las API REST.
CALIDADES DE TIEMPO DE EJECUCIÓN
Disponibilidad :
La disponibilidad define la proporción de tiempo que el sistema es funcional y funciona.
Ejemplo : configuración de alta disponibilidad de GitHubs, replicación de los principales almacenes de datos. Si se interrumpe un servicio, la instancia de réplica se puede activar y conmutar por error en cinco minutos.
Interoperabilidad :
La capacidad de un sistema para funcionar con éxito mediante la comunicación de información con terceros.
Ejemplo : servicios REST o estándares web semánticos como RDF u OWL.
Capacidad de administración :
Qué fácil es para los administradores del sistema administrar la aplicación.
Ejemplo : para evitar la configuración específica de la plataforma, se podría considerar la virtualización con Docker o Vagrant.
Rendimiento :
Capacidad de respuesta del sistema.
Ejemplo : esta es un área tan amplia que abarca desde los principios de diseño de la base de datos hasta el estilo de codificación, un ejemplo sería:
SELECT COUNT (*) FROM image_thumbs; -> 8391.118 ms
SELECCIONE reltuples DESDE pg_class WHERE relname = ‘image_thumbs’; -> 112.018 ms
Fiabilidad
Capacidad de un sistema para permanecer operativo en el tiempo.
Ejemplo : Un ejemplo de una mala confiabilidad es un sistema que comienza a retrasarse durante un período de tiempo razonable.
Escalabilidad :
Aumento de la carga sin un impacto en el rendimiento del sistema o la capacidad de ampliarse fácilmente.
Ejemplos : Algunos buenos principios para mantener la escalabilidad incluyen el almacenamiento en caché, la comunicación asincrónica o las aplicaciones sin estado.
Seguridad :
Prevenir acciones maliciosas o accidentales.
Ejemplos : también un área muy amplia, algunos ejemplos pueden incluir no guardar información de la tarjeta de crédito o tener claves de seguridad solo en las variables de entorno.
CALIDADES DEL SISTEMA
Capacidad de soporte :
Proporcione información útil para identificar y resolver problemas.
Ejemplos : uso de herramientas de monitoreo o herramientas de depuración como TCat o Google Chrome DevTools.
Testabilidad :
Qué fácil es crear criterios de prueba para el sistema y sus componentes.
Ejemplos : Esto puede sonar contra-intuitivo, pero el enfoque propuesto es primero escribir la prueba unitaria y luego comenzar a codificar los trabajos. La abstracción del problema es mucho más clara y también se tiene una idea de cómo se utilizará el componente.
CALIDAD DEL USUARIO
Usabilidad:
Buena experiencia general del usuario (requisitos del usuario, localización, diseño intuitivo).
Ejemplo : Principios de Google Material Design que sintetiza los principios clásicos del buen diseño con la innovación y la posibilidad de la tecnología y la ciencia.
Los ingenieros de software deben cumplir con estas reglas dadas por los arquitectos.
Fuentes:
Capítulo 16: Atributos de calidad
Django de alto rendimiento: Peter Baumgartner, Yann Malet: 9781508748120: Amazon.com: Libros
¿Qué es el “acoplamiento flojo”? Por favor proporcione ejemplos
PEP 20 – El zen de Python
Configuración de alta disponibilidad
Patrones de diseño (o técnicas) para la escalabilidad
Introducción – Diseño de materiales – Pautas de diseño de Google