Fin de Ciclo Fundamentos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 78

Catálogo

2. Diseño de software (1).pdf ······························································································································································· 1


2. 2-Diseño-arquitectura (1).pdf ··························································································································································· 6
2. 4-Diseño-interfaz.pdf ····································································································································································· 29
2. 3-Diseño-componentes (1).pdf ······················································································································································ 48
2. 1-Conceptos de diseño (1).pdf ······················································································································································· 63
DISEÑO EN EL CONTEXTO DE LA INGENIERA DE SOFTWARE
El diseño de software se ubica en el área técnica de la ingeniería de software y se
aplica sin importar el modelo del proceso que se utilice.
El diseño de software comienza una vez que se han analizados y modelados los
requerimientos.
Es la ultima acción de la ingeniería de
software dentro de la actividad de modelado
y prepara la etapa de construcción
(generación y prueba de código).

COMUNICACIÓN PLANEACIÓN
MODELADO
Inicio del proyecto Estimación
Análisis
Recabar los Programación
requerimientos Diseño
Seguimiento

DESPLIEGUE
CONSTRUCCIÓN
Entrega
Código
Asistencia
Prueba
Retroalimentación
Traducción del modelo de requerimientos al modelo de
diseño

• Cada uno de los elementos del modelo de


requerimientos proporciona información necesaria
para crear los cuatro modelos de diseño necesarios
para la especificación completa del diseño.
•El trabajo del diseño es alimentado por el modelo de requerimientos,
manifestado por elementos basados en el escenario, en la clase, orientado al
flujo, y del comportamiento.
•El diseño de datos o clases transforma los modelos de clases en realizaciones
de clases de diseño y en las estructuras de datos que se requieren para
implementar el software. Los objetos y relaciones definidos en el diagrama CRC y
el contenido detallado de los datos ilustrados por los atributos de clase y otros
tipos de notación dan la base para el diseño de los datos.
•Parte del diseño de clase puede llevarse a cabo junto con el diseño de la
arquitectura del software. Un diseño más detallado de las clases tiene lugar se
diseña cada componente de software.
•El diseño de la arquitectura define la relación entre los elementos principales
de la estructura del software, los estilos y patrones de diseño de la arquitectura
que pueden usarse para alcanzar los requerimientos definidos por el sistema y
las restricciones que afectan la forma en que se implementa la arquitectura.
•El diseño de la interfaz describe la forma en la que el software se comunica con
los sistemas que interactúan con el y con los humanos que lo utilizan. Una
interfaz implica un flujo de información (por ejemplo, datos o control) y un tipo
específico de comportamiento. Entonces, los modelos de escenarios de uso y de
comportamiento dan mucha de la información requerida para diseñar la interfaz.
•El diseño en el nivel de componentes transforma los elementos estructurales
de la arquitectura del software en una descripción de sus componentes en cuanto
a procedimiento. La información obtenida a partir de los modelos basados en
clase, flujo y comportamiento sirven como la base para diseñar los componentes.
Es la manera de
traducir con
exactitud a un
producto o sistema, Sin diseño se corre
terminado los el riesgo de
requerimientos. obtener un sistema
inestable, que falle
cuando haya
Se resume en una
cambios pequeños,
palabra: calidad.
o uno cuando sea
difícil de someter a
prueba, o en el que
no sea posible
evaluar la calidad.

Importancia
del Diseño
El proceso de diseño

Al principio, el diseño se
representa en un nivel alto de
El diseño de software es un abstracción, en el que se
proceso iterativo por medio rastrea directamente el
del cual se traducen los objetivo específico del
requerimientos en un “plano” sistema y los requerimientos
para construir el software. mas detallados de datos,
funcionamiento y
comportamiento.

A medida que tienen lugar las


iteraciones del diseño, las
mejoras posteriores
conducen a niveles menores
de abstracción.
DISEÑO DE LA ARQUITECTURA
Es la primera etapa técnica del proceso de Ingeniería del
Software, consiste en producir un modelo o representación
técnica del software que se va a desarrollar.
¿QUÉ ES LA ARQUITECTURA?
• La arquitectura del software de un programa o sistema de
cómputo es la estructura o estructuras del sistema, lo que
comprende a los componentes del software, sus propiedades
externas visibles y las relaciones entre ellos.
• La arquitectura no es el software operativo, más bien, es la
representación que capacita al ingeniero del software para:
•Analizar la efectividad del diseño para la consecución de los
requisitos fijados.
•A considerar las alternativas arquitectónicas en una etapa en la cual
hacer cambios en el diseño es relativamente fácil.
•Reducir los riesgos asociados a la construcción del software.
Diferencia entre los términos
arquitectura y diseño

• Un diseño es una instancia de una


arquitectura, similar a un objeto que es
una instancia de una clase.
El diseño de la arquitectura de software considera dos
niveles de la pirámide del diseño
Diseño
en el nivel de
componentes

Diseño de la interfaz

El diseño arquitectónico se centra en


