Professional Documents
Culture Documents
Introduccin
Departamento de Informtica
Universidad Tcnica Federico Santa Mara
Introduccin
La Ingeniera del diseo abarca un conjunto de
principios, conceptos y prcticas que conducen al
desarrollo de un sistema o producto de calidad.
Los principios del diseo establecen una filosofa
primordial que guan al diseador en el
desempeo de su trabajo.
Es necesario comprender estos principios y
conceptos antes de que se apliquen las
mecnicas de la prctica del diseo.
Departamento de Informtica
Universidad Tcnica Federico Santa Mara
Las interfaces
La estructura de datos
El flujo y comportamiento de control del programa
La manera en que se realizarn las pruebas
Facilidad de mantenimiento del sistema resultante
A mayor acoplamiento:
Mayor es la probabilidad de propagacin del error
Menor facilidad de mantenimiento general del SW
Factores de calidad
Cuando se aplican estos principios de manera apropiada,
el ingeniero de SW crea un diseo que muestra los
factores internos y externos de calidad.
Los factores externos son aquellos que los usuarios
pueden
observar
fcilmente
(como
velocidad,
confiabilidad, correccin, facilidad de uso).
Los factores internos son importante para los Ing de SW,
ya que conducen a un diseo de alta calidad desde una
perspectiva tcnica
Lograr factores de calidad internos requiere que el
diseador entienda conceptos bsicos de diseo.
Caractersticas de un buen SW
Un buen SW debe cumplir con lo siguiente:
Firmeza: El programa no debe tener ningn error
que inhiba su funcin.
Comodidad: Un programa debe cumplir con los
propsitos para los cuales fue creado.
Placer: La experiencia de usar el programa debe
ser agradable
Proceso de diseo
Departamento de Informtica
Universidad Tcnica Federico Santa Mara
Departamento de Informtica
Universidad Tcnica Federico Santa Mara
comportamiento
Departamento de Informtica
Universidad Tcnica Federico Santa Mara
Departamento de Informtica
Universidad Tcnica Federico Santa Mara
Facilidad de mantenimiento
Resistencia a pruebas
Compatibilidad
Configurabilidad (habilidad para organizar y controlar
elementos de la configuracin de SW)
Facilidad con que se instala el sistema
Facilidad con la que se puede localizar el problema
Conceptos de diseo
Departamento de Informtica
Universidad Tcnica Federico Santa Mara
1.- Abstraccin
Cuando se considera una solucin modular a
cualquier problema se pueden exponer muchos
grados de abstraccin.
Alto
Nivel de
Abstraccin
Bajo
1.- Abstraccin
En la medida en que cambien los diferentes grados de
abstraccin se trabaja para crear abstracciones
procedimentales y de datos.
Una abstraccin procedimental, se refiere a una
secuencia de instrucciones que tiene una funcin
especfica y limitada.
Un ejemplo de abstraccin procedimental sera la palabra
abrir para una puerta.
Una abstraccin de datos es una coleccin nombrada de
datos que describe un objeto de datos.
En el contexto de abstraccin procedimental, abrir se
puede definir como una abstraccin de datos llamada
puerta.
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
2.- Arquitectura
La arquitectura de SW alude a La estructura general del
SW y las formas en que la estructura proporciona una
integridad conceptual para un sistema.
Desde un punto de vista ms simple, la arquitectura es la
estructura u organizacin de los componentes del
programa (mdulos), la manera es que stos
componentes interactan y la estructura de datos que
utilizan los componentes.
Una de las metas del diseo de SW es derivar una
representacin arquitectnica de un sistema.
Esta representacin sirve como el marco de trabajo a
partir del cual se conducen actividades de diseo ms
detalladas.
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
2.- Arquitectura
Un conjunto de patrones arquitectnicos permite que se
reutilicen conceptos a nivel de diseo.
Existen diferentes tipos de modelos que se pueden usar
para representar a una arquitectura.
Modelos estructurales: Representan la arquitectura como
una coleccin organizada de componentes del programa.
Modelos del marco de trabajo: incrementan el grado de
abstraccin del diseo al intentar identificar marcos de
trabajo repetibles del diseo arquitectnico que se
encuentran en tipos de aplicaciones similares.
Modelos dinmicos: abordan los aspectos conductuales de
la arquitectura del programa, al indicar cmo puede cambiar
la configuracin de la estructura o el sistema, como funcin
de los eventos externos.
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
2.- Arquitectura
Los modelos del proceso: se centran en el
diseo del proceso tcnico o de negocios que el
sistema debe contener.
Los modelos funcionales: pueden utilizarse para
representar la jerarqua funcional de un sistema.
3.- Patrones
Un patrn es una semilla de conocimiento, la cual tiene un
nombre y transporta la esencia de una solucin probada a
un problema recurrente dentro de cierto contexto en medio
de intereses en competencia.[Brad Appleton 98].
Un patrn de diseo describe una estructura de diseo que
resuelve un problema de diseo particular dentro de un
contexto especfico y en medio de fuerzas que pueden
tener un impacto en la manera en que se aplica y utiliza el
patrn.
Cada patrn describe un problema que ocurre una u otra
vez en nuestro entorno y despus describe la esencia de la
solucin a dicho problema, de tal forma que puedas usar
esta solucin un milln de veces ms, sin nunca hacerlo las
veces de la misma forma. [Christopher Alexander]
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
3.- Patrones
La finalidad de cada patrn de diseo es
proporcionar una descripcin que le permita al
diseador determinar:
Si el patrn es aplicable al trabajo actual
Si el patrn se puede reutilizar
Si el patrn puede servir como gua para
desarrollar un patrn similar, pero diferente en
cuanto a la funcionalidad o estructura.
4.- Modularidad
El SW se divide en componentes con nombres
independientes y que es posible abordar en forma
individual.
Estos componentes, llamados mdulos, se integran para
satisfacer los requisitos del problema.
Mdulo: cada una de las unidades claramente definidas y
manejables constituyentes del SW.
La modularidad es el atributo particular del SW que
permite que un programa sea manejable de manera
intelectual
Esta consiste en el particionamiento del SW en elementos
con nombres y direcciones separadas que se denominan
mdulos, los cuales en su composicin generan una
totalidad que debe ser capaz de resolver el problema que
da origen a la necesidad de construir un producto de SW.
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
4.- Modularidad
Tiene que ver con la divisin de las funciones que en
conjunto cumplen un objetivo mayor, esto es, responden a
la idea de totalidades emergentes propia de la nocin de
sistemas.
Sus beneficios son:
Programas ms simples, ya que puede ser comprendido,
verificado, programado, depurado, mejorado y alterado por
partes.
Mdulos que pueden ser desarrollados con relativa
independencia
Disminucin de la posibilidad de errores al reducir la
complejidad
Programas que pueden evaluarse por partes, por lo cual
todo test se hace ms fcil.
Programas ms fciles de alterar ya que son menores las
lneas de cdigo a considerar para incorporar los cambios.
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
4.- Modularidad
Sus beneficios son:
Mdulos de funcin nica que pueden ser reutilizados.
El programa puede ser comprendido por partes.
Disminuye errores de programacin. Son menos las lneas
de cdigo que deben enfrentar al mismo tiempo los
programadores.
Los efectos colaterales de los cambios que afectan al
sistema son drsticamente reducidos.
Rotacin de personal menos crtica, ya que los
programadores estn involucrados en unidades de cdigo
ms pequeas por lo cual la sustitucin resulta menos
dificultosa.
Responde al requerimiento de la divisin del cdigo en
segmentos de una pgina, como lo sugiere la programacin
estructurada.
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
4.- Modularidad
Un mdulo que controla a otro se dice que es
superordinado a ste y, reciprocamente, un
mdulo controlado por otro se dice que es
subordinado.
El FAN OUT es una medida del nmero de
mdulos controlados directamente por otro
mdulo (nmero de subordinados inmediatos que
posee).
El FAN IN indica cuntos mdulos controlan
directamente un determinado mdulo (Nmero de
superiores inmediatos que posee)
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
4.- Modularidad
Mdulo Superordinado
Mdulo Subordinado
FAN OUT: 2
FAN IN : 1
4.- Modularidad
Dividir hasta el infinito para que el Esfuerzo sea Cero ?
Costos
o Esfuerzo
Costo Total SW
Costo por Integracin
Costos Mnimos
N Mdulos
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
Cohesin
7.- Refinamiento
Proceso iterativo mediante el cual la arquitectuta del SW es
el reflejo de la especificacin de requerimientos del sistema,
el cual se realiza sistemticamente con el propsito de
lograr una estructura modular, es decir, una representacin
que explicite las relaciones entre los principales elementos
del SW.
Se configura una representacin que muestra una visin
global tanto de las estructuras de datos como de las
estructuras de los componentes.
Tras un proceso de refinamiento sucesivo se transforma en
una representacin del diseo muy cercana al cdigo fuente
En cuanto a los detalles de los procedimientos que han de
regir las transformaciones que deben llevarse a cabo en cada
mdulo y en estructuras de datos detalladas.
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
7.- Refinamiento
En cada etapa del refinamiento, se descomponen una o varias de
las instrucciones del programa dado en instrucciones cada vez
ms detalladas.
Esta descomposicin o refinamiento sucesivo termina cuando
todas las instrucciones estn expresadas en trminos de cualquier
lenguaje bsico de computacin o de programacin.
El refinamiento es un proceso de elaboracin, que se inicia con el
enunciado de una funcin (o una descripcin de datos) que se
define con un alto grado de abstraccin.
El enunciado describe los datos o la funcin de manera
conceptual, pero no proporciona informacin acerca de los trabajos
internos de la funcin o de la estructura interna de los datos.
El refinamiento hace que el diseador trabaje sobre el enunciado
original y que proporcione ms y ms detalles conforme se realiza
cada refinamiento sucesivo.
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
7.- Refinamiento
La abstraccin y el refinamiento son conceptos
complementarios.
La abstraccin permite al diseador especificar
procedimientos y datos sin considerar detalles de
grado menor.
El refinamiento ayuda al diseador a revelar los
detalles de grado menor mientras se realiza el
diseo.
Ambos conceptos auxilian al diseador en la
creacin de un modelo de diseo completo a
medida que evoluciona la actividad de diseo.
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
7.- Refinamiento
En la ISW, la modularizacin se apoya en lo que se
conoce como refinamiento sucesivo gradual para la
configuracin de la estructura del SW
Refinamiento
Gradual
Abstraccin
Mdulo A
Modularidad
A1
A2
Factorizacin
8.- Refabricacin
Es la tcnica de reorganizacin que simplifica el diseo (o
cdigo) de un componente sin cambiar su funcin o
comportamiento.
La refabricacin es el proceso de cambiar un sistema de
SW de tal forma que no se altere el comportamiento
externo de su cdigo y diseo y an as se mejore su
estructura interna.
Cuando un SW se refabrica el diseo existente se
examina en busca de redundancias, elementos de diseo
intiles,
algoritmos
innecesarios
o
insuficientes,
estructuras de datos inapropiadas o construidas de
manera incorrecta, o cualquier otra falla de diseo que se
pueda corregir para lograr un mejor diseo.
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
Departamento de Informtica
Universidad Tcnica Federico Santa Mara
Acoplamiento y cohesin
Departamento de Informtica
Universidad Tcnica Federico Santa Mara
Factores de calidad
Acoplamiento: Corresponde al grado de
independencia entre los mdulos.
Minimizar el acoplamiento aparece entonces
como un objetivo al configurar la estructura.
La obtencin de mdulos tan independientes
como sea posible se puede lograr de 3 maneras:
Eliminando relaciones innecesarias
Reduciendo el nmero de relaciones necesarias
Debilitando la dependencia de las relaciones
necesarias.
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
Tipos de Acoplamiento
1.
2.
3.
4.
5.
6.
7.
Acoplamiento normal
Acoplamiento de Datos.
Acoplamiento de Marca (stramp)
Acoplamiento de Control
Acoplamiento Comn
Acoplamiento Externo
Acoplamiento de contenido
Tipos de Acoplamiento
Mejor Acoplamiento
NORMAL
DATOS
DE MARCA (STAMP)
CONTROL
EXTERNO (caso especial de COMN)
COMN
CONTENIDO (grado ms alto : peor)
Grado de
Acoplamiento
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
Obtener
Datos
Cliente
Rut_cliente
Leer Rut
Calcular
Deuda
Cliente
Cliente
Leer Cliente
Cliente= rut+nombres+apellido_paterno+
apellido_materno+direccin+fono+e_mail
Obtener
Datos
Cliente
Tipo_dato
Cliente
Leer Cliente
Actualizar
Stock
Video
Obtener
Nombre
Video
video
Leer Registro
Video
Actualizar
DW
Obtener
Nmina
Registro_act
Nmina
DW
A
..
Srch: Move..
..
.
.
B
..
..
Jump to Srch
.
Tipos de acoplamiento
Los mdulos pueden estar relacionados por ms
de un tipo de acoplamiento. Si esto ocurre, el
acoplamiento que caracteriza la relacin entre
ellos queda definido por el peor tipo que
presenten.
Por ejemplo, si dos mdulos estn ligados por
acoplamiento de marca y acoplamiento comn a
la vez, se dir que los mdulos estn ligados por
acoplamiento comn.
Ideas centrales
Sistemas altamente acoplados conducen a
depurar verdaderas pesadillas. Evtelo.
Sistemas altamente acoplados, tienden a tratarse
como una sola gran unidad, y un sistema
monoltico es la contrapartida a particionar.
Hablar de mdulos, cajas negras, es hablar de
particionamiento
Particionar es la estrategia para abordar la
complejidad.
Las cajas negras se organizan jerrquicamente.
Pedro Francisco Godoy Barrera
Anlisis e implementacin de Sistemas
Tipos de Cohesin
Mayor Cohesin
FUNCIONAL
Mdulo como
Caja Negra
SECUENCIAL
COMUNICACIONAL
PROCEDURAL
TEMPORAL
Mdulo
Transparente
LGICA
COINCIDENTAL
Grado de
Cohesin
1.
2.
3.
4.
5.
6.
7.
.
Ejemplo:
Calcular
el
salario.
Obtener el suelo base
Verificar
nmero
de
cargas
Revisar das con permiso
Revisar das con licencia
Calcular horas de trabajo
Descontar
horas
de
atraso
Agregar horas extras.
Ejemplo obtener
producto
1. Obtener nombre
2. Obtener Stock
3. Obtener ubicacin
4. Obtener precio
..
datos
Actividades al iniciar el
da
1. Apagar despertador
2. Tomar ducha
3. Vestirse
4. Hacer la cama
5. Tomar desayuno
.
Ejemplo:
1. Comprar un libro
2. Comer un trozo de
torta
3. Ir al teatro
4. Lavar la ropa
5. Dormir
.
Departamento de Informtica
Universidad Tcnica Federico Santa Mara
Departamento de Informtica
Universidad Tcnica Federico Santa Mara