1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4...

23

Transcript of 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4...

Page 1: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.
Page 2: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

1.1 Programación lineal.

1.2 Programación estructurada.

1.3 Programación orientada a objetos.

1.4 Relación entre la programación orientada a objetos y la programación estructurada.

1.5 Metodología para la solución de problemas basados en computadora.

Unidad 1.- Evolución de los paradigmas de programación.

Page 3: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

Programación lineal.

Los lenguajes de programación lineal (BASIC, COBOL Y FORTRAN) no tenían facilidad para reutilizar el código existente de programas. De hecho se duplicaban segmentos de software cada vez más en muchos programas. Los programas se ejecutaban en secuencias lógicas, haciendo la lógica difícil de comprender. El control de programas era difícil y se producían continuos saltos a lo largo del referido programa. Aún más, los lenguajes lineales no tenían capacidad de controlar la visibilidad de los elementos llamados datos.

Evolución de los paradigmas de programación

Page 4: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

Programación Modular

El soporte más elemental de la programación Modular llegó con la aparición de la subrutina. Una subrutina ha creado una secuencia de instrucciones a las que se les da un nombre independiente; una vez que se ha definido, la subrutina se puede ejecutar simplemente incluyendo el nombre del programa siempre que se requiera. Las subrutinas proporcionan una división natural de las tareas que diferentes programas utilizan. Aunque las subrutinas proporcionan el mecanismo básico de la programación Modular,  se necesita mucha disciplina para crear software bien estructurado. Sin esta disciplina, es fácil escribir programas compilados y tortuosos difíciles de modificar y comprender, así como imposible de mantener. Esta ha sido la panorámica durante muchos años en el desarrollo del software.

Page 5: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

Programación Estructurada.

Un concepto importante en campo de la programación Estructurada: Abstracción, ya que la Abstracción se puede definir como la capacidad de examinar algo sin preocuparse de los detalles internos. En un programa estructurado, es suficiente conocer que un procedimiento sea fiable, para que se pueda utilizar sin tener que conocer cómo funciona su interior. Esto se conoce como una Abstracción funcional y es el núcleo de la programación estructurada. Hoy casi todos los lenguajes de programación tienen construcciones que facilitan la programación estructurada.

Page 6: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

POO (Programación Orientada a Objetos).

La Programación Orientada a Objetos toma las mejores ideas de la programación estructurada la combina con nuevos y poderosos conceptos que animan o alientan una nueva visión de la tarea de la programación. La Programación Orientada a Objetos permite descomponer fácilmente un problema en subgrupos de partes relacionadas. Entonces, puede traducir estos subgrupos en unidades auto contenidas llamadas Objetos.

Page 7: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

Relación entre la programación orientada a objetos y la programación estructurada

Una diferencia importante entre la programación estructurada y la programación orientada a objetos es que la programación estructurada separa los datos de las funciones, mientras que la programación orientada a objetos define un conjunto de objetos donde se combina de forma modular los datos con las funciones.

Page 8: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

Las metodologías de ingeniería de software más utilizadas en la actualidad están basadas en los modelos estructurados de Yourdon, Constantine, DeMarco, Page-Jones, Martin, Jackson.

El análisis y diseño estructurado se concentra principalmente en especificar y descomponer la funcionalidad del sistema total, donde en general, los cambios a los requisitos cambiarían totalmente la estructura del sistema.

En ambas metodologías, podemos encontrar componentes similares, los cuales apoyan los tres aspectos generales del sistema: modelo de objetos, dinámico y funcional.

La diferencia principal entre las dos metodologías es de estilo y en el énfasis que se le da a cada modelo. La POO está dominada por el modelo de objetos, que da el contexto para los modelos dinámico y funcional, mientras que en la estructurada el modelo funcional domina, el modelo dinámico es el siguiente en importancia, y el modelo de objeto es el menos importante.

Relación entre la programación orientada a objetos y la programación estructurada

Page 9: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

La programación estructurada organiza el sistema alrededor de procedimientos. En contraste, los sistemas orientados a objetos se organizan alrededor del concepto de objetos.

Si la mayoría de las modificaciones en los requisitos son cambios en la funcionalidad más que en los objetos, entonces los cambios pueden ser críticos para sistemas basados en funciones, mientras que las modificaciones en la funcionalidad son rápidamente acomodados en los sistemas orientados a objetos. La programación estructurada es útil para problemas donde las funciones son más importantes y complejas que los datos.

Un diseño orientado a objetos es generalmente más resistente a cambios y más extensible.

Relación entre la programación orientada a objetos y la programación estructurada (continuación)

Page 10: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