la representación de la estructura de
los componentes del software, sus
propiedades e
interaccionesarquitectura

El diseño de los datos o clases permite


representar el componente de datos de la
arquitectura con definiciones de sistemas y clase
convencionales (atributos y operaciones).
¿Por qué es importante la arquitectura?

• Facilitan la comunicación entre todas las partes


interesadas en el desarrollo de un sistema basado en
computadora.
• Destaca decisiones tempranas de diseño que tendrán un
profundo impacto en todo el trabajo de ingeniería del
software.
• Constituye un modelo relativamente pequeño e
intelectualmente comprensible de cómo está estructurado
el sistema y de cómo trabajan juntos sus componentes.
GENEROS ARQUITECTONICOS

• En el contexto del diseño arquitectónico, el género


implica una categoría específica dentro del dominio
general del software. Dentro de cada categoría hay
varias sub categorías.

• Dentro de cada sub categoría habrá estilos más


específicos.

• Cada estilo tendrá una estructura que puede


describirse con el uso de un conjunto de patrones
predecibles.
Grady Booch sugiere los siguientes géneros arquitectónicos para
sistemas basados en software:
• Inteligencia artificial:
• Comerciales y no lucrativos:
• Comunicaciones:
• Contenido de autor:
• Dispositivos:
• Entretenimiento y deportes:
• Financieros:
• Juegos:
• Gobierno:
• Industrial:
• Legal:
• Médicos:
• Militares:
• Sistemas operativos:
• Plataformas:
• Científicos:
• Herramientas:
• Transporte:
• Utilidades:
ESTILOS ARQUITECTONICOS

Cada estilo describe una categoría de sistemas que incluye:


• Un conjunto de componentes (como una base de datos o
módulos de cómputo) que realizan una función requerida
por el sistema
• Un conjunto de conectores que permiten la "comunicación,
coordinación y cooperación" entre los componentes.
• Restricciones que definen cómo se integran los
componentes para formar el sistema.
• Modelos semánticos que permiten que un diseñador
entienda las propiedades generales del sistema al analizar
las propiedades conocidas de sus partes constituyentes.
BREVE TAXONOMÍA DE ESTILOS DE ARQUITECTURA

Arquitecturas centradas en los datos

• En el centro de esta arquitectura se halla un


almacenamiento de datos (como un archivo o base de
datos) al que acceden con frecuencia otros componentes
que actualizan, agregan, eliminan o modifican los datos de
cierto modo dentro del almacenamiento.
Esta arquitectura promueve integrabilidad, los
componentes pueden ser cambiados y agregarse
otros nuevos ya que:
El componente del cliente ejecuta procesos con
independencia y,
El componente pizarrón sirve para coordinar la
transferencia de información entre clientes.
Arquitecturas de flujo de datos

• Esta arquitectura se aplica cuando datos de entrada van a


transformarse en datos de salida a través de una serie de
componentes computacionales o manipuladores.
• Un patrón de tubo y filtro tiene un conjunto de componentes,
llamados Filtros, conectados por tubos que transmiten datos
de un componente al siguiente.
• Cada filtro trabaja en forma independiente de aquellos
componentes que se localizan arriba o abajo del flujo
• Se diseña para esperar una entrada de datos de cierta forma
y produce datos de salida (al filtro siguiente) en una forma
especificada
Arquitecturas de llamar y regresar
Este estilo arquitectónico permite obtener una estructura de
programa que es relativamente fácil de modificar y escalar.

Dentro de esta categoría existen varios sub estilos:

•Arquitecturas de programa principal / subprograma.


Esta estructura clásica de programa descompone una función
en una jerarquía de control en la que un programa "principal"
invoca cierto número de componentes de programa que a su
vez invocan a otros.
• Arquitecturas de llamada de procedimiento remoto.
Los componentes de una arquitectura de programa
principal/subprograma están distribuidos a través de
computadoras múltiples en una red.
•Arquitecturas de programa principal / subprograma.

Main Program

Subprograma 1 Subprograma 2 Subprograma3


Arquitectura Orientada a Objetos.

• Los componentes de un sistema incluyen datos y las


operaciones que deben aplicarse para manipularlos. La
comunicación y coordinación entre los componentes se
consigue mediante la transmisión de mensajes.
Arquitectura en capas
•Se define un número de
capas diferentes; cada una
ejecuta operaciones que se
aproximan progresivamente
al conjunto de instrucciones
de máquina.
•En la capa externa, los
componentes atienden las
operaciones de la interfaz de
usuario.
•En la interna, los
componentes realizan la
interfaz con el sistema
operativo.
•Las capas intermedias
proveen servicios de utilerías
y funciones de software de
aplicación.
Patrones arquitectónicos
•Los patrones arquitectónicos se abocan a un problema de
aplicación específica dentro de un contexto dado y sujeto a
limitaciones y restricciones.
•El patrón propone una solución arquitectónica que sirve
como base para el diseño de la arquitectura.
DISEÑO ARQUITECTONICO

•Cuando comienza el diseño arquitectónico, el software


