* Requisitos de definición: Esto implica comprender a fondo las necesidades y objetivos de los usuarios y las partes interesadas. Esto incluye requisitos funcionales (lo que debe *hacer *) y requisitos no funcionales (cómo debe *realizar *, por ejemplo, escalabilidad, seguridad, rendimiento). Sin requisitos bien definidos, es probable que el software no cumpla con su propósito previsto.
* Desarrollo de una arquitectura integrada: Esto implica el diseño de la estructura general y la organización del sistema de software. Esto abarca la selección de tecnologías, la interacción entre diferentes componentes y el flujo de datos. Una arquitectura bien diseñada asegura que el sistema sea escalable, mantenible, confiable y eficiente. La arquitectura también debe alinearse con los requisitos definidos.
Estas dos actividades no son secuenciales; A menudo se informan e influyen iterativamente. Por ejemplo, las opciones arquitectónicas pueden afectar la viabilidad de ciertos requisitos, lo que lleva a ajustes en los requisitos o en la arquitectura. Un buen proceso de diseño de software incorpora bucles de retroalimentación entre estas dos actividades.