En la programación estructurada la descomposición de un proceso en subprocesos es bastante arbitraria. Diferentes personas producirían diferente descomposiciones. En cambio, en el diseño orientado a objetos, la descomposición está basada en los objetos del dominio del problema. Por lo tanto los desarrolladores de diferentes programas en el mismo dominio tienden a descubrir objetos similares, lo cual incrementa el reuso de componentes de un proyecto a otro.

El enfoque orientado a objetos integra de mejor forma las bases de datos con código de programación. En cambio, un enfoque de diseño procedural tiene grandes problemas al tratar con las bases de datos, ya que es difícil integrar código de programación organizado alrededor de funciones con base de datos organizadas alrededor de datos.

Relación entre la programación orientada a objetos y la programación estructurada (continuación)

Page 11: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

Programación

Por programación se entiende la serie completa de pasos para resolver un problema en una computadora.A menudo la palabra programación ha sido usada como sinónimo de codificación, es decir el proceso de escribir instrucciones en un lenguaje informático; sin embargo, antes de codificar una solución es necesario realizar una enorme cantidad de trabajo.

Metodología para la solución de problemas basados en computadora

Page 12: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

La programación se compone de dos fases:

A Fase de resolución del problema:

B Fase de implementación:

Metodología para la solución de problemas basados en computadora

Page 13: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

A Fase de resolución del problema:

Definición del problema: Un entendimiento claro de qué es lo que se pretende resolver para crear una solución adecuada.

Desarrollo de la solución: Excepto en los casos de problemas simples, un programa no está formado por una única tarea, sino que serán varias tareas interrelacionadas. Es extremadamente importante especificar en qué consiste cada tarea y cómo se relaciona con las demás.

Selección de algoritmos: Un algoritmo es un método específico para resolver un problema. Una vez que se han determinado las tareas y subtareas, para cada una de ellas se debe especificar qué información requiere y qué resultados va a producir. Hay que especificar detalladamente cómo se realiza la tarea.

Prueba: Seguir exactamente los pasos para ver si la solución resuelve verdaderamente el problema.

Metodología para la solución de problemas basados en computadora

Page 14: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

B Fase de implementación:

Codificación: Para los pasos anteriores no ha sido necesario usar un lenguaje informático en particular, pero una vez que se ha organizado la solución del problema y se tienen los detalles paso a paso del algoritmo, se escribe el programa en el lenguaje informático más conveniente.

Depuración: Muy rara vez un programa corre adecuadamente una vez que ha sido codificado; es necesario localizar y corregir todos los errores que inevitablemente se cometen.

Validación: No basta con obtener resultados de un programa, es necesario garantizar que los resultados que se obtienen son correctos en todos los casos.

Documentación: La documentación de un programa debe contener la definición del problema, la descripción de los algoritmos y el listado del programa. Se debe considerar tanto la documentación técnica para que otros programadores puedan modificar el programa si es necesario, así como la documentación para el usuario del programa.

Mantenimiento: Los programas escritos y que están en uso, frecuentemente requieren modificaciones o correcciones.

Metodología para la solución de problemas basados en computadora

Page 15: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

Ciclo de vida del software

Análisis

Planeación

Diseño

Implementación

Transición

Mantenimiento

Obsolescencia

El desarrollo de software es un proceso muy complejo requiriendo de una metodología eficiente y sistemática. El ciclo de vida de un sistema de computación comienza con la formulación de un problema, seguido de análisis, diseño, implementación, verificación y validación del software. A continuación prosigue una fase operacional durante la cual se mantiene y extiende el sistema. El modelo orientado a objetos presenta un enfoque evolucionado para la ingeniería de software.Existen diversas metodologías para el desarrollo de sistemas orientados a objetos, todos sustentados en principios similares aunque no idénticos.

Page 16: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

La planeación de la estrategia produce modelos de alto nivel de un negocio y, con éstos, define un plan para desarrollar un conjunto de proyectos de sistemas interrelacionados.

Al análisis del sistema modela un área de sistemas basados en ideas y conceptos de los expertos de dominio proponiendo cualquier decisión relacionada con la instrumentación.

El primer paso del análisis es generar la descripción del problema por medio de interacciones con los usuarios, desarrolladores, administradores, y expertos en el área del problema.

Durante el análisis :· Se muestra los aspectos más importantes del sistema sin importar su implementación final.· El análisis sirve para comunicarse con los clientes y los expertos en el área, sin necesidad de tener un conocimiento de la computación.· El análisis es una representación concisa de lo "que" el sistema va a hacer pero no "como".· El analista trabaja con el cliente para clarificar la descripción del problema, la cual originalmente puede ser incompleta, e incluso tener inconsistencias.

Page 17: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