que se va a desarrollar debe situarse en contexto, es decir,
el diseño debe definir las entidades externas (otros
sistemas, dispositivos, personas) con las que interactúa el
software y la naturaleza de dicha interacción.
• Esta información por lo general se adquiere a partir del
modelo de los requerimientos y de toda la que se reunió
durante la ingeniería de éstos.
•Un arquetipo es una abstracción (similar a una clase) que
representa un elemento de comportamiento del sistema.
• El conjunto de arquetipos provee una colección de
abstracciones que deben modelarse en cuanto a la
arquitectura si el sistema ha de construirse, pero los
arquetipos por sí mismos no dan suficientes detalles para
la implementación.
Diagrama de contexto arquitectónico
En relación con la figura anterior, los sistemas que
interactúan con el sistema objetivo (aquel para el que va a
desarrollarse un diseño arquitectónico) están representados
como sigue:
• Sistemas superiores: aquellos que utilizan al sistema
objetivo como parte de algún esquema de procesamiento de
alto nivel.
• Sistemas subordinados: los que son usados por el
sistema objetivo y proveen datos o procesamiento que son
necesarios para completar las funciones del sistema objetivo.
• Sistemas entre iguales: son los que interactúan sobre una
base de igualdad (por ejemplo, la información se produce o
consume por los iguales y por el sistema objetivo).
• Actores: entidades (personas, dispositivos, etc.) que
interactúan con el sistema objetivo mediante la producción o
consumo de información que es necesaria para el
procesamiento de los requerimientos.
Refinamiento de la Arquitectura hacia los componentes
Conforme la arquitectura se refina hacia los componentes,
comienza a emerger la estructura del sistema.
Arquitectura de Casa Segura para el
sistema de seguridad.
Instancias de la función con la elaboración de
componentes
Trabajo Individual
• Leer, analizar la temática.
• Elaborar por cada arquitectura, una pregunta
objetiva con 4 alternativas.
DISEÑO DE LA INTERFAZ DE USUARIO

El diseño de la interfaz de usuario crea un medio eficaz


entre los seres humanos y la computadora.

PASOS

• El diseño de la interfaz de usuario comienza con la


identificación de los requerimientos del usuario.
• Se crean y analizan los escenarios para éste y se define un
conjunto de objetos y acciones de la interfaz.
• Esto forma la base para crear una plantilla de la pantalla que
ilustra el diseño grafico y la colocación de iconos, definicion
de textos descriptivos, la especificación y títulos de las
ventanas.
REGLAS DORADAS
1.DEJAR EL CONTROL AL USUARIO
El usuario necesita un sistema que reaccione a sus
necesidades y que le ayude a hacer las cosas.
2. REDUCIR LA NECESIDAD DE QUE EL USUARIO
MEMORICE
Siempre que sea posible, el sistema debe “recordar” la
información pertinente y ayudar al usuario con un escenario de
interacción que le facilite el uso de la memoria.
3. HACER QUE LA INTERFAZ SEA CONSISTENTE
• Que toda la información se organice de acuerdo con reglas de
diseño que se respeten en todas las pantallas desplegadas.
•Que los mecanismos de entrada se limiten a un conjunto
pequeño usado en forma consistente en toda la aplicación.
•Que los mecanismos para pasar de una tarea a otra se definan
e implementen de modo consistente.
ANALISIS Y DISEÑO DE LA INTERFAZ DE USUARIO
ANÁLISIS Y MODELOS DEL DISEÑO DE LA INTERFAZ
• Cuando se analiza y diseña la interfaz de usuario, entran en
juego cuatro diferentes modelos.
• Un ingeniero (o el encargado del software) establece un
modelo de usuario, el ingeniero del software crea un
modelo del diseño; el usuario final desarrolla una imagen
mental que suele denominarse modelo mental del usuario o
percepción del sistema, y quienes implementan el sistema
crean un modelo de la implementación.
Modelo mental del Modelo de Modelo de
usuario usuario diseño

El papel del diseñador de la interfaz es Modelo de


