Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Javier Martín
Centro Asociado de Móstoles /
Tres Cantos
UNED
|
ë JAV|ER MART|N (jmartin@escet.urjc.es)
£ TUTOR|AS: JUEVES/V|ERNES de 7 a 9
ë PLAN DE TRABAJO
£ Exposición de los temas y mediante
transparencia, abundando en los puntos
más importantes.
£ Resolución de dudas
£ Propuesta y resolución de ejercicios y
problemas
módulos
ë D|SEÑO PROCED|MENTAL, organización de las
#a!jj, identificar los elementos significativos del sistema y abstraer la utilidad específica de cada uno
£ ABSTRACC|ONES FUNC|ONALES, sirven para crear expresiones parametrizadas usando funciones o
procedimientos
£ T|POS ABSTRACTOS, junto con el tipo de datos se deben crear los métodos que manejan estos datos
£ MÁQU|NAS ABSTRACTAS, definición formal del comportamiento de una máquina
ë , el diseño modular propone dividir el sistema en partes diferenciadas y definir sus interfaces. Sus
ventajas: claridad, reducción de costos y reutilización
ë !, a partir de una idea no muy concreta se va refinando mediante aproximaciones hasta el detalle
ë a!j!a!a, para organizar la información que maneja el sistema: registros, conjuntos, listas, pilas,
colas, árboles, grafos, tablas, ficheros, ...
ë j!j, de la organización de los datos internos y de los detalles del algoritmo, se muestra en el interfaz sólo
aquello que resultará invariable ante cambios. Ventajas: depuración, mantenimiento, ...
ë j, consiste en diseñar un elemento genérico, con las características comunes a todos los elementos
agrupados
ë ùj, los elementos hijos heredan del padre su estructura y operaciones para ampliarlos, mejorarlos o
adaptarlos. Es conveniente utilizar un lenguaje de programación orientado a objetos
ë ÿa, es la propiedad de los elementos que pueden variar su formar sin cambiar su naturaleza. Se
emplea el concepto de genericidad. En los hijos se puede producir la anulación de una operación. A veces en el
padre interesa declarar un método sin implementarlo, lo harán los hijos en diferido
ë jjj, se trata de aprovechar al máximo el procesador garantizando unos tiempos máximos de
respuesta para tareas críticas. Problemas de los sistemas con restricciones:
£ Tareas concurrentes, asegurar que todas cumplen sus restricciones
£ Sincronización de tareas, determinando los puntos de sincronización entre ellas
£ Comunicación entre tareas, unas serán productoras de datos y otras consumidoras. Para evitar la corrupción
de datos compartidos permitir sólo concurrencia en lectura con semáforos, monitores y regiones críticas
£ |nterbloqueos (deadlock) cuando varias tareas esperan un evento que nunca se producirá
£ CAJAS ADOSADAS
.
+)/"
0 12
3
/
1
a
%
4
1
(
%
3
5%
1
5"
%
56%
%
%
4
%
7
5"&/"a)):%
£ @77=a
%
£ @77@à % 1
3(
%
%
7
£ @77A)
%
B
C
£ @77D
%
%
7)
79%
72"
(
7=*
7@a
7Aà %
7D)
7E
7F
7G/
7à
$/Jà)$7!)a$à"a*
$/Jà)7&$);I )a)"a "&/"a
|NGEN|ERÍA DEL SOFTWARE Javier Martín U
7
- |
| 1
El grado de acoplamiento mide la interrelación entre dos módulos, según el tipo de conexión y la
complejidad de la interfase:
ë FUERTE,
ë POR CONTEN|DO, cuando desde un módulo se pueden cambiar datos locales de otro
ë COMÚN, se emplea una zona común de datos a la que tienen acceso varios módulos
ë MODERADO,
ë DE CONTROL, la zona común es un dispositivo externo al que están ligados los módulos,
esto implica que un cambio en el formato de datos afecta a todos estos módulos
ë POR ET|QUETA, en ontercambio de datos se realiza mediante una referencia a la
estructura completa de datos (vector, pila, árbol, grafo, ...)
ë DÉB|L,
ë DE DATOS, viene dado por los datos que intercambian los módulos. Es el mejor posible
ë S|N ACOPLAM|ENTO D|RECTO, es el acoplamiento que no existe
|NGEN|ERÍA DEL SOFTWARE Javier Martín Uè
||
2 |
ë Es necesario lograr que el contenido de cada módulo tenga la máxima coherencia. Para que el nº de
módulos no sea demasiado elevado y complique el diseño se tratan de agrupar elementos afines y
relacionados en un mismo módulo.
ë ALTA
ë COHES| N ABSTRACC|ONAL, se logra cuando se diseña el módulo como tipo abstracto
de datos o como una clase de objetos
ë COHES| N FUNC|ONAL, el módulo realiza una función concreta y específica
ë MED|A
ë COHES| N SECUENC|AL, los elementos del módulo trabajan de forma secuencial
ë COHES| N DE COMUN|CAC| N, elementos que operan con le mismo conjunto de datos
de entrada o de salida
ë COHES| N TEMPORAL, se agrupan elementos que se ejecutan en el mismo momento. Ej.
Arrancar o parar dispositivos
ë BAJA
ë COHES| N L G|CA, se agrupan elementos que realizan funciones similares. Ejs.: módulos
de E/S o de tratamiento de errores
ë COHES| N CO|NC|DENTAL, es la peor y se produce cuando los elementos de un módulo
no guardan relación alguna
ë La descripción del comportamiento de un módulo permite establecer el grado de cohesión:
ë Si es una frase compuesta y contiene más de un verbo la cohesión será MED|A
ë Si contiene expresiones secuenciales (primero, entonces, cuando...), será temporal o secuencial
ë Si la descripción no se refiere a algo específico (Ej. Todos los errores), cohesión lógica
ë Si aparece ³inicializar´, ³preparar´, ³configurar´, probablemente sea temporal.
ë Según esta técnica, la tarea de diseño consiste en pasar de los DFDs a los
diagramas de estructura.
ë Hay que establecer una jerarquía o estructura de control entre los diferentes
módulos, que no está implícita en el modelo funcional descrito en los DFDs
ë Para dos módulos relacionados en el DFD (A) tenemos 3 posibilidades de
organización modular diferentes.
%
%
%
(
% 7
%
%
ë Nos vamos a referir a las últimas fases del ciclo de vida: codificación,
pruebas de unidades, integración y pruebas de sistema.
ë Cuando alguna de las pruebas no resulta positiva es necesario repetir
la codificación o la integración y probar de nuevo.
ë La fase de codificación constituye el núcleo central en cualquiera de los
modelos y tiene una importancia fundamental ya que elabora los
programas fuente.
ë Previamente a la codificación es necesario elegir el lenguaje que se
empleará así como la metodología de programación. También se
pueden establecer en el equipo unas normas y un estilo de
programación común, lo que mejorará la coordinación y facilitará el
trabajo. Además se consigue facilitar el mantenimiento y mejorar la
reusabilidad del software.
ë Cuando el resultado de las pruebas no sea satisfactorio será necesario
modificar el código, lo que podrá introducir nuevos errores. Si la
programación es estructurada será más fácil localizar la disfunción y la
posterior modificación y las pruebas del código, dónde podemos
introducir puntos de test.
£ Lo importante es la elaboración de los casos de prueba con el objetivo de descubrir los errores e
incorrecciones. Métodos:
5/$)):!$aaàI )H$!)$
( %
%
(
%
(
%
(
7+ 1
3
5à
(
%
%
5
% % (
(
1
(
7a %
% 0
(
7
5$!)a)aàH$!"a!#&)
%
%
7
à
%
% 3
5
%
(
1
5&
%
4
%
1%
%
5
%
7a
K2G%
G9G128
5"
%
(
1
%
5"&/$$):àHa)"a
( (
%
(
%
1
%
7
5&/!"à!$) )):
1 6% %
%
C
(
%
% 6%
7
|NGEN|ERÍA DEL SOFTWARE Javier Martín èX
- | | .
ë Se tiene en cuenta la estructura interna del módulo. Los
casos de prueba deben conseguir que:
£ Todas las decisiones se ejecuten en uno y otro sentido
£ Todos los bucles se ejecuten en los supuestos más
diversos posibles
£ Todas las estructuras de datos se modifiquen y
consulten alguna vez
ë La complejidad de los módulos dificulta realizar exhaustivas
pruebas de caja transparente. Conviene que participen
expertos con un conocimiento amplio de las estructura del
programa. Métodos:
')&)"!:)"
/ '$aà' !a
% 7a
%
7
3
%
%
7 5'
L
%
%
G89
10
7
+ 1
%
5'
L6
%
%
G89
( 7
&N8&1&M8
L6
KL%
M8 5'
L % %
%
7
(
%
%
&/!"à!$) )):
%
1
6% 7
$
(
% %
L
(
|NGEN|ERÍA DEL SOFTWARE Javier Martín è
- | | .
à
21
=%
%
0
%
%
% %
(
7
3
[ )
%
[ )
[ )
,%
%
B-7
a B
(
%
%
3
5%
1 4
3+
$a
$a%
7
%
7 &0
, 1 4
-
7
%
B
%
7
5
%
7
%
(
%C
6
4
1 % 7
5%
( 1( 3 %
% 1%
1
7a
%
7/
3
U$
( C
1
1
7
U
7
U
%
1
7
5%
7/
7
5%
7/
(
%
1
1
(
7
5%
( 7à
6
4
%
6
7
5%
%
1
7*
%
%
1
1
7
à %
%
(
(
7
)/a)$a
)a7!
%%
%
%
6%
7
%
%
1
%
7
/
(
%
7$
% 1 4
% %
7 )a
%
3
5
%
7
5$ % %
7
$
6
)a%
6
%
0
0
7
$
3
U/,/
(
-7
%
B7a
%%
%
7a
C%
% 0
( % (
%
76
%
%
%
% /1
C
0
%
1
/$7
Ua*, O a
*
1-7à
1
Q
P
%
6 0
7a
0
3 (
1 0
7!
(
%
%
1
(
7! 0
%
%
%
1
(
(C
7
U&
)a &$7
%
%
%
%
%
%
B
%
%
%
1 7
% %
%
0
7
$
%
$a
%
%
%
7
|NGEN|ERÍA DEL SOFTWARE Javier Martín o è