FTC: Agrupaciones de elementos

- Resistencias:

  • Serie
  • Paralelo

- Condensadores:

  • Serie
  • Paralelo

- Fuentes de tensión en serie
- Fuentes de intensidad en paralelo

- Resistencias en serie:
Están en serie si al intensidad que pasa por ellas es la misma y las podemos sustituir por una resistencia equivalente cuyo valor es:

- Resistencias en paralelo:
Están en paralelo si tienen la misma diferencia de potencial

ISI 18-10-2007: Principios de diseño:

PRINCIPIOS DE DISEÑO:

  • Hay que tener en cuenta enfoques alternativos.
  • Debemos poder rastrear el diseño hasta el modelo del análisis.
  • No hay que reinventar lo ya inventado (patrones de diseño).
  • La separación entre dominio del problema y dominio de la solución debe ser minimizada.
  • El diseño debe ser uniforme e íntegro.
  • Se tiene que estructurar el diseño para facilitar los cambios.
  • Debe ser flexible para que pueda admitir los cambios con facilidad.
  • El diseño no es escribir código y escribir código no es diseñar.
  • La calidad de un diseño hay que evaluarla durante su realización, no una vez terminado.
  • Es importante revisar el diseño en busca de errores conceptuales (semánticos)

La I.S. tiene estos principios universales en los que basarse. Lo más destacable es que tenemos que plantearnos si el problema está ya resuelto y documentado: “no inventes lo que ya está inventado”.
Principios específicos de diseño: son cuatro (trans):

  • Modularidad
  • Abstracción
  • Independencia funcional
  • Ocultamiento de información

Hay que tratar de conseguirlos.

Modularidad:
¿Qué es la modularidad? ¿Cómo tienen que ser nuestros diseños? Nuestro diseños debe de componer de piezas y sus relaciones entre ellas.
Es necesario dividir el software, de manera lógica, en un conjunto de módulos, donde cada uno realiza una sola actividad y con una interfaz bien definida.
Estos módulos tienen una serie de características:

  • Debe de tener un nombre que lo identifique.
  • Debe tener algo que diga donde empieza y donde acaba

Lo mínimo que nos podemos encontrar con forma de módulo es una función. Una pieza un poco más grande sería una clase, ya que incluye un conjunto de funciones. Lo siguiente que nos podemos encontrar son los paquetes, que son un conjunto de clases relacionadas y en las que definimos relaciones de jerarquía. Por encima de estos están los componentes, conjuntos de paquetes que representan nuestros subsistemas.
Beneficios de la modularidad:

  • Son mas fáciles de entender y de documentar.
  • Facilitamos los cambios.
  • Reducimos la complejidad.
  • Obtenemos implementación mas sencillas.
  • Posibilitamos el desarrollo en paralelo.
  • Posibilitamos la prueba independiente.

¿Qué grado de modularidad es necesario?
Mientras más módulos tengamos, menos esfuerzo tendremos que emplear para hacer cada módulo. Sin embargo más esfuerzo tendremos que emplear en la comunicación entre tantas piezas. Esta relación la podemos ver en la siguiente gráfica.

Abstracción:
Mediante la abstracción vamos destacando los elementos importantes del sistema, para después ir detallándolos en distintos niveles de abstracción, volviendo a identificar los elementos importantes en cada nivel. Es decir, la abstracción es el mecanismo que nos permite determinar qué es relevante y qué no lo es en un nivel de detalle determinado.
Mecanismos de abstracción en el diseño:

  • Abstracción procedimental: Estructura modular basada en procedimientos. Se abstrae sobre el funcionamiento. Describimos a grandes rasgos qué hace nuestro módulo, sin decir cómo lo hace.
  • Abstracción de datos: Abstraemos el estado de nuestro módulo (atributos) y su funcionamiento. Aquí definimos por ejemplo las clases.
  • Abstracción de control: Abstrae el flujo de control de cualquier proceso en general. Por ejemplo, los iteradores son un mecanismo de abstracción de control sobre estructuras repetitivas. De hecho las mismas estructuras repetitivas son una abstracción de control
  • Refinamiento por pasos: Desarrollar un programa paso a paso partiendo de sentencias macroscópicas hasta llegar a nivel de sentencia en un lenguaje de programación