conciliar estas diferencias u obtener una implementación
representación consistente de la interfaz.
Modelo del usuario
• Establece el perfil de los usuarios finales del sistema.
• Para construir una interfaz de usuario eficaz, “todo
diseño debe comenzar con la compresión de los
usuarios que se busca, lo que incluye los perfiles de
edad, género, condiciones físicas, educación,
antecedentes culturales o étnicos, motivación, metas y
personalidad”.
• Los usuarios se pueden clasificar como:
• Principiantes: Sin conocimiento sintáctico del sistema
y poco conocimiento semántico de la aplicación o uso
de la computadora en general.
• Usuarios intermitentes que saben: Con
conocimiento semántico razonable de la aplicación,
pero relativamente poco recuerdo de la información
sintáctica necesaria para usar la interfaz.
• Usuarios frecuentes conocedores: Con buen
conocimiento semántico y sintáctico, que con
frecuencia le despierta el “síndrome del usuario
poderoso”; es decir, individuos que buscan atajos y
modos de interacción abreviados.
Modelo mental del usuario
• Es la imagen del sistema que los usuarios
Cuando
finales llevan en la cabeza.
coinciden estos
Modelo de la implementación dos modelos,
los usuarios
• Combina la manifestación externa del suelen sentirse
sistema basado en computadora (la vista y a gusto con el
la sensación de la interfaz) con toda la software y lo
información de apoyo (libros, manuales, usan con
videos, archivos de ayuda, etc.) que efectividad.
describe la sintaxis y semántica de la
interfaz.
Modelo de diseño
• Para lograr la fusión de los modelos, el
modelo de diseño debe haberse
desarrollado de manera que incluya la
información contenida en el modelo del
usuario, y el modelo de la implementación
debe reflejar de manera exacta la
información semántica y sintáctica la
interfaz.
EL PROCESO
El proceso de análisis y diseño de interfaces de usuario es
iterativo y se representa con un modelo espiral.
EL PROCESO: ANÁLISIS DE LA INTERFAZ
Se centra en el perfil de los usuarios que interactuarán con el
sistema.

En el diseño de interfaz de usuario, entender el problema


significa comprender:
A las personas
Las tareas que los
(usuarios finales)
usuarios finales
que interactúan con
deban realizar como
el sistema a través
parte de su trabajo.
de la interfaz.

El ambiente en que El contenido que se


se efectuara estas presenta como parte
tareas. de la interfaz.
ANALISIS DEL USUARIO
• Para converger la imagen mental del usuario y el modelo de
diseño es necesario capturar requerimientos de diferentes
fuentes:
• Entrevistas: Los miembros del equipo de software se
reúnen con los usuarios para entender mejor sus
necesidades, motivaciones, cultura laboral y una multitud
de aspectos adicionales.
• Información de ventas: El personal de ventas habla con
los usuarios de manera regular y recaba información que
ayuda al equipo de software a clasificarlos y a entender
mejor sus requerimientos.
• Información de apoyo: El equipo de apoyo habla a diario
con los usuarios. Constituye la fuente de información más
probable acerca de lo que funciona y lo que no, lo que les
gusta a los usuarios y los que les desagrada.
• Información de mercadotecnia: El análisis del mercado
es invaluable para la definición de segmentos del mercado
y para la comprensión sobre como usara el software en
formas sutilmente distintas cada una de estos segmentos.
ANALISIS Y MODELADO DE LA TAREA

• La meta del análisis de la tarea es responder las siguientes


preguntas:
• ¿Qué trabajo realizará el usuario en circunstancias
específicas?
• ¿Qué tareas y subtareas se efectuarán cuando el usuario
haga su trabajo?
• ¿Qué dominio de problema especifico manipulara el
usuario al realizar su labor?
• ¿Cuál es la secuencia de las tareas (el flujo del trabajo)?
• ¿Cuál es la jerarquía de las tareas?
ANALISIS Y MODELADO DE LA TAREA
• Para responder a estas preguntas utiliza las siguientes
Técnicas:
• Casos de uso: Describe la manera en la que un actor (en el
contexto del diseño de la interfaz de usuario) interactúa con
el sistema.
• Elaboración de la tarea: El análisis de la tarea para el
diseño de la interfaz utiliza un enfoque de elaboración para
ayudar a entender las actividades humanas que la interfaz de
usuario debe incluir.
• Elaboración Del Objeto: Puede examinarse el caso de uso
y la demás información obtenida del usuario para extraer los
objetos físicos que usa el diseñador de interiores, estos
objetos se dividen en clases.
• Análisis del flujo de trabajo: Esta técnica permite entender
cómo se efectúa un proceso de trabajo cuando están
involucradas varias personas (y roles). Se puede usar un
diagrama de actividades (canal) que indica las tareas y las
decisiones para los roles.
• Representación jerárquica: Se define una jerarquía de
tareas para cada tipo de usuario.
ANÁLISIS DEL CONTENIDO DE LA PANTALLA.

• Durante esta etapa del análisis de la interfaz, se toma en


cuenta el formato y la estética del contenido (según la
despliega la interfaz).
ANÁLISIS DEL AMBIENTE DE TRABAJO
• En ciertas aplicaciones se coloca el interfaz de usuario de
un sistema basado en computadora en una “ubicación
amigable” (con iluminación adecuada, buena altura de la
pantalla, acceso fácil al teclado, etc.), pero en otras (como
en una fabrica o en la cabina de un avión) la iluminación es
menos que buena, el ruido es notable, un teclado o un ratón
o son opción y la posición de la pantalla no es la ideal.
• El diseñador de la interfaz puede estar restringido por
factores que se confabulan contra la facilidad del uso
EL PROCESO: DISEÑO DE LA INTERFAZ
La meta del diseño de la interfaz es definir un conjunto de
objetos y acciones de ésta (y sus representaciones en la
pantalla) que permitan al usuario efectuar todas las tareas
definidas en forma tal que cumpla cada meta de la
usabilidad definida para el sistema.
ETAPAS DEL DISEÑO DE LA INTERFAZ
1. Definir objetos y acciones de la interfaz (operaciones) con
el uso de la información desarrollada en el análisis de la
interfaz.
2. Definir eventos (acciones del usuario) que harán que
cambie el estado de la interfaz de usuario.
3. Ilustrar cada estado de la interfaz como lo vería en la
realidad el usuario final.
4. Indicar como interpreta el usuario el estado del sistema a
partir de la información provista a través de la interfaz.
ETAPAS DEL DISEÑO DE LA INTERFAZ

