Anda di halaman 1dari 29

ARQUITECTURA DE SOFTWARE

¿ES NECESARIO?
¿Qué es Arquitectura?
Arquitectura de Software

“La Arquitectura del Software de un programa


o sistema de cómputo es la estructura o las
estructuras del sistema, que incluyen los
componentes del software, las propiedades
visibles externamente de esos componentes y
las relaciones entre ellos”
La Arquitectura del Software no es el software
operativo. En cambio, es una representación que permite
que un ingeniero del software:

• Analice la efectividad del diseño para cumplir con los


requisitos establecidos.

• Considere opciones arquitectónicas en una etapa en que


aún resulta relativamente fácil hacer cambios al diseño.

• Reduzca los riesgos asociados con la construcción del


software.
¿Por qué es importante la
Arquitectura de Software?

• Las representaciones de la Arquitectura del Software permiten la


comunicación entre todas las partes (participantes) interesadas en
el desarrollo de un sistema de cómputo.

• La Arquitectura destaca las decisiones iniciales relacionadas con


el diseño que tendrán un impacto profundo en todo el trabajo de la
ingeniería del software que le sigue y, lo que también resulta
importante, en el éxito final del sistema como entidad operacional.

• La Arquitectura “constituye un modelo relativamente pequeño e


intelectualmente comprensible de cómo está estructurado el
sistema y cómo trabajan juntos sus componentes”.
¿ES NECESARIO?
HACER SISTEMAS DE
SOFTWARE ES UNA TAREA
COMPLEJA…
¿Cuál es la complejidad?
Factores de éxito

Sin embargo:
• Sólo 28% de los proyectos son completados a tiempo y en presupuesto
(toda la muestra).
• 24% en empresas grandes.
• 32% en empresas pequeñas.
• 46% de los proyectos sobrepasaron sus estimados originales ($22
billones por encima).
• 28% de los proyectos son cancelados antes de completarse ($75
billones antes de cancelarse) Standish Group 2004.

¿por qué estos resultados son tan malos?


Razones de Fracaso
Razones de Éxito
¿Cuál es la complejidad?

Necesidades

• La ingeniería de software nos llevó a ver el


proceso de desarrollo del software como un Diseño
proceso de ingeniería.

• Este proceso es complejo y variable.


Codificación Código
Fuente
• Un modelo que detalle el proceso de
desarrollo del software sigue bajo
investigación, en la actualidad existe un amplio Código
espectro de proposiciones. Maquina

Compilación
¿Cuál es la complejidad?

• Los proyectos, a menudo, se tardan más de lo previsto y


consumen el doble del presupuesto planificado.

• Algunos proyectos de desarrollo de software producen


excelentes resultados; sin embargo, obtener los mismos
resultados depende directamente de contar con los mismos
individuos disponibles.
¿Cuál es la complejidad?

• El proceso utilizado para desarrollar el sistema


generalmente se improvisa.

• Las especificaciones del proceso no son seguidas


rigurosamente, acatadas a cabalidad o compartidas.

• Los cronogramas y los presupuestos son rutinariamente


irrespetados.
¿Cuál es la complejidad?

• El software no se deteriora.

• La mayoría del software se construye a la medida.

• Se crean expectativas poco factibles.

• Problemas de comunicación.

• Ausencia de documentación.
¿Cuál es la complejidad?

• Procesos de negocio complejos y enfocados al cliente.


• Distribuidos espacialmente y en el tiempo.
• Exigencia de altos niveles de calidad en el servicios, tales
como buenos tiempos de respuesta, seguridad, confiabilidad,
entornos regulatorios.
• Tiempos cortos de desarrollo.
• Equipo de proyecto interdisciplinario y numeroso.
• Múltiples canales de comunicación.
• Requerimientos novedosos.
• Habilitadores Tecnológicos que deben ejecutarse sobre
múltiples plataformas y sobre múltiples base de datos.
¿Cuál es la complejidad?

Pasamos de: A:
¿Cuál es la complejidad?

•Time to market.

• Cambios económicos del hardware.

• Presión por la disponibilidad de computadoras de


escritorio cada vez más poderosas.

• Surgimiento de redes locales y urbanas muy amplias


(www).

• Surgimiento de nuevos paradigmas: Orientación a objeto,


Componentes, Ingeniería Web, a Servicios, Aspectos…
En resumen…

•Los proyectos de desarrollo de software no tienen


indicadores de éxito halagadores.

• Tres son los factores críticos de éxito:


• Involucrar a los usuarios.
• Soporte de la gerencia ejecutiva.
• Descripción clara de los objetivos el negocio.

• Este proceso es complejo y variable.

• El proceso utilizado para desarrollar el sistema


generalmente se improvisa.

• Problemas de comunicación.

• Ausencia de documentación.
Analizar el Problema

Si analizamos el problema
ya comenzamos a construir la
solución correcta…
El Alto Costo de los Errores
en los Requerimientos
¿Cómo pueden ser exitosos los
proyectos?

•Análisis del problema.


• Entender el problema.
• Obtener acuerdo con los involucrados.

• Obtener requerimientos.
• Determinar quién usará el sistema (actores).
• Determinar cómo será usado el sistema (casos de
uso).

• Gestión de Requerimientos.
• Especificar requerimientos completamente.
• Manejar las expectativas, cambios y errores.
• Controlar cambios frecuentes de alcance.
• Reclutar todos los miembros de su equipo.
Análisis del Problema

• ¿Cuál es el problema?
• Entender la perspectiva del cliente.
• Escribirla.
• Obtener acuerdo en ello.

• ¿Cuál es realmente el problema?


• Buscar las causas de raíz.
• Enfocarse a la causa de raíz.
¿Por qué es importante analizar el
problema?

• Evitar el Sí ... pero ...

• Evitar trabajo extra.

• Entender los requerimientos

¿Cuál es realmente el problema?


Definición de un problema

Un problema puede definirse como la


diferencia entre...

(Problema)

cosas como y las cosas como


son se “desean”
Los actores ayudan a definir los
límites del sistema
Identifique las restricciones al
sistema
Establezca un vocabulario común

• Para definir términos usados en el proyecto.

• Para ayudar a prevenir malos entendidos.

Glosario
Formulando la declaración del
problema

El problema de (Describa el problema)

Afecta a (los involucrados afectados por el


problema)
Cuyo impacto es (cuál es el impacto del problema).
Una solución (liste algunos beneficios de una
exitosa sería solución exitosa)
Formulando la declaración del
problema
Ejemplo de Sistema de Gestión de Farmacias

El problema de Manejar manualmente el inventario y la


facturación de los productos
farmacéuticos sin un control adecuado.
Afecta a Los clientes, propietarios y usuarios.
Cuyo impacto es En las ventas y ganancias que tiene la
farmacia.
Una solución Automatizar los procesos de inventario
exitosa sería y facturación.
Lo cual: Agiliza el proceso de
facturación y garantiza un control de los
productos.