Independencia funcional:
Está referido a las piezas y a que sean lo más independientes posibles entre ellas. Que cada módulo se ocupe de una tarea específica o un conjunto de tareas relacionadas entre ellas.
¿Por qué independencia funcional?

  • Se pueden compartir las funciones.
  • Es más fácil de reutilizar.
  • Son mas fáciles de mantener y probar.
  • Se reduce la propagación de errores.
  • Se simplifican las interfaces.

La independencia funcional se mide mediante dos parámetros:

  • COHESIÓN.
  • ACOPLAMIENTO.

Ocultamiento de información:
Que a los datos privados de cada módulo sólo tenga acceso el propio módulo. Entre módulos se comunican mediante envío de mensajes, nunca dejando acceso directo a los datos privados. Es conveniente distinguir entre encapsulación y ocultamiento de de información. Encapsulación es el concepto de coger determinados elementos y agruparlos como una entidad, mientras que el oculta miento consiste en hacer que parte de esos elementos no sean accesibles desde fuera del módulo.
Ventajas del ocultamiento de información:

  • Reduce la probabilidad de “efectos colaterales”.
  • Limita el impacto global de las decisiones de diseño local.
  • Enfatiza la comunicación a través de interfaces controladas.
  • Disminuye el uso de datos globales.
  • Conduce al encapsulamiento (un atributo de diseño de alta calidad).
  • Produce software de alta calidad

ISI 18-10-2007: Diseño de Interfaces

El otro día terminamos el diseño arquitectónico. Hoy veremos el diseño de interfaces:

DISEÑO DE INTERFACES:

El diseño de la interfaz de la base de datos lo dejamos fuera ya que se ve con más detalle en la asignatura de Bases de Datos.

- Interfaz de usuario:
Permite la comunicación entre el sistema y el usuario. Para diseñarla tenemos muchas herramientas que nos ayudan, de las cuales una de las más usadas el diseño de prototipos:

Casi todos los elementos de la interfaz se colocan dentro de ese diseño usando determinados símbolos. Automáticamente diseñamos la interfaz en un entorno gráfico sin necesidad de programar código (jbuilder), definiendo las características de la ventana, menús, botones, acciones… etc. En definitiva tenemos muchas facilidades para el diseño de la interfaz y el esquema de prototipos permite un desarrollo rápido.

- El diseño de los datos:
Tenemos que partir del análisis, de donde obtenemos un esquema u otro en el que esté representada la arquitectura de información que hay en el problema. En el análisis vamos a tener el conjunto de entidades y relaciones, por ejemplo. En el diseño nos preocupamos de ese esquema y de traducirlo, en este caso a un modelo relacional, que es un diseño de tablas donde contemplamos esas relaciones y entidades.
Ya nos queda implementar esas tablas haciendo uso de algunas herramientas de bases de datos relacionales. Obviamente esto funciona cuando usamos un modelo entidad-relación, con otros son diferentes.

- El diseño de componentes:
¿Donde se quedo el diseño arquitectónico? En el diseño de componentes, identificando cada uno de los subsistemas. ¿Ahora qué nos queda? Tenemos que definir esas piezas, y eso es lo que hace el diseño de componentes. Ahí tenemos cosas más elementales, en las que podamos usar herramientas de este tipo:

En la imagen podemos ver el uso de dos herramientas (pseudocódigo y diagramas de flujo de control) para describir un módulo concreto (proceso de un registro). Formalmente el diseño de componentes se define como la descripción procedimental de cada uno de los componentes elementales de la arquitectura.

Y con esto acabamos con todas las tereas que hay que hacer en el diseño: Disepo arquitectónico, diseño de datos, de la interfaz de usuario y diseño de cada uno de los componentes del diseño arquitectónico.

FTC : Ejercicios con elementos lineales I



- Es la intensidad que baja por la resistencia de 2k