Aplicación de las etapas de diseño de


la interfaz

• Una etapa importante del diseño de la interfaz es la


definición de objetos de la interfaz y de las acciones
que se aplican a ellos.
• Para lograr esto, se elaboran escenarios de uso.

Patrones de diseño de la interfaz

• Un patrón de diseño es una abstracción que


prescribe una solución de diseño para un problema
de diseño bien destacado.
• Por ejemplo un patrón llamado CalendarStrip que
produce un calendario continuo, en el que se resalta
la fecha actual y se eligen las futuras.
ETAPAS DEL DISEÑO DE LA INTERFAZ
Aspectos del diseño
• Tiempo de respuesta: Se mide desde el momento que el usuario
ejecuta alguna acción de control (dar enter, hacer clic)
• Herramientas de ayuda : Deben tomarse en cuenta varios aspectos
del diseño:
• ¿Habrá ayuda para todas las funciones del sistema y en todo
momento durante la interacción con éste?
• ¿Come pedirá ayuda el usuario? Las opciones incluyen un menú,
una tecla de funciones especial o un comando AYUDA.
• ¿Cómo se presentara la ayuda?
• ¿Cómo volverá el usuario a la interacción) normal?
• Manejo de errores: En general todo mensaje de error o advertencia
producida por un sistema interactivo debería tener las siguientes
características.
• El mensaje debe describir el problema en que entienda el usuario.
• El mensaje debe dar consejos constructivos para corregir ir el error.
• El mensaje debe indicar cualesquiera consecuenciales negativas .
• Leyendas del menú y de los comandos: En todas las aplicaciones
deben establecerse convenciones para el uso de los comandos.
• Accesibilidad de la aplicación: Es importante que el diseño de la
interfaz incluya mecanismos que permita el acceso fácil de las
personas con necesidades especiales.
EL PROCESO: CONSTRUCCIÓN DE LA INTERFAZ
•Comienza por lo general con la creación de un prototipo que permita evaluar
los escenarios de uso.
•A medida que avanza el proceso de diseño, se emplea un grupo de
herramientas de la interfaz de usuario para terminar de construirla.
EL PROCESO: VALIDACIÓN DE LA INTERFAZ

Se centra en:
•La capacidad de la interfaz para implementar correctamente
todas las tareas del usuario.
•El grado en el que la interfaz es fácil de usar y de aprender.
•La aceptación que tiene por parte del usuario como
herramienta útil en su trabajo.
DISEÑO EN EL NIVEL DE COMPONENTES

Tiene lugar una vez


terminado el diseño de la
arquitectura (componentes
del software).

Define las estructuras de datos, algoritmos,


características de la interfaz y mecanismos
de comunicación asignados a cada
componente del software.
¿Qué es un Componente?

Un Componente es un bloque de construcción del


software de cómputo.

Es una parte modular, desplegable y sustituible de


un sistema, que incluye la implantación y expone un
conjunto de interfaces. (OMG3a)

Los componentes forman la arquitectura del software


y, en consecuencia, juegan un papel en el logro de
los objetivos y de los requerimientos del sistema que
se va a construir.

Como los componentes se encuentran en la


arquitectura del software deben comunicarse y
colaborar con otros componentes y con entidades
(otros sistemas, dispositivos, persona, etc.) que
existen fuera de las fronteras del software.
Se emplea 3 versiones importantes de lo que es un
componente….
1.- Una visión orientada a objetos
Un componente contiene un conjunto
de clases que colaboran.

Cada clase dentro de un componente se


elabora por completo para que incluya
todos los atributos y operaciones
relevantes para su implantación.

Deben definirse todas las interfaces


que permiten que las clases se
comuniquen y colaboren con otras
clases de diseño.

Para lograr Se comienza con el modelo de


esto requerimientos y se elaboran clases de
análisis y clases de infraestructura.
ANÁLISIS EJEMPLO
La clase de análisis se obtiene durante la ingeniería de requerimientos, es decir en
la actividad modelado en la parte de análisis.
Clase de análisis
Imprimir trabajo La clase
Numerodepaginas análisis se lleva
Numerodelados a cabo para dar
Tipodepapel cuerpo a todos
escala
los atributos y
Calcularcostodetrabajo( ) operaciones
Pasartrabajoimpresora() para implantar
la clase.
DISEÑO
DISEÑO DE LA ARQUITECTURA
Dentro de la arquitectura del software, se define los componentes. Ejm. Imprimirtrabajo
Componente de diseño
Calculartrabajo

