Luis Octavio Reyes Alatorre no. Mat. 250023521 Programación estructural El programa completo tiene un diseño modular. Los módulos se diseñan con metodología descendente (puede hacerse también ascendente) Cada módulo se codifica utilizando las tres estructuras de control básicas: secuenciales, selectivas y repetitivas. Estructuración y modularidad son conceptos complementarios. Compuesto de segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o por una página o más de codificación. Cada segmento tiene solamente una entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamás se ejecuten, se denominan programas propios. Programación orientada a objetos El programa se organiza como un conjunto finito de objetos que contienen datos y operaciones (funciones miembro en C++) que llaman a esos datos y que se comunican entre sí mediante mensajes. Programación orientada a aspectos Requiere de tres elementos básicos: Un lenguaje para definir la funcionalidad basica, conocido como lenguaje base o componente. Podría ser un lenguaje como C#, C++, Java o Lisp. Un objeto es una abstracción de algún hecho o cosa del mundo real que tiene atributos que representan sus características o propiedades y métodos que representan su comportamiento o acciones que realizan. Uno o varios lenguajes de aspectos, para especificar el comportamiento de los aspectos. Como podrían ser COOL para sincronización o RIDL para distribución. Todas las propiedades y métodos comunes a los objetos se encapsulan o se agrupan en clases. ¨Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los objetos son instancias de clases Protección de la información Un tejedor de aspectos (aspect weaver) que produce una aplicación que integra las funcionalidades de las clases y los aspectos. Tal proceso se puede llevar acabo en tiempo de ejecución o en tiempo de compilación. La programación orientada a aspectos se enfoca en los conceptos que se entrecruzan Programación orientada a eventos El flujo de ejecución del programa sigue la secuencia de sentencias que lo forman. El estado del programa: esta definido por el punto del programa en el que estamos ejecutando,(más los datos). Programas que atienden a sucesos (eventos) que ocurren, y dependiendo de cuales sean, se ejecutan diferentes funciones. No existe un único flujo de ejecución Se especifican los eventos a los que debe responder el programa. Se especifican las acciones a realizar cuando ocurren los eventos. Funcionamiento asíncrono. Más difícil de conocer que en un sistema secuencial. Suelen ser Multihilo Existen varios módulos ejecutándose a velocidades relativas diferentes. Luis Octavio Reyes Alatorre no. Mat. 250023521 -Los programas son más fáciles de entender. Puede ser leído en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lógica. La estructura del programa es más clara puesto que las instrucciones están más ligadas o relacionadas entre si Reducción del esfuerzo en las pruebas. El programa se puede tener listo para producción normal en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas o depuración, se facilita debido a la lógica más visible, de tal forma que los errores se pueden detectar y corregir más fácilmente. Programas más sencillos y más rápidos. Aumento en la productividad del programador. Se facilita la utilización de las otras técnicas para el mejoramiento de la productividad en programación. Los programas quedan mejor documentados internamente. Rápido desarrollo Fácil mantenimiento Se desea evitar la definición multiple de datos y funciones común, se logra mediante la herencia (evita la definición multiple de propiedades comunes a muchos objetos) y el polimorfismo (permite la modificación de métodos heredados) Permite una implementación modularizada reduciendo el acoplamiento entre sus partes. El código es más limpio, menos duplicado, más fácil de entender y de mantener. Elimina los problemas causados por el código mezclado y el código diseminado. Mayor reutilización, los aspectos tienen mayores probabilidades de ser reutilizados en otros sistemas con requerimientos similares. Los sistemas son más adaptables a cambios, la separación de conceptos permite agregar nuevos aspectos, modificarlos o removerlos fácilmente. Los eventos internos ocurren en cualquier momento. El usuario decide que módulos ejecuta, cuando, y cuantas veces. Pueden existir módulos que no se ejecuten nunca, o que se ejecuten varias instancias simultáneamente. Existen datos compartidos entre todos los módulos. Necesita elementos que monitoricen cuando se producen los eventos, los capturen, y los metan en una cola y planificador o distribuidor que saque un evento de la cola y se lo pase al módulo que debe reaccionar ante él Luis Octavio Reyes Alatorre no. Mat. 250023521