Material de apoyo Unidad 1 Fundamentos de programación

Slides:



Advertisements
Presentaciones similares
EL PROCESO DE DESARROLLO DEL SOFTWARE
Advertisements

Ciclo de vida de desarrollo de software
MODELOS ORIENTADOS A OBJETOS
También conocido como Diseño Lógico Rodrigo Salvatierra Alberú.
ANÁLISIS DE REQUERIMIENTOS
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Resolución de Problemas Algoritmos y Programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Ciclo de desarrollo del software
Fundamentos de Ingeniería de Software
Musitec.
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Ingeniería del Software
Ingeniería del Software
Programas Son una serie o secuencia de instrucciones entendibles por los ordenadores que permiten la realización de las acciones o tareas para las que.
CICLO DE VIDA DE UN PROYECTO DE SOFTWARE
M.S.C. Ivette Hernández Dávila
METODOLOGIA DE LA PROGRAMACION
Sistemas Evolutivos Introduccion.
TRADUCTOR DE UN PROGRAMA
Ingeniería de Software
Ingeniería de Software Orientado a Objetos
DISEÑO DE SOFTWARE 1ª. Parte
Gestión de Proyectos Informáticos Sesión N° 5 Ciclo de Vida de un Proyecto Roberto Jijena I.
LENGUAJE DE PROGRAMACIÓN
PROGRAMACIÓN PROCEDIMENTAL
Diseño de algoritmos La computadora puede realizar procesos y darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza. Con.
1 Diseño Orientado a Objetos Agustín J. González ELO-329: Diseño y Programación Orientados a Objetos 1er. Sem
Unidad VI Documentación
METODOLOGÍA OMT Diseño de sistemas.
Modelos de desarrollo de Software
Metodología para solución de problemas
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
FUNDAMENTOS DE PROGRAMACION
INSTITUTO TECNOLOGICO DE MINATITLAN ASIGNATURA: FUNDAMENTOS DE PROGRAMACION DOCENTE: JOSE ANGEL TOLEDO ALVAREZ ALUMNA: ALEJANDRA OSORIO ARVISU SEMESTRE:
Importancia en la efectividad del:
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
Desarrollo de Software Orientado a Objetos (deficiencias)
Pruebas y La Vida del Ciclo de Desarrollo del Software
Metodología de la programación
INGENIERIA DE SOFTWARE
Alexander Aristizabal Ángelo flores herrera
Diseño de Sistemas.
Ciclo de vida de un sistema
Ingeniería de Requisitos
1.4 CLASIFICACION DE LA TECNOLOGIA EN EL DESARROLLO DEL SOFTWARE
TIPOS DE AUDITORÍAS EN SISTEMAS DE INFORMACIÓN
IDENTIFICACIÓN DEL CICLO DE VIDA DEL SOFTWARE. POLITÉCNICO COLOMBIANO JAIME ISAZA CADAVID.
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Desarrollo de lógica algorítmica.
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
Simón Esneider Herrera Álvarez Media Técnica Casd 10-2
Modelo Prescriptivos de proceso
Ingeniería del Software I
Edwin Oliveros.  El diseño de sistemas consiste en la transformación del modelo de diseño, que toma en cuenta los requerimientos no funcionales y las.
Ciclo de Vida del Software
Preocupaciones del Analista Programador & Usuarios
MÓDULO INTRODUCCIÓN AL CICLO DE VIDA DEL SOFTWARE
Proceso de desarrollo de Software
 Panorama General Fundamentos de Programación M.I. Jaime Alfonso Reyes Cortés.
Harware Software Yuneidy moreno 7-2 Tecnología i. E. devora Arango.
Las fases del ciclo de la vida de desarrollo de sistemas
RAPID APPLICATION DEVELOPMENT RAD. Proceso de RAD Involucrar en todos los aspectos al usuario en el desarrollo del sistema Uso continuo y repetitivo de.
Software de Comunicaciones
Modelo de procesos de software
CICLO DE VIDA DE UN SOFTWARE. Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de.
Objetivos de la prueba Los objetivos principales de realizar una prueba son: Detectar un error. Tener un buen caso de prueba, es decir que tenga más probabilidad.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Material de apoyo Unidad 1 Fundamentos de programación Instituto Tecnológico de Culiacán Licenciatura en Informática Fundamentos de programación Material de apoyo Unidad 1 Prof. Felipe E. Muñiz R.

TEMARIO Unidad 1.- Evolución de los paradigmas de programación. 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.

Evolución de los paradigmas de programación 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.

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.

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.

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.

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.

Relación entre la programación orientada a objetos y la programación estructurada 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 (continuación) 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) 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.

Metodología para la solución de problemas basados en computadora 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 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 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 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.

Ciclo de vida del software 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. Planeación Análisis Diseño Implementación Transición Mantenimiento Obsolescencia

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.

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: Diseño de sistemas. Diseño de objetos.

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

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.

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.

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.

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.

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.