Lenguajes de alto nivel Lenguaje que permite representar el mecanismo de resolución de los problemas usando instrucciones independientemente de la computadora Cercanía conceptual al programador Pascal, C, Java, etc. son lenguajes de alto nivel Capacidad de abstracción Abstracción procedimental (poder representar operaciones más complejas como calcular las raíces de un polinomio) Abstracción de datos (poder representar información más compleja como el estado de una cuenta bancaria)
¿Cómo conseguir que la computadora “entienda” los programas escritos en lenguajes de alto nivel? Intérprete Analiza el programa fuente y lo ejecuta directamente en la máquina Compilador Analiza el programa fuente y lo traduce a lenguaje máquina Ej. Turbo Pascal es un compilador de Pascal
El sistema operativo Programa básico encargado de manejar el hardware y facilitar el trabajo a los demás programas (aplicaciones) proporcionándoles un conjunto de servicios genéricos Asignación de tiempos de CPU Control y asignación racional de los recursos de la computadora Ejecución de programas Controlar la E/S (ej., almacenar/recuperar en/de memoria permanente) Control de errores y protección (ej., monitorizar la ejecución de un programa) Interfaz con el usuario …
¡Sin sistema operativo todo sería mucho más complicado!
El sistema operativo (cont.) ¿Quién ejecuta el sistema operativo? Las computadoras suelen estar preparadas para, al arrancar, ejecutar un pequeño programa que, a su vez, se encarga de ejecutar el sistema operativo En el caso de los PCs normales, se almacena en memoria un programa denominado BIOS (Basic Input/Output System), capaz de localizar en memoria secundaria el programa “cargador” del sistema operativo
Aplicaciones de propósito específico Programas que permite en uso de la computadora para la realización de trabajos específicos y que se implantan sobre el sistema operativo Procesadores de texto Hojas de cálculo Sistemas de gestión de bases de datos Herramientas de diseño e ingeniería Juegos …
La programación: resolución de problemas Un programa es una secuencia de instrucciones con un propósito concreto que un ordenador puede interpretar y ejecutar Programar es resolver problemas Conjunto de actividades implicadas en la descripción, el desarrollo y la implementación eficaz de soluciones algorítmicas a problemas bien especificados
Algoritmo 1. m. Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. (Extraído del Diccionario de la RAE, 22ª edición)
Un algoritmo es, por tanto, una sistemática que transforma un estado inicial en un estado final La entrada del programa: Precondiciones Descripción del estado inicial (datos y situación de partida) La salida del programa: Postcondiciones Descripción del estado final (datos y situación deseada al acabar)
La programación: resolución de problemas (cont.) Utilizamos los lenguajes de programación para expresar los algoritmos de forma que el ordenador los entienda De igual forma, que utilizamos la lengua castellana para expresar nuestras ideas a otras personas Recuerda: Programar BIEN no es sólo conocer la sintaxis de uno o varios lenguajes de programación
El problema del montón de fichas Supongamos que tenemos un montón de fichas, cada una de las cuales tiene escrito el nombre de una persona junto con otros datos personales (fecha de nacimiento, dirección, número de teléfono). Las fichas están ordenadas alfabéticamente por el nombre. Creamos una nueva ficha y deseamos incorporarla al montón existente. ¿Cómo dividimos el montón original en dos montones, tales que todas las fichas del primer montón precedan a la nueva en la ordenación y todas las del segundo no le precedan, pudiendo estar alguno de los montones finales vacío?
¿Cuáles son las precondiciones? ¿Cuáles son las postcondiciones? ¿Qué algoritmos se te ocurren? ¿Qué lenguaje utilizamos para describir todo lo anterior?
La programación: resolución de problemas (cont.)
(Gp:) Análisis (Gp:) Diseño (Gp:) Implementación (Gp:) Pruebas (Gp:) Mantenimiento
El Ciclo de Vida del Software Todas las tareas a realizar desde que se concibe un programa hasta que se deja de utilizar (no sólo “hasta que se codifica” ni “hasta que se instala”) Existen distintos modelos del ciclo de vida software, aunque nosotros estudiaremos el más simple: Modelo en Cascada
(Gp:) Análisis (Gp:) Diseño (Gp:) Implementación (Gp:) Pruebas (Gp:) Mantenimiento
(Gp:) “Quiero 3 habitaciones, 2 baños, garaje…” (Gp:) Planos, diseño circuito eléctrico y de agua… (Gp:) Se construye la casa (Gp:) Se comprueba la solidez de la estructura, el funcionamiento de las instalaciones, el acabado… (Gp:) Algunas reparaciones, se cierra la terraza, se instala aire acondicionado… (Gp:) Casa
(Gp:) ¿Qué tiene que hacer exactamente nuestro programa? (Gp:) ¿Cómo vamos a organizar el programa? ¿Qué partes tendrá y cómo funcionará? (Gp:) Se construye el software (Gp:) Ponemos a prueba nuestro programa, incluso en situaciones límite (Gp:) Pequeñas modificaciones o correcciones (parches), actualizaciones, etc… (Gp:) Software
Fases en el desarrollo de una aplicación (cont.) Análisis Actividad en la que se analizan y clarifican los diferentes aspectos del problema que debe ser resuelto por la aplicación, con el fin de establecer claramente qué debe ser construido El resultado es, normalmente, un documento de requisitos software que especifica claramente las funcionalidades de la aplicación Funcionalidad = lo que tiene que hacerse (sin saber todavía cómo)
Fases en el desarrollo de una aplicación (cont.) Diseño Actividad en la que se decide la organización y la estructura de una aplicación que satisfaga los diferentes requisitos establecidos en la fase de análisis El resultado es uno (o varios) documentos de diseño que especifican claramente cómo construir la aplicación Mientras que el análisis se ocupa de qué hay que hacer, el diseño se ocupa de cómo hacerlo Hay varias técnicas de diseño, nosotros estudiaremos una de las más básicas: el diseño funcional
Fases en el desarrollo de una aplicación (cont.) Implementación Actividad en la que se construye (codifica) la aplicación utilizando un lenguaje de programación concreto, y siguiendo, las directrices marcadas por los documentos de diseño Si las actividades anteriores han sido realizadas correctamente, la fase de implementación debería ser bastante trivial La implementación se encarga de concretar el diseño teniendo en cuenta un lenguaje y herramienta de desarrollo concreta
Fases en el desarrollo de una aplicación (cont.) Pruebas Actividad en la que se asegura que la aplicación construida satisface los requisitos del usuario Se debe invertir mucho tiempo en hacer pruebas (¡mucho más que en su implementación!) Dos pasos diferenciados Verificación: ¿Se ajusta la aplicación construida a los requisitos establecidos? Validación: ¿Resuelve la aplicación el problema que realmente tenía el usuario?
Fases en el desarrollo de una aplicación (cont.) Mantenimiento Actividad en la que la aplicación se modifica para satisfacer cambios o ampliaciones en los requisitos del usuario, corregir errores, etc. ¡Es la actividad más costosa en el desarrollo de software!(Tened en cuenta que hay programas que están muchos años en funcionamiento y lo usan miles de personas) Estos costes pueden aliviarse si se hacen bien todo lo anterior
*Otras actividades Confección de los manuales de usuario Planificación y control del proyecto Gestión de versiones …
Fases en el desarrollo de una aplicación (cont.) Este Modelo en Cascada, tan lineal, no suele aplicarse “tal cual” en la vida real Conviene hacer pruebas desde las primeras fases de desarrollo, por ejemplo para detectar y corregir errores prematuros, etc. Los programas suelen construirse en varias iteraciones (sacando primero una versión básica, luego otra con más funcionalidad añadida, etc.) Cada iteración es un ciclo completo (análisis, diseño, pruebas, etc.), siendo el diseño más importante en las primeras y la implementación más importante en las últimas
Lenguajes de programación Un lenguaje de programación puede describirse a tres niveles distintos: Nivel sintáctico Descripción de la forma (= sintaxis) de las instrucciones Suelen utilizarse lenguajes artificiales con mucho “formalismo” (= rigor matemático y lógico) Nivel semántico Descripción del significado (= semántica) de las instrucciones Puede utilizarse lenguaje natural (español, inglés, etc.) o intentar expresarse de manera más formal Nivel pragmático Descripción de cómo se utilizan las instrucciones Suelen utilizarse tutoriales y ejemplos de programas…
Página anterior | Volver al principio del trabajo | Página siguiente |