Introducción
En las metodologías ágiles, como Scrum, Kanban y XP (Extreme Programming), no se define específicamente un rol de "arquitecto software" como se hace en metodologías más tradicionales como RUP (Rational Unified Process).
RUP es un marco de desarrollo de software que proporciona un enfoque disciplinado y estructurado para la creación de sistemas y aplicaciones de software.
Se organiza en fases que representan etapas claramente definidas del proceso, como Inicio, Elaboración, Construcción y Transición. Cada fase se compone de disciplinas, como la gestión de proyectos, el análisis de requisitos, el diseño de software y las pruebas, que definen las actividades y los artefactos correspondientes a cada etapa del proceso.
Esfuerzo en actividades según fase del proyecto.
A continuación se definen las distintas fases así como el rol que desempeña un Arquitecto Software en cada una de ellas.
Fase de Iniciación
En esta fase se establece la visión del proyecto, se identifican los objetivos y las necesidades del negocio, se realiza un análisis de viabilidad y se define el alcance del proyecto. También se identifican los principales riesgos y se elabora un plan preliminar para el proyecto.
Artefactos de salida
Visión del proyecto: establece la visión, los objetivos y el alcance del proyecto desde una perspectiva estratégica.
Plan de proyecto preliminar: proporciona una descripción detallada de cómo se organizará y ejecutará el proyecto desde una perspectiva de gestión. Este plan es una versión inicial del plan de proyecto completo y brinda una visión general de las actividades, los recursos, el roadmap a seguir y los riesgos asociados con el proyecto.
Diagrama del modelo de dominio: representación gráfica que muestra las entidades y las relaciones clave dentro del ámbito del sistema o aplicación que se está desarrollando.
Diagrama de casos de uso: representación gráfica que describe las interacciones entre los actores (usuarios o sistemas externos) y el sistema o aplicación que se está desarrollando. El diagrama de casos de uso muestra las diferentes funcionalidades del sistema y cómo los actores interactúan con él.
Lista de riesgos: Estos riesgos pueden estar relacionados con diversos aspectos del proyecto, como la tecnología, los recursos humanos, los requisitos, el roadmap, etc.
Requisitos No Funcionales:
Tecnologías: se incluyen tecnologías a utilizar como el lenguaje de programación (PHP, Javascript), frameworks (Symfony, React), el mecanismo de persistencia (Sql Server, Mysql), el sistema de mensajería (RabbitMq) u otras tecnologías que se hayan adoptado en la empresa.
Seguridad: incluye las distintas soluciones que se hayan adoptado para resolver problemas de seguridad. Por ejemplo, si una aplicación es pública o si se tiene que acceder por la VPN.
Rendimiento: Casos de uso que tengan que realizarse en menos de un tiempo determinado.
Concurrencia:
X cantidad de usuarios ejecutando un caso de uso en un tiempo determinado sin afectar al rendimiento del caso de uso. Por ejemplo, el sistema tiene que permitir a 100 usuarios solicitar “Crear un pedido” de manera concurrente respondiendo a cada uno de ellos en menos de 1 segundo.
X cantidad de usuarios ejecutando un caso de uso que requiere de un único recurso. Por ejemplo, cuando dos usuarios solicitan “Seleccionar el router por número de serie” el sistema mostrará a uno de ellos el mensaje “El router ha sido seleccionado” mientra que al otro mostrará el mensaje “No se ha podido seleccionar el router por ya estar seleccionado”.
No hay comentarios:
Publicar un comentario