Análisis y diseño de sistemas de información
En esta unidad aprenderá los conceptos principales de diseño estructurado y
entenderá la importancia de los sistemas de información, así como sus conexiones
para solucionar problemas
Tema 1
Definición
Diseño estructurado es el proceso de decidir que componentes, y la
interconexión entre los mismos, para solucionar un problema bien especificado.
Objetivos
"El diseño estructurado, tiende a transformar el desarrollo de
software de una práctica artesanal a una disciplina de
ingeniería".
Eficiencia
Mantenibilidad
Modificabilidad
Flexibilidad
Generalidad
Utilidad
Principios
Abstraccion
La noción psicológica de abstracción permite concentrarse en un problema al
mismo nivel de generalización, independientemente de los detalles irrelevantes
de bajo nivel.
Modularidad
La arquitectura implica modularidad, el
software se divide en componentes con
nombres y ubicaciones determinados,
que se denominan módulos, y que se
integran para satisfacer los requisitos del
problema
Arquitectura de software
La arquitectura del software se refiere a dos características importantes del
software de computadoras:
1. la estructura jerárquica de los componentes procedimentales (módulos)
2. la estructura de datos.
Jerarquia del control
La jerarquía de control, también denominada estructura de programa,
representa la organización (frecuentemente jerárquica) de los componentes
del programa
Estructura de datos
La estructura de datos es una representación de la
relación lógica existente entre los elementos individuales de datos.
Procediminetos
La estructura del programa define la jerarquía de control,
independientemente de las decisiones y secuencias de
procesamiento.
Ocultamiento
El principio de ocultamiento de la información sugiere que los módulos se han de
caracterizar por decisiones de diseño que los oculten unos a otros.
Tema 2
Definicion
Cuando se trata con un problema de diseño, por ejemplo un
sistema que pueda ser desarrollado en un par de semanas, no se
tienen mayores problemas, y el desarrollador puede tener todos los
elementos del problema "en mente" a la vez.
Concepto cajas negras
Este concepto es de suma utilidad e importancia en la ingeniería en general, y por
ende en el desarrollo de software.
Manejo de complejidad
En principio diremos que escribir un programa "grande"
generalmente lleva más tiempo que escribir un "pequeño".
Esto es valedero si medimos "grande" y "pequeño" en
unidades apropiadas.
Complejidad en términos humanos
En el punto anterior realizamos un análisis sobre la incidencia de la complejidad en los
costos, y cómo manejarla a través de la subdivisión de un problema en problemas
menores. Vimos que muchos de nuestros problemas en diseño y programación se
deben a la limitada capacidad de la mente humana para lidiar con la complejidad.
Estructura
La primera observación es que la información es
menos compleja si se presenta en forma lineal y
más compleja si se presenta en forma anidada.
La segunda observación es que la información
se menos compleja se se presenta en
modo afirmativo o positivo
Tema 3
Definición
Los métodos de diseño del software se obtienen del estudio de cada uno de los tres
dominios del modelo de análisis. El dominio de los datos, el funcional y el de
comportamiento sirven de directriz para la creación del diseño.
Diseño de datos
El impacto de la estructura de datos sobre la estructura del programa y la
complejidad procedimental hace que el diseño de datos tenga una gran
influencia en la calidad del software.
Diseño arquitectonico
El objetivo principal del diseño arquitectónico es
desarrollar una estructura de programa modular y
representar las relaciones de control entre los módulos.
Proceso de diseño arquitectonico
El diseño orientado al flujo de datos define varias representaciones que
transforman el flujo de la información en la estructura del programa.
El Diseño Orientado al Flujo de Datos permite una cómoda transformación de
las representaciones de la información (DFD) a una descripción de la
estructura del programa. Este proceso debe seguir los siguientes pasos:
1) Establecer el tipo de flujo de información.
a. Flujo de transformación.
b. Flujo de transacción.
2) Determinar los límites del flujo.
3) Convertir el DFD en la estructura del programa.
4) Definir la jerarquía de control descomponiéndola mediante particionalmente.
5) Refinar la estructura resultante usando medidas y heurísticas de diseño.
Tema 4
Definición
Los diagramas de estructura son simplemente una herramienta para modelar los
módulos de un sistema y sus relaciones y, junto con las especificaciones de
funcionalidad de los módulos y las estructuras de datos de las cuplas, componen un
diseño inicial que deberá ser analizado y mejorado
Acoplamiento
El acoplamiento entre módulos clasifica el grado de independencia entre pares
de módulos de un DE. El objetivo es minimizar el acoplamiento, es decir,
maximizar la independencia entre módulos
Cohesion
Otro medio para evaluar la partición en módulos (además del acoplamiento) es
observar como las actividades de un módulo están
relacionadas unas con otras; este es el criterio de
cohesión.
Descomposicion
La descomposición es la separación de una función contenida en un módulo,
para un nuevo módulo. Puede ser hecha por cualquiera de las siguientes
razones.
1.3.1 Reducir el tamaño del módulo
La descomposición es una manera eficiente de trabajar
con módulos grandes. Un buen tamaño para un módulo
es alrededor de media página (30 líneas).
Ciertamente, toda codificación de un módulo
debería ser visible en una página (60 líneas).
En esta unidad hablaremos sobre la introducción y la Presentación de las
herramientas de diseño estructurado. Aquellos que están obligados a guardar una
forma convencional. Entre éstos tenemos a los administrativos, los cuales son
importantes porque sirven para transmitir la información entre el tiempo en que los
requisitos del usuario son definidos y documentados. Aquí Veremos las técnicas
de cohesión y acoplamiento de módulos.
Tema 1
Definicion
El desarrollo de sistemas pequeños, en la cual participan una o
dos personas, es una tarea simple.
Analisis
Modela los requerimientos del usuariobtopic
Diseño
Se modela la solución del sistema, teniendo en cuenta el ambiente de implementación a utilizar, por ejemplo, si el sistema es centralizado o distribuido, la
base de datos a utilizar, lenguaje de programación, performance deseada, etc.
Inmplementacion
Dado el lenguaje de programación elegido se implementa
el sistema.
Tema 2
Definicion
El análisis estructurado, como otros métodos, permite construir modelos de sistemas a
partir del análisis de sus procesos y/o actividades que se ejecutan asociados al
sistema. Permite al equipo encargado del estudio del desarrollo o la organización
conocer de forma lógica un sistema o proceso
Conceptos que se relacionan
enciones para identificar y describir los
componentes de un sistema junto con las
relaciones entre estos componentes.
Diccionario de datos; descripciones de
todos los datos utilizados en el sistema.
Descripciones de procesos y procedimientos; declaraciones formales que
emplean técnicas y lenguajes que permiten a los analistas describir actividades
importantes que forman parte del sistema.
Reglas; estándares para describir y documentar el sistema en forma correcta y
completa
Fase de diseño
Diseño de datos. Transforma el modelo de dominio de la
información creado durante el análisis, en las estructuras de
datos necesarias para implementar el software. Los objetos
de datos y las relaciones definidas en el diagrama entidadrelación y el contenido detallado de datos del diccionario de
datos constituyen la base para el diseño de datos.
Diseño arquitectónico. Define la relación entre los
principales elementos estructurales del programa. Se obtiene a partir del modelo
de análisis y de la interacción de subsistemas definidos dentro del modelo de
análisis.
Diseño de interfaz. Describe como se comunica el software consigo mismo,
con los sistemas que operan con él y con los operadores que lo emplean. Los
diagramas de flujo de datos y control proporcionan la información necesaria para
el diseño de la interfaz.
Diseño procedimental. Transforma elementos estructurales de la arquitectura
del programa en una descripción procedimental de los componentes del
software. Se obtiene a partir de la especificación del proceso, la especificación
del control y el diagrama de transición de estados.
Componentes
Símbolos gráficos: Identifica y describe los componentes de un sistema y las
relaciones entre estos.
Diccionarios de datos: Describe todos los datos utilizados
en el sistema pueden ser manual o automatizado.
Descripciones de procesos y
procedimientos: descripción técnica para
describir las actividades que se realizan los
procesos.
Reglas: Pasos a seguir para describir y
documentar el ven forma correcta y completa.
Tema 3
Definicion
Muchos aspectos de la modularización pueden ser
comprendidos solo si se examinan módulos en relación con
otros.
Factores que influencian
Tipo de conexión entre módulos: los sistemas normalmente conectados, tienen
menor acoplamiento que aquellos que tienen conexiones patológicas.
Complejidad de la interface: Esto es aproximadamente igual al número de
ítems diferentes pasados (no cantidad de datos). Más ítems, mayor
acoplamiento.
Tipo de flujo de información en la conexión: los sistemas con acoplamiento de
datos tienen menor acoplamiento que los sistemas con acoplamiento de
control, y estos a su vez menos que los que tienen acoplamiento híbrido.
Momento en que se produce el ligado de la Conexión: Conexiones ligadas a
referentes fijos en tiempo de ejecución, resultan con menor acoplamiento que
cuando el ligado tiene lugar en tiempo de carga, el cual tiene a su ver menor
acoplamiento que cuando el ligado se realiza en tiempo de linkage-edición, el
cual tiene menos acoplamiento que el que se realiza realiza en tiempo de
compilación, todos los que a su vez tiene menos acoplamiento que cuando el
ligado se realiza en tiempo de codificación.
Tipos de conexiones
Una conexión en un programa, es una referencia de un elemento, por
nombre, dirección, o identificador de otro elemento.
Una conexión intermodular ocurre cuando el elemento referenciado está en
un módulo diferente al del elemento referenciante.
El elemento referenciado define una interface, un límite del
módulo, a través del cual fluyen datos y control. La
interface puede considerarse como residente en el
elemento referenciado. Puede pensarse como un
enchufe (socket) donde la conexión del elemento referenciante se inserta
Complejidad de la interface
La segunda dimensión del acoplamiento en la complejidad. Cuanto más
compleja es una conexión, mayor acoplamiento se tiene. Un módulo con una
interface de 100 parámetros generará mayor acoplamiento que un que solo
necesite tres parámetros.
El significado de "complejidad" es el de complejidad en
términos humanos, tal lo visto anteriormente
Tema 4
Definicion
Hemos visto que la determinación de módulos en un sistema no es arbitraria. La
manera en la cual dividimos físicamente un sistema en piezas (particularmente en
relación con la estructura del problema) puede afectar significativamente la
complejidad estructural del sistema resultante, así como el número total de referencias
inter modulares.
Niveles de cohesion
Diferentes principios asociativos fueron
desenvolviéndose a través de los años por
medio de la experimentación, argumentos
teóricos, y la experiencia práctica de muchos
diseñadores
Cohesion casual
La cohesión casual ocurre cuando existe poca o ninguna relación entre los
elementos de un módulo.
La cohesión casual establece un punto cero en la escala de cohesión.
Es muy difícil encontrar módulos puramente casuales. Puede aparecer como
resultado de la modularización de un programa ya escrito, en el cual el
programador encuentra un determinada secuencia de instrucciones que se
repiten de forma aleatoria, y decide por lo tanto agruparlas en una rutina
Cohesion logica
Los elementos de un módulo están lógicamente asociados si puede pensarse
en ellos como pertenecientes a la misma clase lógica de funciones, es decir
aquellas que pueden pensarse como juntas lógicamente.
Por ejemplo, se puede combinar en un módulo simple todos los elementos de
procesamiento que caen en la clase de "entradas", que abarca todas las
operaciones de entrada