Ambas son interfaces Imprimir trabajo

Iniciartrabajo
DISEÑO A NIVEL DE COMPONENTES
Se elabora los detalles del componente Imprimirtrabajo.

<<interfaz>> Clase de diseño


Calculartrabajo Imprimir trabajo La clase diseño
Calcularcostodetrabajo( ) Numerodepaginas elaborada
Pasartrabajoimpresora() Numerodelados contiene
calcularcostodeproduccion() Tipodepapel información mas
Pesodepapel detallada de los
Tamañodepapel atributos, así
Colordepapel como una
Escala
descripción mas
Ampliacion
Requerimientosdecolor amplia de las
<<interfaz>> operaciones que
Caracteristicasdeproducion
Iniciartrabajo se necesitan para
…..
Calcularcostototaldetrabajo() Calcularcostodetrabajo( )
implantar el
Elaborarordendetrabajo() Pasartrabajoimpresora() componente.
Verificarprioridad() calcularcostodeproduccion()
Pasartrabajoaproduccion() Calcularcostototaldetrabajo()
Elaborarordendetrabajo()
Las interfaces implican Verificarprioridad()
comunicación y colaboración Pasartrabajoaproduccion()
con otros componentes.
• Esta actividad de elaboración se aplica a cada
componente definido como parte del diseño de la
arquitectura.
• Una vez concluida se aplica mas elaboración a cada
atributo, operación e interfaz.
• Deben especificarse las estructuras de datos apropiadas
para cada atributo, además se diseñan los detalles
algorítmicos requeridos para implantar la lógica del
procesamiento asociado a cada operación.
2.- La visión tradicional
Un componente es un elemento funcional de un programa que incorpora la lógica
del procesamiento.

Las estructuras de los datos internas que se requieren para implantar la lógica del
procesamiento y una interfaz que permite la invocación del componente y el paso
de los datos.

Dentro de la arquitectura del software se encuentra un componente tradicional,


también llamado modulo, que tiene tres funciones importantes:

3.- Como componente de


1.- Como componente de 2.- Como componente del infraestructura que es
control que coordina la dominio del problema que responsable de las
invocación de todos los implanta una función funciones que dan apoyo
demás componentes de completa o parcial que al procesamiento
dominio de problema. requiere el cliente. requerido en el dominio
del problema.
2.- La visión tradicional

Igual que los componentes


orientados a objetos, los Los diagramas de flujo de
componentes tradicionales datos (DFD) sirve de base
del software provienen del para su obtención.
modelo del análisis.

Cada transformación
(burbuja) representada en
los niveles mas bajo del
diagrama de flujo de datos
se mapea en una jerarquía
de módulos.
ANÁLISIS. EJEMPLO
Durante el DISEÑO
Sistema de DISEÑO DE LA ARQUITECTURA.
modelado del administración del
análisis se obtiene En el diseño de la arquitectura
trabajo
un conjunto de DFD. cada transformación de los DFD
representa un componente de
software.
Seleccionar función de
Leer datos del trabajo de administración del
impresión trabajo

Elaborar orden de Enviar el trabajo o


Desarrollar el
trabajo producción
costo del trabajo

Pasar el
Verificar
trabajo o
prioridad
producción
Calcular Calcular Calcular el
costo por costo del costo de
pagina papel producción

En la visión tradicional cada operación de


la visión orientada a objetos se representa
como modulo aislado que se invoca.
DISEÑO A NIVEL DE COMPONENTES
Se representa todo objeto de datos o control que fluya a través de la interfaz. Se
definen estructuras de datos que se utilicen el interior del modulo. El algoritmo
que permite que el modulo cumpla su función.
Componente del diseño
Obtenerdatosdeltrabajo

Ambas son interfaces Calcular costo por pagina

AccederBDdecostos
Modulo elaborado
costoporpagina
Entra: numerodepaginas
Entra: numerode documento
Entra: tamañodepagina
Entra: costodepagina
…..
Sale: costodebaseporpagina Tamañodeltrabajo=numerodepagina
Obtenerdatosdeltrabajo(numer s*numero de documentos
odepaginas…………) accederBDdatos(TT,color);
accederBDcostos(tamañodeltra …...........
bajo………………….)
…….
calcularcostoporpagina()
3.- Visión relacionada con el proceso

En las ultimas dos décadas, la comunidad de la ingeniería de


software a puesto el énfasis en la necesidad de elaborar
sistemas que utilicen componentes de software o patrones de
diseño ya existentes.

A medida que avanza el trabajo de diseño se dispone de un


catálogo del diseño probado o de componentes en nivel de
códigos.

Conforme se desarrolla la arquitectura se escogen del catalogo


componentes o patrones del diseño y se usan para construir la
arquitectura.

Estos componentes fueron construidos obteniendo lo


reutilizable, se dispone totalmente de la descripción de su
interfaz, de la funciones que realizan y de la comunicación y
colaboración que requieren.
DISEÑO EN EL NIVEL DE COMPONENTES PARA WEBAPPS

