Programa: Conjunto unitario de instrucciones que permite a un ordenador
realizar funciones diversas, como el tratamiento de textos, el diseo de grficos, la resolucin de problemas matemticos, el manejo de bancos de datos, etc. Pero normalmente se entiende por programa un conjunto de instrucciones ejecutables por un ordenador. Un programa estructurado es un programa que cumple las condiciones de un algoritmo (finitud, precisin, repeticin, resolucin del problema,...) Aplicacin. Software formado por uno o ms programas, la documentacin de los mismos y los archivos necesarios para su funcionamiento, de modo que el conjunto completo de archivos forman una herramienta de trabajo en un ordenador. Normalmente en el lenguaje cotidiano no se distingue entre aplicacin y programa; en nuestro caso entenderemos que la aplicacin es un software completo que cumple la funcin completa para la que fue diseado, mientras que un programa es el resultado de ejecutar un cierto cdigo entendible por el ordenador.
Historia del software. La crisis del software Los primeros ordenadores cumplan una nica programacin que estaba definida en los componentes elctricos que formaban el ordenador. La idea de que el ordenador hiciera varias tareas (ordenador programable o multipropsito) hizo que se idearan las tarjetas perforadas. En ellas se utilizaba cdigo binario, de modo que se hacan agujeros en ellas para indicar el cdigo 1 o el cero. Estos primeros programas lgicamente servan para hacer tareas muy concretas. La llegada de ordenadores electrnicos ms potentes hizo que los ordenadores se convirtieran en verdaderas mquinas digitales que seguan utilizando el 1 y el 0 del cdigo binario pero que eran capaces de leer miles de unos y ceros. Empezaron a aparecer los primeros lenguajes de programacin que escriban cdigo ms entendible por los humanos que posteriormente era convertido al cdigo entendible por la mquina. Inicialmente la creacin de aplicaciones requera escribir pocas lneas de cdigo en el ordenador, por lo que no haba una tcnica especificar a la hora de crear programas. Cada programador se defenda como poda generando el cdigo a medida que se le ocurra. Poco a poco las funciones que se requeran a los programas fueron aumentando produciendo miles de lneas de cdigo que al estar desorganizada hacan casi imposible su mantenimiento. Slo el programador que haba escrito el cdigo era capaz de entenderlo y eso no era en absoluto prctico. La llamada crisis del software ocurri cuando se percibi que se gastaba ms tiempo en hacer las modificaciones a los programas que en volver a crear el software. La razn era que ya se haban codificado millones de lneas de cdigo antes de que se definiera un buen mtodo para crear los programas. La solucin a esta crisis ha sido la definicin de la ingeniera del software como un oficio que requera un mtodo de trabajo similar al del resto de ingenieras. La bsqueda de una metodologa de trabajo que elimine esta crisis parece que an no est resuelta, de hecho los mtodos de trabajo siguen redefinindose una y otra vez. Errores Cuando un programa obtiene una salida que no es la esperada, se dice que posee errores. Los errores son uno de los caballos de batalla de los programadores ya que a veces son muy difciles de encontrar (de ah que hoy en da en muchas aplicaciones se distribuyan parches para subsanar errores no encontrados en la creacin de la aplicacin). Tipos de errores Error del usuario. Errores que se producen cuando el usuario realiza algo inesperado y el programa no reacciona apropiadamente. Error del programador. Son errores que ha cometido el programador al generar el cdigo. La mayora de errores son de este tipo. Errores de documentacin. Ocurren cuando la documentacin del programa no es correcta y provoca fallos en el manejo Error de interfaz. Ocurre si la interfaz de usuario de la aplicacin es enrevesada para el usuario impidiendo su manejo normal. Tambin se llaman as los errores de protocolo entre dispositivos. Error de entrada / salida o de comunicaciones. Ocurre cuando falla la comunicacin entre el programa y un dispositivo (se desea imprimir y no hay papel, falla el teclado,...) Error fatal. Ocurre cuando el hardware produce una situacin inesperado que el software no puede controlar (el ordenador se cuelga, errores en la grabacin de datos,...) Error de ejecucin. Ocurren cuando la ejecucin del programa es ms lenta de lo previsto. La labor del programador es predecir, encontrar y subsanar (si es posible) o al menos controlar los errores. Una mala gestin de errores causa experiencias poco gratas al usuario de la aplicacin.
Programacin Introduccin La programacin consiste en pasar algoritmos a algn lenguaje de ordenador a fin de que pueda ser entendido por el ordenador. La programacin de ordenadores comienza en los aos 50 y su evolucin a pasado por diversos pasos. La programacin se puede realizar empleando diversas tcnicas o mtodos. Esas tcnicas definen los distintos tipos de programaciones. Programacin desordenada Se llama as a la programacin que se realizaba en los albores de la informtica (aunque desgraciadamente en la actualidad muchos programadores siguen emplendola). En este estilo de programacin, predomina el instinto del programador por encima del uso de cualquier mtodo lo que provoca que la correccin y entendimiento de este tipo de programas sea casi ininteligible. Programacin estructurada En esta programacin se utiliza una tcnica que genera programas que slo permiten utilizar tres estructuras de control: Secuencias (instrucciones que se generan secuencialmente) Alternativas (sentencias if) Iterativas (bucles condicionales)
Programacin modular Completa la programacin anterior permitiendo la definicin de mdulos independientes cada uno de los cuales se encargar de una tarea del programa. De esta forma el programador se concentra en la codificacin de cada mdulo haciendo ms sencilla esta tarea. Al final se deben integrar los mdulos para dar lugar a la aplicacin final. El cdigo de los mdulos puede ser invocado en cualquier parte del cdigo. Realmente cada mdulo se comporta como un subprograma que, partir de unas determinadas entradas obtienen unas salidas concretas. Su funcionamiento no depende del resto del programa por lo que es ms fcil encontrar los errores y realizar el mantenimiento. Programacin orientada a objetos Es la ms novedosa, se basa en intentar que el cdigo de los programas se parezca lo ms posible a la forma de pensar de las personas. Las aplicaciones se representan en esta programacin como una serie de objetos independientes que se comunican entre s. Cada objeto posee datos y mtodos propios, por lo que los programadores se concentran en programar independientemente cada objeto y luego generar el cdigo que inicia la comunicacin entre ellos. Es la programacin que ha revolucionado las tcnicas ltimas de programacin ya que han resultado un importante xito gracias a la facilidad que poseen de encontrar fallos, de reutilizar el cdigo y de documentar fcilmente el cdigo.
Lenguajes de programacin Introduccin Los lenguajes de programacin permiten codificar algoritmos en el ordenador. Son una serie de smbolos e instrucciones de acuerdo con una sintaxis que facilita su posterior traduccin a cdigo entendible por el ordenador. En realidad los ordenadores slo reconocen un lenguaje formado por los unos y ceros del cdigo binario. Segn la disposicin de esos unos y ceros entender unas instrucciones u otras. De esa forma hay lenguajes ms prximos al lenguaje de las computadores (lenguajes de bajo nivel) y lenguajes ms prximos al lenguaje humano (lenguajes de alto nivel) Cdigo mquina (lenguaje de primera generacin) Est formado por una sucesin de unos y ceros que el procesador del ordenador reconoce como instrucciones. Es el lenguaje que reconoce directamente el ordenador por lo tanto es el que est a ms bajo nivel. Slo se ha utilizado por los programadores en los inicios de la informtica. Su incomodidad de trabajo hace que sea impensable para ser utilizado. Pero cualquier programa de ordenador debe, finalmente, ser convertido a este cdigo para que un ordenador puede ejecutar las instrucciones de dicho programa. Un detalle a tener en cuente es que el cdigo mquina es distinto para cada tipo de procesador. Lo que hace que los programas en cdigo mquina no sean portables entre distintas mquinas. Ensamblador (lenguajes de segunda generacin) Se trata de un lenguaje que representa el cdigo mquina pero escrito con una serie de trminos mnemotcnicos que facilitan su escritura. Despus un software especial se encargar de traducir las instrucciones a cdigo mquina. Este lenguaje tiene traduccin exacta al cdigo mquina, por lo que es un lenguaje diferente para cada procesador; es decir, no es portable. La ventaja de este lenguaje es que se puede controlar absolutamente el funcionamiento de la mquina, lo que permite crear programas muy eficientes. Lo malo es precisamente que hay que conocer muy bien el funcionamiento de la computadora para crear programas en estos lenguajes. Adems las lneas requeridas para realizar una tarea se disparan ya que las instrucciones de la mquina son excesivamente simples.
Lenguajes de alto nivel (lenguajes de tercera generacin) Se aproximan ms al lenguaje de los humanos. Los programas se disean en un lenguaje estricto pero independiente de la mquina, lo que permite que la escritura del cdigo cree programas ejecutables en cualquier mquina. Hace falta software que transforme el cdigo en el lenguaje de alto nivel en cdigo entendible por el ordenador en un proceso conocido como interpretacin o compilacin (dependiendo del lenguaje). El cdigo es menos eficiente que en el caso anterior, pero es ms entendible y mucho ms fcilmente corregible. Hoy en da casi todos los lenguajes son de alto nivel. Lenguajes de cuarta generacin o 4GL (fourth generation languages) Son lenguajes en los que apenas hay cdigo y en su lugar aparecen indicaciones sobre qu es lo que el programa debe de obtener. En estos lenguajes hay herramientas de tipo ms visual mediante las que se disea el funcionamiento del programa. Los lenguajes de consulta de datos, creacin de formularios, informes,... son lenguajes de cuarto nivel. Aparecieron con los sistemas de base de datos.
Metodologa de la programacin Introduccin Se entiende por metodologa el conjunto de reglas y pasos estrictos que se siguen para desarrollar una aplicacin informtica completa. Hay diversas metodologas, algunas incluso registradas (hay que pagar por utilizarlas). Independientemente de la metodologa utilizada suele haber una serie de pasos comunes a todas ellas (relacionados con el ciclo de vida de la aplicacin): [1] Anlisis [2] Diseo [3] Codificacin [4] Ejecucin [5] Prueba [6] Mantenimiento [1] Anlisis Al programar aplicaciones siempre se debe realizar un anlisis. El anlisis estudia los requisitos que ha de cumplir la aplicacin. El resultado del anlisis es una hoja de especificaciones en la que aparecen los requerimientos de la aplicacin. Esta hoja es redactada por el o la analista, la persona responsable del proceso de creacin de la aplicacin. En la creacin de algoritmos sencillos, el anlisis consistira nicamente en: Determinar las entradas. Es decir, los datos que posee el algoritmo cuando comienza su ejecucin. Esos datos permiten obtener el resultado. Determinar las salidas. Es decir, los datos que obtiene el algoritmo como resultado. Lo que el algoritmo devuelve al usuario. Determinar el proceso. Se estudia cul es el proceso que hay que realizar.
[2] Diseo En esta fase se crean esquemas que simbolizan a la aplicacin. Estos esquemas los elaboran analistas. Gracias a estos esquemas se simboliza la aplicacin. Estos esquemas en definitiva se convierte en la documentacin fundamental para plasmar en papel lo que el programador debe hacer. En estos esquemas se pueden simbolizar: la organizacin de los datos de la aplicacin, el orden de los procesos que tiene que realizar la aplicacin, la estructura fsica (en cuanto a archivos y carpetas) que utilizar la aplicacin, etc. La creacin de estos esquemas se puede hacer en papel, o utilizar una herramienta CASE para hacerlo. En el caso de la creacin de algoritmos, conviene en esta fase usar el llamado diseo descendente. Mediante este diseo el problema se divide en mdulos, que, a su vez, se vuelven a dividir a fin de solucionar problemas ms concretos. Al diseo descendente se le llama tambin top-down. Gracias a esta tcnica un problema complicado se divide en pequeos problemas que son ms fcilmente solucionables. [3] Codificacin Escritura de la aplicacin utilizando un lenguaje de programacin (C, Pascal, C++, Java,...). Normalmente la herramienta utilizada en el diseo debe ser compatible con el lenguaje que se utilizar para codificar. Es decir si se utiliza un lenguaje orientado a objetos, la herramienta de diseo debe ser una herramienta que permita utilizar objetos. [4] Ejecucin Tras la escritura del cdigo, mediante un software especial se traduce a cdigo interpretable por el ordenador (cdigo mquina). En este proceso pueden detectarse errores en el cdigo que impiden su transformacin. En ese caso el software encargado de la traduccin (normalmente un compilador o un intrprete) avisa de esos errores para que el programador los pueda corregir. [5] Prueba Se trata de testear la aplicacin para verificar que su funcionamiento es el correcto. Para ello se comprueban todas las entradas posibles, comprobando que las salidas son las correspondientes. [6] Mantenimiento En esta fase se crea la documentacin del programa (paso fundamental en la creacin de aplicaciones). Gracias a esa documentacin se pueden corregir futuros errores o renovar el programa para incluir mejoras detectadas, operaciones que tambin se realizan en esta fase.