El diseño del sistema desarrolla un modelo de instrumentación o implementación basado en los modelos conceptuales desarrollados durante el análisis del sistema.

La etapa de diseño consiste de dos fases:

1) Diseño de sistemas.

2) Diseño de objetos.

Page 18: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

Diseño de Sistemas

Durante el diseño de sistemas :

• Se toman decisiones de alto nivel sobre la arquitectura del sistema a desarrollarse.• Se diseña el ambiente de implementación, incluyendo decisiones sobre software y hardware.• El sistema de divide en subsistemas basados en los modelos de análisis y la arquitectura propuesta.• Se identifica la concurrencia en el sistema.• Los subsistemas se asignan a los procesadores y tareas según la arquitectura propuesta.• Se escoge el manejo de almacenamientos de datos.• Se escogen los mecanismos para coordinar el acceso a recursos globales• Se escoge la implementación del control del software.• Se escoge el enfoque para el manejo de condiciones de borde, como errores.• Se deciden las prioridades durante el diseño, incluyendo

- Rendimiento- Memoria- Protocolos de comunicación- Flexibilidad- Extensibilidad

Page 19: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

Diseño de Objetos

Durante el diseño de objetos :

• Se añaden detalles para la implementación final, basados en el análisis, tales como:

- Extensión y refinamiento de las estructura de datos- Descripción final de algoritmos

• Se combinan los tres modelos para determinar con más detalle las operaciones en las clases.• Se escoge o diseña los algoritmos para implementar los métodos.• Se escogen las estructuras de datos.• Se añaden clases, operaciones, y objetos internos del sistema.• Se hacen optimizaciones al sistema.• Se ajusta la herencia creando superclases abstractas para incrementar el reuso de codigo.• Se determina la representacion final de los objetos.• Se empacan las clases y operaciones en módulos.

Page 20: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

La implementación del sistema implica la elaboración y la prueba de programas, base de datos y redes de acuerdo con el que haya quedado definido durante el diseño del sistema.

Durante la implementación:• Se traduce el diseño a un lenguaje de programación particular, bases de datos o hardware.• La implementación debe ser relativamente sencilla y directa, ya que todas las decisiones han sido hechas en las etapas previas.

Page 21: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

Implementación con Lenguajes de Programación• El lenguaje de programación no tiene que ser necesariamente orientado a objetos.• El uso de un lenguaje de programación orientado a objetos hace más fácil la implementación de un diseño orientado a objetos• La elección del lenguaje influye en el diseño, pero el diseño no debe depender de los detalles del lenguaje.• Si se cambia de lenguaje de programación no debe requerirse el re-diseño del sistema.

Implementación con Base de Datos• Se pueden utilizar bases de datos orientadas a objetos u otros tipos de bases de datos.• Si los aspectos dinámicos y funcionales del sistema son pocos, comparados con las estructuras del sistema, una base de datos relacional puede que sea suficiente.• Una base de datos relacional se puede utilizar para implementar las estructuras del sistema.• Una base de datos persistente se puede utilizar para guardar las estructuras fuera del programa.

Page 22: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

La transición del sistema instala los sistemas implementados.

El mantenimiento del sistema consiste en realizar los cambios necesarios para que este continué adaptándose a las necesidades de los usuarios, con la frecuencia que las necesidades dicten.

La obsolescencia es la etapa final del ciclo de vida del software y esta ocurre cuando los cambios que requiere para continuar adaptándose a las necesidades del cliente son demasiados o ya se a modificado tantas veces que ya perdió su practicidad. Es entonces cuando el ciclo vuelve a repetirse.

Page 23: 1.1 Programación lineal. 1.2 Programación estructurada. 1.3 Programación orientada a objetos. 1.4 Relación entre la programación orientada a objetos y.

Las metodologías de desarrollo de sistemas tratan solo las primeras cinco fases del ciclo de vida del software: planeación, análisis, diseño, implementación y transición.

Cuando analizamos sistemas, creamos modelos del área de aplicación que nos interesa.

Un modelo puede incorporar un sistema, centrarse en el área de la empresa o abarcar toda la empresa.

El modelo representa un aspecto de la realidad y se construye de modo que nos ayude a comprender a esta.

Con el análisis orientado a objetos, la forma de modelar la realidad difiere del análisis convencional. Modelamos el mundo en términos de tipos de objetos y lo que le ocurre a éstos. Los modelos que construimos en el análisis OO reflejan la realidad de modo más natural que los del análisis tradicional de sistemas. Mediante las técnicas OO, construimos software que modela mas fielmente el mundo real. Cuando el mundo real cambia, nuestro software es más fácil de cambiar, lo que es una ventaja real.