Introduccion


Untitled

En la arquitectura del software se habla de:

Atravesar todo el camino para atender que es el proceso de desarrollo y como la arquitectura está involucrada en cada uno de los pasos del proceso de desarrollo del software. Cuál es el rol del arquitecto y como el arquitecto puede ayudar al éxito o fracaso de un sistema. Hacer evidente decisiones que a veces son implícitas y nos va ayudar a ser consiente de cuando estamos tomando una decisión arquitectónica en un sistema y cómo hacer para tomar la mejor decisión posible en ese momento.

Etapas del Proceso de Desarrollo de Software


El proceso de desarrollo tradicional tiene etapas muy marcadas, que tienen entradas, procesos y salidas que funcionan como entradas de la siguiente etapa.

Untitled

Análisis de requerimientos

Todo nace de un disparador que nos crea la necesidad de crear un artefacto o un sistema. Necesitamos entender cuál es el problema que queremos resolver. Hay requerimientos de negocio, requerimientos funcionales, requerimientos no funcionales.

Untitled

Diseño de la solución

Análisis profundo de los problemas para trabajar en conjunto y plantear posibles soluciones. El resultado de esto debe ser el detalle de la solución, a través de requerimientos, modelado, etc.

Untitled

Desarrollo y evolución

Implementación de la solución, para garantizar que lo que se esta construyendo es lo que se espera. Al finalizar esta etapa tendremos un artefacto de software.

Untitled

Despliegue

Aquí vamos a necesitar de infraestructura y de roles de operación para poder poner el artefacto a disponibilidad.

Untitled

Mantenimiento y evolución

Desarrollo + despliegue + mantenimiento, en esta etapa estamos atentos a posible mejoras que se hacen al sistema. En esta etapa el software se mantiene hasta que el software ya deja de ser necesario.

Untitled

Dificultades en el Desarrollo de Software


En la etapa de diseño y desarrollo estamos concentrados en encontrar cuáles son los problemas que queremos resolver. Estos problemas los podemos dividir en dos grandes tipos de problemas.

Untitled

Esenciales

Los podemos dividir en 4.

  1. La complejidad intrínseca del problema a resolver: el dominio del problema, sus reglas y su representación precisa. cuándo lo que tenemos que resolver es complejo en si mismo, por ejemplo calcular la mejor ruta entre ciudades.
  2. La conformidad al contexto imperfecto en el que el software existirá.
  3. Tolerancia al cambio por la constante incertidumbre del problema y de su especificación.
  4. Invisibilidad intrínseca del software como artefacto y la dificultad de representar visualmente para ayudar en su comprehension.

Untitled

Accidentales

Está relacionado con la plataforma que vamos a implementar, tecnología, lenguajes, frameworks, integraciones, etc.

Untitled

Considero a la especificación, diseño y comprobación del concepto la parte difícil de hacer software... Si esto es cierto, hacer software siempre será difícil. No existe la bala de plata.”

                                                                **No Silver Bullet (Frederick P. Brooks Jr., 1986)**

Como Resolver las Dificultades Esenciales

Ejemplos de cada uno:

Untitled