Un componente de
webapps es:

Es una función cohesiva Un paquete cohesivo de


bien definida la cual permite contenido y funciones que
manipular contenido o da brindan al usuario final
procesamiento de computo alguna capacidad
o datos para un usuario. solicitada.

Por lo tanto en el diseño de componentes de


webapps con frecuencia suele a incorporar
elementos de diseño del contenido y de las
funciones.
DISEÑO DEL CONTENIDO EN EL NIVEL DE COMPONENTES

• El diseño del contenido en


el nivel de componentes se
centra en objetos de
contenido y en la forma en
la que se empacan para su
presentación a un usuario
final.
DISEÑO DE LAS FUNCIONES EN EL NIVEL DE COMPONENTES
Dan capacidad de
Producen un
computación y
procesamiento localizado
comportamiento de datos
que genera contenido y
que resultan adecuados
capacidad de navegación
para el dominio del
en forma dinámica.
negocio de la Webapp.

Las funciones de la
webapps se entrega como
Brindan consultas y una serie de componentes
acceso avanzado a una desarrollados en paralelo
base de datos. con la arquitectura de la
información que garantice
que sean consistentes.

Durante el diseño de la arquitectura, el


contenido y funciones de la Webapp se
combinan para crear una arquitectura
funcional describe los componentes
funcionales claves de la Webapp de
forma que interactúan con otras.
Trabajo Individual
• Leer, analizar la temática.
• Elaborar por cada visión, una pregunta
objetiva con 4 alternativas.
Conceptos de diseños
Abstracción
Cuando se considera una solución modular para cualquier problema, es
posible plantear muchos niveles de abstracción. En el más elevado se
anuncia una solución de términos gruesos con el uso del lenguaje del
ambiente del problema. En niveles más bajos de abstracción se usa la
descripción más detallada de la solución.
Mecanismos de abstracción:
•Abstracción de procedimiento o funcional
Proporciona una función de un conjunto de entradas a un conjunto de
salidas, pudiendo eventualmente modificar algunas de las entradas.
Las abstracciones funcionales se pueden especificar con la siguiente
plantilla:
Nombre = Procedimiento (v1: T1,..,vn: Tn) Retorna( v1’:T1’,..,vm’:Tm’);
requiere
efectos
modifica
“Requiere” contiene las precondiciones de la abstracción.
“Modifica” lista los parámetros de entradas que son modificados.
“Efectos” describe cómo transforma las entradas en salidas.
Abstracción
•Abstracción de datos
•Una abstracción de datos está formada por un conjunto de objetos y un
conjunto de operaciones (abstracciones funcionales) que manipulan esos
objetos.
•Se puede emplear la siguiente plantilla:
Nombre = Tipo de datos es Operacion1, Operacion2, ..., Operacionn
Descripción
Operaciones
Fin Nombre

Refinamiento
El refinamiento es un proceso de elaboración. Se comienza con un
enunciado de la función, definida en un nivel de abstracción alto.
La abstracción y el refinamiento son conceptos complementarios.
La primera permite especificar internamente el procedimiento y los
datos, pero elimina la necesidad de que los “extraños” conozcan los
detalles de bajo nivel. El refinamiento ayuda a revelar estos detalles
a medida que avanza el diseño. Ambos conceptos permiten crear
un modelo completo del diseño conforme este evoluciona.
Arquitectura
Es la estructura jerárquica de los componentes del programa (módulos), la
manera en que los componentes interactúan y la estructura de datos que
van a utilizar los componentes.
Patrones
Un patrón de diseño describe una estructura de diseño que resuelve un
problema particular. El objetivo de cada patrón de diseño es permitir al
diseñador determinar
1) Si el patrón es aplicable al trabajo en cuestión
2) Si puede volverse a usar
3) Si sirve como guía para desarrollar un patrón distinto en funciones o
estructura.
Elementos:
El nombre del patrón
El problema
La solución
Las consecuencias-resultados
División de problemas
La división de problemas es un concepto de diseño que sugiere que
cualquier problema complejo puede manejarse con más facilidad si se
subdivide en elementos susceptibles de resolver u optimizarse de manera
independiente. Un problema es una característica o comportamiento que
se especifica en el modelo de los requerimientos para el software. Al
separar un problema en sus piezas más pequeñas y por ello más
manejables, se requiere menos esfuerzo y tiempo para resolverlo.
Modularidad
La modularidad es la manifestación más común de la división de
problemas. El software se divide en componentes con nombres distintos y
abordables por separado, en ocasiones llamados módulos, que se integran
para satisfaces los requerimientos del problema.
Guías de modularidad:
Pocas interfaces.
Interfaces estrechas.
Interfaces explícitas.
Modularidad

Pocas interfaces:
“En un sistema formado por N módulos, el número de conexiones entre
ellos debe acercarse más al número mínimo que al máximo”
Modularidad
Interfaces estrechas:
Si dos módulos se comunican deben de intercambiar el mínimo de
información posible.

Interfaces explícitas:
La comunicación entre dos módulos debe poder deducirse a partir del
texto de ambos.
Ocultamiento de información
Deben especificarse y diseñarse módulos, de forma que la información
(algoritmos y datos) contenida en un módulo sea inaccesible para todos
aquellos módulos que no necesiten tal información.

Independencia funcional
La independencia funcional se logra diseñando el software de manera que
cada módulo resuelva su subconjunto específico de requerimientos y
tenga una interfaz sencilla cuando se vea desde otras partes de la
estructura del programa.
Los módulos independientes son más fáciles de mantener (y probar)
debido a que los efectos secundarios causados por el diseño o por la
modificación del código son limitados, se reduce la propagación del error y
es posible obtener módulos reutilizables. En resumen, la independencia
funcional es una clave para el buen diseño y éste es la clave de la calidad
del software.
Independencia funcional
La independencia se evalúa con el uso de dos criterios cualitativos: la
cohesión y el acoplamiento.
Un módulo cohesivo debe (idealmente) hacer solo una cosa. Sin
embargo, para lograr un buen diseño hay que evitar los componentes
“esquizofrénicos” (módulos que llevan a cabo funciones no relacionadas).
El acoplamiento es una indicación de la interconexión entre módulos en
una estructura de software y depende de la complejidad de la interfaz
entre módulos, del grado en el que se entra o se hace referencia a un
módulo y de que datos pasan a través de la interfaz. En el diseño de
software, debe buscarse el mínimo acoplamiento posible. La conectividad
simple entre modulo da como resultado un software que es más fácil de
entender y menos propenso al “efecto de oleaje” [Ste 74], ocasionado
cuando ocurren errores en un sitio y se propagan por todo el sistema.
Aspectos
Un aspecto es una representación de una preocupación de interferencia.
En un contexto ideal, un aspecto se implementa como módulo (componente)
separado y no como fragmentos de software “dispersos” o “regados” en
muchos componentes.
Rediseño
Es el proceso de cambiar un sistema de software en forma tal que no se
altere el comportamiento externo del código [diseño], pero si se mejore su
estructura interna.
Cuando se rediseña el software, se examina el diseño existente en busca de
redundancias, elementos de diseño no utilizados, algoritmos ineficientes o
innecesarios, estructura de datos mal construidas o inapropiadas y cualquier
otra falla del diseño que pueda corregirse para obtener un diseño mejor.
Por ejemplo, una primera iteración de diseño tal vez genere un componente
con poca cohesión (realiza tres funciones que tienen poca relación entre sí).
Después de un análisis cuidadoso, se decide rediseñar el componente en tres
componentes separados, cada uno con mucha cohesión. El resultado será un
software más fácil de integrar, de probar y de mantener.

Conceptos de diseño orientado a objetos


El paradigma de la orientación a objetos (OO) se utiliza mucho en la ingeniería
de software moderna. Ésta trata de conceptos como clases y objetos,
herencia, mensajes y polimorfismo, entre otros.
Clases de diseño

Pueden desarrollarse 5 tipos diferentes de clases de diseño, cada una de las


cuales representa una capa distinta de la arquitectura del diseño.

Clases de usuario de la interfaz (abstracciones para interacción hombre-


maquina).
Clases del dominio de negocios (refinamiento de la clase de análisis
(atributos, servicios (métodos)).
Clases de proceso (abstracciones para administrar las clases del dominio de
negocios ).
Clases persistentes (almacenamiento de base de datos).
Clases de sistemas (Administran y controlan el Software).
Modelo de Diseño
El modelo de diseño puede
La dimensión de la
verse en dos dimensiones
abstracción representa el
distintas. La dimensión del
nivel de detalle a medida que
proceso indica la evolución
cada elemento del modelo de
del modelo de diseño
análisis se transforma en un
conforme se ejecutan las
equivalente de diseño y luego
tareas de éste como parte del
se mejora en forma iterativa.
proceso del software.

Los elementos del modelo de


diseño usan muchos de los
diagramas UML que se
utilizan en el modelo del
análisis.
Modelo de Diseño
Elementos del modelo de diseño

Diseño de Datos: Crea un modelo de datos que representa un nivel de


abstracción elevado que se refina después en forma progresiva hacia
representaciones más específicas de la implementación que pueden ser
procesadas por el sistema basado en computadora.

Diseño arquitectónico: es el equivalente del plano de una casa que


describe todos los componentes del sistema y sus relaciones.

Diseño de la interfaz: permite que el software se comunique


externamente y permita la comunicación y colaboración interna entre los
componentes que constituyen la arquitectura del software

Diseño en el nivel de los componentes: describe por completo los


detalles internos de cada componente

Diseño del despliegue: indica la forma en que se acomodaran la


funcionalidad del software y los subsistemas dentro del ambiente físico.
Trabajo Individual
• Leer, analizar la temática.
• Elaborar 2 preguntas objetivas con 4
alternativas.

También podría gustarte