Está en la página 1de 97

REPBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACIN SUPERIOR UNIVERSIDAD NACIONAL EXPERIMENTAL SIMN RODRGUEZ

LICENCIATURA EN ADMINISTRACIN CTEDRA: INTRODUCCIN AL PROCESAMIENTO DE DATOS FACILITADOR (A): LIC. ZAIMA MARQUEZ

SOFTWARE

Participantes Hidalgo, Jos C.I. 16.474.897 Medina, Jorge C.I. 15.024.508 Omaa, Richard C.I. 16.555.725 Puentes, Jackeline C.I. 14.667.599 Volcanes, Marbelis C.I. 15.200.151

Caracas, mayo de 2010 INDICE Contenido Pg. .3

Introduccin

Etimologia.......................................................................................4 Definicin de sotware............................................................................4 Clasificacin del software......................................................................5 Software Libre .......................................................................................45 Software Libres actuales.......................................................................52 Proceso de creacin del Software.........................................................58 Etapas de desarrollo del Software.........................................................71 Conclusin ............................................................................................88 Bibliografa.............................................................................................90 Anexos...................................................................................................91

INTRODUCCIN

En el trabajo que presentamos a continuacin estudiaremos que es el Software, la etimologa que lo define, como un conjunto de programas. Los cuales son una secuencia de instrucciones que pueden ser interpretadas por un computador, obteniendo un resultado que ha sido predeterminadamente establecido por el ser humano. Se explicara la clasificacin del software, dividida en software de sistemas, que incluyen los sistemas operativos, controles de dispositivos, herramientas de diagnostico, servidores y las diferentes utilidades que lo componen; el software de programacin est compuesto por editores de textos, copiladores, depuradores entre otros; el software de aplicacin, comprende los software educativos, software empresarial y diversas bases de datos. Se investigo sobre la definicin del software libre, sus ventajas y desventajas, los diferentes tipos de Licencias y los diferentes tipos de Sotfware libres actuales (GNU/Linux, Mozilla Firefox). Tambin indagaremos sobre el proceso de creacin del software, los modelos de proceso o ciclo de vida que existen como por ejemplo el modelo espiral, el modelo interactivo incremental, modelo Win Win, entre otros. Igualmente se investigaran las diferentes etapas que intervienen en el desarrollo del software, desarrollo del sistema, pruebas unitarias y de integracin, instalacin y mantenimiento. Este importante tema nos permitir tener todos los conocimientos necesarios para implementarlos en nuestra vida diaria. El Software ha evolucionado con el pasar del tiempo trayendo como consecuencia

nuevos cambios, conocimientos, desarrollando cada vez ms nuevas plataformas tecnolgicas. 1. ETIMOLOGA Software (pronunciacin AFI: [software]), es una palabra proveniente del ingls (literalmente: partes blandas o suaves), que en espaol no posee una traduccin adecuada al contexto, por lo cual se la utiliza asiduamente sin traducir y as fue admitida por la Real Academia Espaola (RAE). Aunque no es estrictamente lo mismo, suele sustituirse por expresiones tales como programas (informticos) o aplicaciones (informticas). Software es lo que se denomina producto en Ingeniera de Software. 2. DEFINICIN DE SOFTWARE Probablemente la definicin ms formal de software sea la siguiente: Es el conjunto de los programas de cmputo, procedimientos, reglas, documentacin y datos asociados que forman parte de las operaciones de un sistema de computacin. Considerando esta definicin, el concepto de software va ms all de los programas de cmputo en sus distintos estados: cdigo fuente, binario o ejecutable; tambin su documentacin, datos a procesar e informacin de usuario forman parte del software: es decir, abarca todo lo intangible, todo lo "no fsico" relacionado. Tal y como se ha definido el software, ste es un conjunto de programas. Podemos decir que un programa es una secuencia de instrucciones que pueden ser interpretadas por un computador, obteniendo como fruto de esa interpretacin un determinado resultado que ha sido predeterminadamente establecido por el ser humano.

Los programas estn divididos en rutinas. Una rutina es un subconjunto del conjunto de instrucciones que conforman el programa. Cada una de las rutinas de un programa realiza una determinada funcin dentro del mismo. El trmino software fue usado por primera vez en este sentido por John W. Tukey en 1957. En las ciencias de la computacin y la ingeniera de software, el software es toda la informacin procesada por los sistemas informticos: programas y datos. El concepto de leer diferentes secuencias de instrucciones desde la memoria de un dispositivo para controlar los clculos fue introducido por Charles Babbage como parte de su mquina diferencial. 3. CLASIFICACIN DEL SOFTWARE 3.1 Software de Sistema:

En terminologa informtica el software de sistema, denominado tambin software de base, consiste en programas informticos que sirven para controlar e interactuar con el sistema operativo, proporcionando control sobre el hardware y dando soporte a otros programas; en contraposicin del llamado software de aplicacin. Como ejemplos cabe mencionar a las bibliotecas como por ejemplo OpenGL para la aceleracin grfica, PNG para el sistema grfico o demonios que controlan la temperatura, la velocidad del disco duro, como hdparm, o la frecuencia del procesador como cpudyn. Uno de los ms prominentes ejemplos de software de sistema se encuentra en el proyecto GNU, cuyas herramientas de programacin permitieron combinarse con el ncleo informtico basado en Unix denominado Linux, formando entre ambos las conocidas como distribuciones Linux.

Estos programas realizan diversas tareas, como la transferencia de datos entre la memoria RAM y los dispositivos de almacenamiento (disco rgido, unidades de discos pticos, etc) entre otros. Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles de la computadora en particular que se use, aislndolo especialmente del procesamiento referido a las caractersticas internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y programador adecuadas interfaces de alto nivel, herramientas y utilidades de apoyo que permiten su mantenimiento. Incluye entre otros: 3.1.1 Sistemas operativos Sistema operativo (SO) es un software que acta de interfaz entre los dispositivos de hardware y los programas usados por el usuario para manejar un computador. Es responsable de gestionar, coordinar las actividades y llevar a cabo el intercambio de los recursos y acta como estacin para las aplicaciones que se ejecutan en la mquina. Uno de los ms prominentes ejemplos de sistema operativo, es el ncleo Linux, el cual junto a las herramientas GNU, forman las llamadas distribuciones Linux. Uno de los propsitos de un sistema operativo como programa estacin principal, consiste en gestionar los recursos de localizacin y proteccin de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con stos detalles. Se encuentran en la mayora de los aparatos electrnicos que utilizan microprocesadores para funcionar. (telfonos mviles, reproductores de DVD, computadoras, radios, etc.)

Parte de la infraestructura de la World Wide Web est compuesta por el Sistema Operativo de Internet, creado por Cisco Systems para gestionar equipos de interconexin como los conmutadores y los enrutadores. Componentes de un sistema operativo Gestin de procesos: Un proceso es simplemente, un programa en ejecucin que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de: Crear y destruir los procesos. Parar y reanudar los procesos. Ofrecer mecanismos para que se comuniquen y sincronicen.

La gestin de procesos podra ser similar al trabajo de oficina. Se puede tener una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo. Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se terminen seguir con las de prioridad media y despus las de baja. Una vez realizada la tarea se tacha. Esto puede traer un problema que las tareas de baja prioridad pueden que nunca lleguen a ejecutarse. y permanezcan en la lista para siempre. Para solucionar esto, se puede asignar alta prioridad a las tareas ms antiguas. Gestin de la memoria principal: La Memoria (informtica) es una gran tabla de palabras o bytes que se referencian cada una mediante una direccin nica. Este almacn de datos de rpido accesos es compartido por la CPU y los dispositivos de E/S, es voltil y pierde su contenido en los fallos del sistema. El SO es el responsable de: Conocer qu partes de la memoria estn utilizadas y por quin. Decidir qu procesos se cargarn en memoria cuando haya Asignar y reclamar espacio de memoria cuando sea necesario.

espacio disponible.

Gestin

del

almacenamiento

secundario:

Un

sistema

de

almacenamiento secundario es necesario, ya que la memoria principal (almacenamiento primario) es voltil y adems muy pequea para almacenar todos los programas y datos. Tambin es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de: Planificar los discos. Gestionar el espacio libre. Asignar el almacenamiento.

El sistema de E/S: Consiste en un sistema de almacenamiento temporal (cach), una interfaz de manejadores de dispositivos y otra para dispositivos concretos. El sistema operativo debe gestionar el almacenamiento temporal de E/S y servir las interrupciones de los dispositivos de E/S. Sistema de archivos: Los archivos son colecciones de informacin relacionada, definidas por sus creadores. stos almacenan programas (en cdigo fuente y objeto) y datos tales como imgenes, textos, informacin de bases de datos, etc. El SO es responsable de: Construir y eliminar archivos y directorios. Ofrecer funciones para manipular archivos y directorios. Establecer la correspondencia entre archivos y unidades de Realizar copias de seguridad de archivos.

almacenamiento.

Existen diferentes Sistemas de Archivos, es decir, existen diferentes formas de organizar la informacin que se almacena en las memorias (normalmente discos) de los ordenadores. Por ejemplo, existen los sistemas de archivos FAT, FAT32, EXT2, NTFS.

Sistemas de proteccin: Mecanismo que controla el acceso de los programas o los usuarios a los recursos del sistema. El SO se encarga de: Distinguir entre uso autorizado y no autorizado. Especificar los controles de seguridad a realizar. Forzar el uso de estos mecanismos de proteccin.

Sistema de comunicaciones: Para mantener las comunicaciones con otros sistemas es necesario poder controlar el envo y recepcin de informacin a travs de las interfaces de red. Tambin hay que crear y mantener puntos de comunicacin que sirvan a las aplicaciones para enviar y recibir informacin, y crear y mantener conexiones virtuales entre aplicaciones que estn ejecutndose localmente y otras que lo hacen remotamente. Programas de sistema: Son aplicaciones de utilidad que se suministran con el SO pero no forman parte de l. Ofrecen un entorno til para el desarrollo y ejecucin de programas, siendo algunas de las tareas que realizan: Manipulacin y modificacin de archivos. Informacin del estado del sistema. Soporte a lenguajes de programacin. Comunicaciones.

Gestor de recursos: Como gestor de recursos, el Sistema Operativo administra: La CPU (Unidad Central de Proceso, donde est alojado el Los dispositivos de E/S (entrada y salida) La memoria principal (o de acceso directo). Los discos (o memoria secundaria). Los procesos (o programas en ejecucin). microprocesador).

y en general todos los recursos del sistema.

Caractersticas Administracin de tareas Monotarea: Solamente puede ejecutar un proceso (aparte de

los procesos del propio S.O.) en un momento dado. Una vez que empieza a ejecutar un proceso, continuar hacindolo hasta su finalizacin y/o interrupcin. Multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de S.O. normalmente asigna los recursos disponibles (CPU, memoria, perifricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente. Administracin de usuarios Monousuario: Si slo permite ejecutar los programas de un Multiusuario: Si permite que varios usuarios ejecuten

usuario al mismo tiempo. simultneamente sus programas, accediendo a la vez a los recursos de la computadora. Normalmente estos sistemas operativos utilizan mtodos de proteccin de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario. Manejo de recursos Centralizado: Si permite utilizar los recursos de una sola Distribuido: Si permite utilizar los recursos (memoria, CPU,

computadora. disco, perifricos) de ms de una computadora al mismo tiempo.

10

3.1.2 Controladores de dispositivos Un controlador de dispositivo, llamado normalmente controlador (en ingls, device driver) es un programa informtico que permite al sistema operativo interactuar con un perifrico, haciendo una abstraccin del hardware y proporcionando una interfaz -posiblemente estandarizadapara usarlo. Se puede esquematizar como un manual de instrucciones que le indica al sistema operativo, cmo debe controlar y comunicarse con un dispositivo en particular. Por tanto, es una pieza esencial, sin la cual no se podra usar el hardware. Existen tantos tipos de controladores como tipos de perifricos, y es comn encontrar ms de un controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por ejemplo, aparte de los oficiales (normalmente disponibles en la pgina web del fabricante), se pueden encontrar tambin los proporcionados por el sistema operativo, o tambin versiones no oficiales hechas por terceros. Debido a que el software de controladores de dispositivos se ejecuta como parte del sistema operativo, con acceso sin restricciones a todo el equipo, resulta esencial que slo se permitan los controladores de dispositivos autorizados. La firma y el almacenamiento provisional de los paquetes de controladores de dispositivos en los equipos cliente, mediante las tcnicas descritas en esta gua, proporcionan muchas ventajas 3.1.3 Herramientas de diagnstico Una herramienta de diagnstico es un software que permite monitorear y en algunos casos controlar la funcionalidad del hardware, como: computadoras, servidores y perifricos, segn el tipo y sus funciones. Estos dispositivos pueden ser, la memoria RAM, el procesador, los discos duros, ruteadores, tarjetas de red, entre muchos dispositivos

11

ms.

El

software

permite

monitorear

temperatura,

rendimiento,

transferencia de datos, etc. 3.1.4 Servidores En informtica, un servidor es una computadora que, formando parte de una red, provee servicios a otras computadoras denominadas clientes. Tambin se suele denominar con la palabra servidor a: Una aplicacin informtica o programa que realiza algunas

tareas en beneficio de otras aplicaciones llamadas clientes. Algunos servicios habituales son los servicios de archivos, que permiten a los usuarios almacenar y acceder a los archivos de una computadora y los servicios de aplicaciones, que realizan tareas en beneficio directo del usuario final. Este es el significado original del trmino. Es posible que un ordenador cumpla simultneamente las funciones de cliente y de servidor. Una computadora en la que se ejecuta un programa que realiza

alguna tarea en beneficio de otras aplicaciones llamadas clientes, tanto si se trata de un ordenador central (mainframe), un miniordenador, un ordenador personal, una PDA o un sistema integrado; sin embargo, hay computadoras destinadas nicamente a proveer los servicios de estos programas: estos son los servidores por antonomasia. Un servidor no es necesariamente una mquina de ltima

generacin de grandes proporciones, no es necesariamente un superordenador; un servidor puede ser desde una computadora vieja, hasta una mquina sumamente potente. Todo esto depende del uso que se le d al servidor. Si usted lo desea, puede convertir al equipo desde el cual usted est leyendo esto en un servidor instalando un programa que

12

trabaje por la red y a la que los usuarios de su red ingresen a travs de un programa de servidor web como Apache. En las siguientes listas, hay algunos tipos comunes de servidores y de su propsito. Servidor de archivo: es el que almacena varios tipos de archivos y los distribuye a otros clientes en la red. Servidor de impresiones: controla una o ms impresoras y

acepta trabajos de impresin de otros clientes de la red, poniendo en cola los trabajos de impresin (aunque tambin puede cambiar la prioridad de las diferentes impresiones), y realizando la mayora o todas las otras funciones que en un sitio de trabajo se realizara para lograr una tarea de impresin si la impresora fuera conectada directamente con el puerto de impresora del sitio de trabajo. Servidor de correo: almacena, enva, recibe, enruta y realiza

otras operaciones relacionadas con email para los clientes de la red. Servidor de fax: almacena, enva, recibe, enruta y realiza otras

funciones necesarias para la transmisin, la recepcin y la distribucin apropiadas de los fax. Servidor de la telefona: realiza funciones relacionadas con la

telefona, como es la de contestador automtico, realizando las funciones de un sistema interactivo para la respuesta de la voz, almacenando los mensajes de voz, encaminando las llamadas y controlando tambin la red o el Internet, por ejemplo la entrada excesiva de la voz sobre IP (VoIP). Servidor proxy: realiza un cierto tipo de funciones a nombre de

otros clientes en la red para aumentar el funcionamiento de ciertas operaciones (p. ej., prefetching y depositar documentos u otros datos que

13

se soliciten muy frecuentemente), tambin proporciona servicios de seguridad, o sea, incluye un cortafuegos. Permite administrar el acceso a internet en una red de computadoras permitiendo o negando el acceso a diferentes sitios Web. Servidor del acceso remoto (RAS): controla las lneas de

mdem de los monitores u otros canales de comunicacin de la red para que las peticiones conecten con la red de una posicin remota, responde llamadas telefnicas entrantes o reconoce la peticin de la red y realiza la autentificacin necesaria y otros procedimientos necesarios para registrar a un usuario en la red. Servidor de uso: realiza la parte lgica de la informtica o del

negocio de un uso del cliente, aceptando las instrucciones para que se realicen las operaciones de un sitio de trabajo y sirviendo los resultados a su vez al sitio de trabajo, mientras que el sitio de trabajo realiza el interfaz operador o la porcin del GUI del proceso (es decir, la lgica de la presentacin) que se requiere para trabajar correctamente. Servidor web: almacena documentos HTML, imgenes,

archivos de texto, escrituras, y dems material Web compuesto por datos (conocidos colectivamente como contenido), y distribuye este contenido a clientes que la piden en la red. Servidor de Base de Datos (database server): provee servicios

de base de datos a otros programas u otras computadoras, como es definido por el modelo cliente-servidor. Tambin puede hacer referencia a aquellas computadoras (servidores) dedicadas a ejecutar esos programas, prestando el servicio. Servidor de reserva: tiene el software de reserva de la red

instalado y tiene cantidades grandes de almacenamiento de la red en

14

discos duros u otras formas del almacenamiento (cinta, etc.) disponibles para que se utilice con el fin de asegurarse de que la prdida de un servidor principal no afecte a la red. Esta tcnica tambin es denominada clustering. Impresoras: muchas impresoras son capaces de actuar como

parte de una red de ordenadores sin ningn otro dispositivo, tal como un "print server" (servidor de impresin), a actuar como intermediario entre la impresora y el dispositivo que est solicitando que se termine un trabajo de impresin. Terminal tonto: muchas redes utilizan este tipo de equipo en

lugar de puestos de trabajo para la entrada de datos. En estos slo se exhiben datos o se introducen. Este tipo de terminal trabaja contra un servidor, el cual realmente procesa los datos y enva pantallas de datos a los terminales. Este tipo de mquina no es, por tanto, un servidor. Es un cliente. Otros dispositivos: hay muchos otros tipos de dispositivos que

se puedan utilizar para construir una red, muchos de los cuales requieren una comprensin de conceptos ms avanzados del establecimiento de una red de la computadora antes de que puedan ser entendidos fcilmente. En las redes caseras y mviles, que conecta la electrnica de consumidor, los dispositivos tales como consolas de videojuegos estn llegando a ser cada vez ms comunes. 3.1.5 Utilidades En informtica, una utilidad es una herramienta que realiza: Tareas de mantenimiento Soporte para la construccin y ejecucin de programas Las tareas en general.

15

En donde se incluyen las bibliotecas de sistema, middleware, herramientas de desarrollo, etc. Entre ellas podemos nombrar cifrado, descifrado de archivos, compresin de archivos, defragmentadores de discos editores de texto, respaldo, etc. 3.2 Software de programacin

Es el conjunto de herramientas que permiten al programador desarrollar programas informticos, usando diferentes alternativas y lenguajes de programacin, de una manera prctica. Incluye entre otros: 3.2.1 Editores de texto Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos nicamente por texto sin formato, conocidos comnmente como archivos de texto o texto plano. El programa lee el archivo e interpreta los bytes ledos segn el cdigo de caracteres que usa el editor. Hoy en da es comnmente de 7- 8-bits en ASCII o UTF-8, rara vez EBCDIC. Por ejemplo, un editor ASCII de 8 bits que lee el nmero binario 0110 0001 (decimal 97 hexadecimal 61) en el archivo lo representar en la pantalla por la figura a, que el usuario reconoce como la letra "a" y ofrecer al usuario las funciones necesarias para cambiar el nmero binario en el archivo. Los editores de texto son incluidos en el sistema operativo o en algn paquete de software instalado y se usan cuando se deben crear o modificar archivos de texto como archivos de configuracin, scripts o el cdigo fuente de algn programa. El archivo creado por un editor de texto incluye por convencin en DOS y Microsoft Windows la extensin .txt, aunque pueda ser cambiada a cualquier otra con posterioridad. Tanto

16

Unix como Linux dan al usuario total libertad en la denominacin de sus archivos. Algunas funciones especiales son: Editores diseados para un lenguaje de programacin

determinado, con coloreado de sintaxis, macros, completacin de palabras, etc. Editores con regiones plegables. A veces no todo el texto es relevante para el usuario. Con este tipo de editores ciertas regiones con texto irrelevante pueden ser plegadas, escondidas, mostrando al usuario solo lo importante del texto. IDE es un editor ms otras herramientas de trabajo, compiladores, extractores de diferencias entre dos textos, repositorios, etc, incluidos en un solo programa. Funciones tpicas de un editor de texto Marcar regin: Es la funcin que marca, visualmente o no, una parte del texto para ser elaborada con otras funciones. La regin puede contener varias lneas del texto (regin horizontal) o bien varias columnas adyacentes del texto (regin vertical). Bsqueda y reemplazo: El proceso de bsqueda de una palabra o una cadena de caracteres, en un texto plano y su reemplazo por otra. Existen diferentes mtodos: global, por regin, reemplazo automtico, reemplazo con confirmacin, bsqueda de texto o bsqueda de una Expresin regular. Copiar, cortar y pegar: Sirve para copiar, trasladar o borrar una regin marcada.

17

Formatear: Los editores de texto permiten automatizar las nicas funciones de formateo que utilizan: quebrar la lnea, indentar, formatear comentarios o formatear listas. Deshacer y rehacer: Consiste en que el programa editor va almacenando cada una de las operaciones hechas por el usuario hasta un nmero configurable. Si el usuario se arrepiente de algn cambio, por muy anterior que sea, el editor le permite revertir todos los cambios hechos hasta el nmero configurado. Rehacer es por consiguiente, revertir algo revertido. Importar: Agregar o insertar el contenido de un archivo en el archivo que se est editando. Algunos editores permiten insertar la salida o respuesta a un programa cualquiera ejecutado en la Lnea de comandos al archivo que se est editando. Filtros: Algunos editores de texto permiten hacer pasar las lneas del texto o de una regin por algn programa para modificarlas u ordenarlas. Por ejemplo, para ordenar alfabticamente una lista de nombres o sacar un promedio de una lista de nmeros. Acceso remoto: Un editor para trabajar en la administracin de una red de computadoras debe ofrecer la funcionalidad de editar archivos en mquinas remotas, ya sea por medio de ftp, ssh o algn otro Protocolo de red. Emacs lo puede hacer mediante el Plugin tramp (ampliamente configurable con ssh, ftp, scp, sftp, etc), Ultraedit, del ambiente Windows, lo hace mediante ftp. 3.2.2 Compiladores Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin,

18

generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser simplemente texto. Este proceso de traduccin se conoce como compilacin. Partes de un compilador La construccin de un compilador involucra la divisin del proceso en una serie de fases que variar con su complejidad. Generalmente estas fases se agrupan en dos tareas: el anlisis del programa fuente y la sntesis del programa objeto. Anlisis: Se trata de la comprobacin de la correccin del

programa fuente, e incluye las fases correspondientes al Anlisis Lxico (que consiste en la descomposicin del programa fuente en componentes lxicos), Anlisis Sintctico (agrupacin de los componentes lxicos en frases gramaticales ) y Anlisis Semntico (comprobacin de la validez semntica de las sentencias aceptadas en la fase de Anlisis Sintctico). Sntesis: Su objetivo es la generacin de la salida expresada

en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generacin de Cdigo (normalmente se trata de cdigo intermedio o de cdigo objeto) y de Optimizacin de Cdigo (en las que se busca obtener un cdigo lo ms eficiente posible). Alternativamente, las fases descritas para las tareas de anlisis y sntesis se pueden agrupar en Front-end y Back-end: Front-end: es la parte que analiza el cdigo fuente, comprueba

su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y est compuesta por las fases

19

comprendidas entre el Anlisis Lxico y la Generacin de Cdigo Intermedio. Back-end: es la parte que genera el cdigo mquina, especfico

de una plataforma, a partir de los resultados de la fase de anlisis, realizada por el Front End. Esta divisin permite que el mismo Back End se utilice para generar el cdigo mquina de varios lenguajes de programacin distintos y que el mismo Front End que sirve para analizar el cdigo fuente de un lenguaje de programacin concreto sirva para generar cdigo mquina en varias plataformas distintas. Suele incluir la generacin y optimizacin del cdigo dependiente de la mquina. El cdigo que genera el Back End normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador (linker) Tipos de compiladores Esta taxonoma de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias categoras: Compiladores cruzados: generan cdigo para un sistema Compiladores optimizadores: realizan cambios en el cdigo

distinto del que estn funcionando. para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original. Compiladores de una sola pasada: generan el cdigo mquina Compiladores de varias pasadas: necesitan leer el cdigo a partir de una nica lectura del cdigo fuente. fuente varias veces antes de poder producir el cdigo mquina.

20

Compiladores JIT (Just In Time): forman parte de un intrprete

y compilan partes del cdigo segn se necesitan. Pauta de creacin de un compilador: En las primeras pocas de la informtica, el software de los compiladores era considerado como uno de los ms complejos existentes. Los primeros compiladores se realizaron programndolos

directamente en lenguaje mquina o en ensamblador. Una vez que se dispone de un compilador, se pueden escribir nuevas versiones del compilador (u otros compiladores distintos) en el lenguaje que compila ese compilador. 3.2.3 Intrpretes En ciencias de la computacin, intrprete o interpretador es un programa informtico capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intrpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripcin en un lenguaje de programacin al cdigo de mquina del sistema, los primeros (los intrpretes) slo realizan la traduccin a medida que sea necesaria, tpicamente, instruccin por instruccin, y normalmente no guardan el resultado de dicha traduccin. Usando un intrprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables especficos a cada sistema. Los programas interpretados suelen ser ms lentos que los compilados debido a la necesidad de traducir el programa mientras se

21

ejecuta, pero a cambio son ms flexibles como entornos de programacin y depuracin (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o aadir mdulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la mquina donde se ejecuta el intrprete, sino del propio intrprete (lo que se conoce comnmente como mquina virtual). Para mejorar el desempeo, algunas implementaciones de

programacin de lenguajes de programacin pueden interpretar o compilar el cdigo fuente original en una ms compacta forma intermedia y despus traducir eso al cdigo de mquina (ej. Perl, Python, MATLAB, y Ruby). Algunos aceptan los archivos fuente guardados en esta representacin intermedia (ej. Python, UCSD Pascal y Java). Comparando su actuacin con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intrprete corresponde al intrprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito. En la actualidad, uno de los entornos ms comunes de uso de los intrpretes informticos es Internet, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma. 3.2.4 Enlazadores Enlazador (en ingls, linker) es un programa que toma los ficheros de cdigo objeto generado en los primeros pasos del proceso de compilacin, la informacin de todos los recursos necesarios (biblioteca), quita aquellos recursos que no necesita, y enlaza el cdigo objeto con su(s) biblioteca(s) con lo que finalmente produce un fichero ejecutable o una biblioteca. En el caso de los programas enlazados dinmicamente, el

22

enlace entre el programa ejecutable y las bibliotecas se realiza en tiempo de carga o ejecucin del programa. 3.2.5 Depuradores Un depurador (en ingls, debugger), es un programa que permite depurar o limpiar los errores de otro programa informtico. Uso: Al iniciarse la depuracin, el depurador lanza el programa a depurar. ste se ejecuta normalmente hasta que el depurador detiene su ejecucin, permitiendo al usuario examinar la situacin. El depurador permite detener el programa en: Un punto determinado mediante un punto de ruptura. Un punto determinado bajo ciertas condiciones mediante un Un momento determinado cuando se cumplan ciertas

punto de ruptura condicional. condiciones. Un momento determinado a peticin del usuario.

Durante esa interrupcin, el usuario puede: detenido. Ejecutar instruccin a instruccin. Examinar y modificar la memoria y las variables del programa. Examinar el contenido de los registros del procesador. Examinar la pila de llamadas que han desembocado en la Cambiar el punto de ejecucin, de manera que el programa

situacin actual. contine su ejecucin en un punto diferente al punto en el que fue

23

Ejecutar partes determinadas del cdigo, como el interior de

una funcin, o el resto de cdigo antes de salir de una funcin. El depurador depende de la arquitectura y sistema en el que se ejecute, por lo que sus funcionalidades cambian de un sistema a otro. Aqu se han mostrado las ms comunes. 3.2.6 Entornos (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir mltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz grfica de usuario (GUI). 3.3 Software de aplicacin: Es aquel que permite a los usuarios llevar a cabo una o varias tareas especficas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial nfasis en los negocios. Incluye entre otros: 3.3.1 Aplicaciones para Control de sistemas y automatizacin Industrial. Los sistemas de control segn la Teora Ciberntica se aplican en esencia para los organismos vivos, las mquinas y las organizaciones. Estos sistemas fueron relacionados por primera vez en 1948 por Norbert Wiener en su obra Ciberntica y Sociedad con aplicacin en la teora de los mecanismos de control. de Desarrollo Integrados

24

Un sistema de control est definido como un conjunto de componentes que pueden regular su propia conducta o la de otro sistema con el fin de lograr un funcionamiento predeterminado, de modo que se reduzcan las probabilidades de fallos y se obtengan los resultados buscados. Hoy en da los sistemas se usan tpicamente en sustituir un trabajador pasivo que controla una determinado sistema (ya sea elctrico, mecnico, etc.) con una posibilidad nula o casi nula de error, y un grado de eficiencia mucho ms grande que el de un trabajador. Los sistemas de control ms modernos en ingeniera automatizan procesos en base a muchos parmetros y reciben el nombre de Controladores de Automatizacin Programables (PAC). Los sistemas de control deben conseguir los siguientes objetivos: 1. Ser estables y robustos frente a perturbaciones y errores en los modelos. 2. Ser eficiente segn un criterio preestablecido evitando comportamientos bruscos e irreales. Caractersticas de un Sistema de Control 1. Seal de Corriente de Entrada: Considerada como estmulo

aplicado a un sistema desde una fuente de energa externa con el propsito de que el sistema produzca una respuesta especfica. 2. entrada. 3. Variable Manipulada: Es el elemento al cual se le modifica su Seal de Corriente de Salida: Respuesta obtenida por el

sistema que puede o no relacionarse con la respuesta que implicaba la

magnitud, para lograr la respuesta deseada. Es decir, se manipula la entrada del proceso.

25

4.

Variable Controlada: Es el elemento que se desea controlar. Se

puede decir que es la salida del proceso. 5. Conversin: Mediante receptores se generan las variaciones o

cambios que se producen en la variable. 6. Variaciones Externas: Son los factores que influyen en la

accin de producir un cambio de orden correctivo. 7. Fuente de Energa: Es la que entrega la energa necesaria para

generar cualquier tipo de actividad dentro del sistema. 8. Retroalimentacin: La retroalimentacin es una caracterstica

importante de los sistemas de control de lazo cerrado. Es una relacin secuencial de causas y efectos entre las variables de estado. Dependiendo de la accin correctiva que tome el sistema, este puede apoyar o no una decisin, cuando en el sistema se produce un retorno se dice que hay una retroalimentacin negativa; si el sistema apoya la decisin inicial se dice que hay una retroalimentacin positiva. Automatizacin industrial Automatizacin Industrial (automatizacin; del griego antiguo auto: guiado por uno mismo) es el uso de sistemas o elementos computarizados para controlar maquinarias y/o procesos industriales sustituyendo a operadores humanos. El alcance va ms all que la simple mecanizacin de los procesos ya que sta provee a operadores humanos mecanismos para asistirlos en los esfuerzos fsicos del trabajo, la automatizacin reduce ampliamente la necesidad sensorial y mental del humano. La automatizacin como una

26

disciplina de la ingeniera es ms amplia que un mero sistema de control, abarca la instrumentacin industrial, que incluye los sensores y transmisores de campo, los sistemas de control y supervisin, los sistema de transmisin y recoleccin de datos y las aplicaciones de software en tiempo real para supervisar y controlar las operaciones de plantas o procesos industriales. Las primeras mquinas simples sustituan una forma de esfuerzo en otra forma que fueran manejadas por el ser humano, tal como levantar un peso pesado con sistema de poleas o con una palanca. Posteriormente las mquinas fueron capaces de sustituir formas naturales de energa renovable, tales como el viento, mareas, o un flujo de agua por energa humana. En 1801, la patente de un telar automtico utilizando tarjetas perforadas fue dada a Joseph Marie Jacquard, quien revolucion la industria del textil. La parte ms visible de la automatizacin actual puede ser la robtica industrial. Algunas ventajas son repetitividad, control de calidad ms estrecho, mayor eficiencia, integracin con sistemas empresariales, incremento de productividad y reduccin de trabajo. Algunas desventajas son requerimientos de un gran capital, decremento severo en la flexibilidad, y un incremento en la dependencia del mantenimiento y reparacin. Para mediados del siglo 20, la automatizacin haba existido por muchos aos en una escala pequea, utilizando mecanismos simples para automatizar tareas sencillas de manufactura. Sin embargo el concepto solamente llego a ser realmente prctico con la adicin (y evolucin) de las computadoras digitales, cuya flexibilidad permiti manejar cualquier clase de tarea. Las computadoras digitales con la

27

combinacin requerida de velocidad, poder de computo, precio y tamao empezaron a aparecer en la dcada de 1960. Antes de ese tiempo, las computadoras industriales eran exclusivamente computadoras analgicas y computadoras hbridas. Desde entonces las computadoras digitales tomaron el control de la mayora de las tareas simples, repetitivas, tareas semiespecializadas y especializadas, con algunas excepciones notables en la produccin e inspeccin de alimentos. Como un famoso dicho anonimo dice, "para muchas y muy cambiantes tareas, es difcil remplazar al ser humano, quienes son fcilmente vueltos a entrenar dentro de un amplio rango de tareas, ms an, son producidos a bajo costo por personal sin entrenamiento." Existen muchos trabajos donde no existe riesgo inmediato de la automatizacin. Ningn dispositivo ha sido inventado que pueda competir contra el ojo humano para la precisin y certeza en muchas tareas; tampoco el odo humano. El ms intil de los seres humanos puede identificar y distinguir mayor cantidad de esencias que cualquier dispositivo automtico. Las habilidades para el patrn de reconocimiento humano, reconocimiento de lenguaje y produccin de lenguaje se encuentran ms all de cualquier expectativa de los ingenieros de automatizacin. Computadoras especializadas, son utilizadas para leer entradas de campo a travs de sensores y en base a su programa, generar salidas hacia el campo a travs de actuadores. Esto conduce para controlar acciones precisas que permitan un control estrecho de cualquier proceso industrial. (Se tema que estos dispositivos fueran vulnerables al error del ao 2000, con consecuencias catastrficas, ya que son tan comunes dentro del mundo de la industria). Existen dos tipos distintos: DCS o Sistema de Control Distribudo, y PLC o Controlador Lgico Programable. El primero era antiguamente

28

orientado a procesos de tipo anlogos, mientras que el segundo se utilizaba en procesos de tipo discreto (ceros y unos). Actualmente ambos equipos se parecen cada vez ms, y cualquiera de los dos puede ser utilizado en todo tipo de procesos. Las interfaces Hombre-Mquina (HMI) o interfaces HombreComputadora (CHI), formalmente conocidas como interfaces HombreMquina, son comnmente empleadas para comunicarse con los PLCs y otras computadoras, para labores tales como introducir y monitorear temperaturas o presiones para controles automticos o respuesta a mensajes de alarma. El personal de servicio que monitorea y controla estas interfaces son conocidos como ingenieros de estacin. Otra forma de automatizacin que involucra computadoras es la prueba de automatizacin, donde las computadoras controlan un equipo de prueba automtico que es programado para simular seres humanos que prueban manualmente una aplicacin. Esto es acompaado por lo general de herramientas automticas para generar instrucciones especiales (escritas como programas de computadora) que direccionan al equipo automtico en prueba en la direccin exacta para terminar las pruebas. 3.3.1 Aplicaciones ofimticas Una suite ofimtica o suite de oficina es una recopilacin de programas, los cuales son utilizados en oficinas y sirve para diferentes funciones como crear, modificar, organizar, escanear, imprimir, etc. archivos y documentos. Son ampliamente usados en varios lugares, ya que al ser eso (una recopilacin), hace que sea asequible adquirir toda la suite, que programa por programa, lo cual es ms complejo, al tener que conseguir programa por programa, y en caso del software pagado, ms caro.

29

Generalmente en las suites ofimticas, al incluir los programas en estas, no hay un estndar sobre los programas a incluir; pero la gran mayora incluyen al menos un procesador de textos y una hoja de clculo. Adicionalmente, la suite puede contener un Programa de presentacin, un sistema de gestin de base de datos, herramientas menores de grficos y comunicaciones, un gestor de informacin personal (agenda y cliente de correo electrnico) y un navegador web. En la actualidad las suites ofimticas dominantes en el mercado son, por parte del software pagado, Microsoft Office, la cual posee sus propios formatos cerrados de documentos para cada uno de sus programas. Respecto al software libre, est OpenOffice, desarrollado por Sun Microsystems, tambin con un formato para cada programa, pero de cdigo abierto. Debido a esto y a la pobre compatibilidad entre las suites de Microsoft con otros formatos abiertos (como OpenDocument), en cada suite ofimtica se hacen desarrollos que, generalmente, son poco adaptables a los cambios que hace una y otra suite. Suites ofimticas populares OpenOffice.org: Suite libre y gratuita, utiliza el estndar

OpenDocument (Est conformada por los programas Writer, Calc, Impress, Draw, Base). Gnome Office: Suite libre y gratuita del proyecto GNOME

(Conformada por Abiword, Gnumeric, GNOME-DB y GIMP). StarOffice: Suite libre (hasta la versin 5.2) de Sun basada en

OpenOffice.org, con algunos aadidos propietarios.

30

Corel

WordPerfect

Office:

Suite

propietaria

de

Corel

(WordPerfect, Quattro Pro, Paradox, Corel Presentations, CorelCENTRAL y Dragon NaturallySpeaking). Lotus: Lotus SmartSuite (Word Pro, Lotus 1-2-3, Lotus

Organizer, Lotus Word Pro, Lotus Approach y Freelance Graphics). Papyrus OFFICE: (Papyrus WORD, Papyrus BASE). IBM Lotus Symphony: Suite libre y gratuita, desarrollada bajo

OpenOffice (Documento, Presentacin, Clculo y Explorador Web). 3.3.2 Software educativo Se denomina software educativo al destinado a la enseanza y el auto aprendizaje y adems permite el desarrollo de ciertas habilidades cognitivas. As como existen profundas diferencias entre las filosofas pedaggicas, as tambin existe una amplia gama de enfoques para la creacin de software educativo atendiendo a los diferentes tipos de interaccin que debera existir entre los actores del proceso de enseanza-aprendizaje: educador, aprendiz, conocimiento, computadora. Como software educativo tenemos desde programas orientados al aprendizaje hasta sistemas operativos completos destinados a la educacin, como por ejemplo las distribuciones GNU/Linux orientadas a la enseanza. Instruccin asistida por computadora El enfoque de la instruccin asistida por computadora pretende facilitar la tarea del educador, sustituyndole parcialmente en su labor. El software educacional resultante generalmente presenta una secuencia (a veces establecida con tcnicas de inteligencia artificial) de lecciones, o

31

mdulos de aprendizaje. Tambin generalmente incluye mtodos de evaluacin automtica, utilizando preguntas cerradas. Las crticas ms comunes contra este tipo de software son: Los aprendices pierden el inters rpidamente e intentan

adivinar la respuesta al azar. La computadora es convertida en una simple mquina de

memorizacin costosa. El software desvaloriza, a los ojos del aprendiz, el conocimiento

que desea transmitir mediante la inclusin de artificiales premios visuales. (ver enlace Punished by Rewards) Ejemplos tpicos de este tipo de software son: Clic, GCompris, PLATO, Applets de Descartes. Software educativo abierto El enfoque del software educativo abierto por el contrario enfatiza ms el aprendizaje creativo que la enseanza. El software resultante no presenta una secuencia de contendidos a ser aprendida, sino un ambiente de exploracin y construccin virtual, tambin conocido como micromundo. Con ellos los aprendices, luego de familiarizarse con el software, pueden modificarlo y aumentarlo segn su inters personal, o crear proyectos nuevos teniendo como base las reglas del micromundo. Las crticas ms comunes contra este tipo de software son: En un ambiente donde se use software educacional abierto, no

todos los aprendices aprendern la misma cosa, y por consiguiente los mtodos de evaluacin tradicionales son poco adecuados.

32

La direccin de tales ambientes de aprendizaje requiere mayor

habilidad por parte del educador. Ya que en este caso su papel no ser el de ensear contenidos sino de hacer notar las estrategias de apredizaje que el estudiante encuentra valiosas (al abordar un proyecto concreto) y ayudarle a transferirlas a otros contextos. Ejemplos tpicos de este tipo de software son: Logo, Etoys, Scratch, GeoGebra etc. No se deben confundir los conceptos de apertura del cdigo con el que es escrito el software (cdigo abierto), con el concepto de apertura del enfoque educativo con el que el software es creado. Existe software educativo cerrado (tutorial, instruccional, estrictamente pautado) que tiene su cdigo abierto 3.3.3 Software empresarial Por software empresarial se entiende generalmente cualquier tipo de software que est orientado a ayudar a una empresa a mejorar su productividad o a medirla. El trmino engloba una amplia variedad de aplicaciones informticas que incluyen desde programas de contabilidad y de ofimtica, hasta sistemas de planificacin de recursos empresariales (ERP), pasando por programas de gestin de clientes (CRM), de recursos humanos, etc. 3.3.4 Bases de datos Una base de datos o banco de datos (en ocasiones abreviada BB.DD.) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su

33

mayora por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y debido al desarrollo tecnolgico de campos como la informtica y la electrnica, la mayora de las bases de datos estn en formato digital (electrnico), que ofrece un amplio rango de soluciones al problema de almacenar datos. Existen programas denominados sistemas gestores de bases de datos, abreviados SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rpida y estructurada. Las propiedades de estos SGBD, as como su utilizacin y administracin, se estudian dentro del mbito de la informtica. Las aplicaciones ms usuales son para la gestin de empresas e instituciones pblicas. Tambin son ampliamente utilizadas en entornos cientficos con el objeto de almacenar la informacin experimental. Aunque las bases de datos pueden contener muchos tipos de datos, algunos de ellos se encuentran protegidos por las leyes de varios pases. Por ejemplo, en Espaa los datos personales se encuentran protegidos por la Ley Orgnica de Proteccin de Datos de Carcter Personal (LOPD). Tipos de bases de datos Las bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se este manejando, o la utilidad de la misma: Segn la variabilidad de los datos almacenados Bases de datos estticas: stas son bases de datos de slo lectura, utilizadas primordialmente para almacenar datos histricos que posteriormente se pueden utilizar para estudiar el comportamiento de un

34

conjunto de datos a travs del tiempo, realizar proyecciones y tomar decisiones. Bases de datos dinmicas: stas son bases de datos donde la informacin almacenada se modifica con el tiempo, permitiendo operaciones como actualizacin, borrado y adicin de datos, adems de las operaciones fundamentales de consulta. Un ejemplo de esto puede ser la base de datos utilizada en un sistema de informacin de una tienda de abarrotes, una farmacia, un videoclub. Segn el contenido Bases de datos bibliogrficas: Solo contienen un surrogante (representante) de la fuente primaria, que permite localizarla. Un registro tpico de una base de datos bibliogrfica contiene informacin sobre el autor, fecha de publicacin, editorial, ttulo, edicin, de una determinada publicacin, etc. Puede contener un resumen o extracto de la publicacin original, pero nunca el texto completo, porque si no, estaramos en presencia de una base de datos a texto completo. Como su nombre lo indica, el contenido son cifras o nmeros. Por ejemplo, una coleccin de resultados de anlisis de laboratorio, entre otras. Bases de datos de texto completo: Almacenan las fuentes primarias, como por ejemplo, todo el contenido de todas las ediciones de una coleccin de revistas cientficas. Directorios: Un ejemplo son las guas telefnicas en formato electrnico. Bases de datos o "bibliotecas" de informacin qumica o biolgica: Son bases de datos que almacenan diferentes tipos de informacin proveniente de la qumica, las ciencias de la vida o mdicas. Se pueden considerar en varios subtipos:

35

Las que almacenan secuencias de nucletidos o protenas. Las bases de datos de rutas metablicas. Bases de datos de estructura, comprende los registros de Bases de datos clnicas. Bases de datos bibliogrficas (biolgicas, qumicas, mdicas y

datos experimentales sobre estructuras 3D de biomolculas-

de otros campos): PubChem, Medline, EBSCOhost. Modelos de bases de datos Adems de la clasificacin por la funcin de las bases de datos, stas tambin se pueden clasificar de acuerdo a su modelo de administracin de datos. Un modelo de datos es bsicamente una "descripcin" de algo conocido como contenedor de datos (algo en donde se guarda la informacin), as como de los mtodos para almacenar y recuperar informacin de esos contenedores. Algunos modelos con frecuencia utilizados en las bases de datos: Bases de datos jerrquicas: stas son bases de datos que, como su nombre indica, almacenan su informacin en una estructura jerrquica. En este modelo los datos se organizan en una forma similar a un rbol (visto al revs), en donde un nodo padre de informacin puede tener varios hijos. El nodo que no tiene padres es llamado raz, y a los nodos que no tienen hijos se los conoce como hojas. Las bases de datos jerrquicas son especialmente tiles en el caso de aplicaciones que manejan un gran volumen de informacin y datos muy compartidos permitiendo crear estructuras estables y de gran rendimiento.

36

Una de las principales limitaciones de este modelo es su incapacidad de representar eficientemente la redundancia de datos. Base de datos de red: ste es un modelo ligeramente distinto del jerrquico; su diferencia fundamental es la modificacin del concepto de nodo: se permite que un mismo nodo tenga varios padres (posibilidad no permitida en el modelo jerrquico). Fue una gran mejora con respecto al modelo jerrquico, ya que ofreca una solucin eficiente al problema de redundancia de datos; pero, aun as, la dificultad que significa administrar la informacin en una base de datos de red ha significado que sea un modelo utilizado en su mayora por programadores ms que por usuarios finales. Bases de datos transaccionales: Son bases de datos cuyo nico fin es el envo y recepcin de datos a grandes velocidades, estas bases son muy poco comunes y estn dirigidas por lo general al entorno de anlisis de calidad, datos de produccin e industrial, es importante entender que su fin nico es recolectar y recuperar los datos a la mayor velocidad posible, por lo tanto la redundancia y duplicacin de informacin no es un problema como con las dems bases de datos, por lo general para poderlas aprovechar al mximo permiten algn tipo de conectividad a bases de datos relacionales. Bases de datos relacionales: ste es el modelo utilizado en la actualidad para modelar problemas reales y administrar datos dinmicamente. Tras ser postulados sus fundamentos en 1970 por Edgar Frank Codd, de los laboratorios IBM en San Jos (California), no tard en consolidarse como un nuevo paradigma en los modelos de base de datos. Su idea fundamental es el uso de "relaciones". Estas relaciones podran considerarse en forma lgica como conjuntos de datos llamados "tuplas". Esto es pensando en cada relacin como si fuese una tabla que est

37

compuesta por registros (las filas de una tabla), que representaran las tuplas, y campos (las columnas de una tabla). En este modelo, el lugar y la forma en que se almacenen los datos no tienen relevancia (a diferencia de otros modelos como el jerrquico y el de red). Esto tiene la considerable ventaja de que es ms fcil de entender y de utilizar para un usuario espordico de la base de datos. La informacin puede ser recuperada o almacenada mediante "consultas" que ofrecen una amplia flexibilidad y poder para administrar la informacin. El lenguaje ms habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estndar implementado por los principales motores o sistemas de gestin de bases de datos relacionales. Bases de datos multidimensionales: Son bases de datos ideadas para desarrollar aplicaciones muy concretas, como creacin de Cubos OLAP. Bsicamente no se diferencian demasiado de las bases de datos relacionales (una tabla en una base de datos relacional podra serlo tambin en una base de datos multidimensional), la diferencia est ms bien a nivel conceptual; en las bases de datos multidimensionales los campos o atributos de una tabla pueden ser de dos tipos, o bien representan dimensiones de la tabla, o bien representan mtricas que se desean estudiar. Bases de datos orientadas a objetos: Este modelo, bastante reciente, y propio de los modelos informticos orientados a objetos, trata de almacenar en la base de datos los objetos completos (estado y comportamiento).

38

Una base de datos orientada a objetos es una base de datos que incorpora todos los conceptos importantes del paradigma de objetos: Encapsulacin - Propiedad que permite ocultar la informacin Herencia - Propiedad a travs de la cual los objetos heredan Polimorfismo - Propiedad de una operacin mediante la cual

al resto de los objetos, impidiendo as accesos incorrectos o conflictos. comportamiento dentro de una jerarqua de clases. puede ser aplicada a distintos tipos de objetos. En bases de datos orientadas a objetos, los usuarios pueden definir operaciones sobre los datos como parte de la definicin de la base de datos. Una operacin (llamada funcin) se especifica en dos partes. La interfaz (o signatura) de una operacin incluye el nombre de la operacin y los tipos de datos de sus argumentos (o parmetros). La implementacin (o mtodo) de la operacin se especifica separadamente y puede modificarse sin afectar la interfaz. Los programas de aplicacin de los usuarios pueden operar sobre los datos invocando a dichas operaciones a travs de sus nombres y argumentos, sea cual sea la forma en la que se han implementado. Esto podra denominarse independencia entre programas y operaciones. Bases de datos documentales: Permiten la indexacin a texto completo, y en lneas generales realizar bsquedas ms potentes. Tesaurus es un sistema de ndices optimizado para este tipo de bases de datos. Bases de datos deductivas: Un sistema de base de datos deductiva, es un sistema de base de datos pero con la diferencia de que permite hacer deducciones a travs de inferencias. Se basa principalmente en reglas y hechos que son almacenados en la base de

39

datos. Las bases de datos deductivas son tambin llamadas bases de datos lgicas, a raz de que se basa en lgica matemtica. 3.3.5 Telecomunicaciones La telecomunicacin (del prefijo griego tele, "distancia" y del latn communicare que significa comunicacin, as que para nosotros significa algo como, "comunicacin a distancia") es una tcnica consistente en transmitir un mensaje desde un punto a otro, normalmente con el atributo tpico adicional de ser bidireccional. El trmino telecomunicacin cubre todas las formas de comunicacin a distancia, incluyendo radio, telegrafa, televisin, telefona, transmisin de datos e interconexin de computadoras a nivel de enlace. El Da Mundial de la Telecomunicacin se celebra el 17 de mayo. Telecomunicaciones, es toda transmisin, emisin o recepcin de signos, seales, datos, imgenes, voz, sonidos o informacin de cualquier naturaleza que se efecta a travs de cables, radioelectricidad, electromagnticos. 3.3.6 Videojuegos Un videojuego (del ingls video game) o juego de video es un programa informtico creado para el entretenimiento en general y basado en la interaccin entre una o varias personas y un aparato electrnico que ejecuta dicho videojuego; este dispositivo electrnico puede ser una computadora, un sistema arcade, una videoconsola, un dispositivo handheld o un telfono mvil, los cuales son conocidos como "plataformas". Aunque, usualmente el trmino "video" en la palabra "videojuego" se refiere en s a un visualizador de grficos rasterizados, hoy en da se utiliza para hacer mencin de cualquier tipo de visualizador. medios pticos, fsicos u otros sistemas

40

Entendemos por videojuegos todo tipo de juego digital interactivo, con independencia de su soporte. Los jugadores interactan con el videojuego a travs de dispositivos externos como pueden ser un teclado y ratn, un gamepad, un joystick, o incluso dispositivos detectores de movimiento. La partida se juega entre una persona y la mquina o CPU, entre dos o ms personas en la misma consola, por LAN o on-line va Internet y pueden competir con la mquina, contra la mquina o entre s. 3.3.7 Software mdico Software mdico se llama a aquellos programas informticos que son utilizados para fines mdicos. Se utilizan muchos dispositivos mdicos para vigilar o controlar a los pacientes, en su mayora controlados por software. Estos programas son producto sanitario y deben cumplir la normativa de los mismos. Ntese que no todos los programas que se utilizan en el entorno mdico son producto sanitario. Monitores: frecuencia cardaca, la presin arterial, la tasa de

respiracin, el uso de software para interpretar la informacin de sensores y mostrarlo de una manera significativa en un monitor. Medicamentos bombas: estos dispositivos estn programados

para el bombeo de una cierta cantidad de plasma, sangre, solucin salina, u otra medicacin en un paciente en un determinado tipo. El software proporciona la capacidad para controlar muchos aspectos de los procedimientos de tratamiento. Anlisis: muchos dispositivos, tales como escneres CAT,

medida de los datos en bruto que es esencialmente de sentido a la gente.

41

Software reinterpreta estos datos para crear las imgenes que los mdicos pueden leer y entender. Sistemas expertos: una variedad de sistemas expertos que se

han creado para indicar lo que se debe hacer. Estos son menos utilizados que las otras cosas que acab de mencionar. Mdico de la informtica: software para la empresa y de

informacin aspecto de la medicina. Terapia de entrega: el software de marcapasos y

desfibriladores implantables proporciona tolerancia a fallos, en tiempo real, crticos para la misin de vigilancia de los ritmos cardacos y la entrega de terapia asociada. Mdico de la asistencia sanitaria y los programas informticos

educativos: software utilizado como un centro de enseanza o herramienta de estudio para los profesionales de la salud. Software de gestin mdica: herramienta a medida o enlatada

que permite a travs de la actualizacin de datos llevar a cabo la gestin de entidades dedicadas a la salud, tales como hospitales, sanatorios, clnicas, consultorios, etc. Mdulos: turnos, mdicos, seguros, farmacia, internacin, compras, pagos, facturacin, sistemas, pacientes, historia clnica, etc. 3.3.8 Software de Clculo Numrico y simblico El anlisis numrico o clculo numrico es la rama de las matemticas que se encarga de disear algoritmos para, a travs de

42

nmeros y reglas matemticas simples, simular procesos matemticos ms complejos aplicados a procesos del mundo real. El anlisis numrico cobra especial importancia con la llegada de los ordenadores. Los ordenadores son tiles para clculos matemticos extremadamente complejos, pero en ltima instancia operan con nmeros binarios y operaciones matemticas simples. Desde este punto de vista, el anlisis numrico proporcionar todo el andamiaje necesario para llevar a cabo todos aquellos procedimientos matemticos susceptibles de expresarse algortmicamente, basndose en algoritmos que permitan su simulacin o clculo en procesos ms sencillos empleando nmeros. 3.3.9 Software (CAD) El diseo asistido por computadora u ordenador, ms conocido por sus siglas inglesas CAD (computer-aided design), es el uso de un amplio rango de herramientas computacionales que asisten a ingenieros, arquitectos y a otros profesionales del diseo en sus respectivas actividades. Tambin se puede llegar a encontrar denotado con las siglas CADD, es decir, dibujo y diseo asistido por computadora (computer asisted drawing and design). El CAD es tambin utilizado en el marco de procesos de administracin del ciclo de vida de productos (en ingls product lifecycle management). Estas herramientas se pueden dividir bsicamente en programas de dibujo en dos dimensiones (2D) y modeladores en tres dimensiones (3D). Las herramientas de dibujo en 2D se basan en entidades geomtricas vectoriales como puntos, lneas, arcos y polgonos, con las que se puede de Diseo Asistido

43

operar a travs de una interfaz grfica. Los modeladores en 3D aaden superficies y slidos. 3.3.10 Software de Control Numrico (CAM) La fabricacin asistida por computadora (en Hispanoamrica) o fabricacin asistida por ordenador (en Espaa), tambin conocida por las siglas en ingls CAM (Computer Aided Manufacturing), implica el uso de computadores y tecnologa de cmputo para ayudar en todas las fases de la manufactura de un producto, incluyendo la planificacin del proceso y la produccin, mecanizado, calendarizacin, administracin y control de calidad, con una intervencin del operario mnima. Debido a sus ventajas, se suele combinar el diseo y la fabricacin asistidos por computadora en los sistemas CAD/CAM. Esta combinacin permite la transferencia de informacin desde la etapa de diseo a la etapa de planificacin para la fabricacin de un producto, sin necesidad de volver a capturar manualmente los datos geomtricos de la pieza. La base de datos que se desarrolla durante el CAD es procesada por el CAM, para obtener los datos y las instrucciones necesarias para operar y controlar la maquinaria de produccin, el equipo de manejo de materiales y las pruebas e inspecciones automatizadas para establecer la calidad del producto. Algunas siguientes: Calendarizacin para control numrico, control numrico Diseo de dados y moldes para fundicin en los que, por aplicaciones caractersticas del CAD/CAM son las

computarizado y robots industriales. ejemplo, se reprograman tolerancias de contraccin.

44

Dados para operaciones de trabajo de metales, por ejemplo,

dados complicados para formado de lminas, y dados progresivos para estampado. medicin por coordenadas programadas en una estacin de trabajo CAD/CAM. Planeacin y calendarizacin de proceso. Distribucin de planta. Diseo de herramientas y sopones, y electrodos para Control de calidad e inspeccin; por ejemplo, mquinas de electroerosin.

3.4 Software libre El software libre (en ingls free software), esta denominacin tambin se confunde a veces con gratis por el doble sentido del ingls free en castellano) es la denominacin del software que respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado y redistribuido libremente. Segn la Free Software Foundation, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software; de modo ms preciso, se refiere a cuatro libertades de los usuarios del software: La libertad de usar el programa, con cualquier propsito, de estudiar el funcionamiento del programa, de adaptarlo a las propias necesidades, de distribuir copias, con lo cual se puede ayudar a otros y de mejorar el programa y hacer pblicas las mejoras, de modo que toda la comunidad se beneficie (para la segunda y ltima libertad mencionadas, el acceso al cdigo fuente es un requisito previo). El software libre suele estar disponible gratuitamente, o al precio de costo de la distribucin a travs de otros medios; sin embargo no es

45

obligatorio que sea as, por lo tanto no hay que asociar software libre a "software gratuito" (denominado usualmente freeware), ya que, conservando su carcter de libre, puede ser distribuido comercialmente ("software comercial"). Anlogamente, el "software gratis" o "gratuito" incluye en ocasiones el cdigo fuente; no obstante, este tipo de software no es libre en el mismo sentido que el software libre, a menos que se garanticen los derechos de modificacin y redistribucin de dichas versiones modificadas del programa. Tampoco debe confundirse software libre con "software de dominio pblico". ste ltimo es aquel software que no requiere de licencia, pues sus derechos de explotacin son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de l, siempre con fines legales y consignando su autora original. Este software sera aquel cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado, tras un plazo contado desde la muerte de este, habitualmente 70 aos. Si un autor condiciona su uso bajo una licencia, por muy dbil que sea, ya no es del dominio pblico. Ventajas del Software Libre 1) Escrutinio Pblico: Al ser muchos las personas que tienen

acceso al cdigo fuente, eso lleva a un proceso de correccin de errores muy dinmico, no hace falta esperar que el proveedor del software saque una nueva versin. 2) a) software. b) No estamos supeditados a las condiciones del mercado de nuestro proveedor, es decir que si este se va del mercado porque no le Independencia del proveedor: Al disponer del cdigo fuente, cualquier persona puede

continuar ofreciendo soporte, desarrollo u otro tipo de servicios para el

46

conviene y discontinua el soporte, nosotros podemos contratar a otra persona. 3) a) b) Manejo de la Lengua: Traduccin: cualquier persona capacitada puede traducir y Correccin ortogrfica y gramatical: una vez traducido el

adaptar un software libre a cualquier lengua. software libre puede presentar errores de este tipo, los cuales pueden ser subsanados con mayor rapidez por una persona capacitada. 4) a) Mayor seguridad y privacidad: Los sistemas de almacenamiento y recuperacin de la

informacin son pblicos. Cualquier persona puede ver y entender como se almacenan los datos en un determinado formato o sistema. b) Existe una mayor dificultad para introducir cdigo malicioso como ser: espa (p/ej. capturador de teclas), de control remoto (p/ej. Troyano), de entrada al sistema (p/ej. puerta trasera), etc. 5) Garanta de continuidad: el software libre puede seguir siendo

usado aun despus de que haya desaparecido la persona que lo elaboro, dado que cualquier tcnico informatico puede continuar desarrollndolo, mejorndolo o adaptndolo. 6) Ahorro en costos: en cuanto a este tpico debemos distinguir

cuatro grandes costos: de adquisicin, de implantacin (este a su vez se compone de costos de migracin y de instalacin), de soporte o mantenimiento, y de interoperabilidad. El software libre principalmente disminuye el costo de adquisicin ya que al otorgar la libertad de distribuir copias la puedo ejercer con la compra de una sola licencia y no con tantas como computadoras posea (como sucede en la mayora de los casos de software propietario). Cabe aclarar que tambin hay una disminucin

47

significativa en el costo de soporte, no ocurriendo lo mismo con los costos de implantacin y de interoperatividad.

Desventajas del software libre Si observamos la situacin actual, es decir la existencia mayoritaria de Software Propietario, tenemos: 1) Dificultad en el intercambio de archivos: esto se da

mayormente en los documentos de texto (generalmente creados con Microsoft Word), ya que si los queremos abrir con un Software Libre (p/ ej. Open Office o LaTeX) nos da error o se pierden datos. Pero esta claro que si Microsoft Word creara sus documentos con un formato abierto (o publico) esto no sucedera. 2) Mayores costos de implantacin e interoperabilidad: dado que

el software constituye algo nuevo, ello supone afrontar un costo de aprendizaje, de instalacin, de migracin, de interoperabilidad, etc., cuya cuanta puede verse disminuida por: mayor facilidad en las instalaciones y/o en el uso, uso de emuladores (p/ej. Si el usuario utiliza Microsoft Windows, la solucin seria instalar alguna distribucin de GNU/Linux y luego un emulador de Windows, como Wine, VMWare. Terminal X, Win4Lin). Vale aclarar que el costo de migracin esta referido al software, ya que en lo que hace a Hardware generalmente el Software Libre no posee mayores requerimientos que el Software Propietario. Libertades del software libre De acuerdo con tal definicin, el software es "libre" si garantiza las siguientes libertades: La libertad de usar el programa, con cualquier propsito.

48

La libertad de estudiar cmo funciona el programa y modificarlo, adaptndolo a tus necesidades. La libertad de distribuir copias del programa, con lo cual puedes ayudar a tu prjimo. La libertad de mejorar el programa y hacer pblicas esas mejoras a los dems, de modo que toda la comunidad se beneficie. Tipos de licencias Una licencia es aquella autorizacin formal con carcter contractual

que un autor de un software da a un interesado para ejercer "actos de explotacin legales". Pueden existir tantas licencias como acuerdos concretos se den entre el autor y el licenciatario. Desde el punto de vista del software libre, existen distintas variantes del concepto o grupos de licencias: Licencias GPL: Una de las ms utilizadas es la Licencia Pblica General de GNU (GNU GPL). El autor conserva los derechos de autor (copyright), y permite la redistribucin y modificacin bajo trminos diseados para asegurarse de que todas las versiones modificadas del software permanecen bajo los trminos ms restrictivos de la propia GNU GPL. Esto hace que sea imposible crear un producto con partes no licenciadas GPL: el conjunto tiene que ser GPL. Es decir, la licencia GNU GPL posibilita la modificacin y redistribucin del software, pero nicamente bajo esa misma licencia. Y aade que si se reutiliza en un mismo programa cdigo "A" licenciado bajo licencia GNU GPL y cdigo "B" licenciado bajo otro tipo de licencia libre, el cdigo final "C", independientemente de la cantidad y calidad de cada uno de los cdigos "A" y "B", debe estar bajo la licencia GNU GPL.

49

En la prctica esto hace que las licencias de software libre se dividan en dos grandes grupos, aquellas que pueden ser mezcladas con cdigo licenciado bajo GNU GPL (y que inevitablemente desaparecern en el proceso, al ser el cdigo resultante licenciado bajo GNU GPL) y las que no lo permiten al incluir mayores u otros requisitos que no contemplan ni admiten la GNU GPL y que por lo tanto no pueden ser enlazadas ni mezcladas con cdigo gobernado por la licencia GNU GPL. Licencias estilo BSD: Llamadas as porque se utilizan en gran cantidad de software distribuido junto a los sistemas operativos BSD. El autor, bajo tales licencias, mantiene la proteccin de copyright nicamente para la renuncia de garanta y para requerir la adecuada atribucin de la autora en trabajos derivados, pero permite la libre redistribucin y modificacin, incluso si dichos trabajos tienen propietario. Son muy permisivas, tanto que son fcilmente absorbidas al ser mezcladas con la licencia GNU GPL con quienes son compatibles. Puede argumentarse que esta licencia asegura verdadero software libre, en el sentido que el usuario tiene libertad ilimitada con respecto al software, y que puede decidir incluso redistribuirlo como no libre. Otras opiniones estn orientadas a destacar que este tipo de licencia no contribuye al desarrollo de ms software libre. Licencias estilo MPL y derivadas: Esta licencia es de Software Libre y tiene un gran valor porque fue el instrumento que emple Netscape Communications Corp. para liberar su Netscape Communicator 4.0 y empezar ese proyecto tan importante para el mundo del Software Libre: Mozilla. Se utilizan en gran cantidad de productos de software libre de uso cotidiano en todo tipo de sistemas operativos. La MPL es Software Libre y promueve eficazmente la colaboracin evitando el efecto "viral" de la GPL. Desde un punto de vista del desarrollador la GPL presenta un inconveniente en este punto, y lamentablemente mucha gente se cierra en banda ante el uso de dicho cdigo. No obstante la MPL no es tan

50

excesivamente permisiva como las licencias tipo BSD. Estas licencias son denominadas de copyleft dbil. La NPL fue la primera licencia nueva despus de muchos aos, que se encargaba de algunos puntos que no fueron tenidos en cuenta por las licencias BSD y GNU. En el espectro de las licencias de software libre se la puede considerar adyacente a la licencia estilo BSD, pero perfeccionada. Copyleft: Hay que hacer constar que el titular de los derechos de autor (copyright) de un software bajo licencia copyleft puede tambin realizar una versin modificada bajo su copyright original, y venderla bajo cualquier licencia que desee, adems de distribuir la versin original como software libre. Esta tcnica ha sido usada como un modelo de negocio por una serie de empresas que realizan software libre (por ejemplo MySQL); esta prctica no restringe ninguno de los derechos otorgados a los usuarios de la versin copyleft. Tambin podra retirar todas las licencias de software libre anteriormente otorgadas, pero esto obligara a una indemnizacin a los titulares de las licencias en uso. En Espaa, toda obra derivada est tan protegida como una original, siempre que la obra derivada parta de una autorizacin contractual con el autor. En el caso genrico de que el autor retire las licencias "copyleft", no afectara de ningn modo a los productos derivados anteriores a esa retirada, ya que no tiene efecto retroactivo. En trminos legales, el autor no tiene derecho a retirar el permiso de una licencia en vigencia. Si as sucediera, el conflicto entre las partes se resolvera en un pleito convencional. Seguridad relativa: Existe una cierta controversia sobre la seguridad del software libre frente al software no libre. Un mtodo usado de forma habitual para determinar la seguridad relativa de los productos es determinar cuntos fallos de seguridad no parcheados existen en cada uno de los productos involucrados. Por lo general los usuarios de este mtodo recomiendan que cuando un producto no proporcione un mtodo

51

de parchear los fallos de seguridad, no se use dicho producto, al menos hasta que no est disponible un arreglo. Un ejemplo es GNU/Linux, del cual se cree que es ms seguro que Windows debido a la diferencia de usuarios,[cita requerida] sin embargo otros argumentan que la seguridad de este sistema reside en su diseo. 3.5 Software Libres Actuales GNU/Linux Es uno de los trminos empleados para referirse a la combinacin del ncleo o kernel libre similar a Unix denominado Linux, que es usado con herramientas de sistema GNU. Su desarrollo es uno de los ejemplos ms prominentes de software libre; todo su cdigo fuente puede ser utilizado, modificado y redistribuido libremente por cualquiera bajo los trminos de la GPL (Licencia Pblica General de GNU) y otra serie de licencias libres. A pesar de que Linux es, en sentido estricto, el sistema operativo, parte fundamental de la interaccin entre el ncleo y el usuario (o los programas de aplicacin) se maneja usualmente con las herramientas GNU. Ejemplo de esto es el intrprete de comandos bash, que permite la comunicacin con el ncleo mediante un completo conjunto de rdenes e instrucciones. Sin embargo, una parte significativa de la comunidad, as como muchos medios generales y especializados, prefieren utilizar el trmino Linux para referirse a la unin de ambos proyectos. A las variantes de esta unin de programas y tecnologas, a las que se les adicionan diversos programas de aplicacin de propsitos especficos o generales se las denomina distribuciones. Su objetivo consiste en ofrecer ediciones que cumplan con las necesidades de

52

determinado grupo de usuarios. Algunas de ellas son especialmente conocidas por su uso en servidores y supercomputadoras. No obstante, es posible instalarlo en una amplia variedad de hardware como computadoras de escritorio y porttiles. En computadoras de bolsillo, telfonos mviles, dispositivos empotrados, videoconsolas y otros, puede darse el caso en que las partes de GNU se reemplacen por alternativas ms adecuadas. Aplicaciones Escritorio KDE 3.4.2 corriendo sobre la distribucin Gentoo. Estn abiertos y funcionando un cliente IRC Konversation, un cliente p2p aMule y un reproductor musical Amarok. Distribucin Ubuntu 8.04 con el escritorio GNOME 2.22 ejecutando las aplicaciones Mozilla Firefox, navegador web; emesene, cliente libre de la red WLM y gcalctool, programa de calculadora.En entornos de escritorio, GNU/Linux ofrece una interfaz grfica alternativa a la tradicional interfaz de lnea de comandos de Unix. Existen en la actualidad numerosas aplicaciones grficas que ofrecen la funcionalidad que est permitiendo que GNU/Linux se adapte como herramienta de escritorio. Muchas distribuciones permiten el arranque del sistema

directamente desde un CD/DVD (llamados LiveCD) sin modificar el disco duro del ordenador en el que se ejecuta. Para este tipo de distribuciones, en general, los archivos de imagen (archivos ISO) estn disponibles en Internet para su descarga. Otras posibilidades incluyen iniciar el arranque desde una red, desde un disco flexible o disquete o desde unidades de almacenamiento USB.

53

Ventajas La creciente popularidad de GNU/Linux se debe, entre otras razones, a su estabilidad, al acceso al cdigo fuente (lo que permite personalizar el funcionamiento y auditar la seguridad y privacidad de los datos tratados), a la independencia de proveedor, a la seguridad, a la rapidez con que incorpora los nuevos adelantos tecnolgicos (IPv6, microprocesadores de 64 bits), a la escalabilidad (se pueden crear clusters de cientos de computadoras), a la activa comunidad de desarrollo que hay a su alrededor, a su interoperatibilidad y a la abundancia de documentacin relativa a los procedimientos. IBM Roadrunner, la supercomputadora ms potente de 2008, funciona bajo una distribucin Gnu/LinuxHay varias empresas que comercializan soluciones basadas en GNU/Linux: IBM, Novell (SuSE), Red Hat (RHEL), Rxart, Canonical Ltd. (Ubuntu), as como miles de PYMES que ofrecen productos o servicios basados en esta tecnologa. Supercomputadoras: Dentro del segmento de supercomputadoras, a noviembre de 2009, el uso de este sistema ascendi al 89.2% de las computadoras ms potentes del mundo por su confiabilidad, seguridad y libertad para modificar el cdigo. De acuerdo con TOP500.org, que lleva estadsticas sobre las 500 principales supercomputadoras del mundo, a noviembre de 2009: 446 usaban una distribucin basada en GNU/Linux, 25 Unix, 23 Mezclas, 1 BSD y solo el 1% (5) Windows. GNU/Linux, adems de liderar el mercado de servidores de Internet debido, entre otras cosas, a la gran cantidad de soluciones que tiene para este segmento, tiene un crecimiento progresivo en computadoras de

54

escritorio y porttiles. Adems, es el sistema base que se ha elegido para el proyecto OLPC: One Laptop Per Child. Hay una serie de administraciones pblicas que han mostrado su apoyo al software libre, sea migrando total o parcialmente sus servidores y sistemas de escritorio, sea subvencionndolo. Como ejemplos se tiene a Alemania, Australia, Brasil, Espaa, Chile, China, Cuba, Mxico, Per, Repblica Dominicana, Uruguay, Venezuela, El Salvador. Fundacin Mozilla La Fundacin Mozilla es una organizacin sin nimo de lucro dedicada a la creacin de software libre. Tiene como misin "mantener la eleccin y la innovacin en Internet". Cualquier persona o compaa puede colaborar en el proyecto Mozilla, ya sea aportando cdigo, probando los productos, escribiendo documentacin o de cualquier otra manera. El trabajo desinteresado de los contribuidores de Mozilla hace que sea una organizacin sin fines de lucro. Caractersticas del software de Mozilla Tres importantes caractersticas de los productos de Mozilla son: el cdigo abierto, el respeto por los estndares y la portabilidad o posibilidad para la interaccin del software en mltiples plataformas. Cdigo abierto: El cdigo de los productos de Mozilla est liberado bajo los trminos de las licencias MPL, GPL o LGPL. Es software libre y por lo tanto, eso implica que adems de que los productos se pueden descargar gratuitamente de Internet, el cdigo fuente est a disposicin de todo el mundo y est permitida la libre redistribucin con o sin

55

modificaciones de ese cdigo fuente por parte de cualquiera, bajo los trminos de la licencia. El trabajo del proyecto Mozilla, al estar amparado por una licencia libre, se entrega sin ningn tipo de garanta de responsabilidad sobre el software. Existen algunas condiciones si se desea redistribuir el software identificado con la marca de Mozilla y su imagen. Respeto por los estndares: El software de Mozilla es respetuoso con la mayora de los estndares establecidos y en desarrollo, de las organizaciones destinadas a velar por un Internet abierto y equilibrado, como el W3C, la ECMA, o la IETF, que favorecen la igualdad de oportunidades y no el control de la red por unos pocos, dejando a los usuarios la libertad de elegir entre ms de una opcin. Caracterstica multiplataforma Una de las principales ventajas del software de Mozilla, es que puede interactuar con una gran cantidad de plataformas, como Microsoft Windows, MacOS, GNU/Linux, BSD, Solaris, y otras muchas ms. Esa caracterstica multiplataforma del software de Mozilla, facilita la interoperabilidad en caso de tener que trabajar con varios sistemas operativos diferentes, una rpida adaptacin en las migraciones a otros sistemas, o sencillamente, la posibilidad de seguir con el mismo software para aquellos que quieran probar un nuevo ambiente informtico. El software de Mozilla se traduce a una gran cantidad de idiomas, gracias a los contribuidores del MLP, entre los cuales se encuentra el espaol, en sus dialectos argentino y de Espaa. Productos

56

Algunos de los productos desarrollados por el proyecto Mozilla son los navegadores Mozilla Application Suite, Mozilla Firefox, Camino, el cliente de correo Mozilla Thunderbird o el calendario Mozilla Sunbird. Tambin se pueden contar proyectos como Bugzilla, un sistema de notificacin de fallos va web, Minimo un navegador basado en Gecko para pequeos dispositivos, GtkMozEmbed, tecnologa destinada a empotrar Mozilla en aplicaciones GTK, etc. Mozilla Firefox Es un navegador web libre descendiente de Mozilla Application Suite, desarrollado por la Corporacin Mozilla, la Fundacin Mozilla y un gran nmero de voluntarios externos. Firefox es un navegador multiplataforma y est disponible en varias versiones de Microsoft Windows, Mac OS X, GNU/Linux y algunos sistemas basados en Unix. Su cdigo fuente es software libre, publicado bajo una triple licencia GPL/LGPL/MPL. Incluye navegacin por pestaas, corrector ortogrfico, bsqueda progresiva, marcadores dinmicos, un administrador de descargas y un sistema de bsqueda integrado que utiliza el motor de bsqueda que desee el usuario. Adems se pueden aadir funciones a travs de complementos desarrolladas por terceros, entre las ms populares estn Adblock Plus, Video DownloadHelper, NoScript, DownThemAll!, Cooliris, Xmarks (antiguo Foxmarks Bookmark Synchronizer), Forecastfox, Boost a Facebook, WOT, Tab Mix Plus y FoxyTunes. Caractersticas de Mozilla Firefox Las caractersticas que incluye Mozilla Firefox son la navegacin por pestaas, corrector ortogrfico, marcadores, bloqueador de ventanas

57

emergentes, atajos del teclado, soporte para motores de bsqueda y un gestor de descargas. Los usuarios pueden personalizar Firefox con las extensiones y temas. de 2007. Firefox proporciona un entorno para los desarrolladores web, en el que se puede utilizar herramientas incorporadas, como la Consola de errores o el Inspector DOM, o extensiones, como Firebug. Compatibilidad con estndares web Mozilla Firefox es compatible con varios estndares web, incluyendo HTML, XML, XHTML, SVG 1.1 (parcial), CSS 1, 2 y 3, ECMAScript (JavaScript), DOM, MathML, DTD, XSLT, XPath, e imgenes PNG con transparencia alfa. Firefox tambin incorpora las normas propuestas por el WHATWG, y canvas element. Seguridad Firefox usa un sistema de seguridad sandbox. Utiliza el sistema SSL/TLS para proteger la comunicacin con los servidores web, utilizando fuerte criptografa cuando se utiliza el protocolo Https. Tambin proporciona apoyo a las tarjetas inteligentes para fines de autenticacin. Cuenta con una proteccin antiphishing, antimalware e integracin con el antivirus. 4. Proceso de creacin del software Mozilla mantiene los repositorios de extensiones en addons.mozilla.org, con casi 2000 complementos a partir de septiembre

58

Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solucin de un problema u obtencin de un producto, en este caso particular, para lograr la obtencin de un producto software que resuelva un problema. El proceso de creacin de software puede llegar a ser muy complejo, dependiendo de su porte, caractersticas y criticidad del mismo. Por ejemplo la creacin de un sistema operativo es una tarea que requiere proyecto, gestin, numerosos recursos y todo un equipo disciplinado de trabajo. En el otro extremo, si se trata de un sencillo programa (por ejemplo, la resolucin de una ecuacin de segundo orden), ste puede ser realizado por un solo programador (incluso aficionado) fcilmente. Es as que normalmente se dividen en tres categoras segn su tamao (lneas de cdigo) y/o costo: de Pequeo, Mediano y Gran porte. Existen varias metodologas para estimarlo, una de las ms populares es el sistema COCOMO que provee mtodos y un software (programa) que calcula y provee una estimacin de todos los costos de produccin en un "proyecto software" (relacin horas/hombre, costo monetario, cantidad de lneas fuente de acuerdo a lenguaje usado, etc.). Considerando los de gran porte, es necesario realizar tantas y tan complejas tareas, tanto tcnicas, de gerenciamiento, fuerte gestin y anlisis diversos (entre otras) que toda una ingeniera hace falta para su estudio y realizacin: es la Ingeniera de Software. En tanto que en los de mediano porte, pequeos equipos de trabajo (incluso un avezado analista-programador solitario) pueden realizar la tarea. Aunque, siempre en casos de mediano y gran porte (y a veces tambin en algunos de pequeo porte, segn su complejidad), se deben seguir ciertas etapas que son necesarias para la construccin del software. Tales etapas, si bien deben existir, son flexibles en su forma de aplicacin, de acuerdo a la metodologa o Proceso de Desarrollo escogido

59

y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso). Los "procesos de desarrollo de software" poseen reglas

preestablecidas, y deben ser aplicados en la creacin del software de mediano y gran porte, ya que en caso contrario lo ms seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos, y con variedad de fallos inaceptables (fracasan, en pocas palabras). Entre tales "procesos" los hay giles o livianos (ejemplo XP), pesados y lentos (ejemplo RUP) y variantes intermedias; y normalmente se aplican de acuerdo al tipo, porte y tipologa del software a desarrollar, a criterio del lder (si lo hay) del equipo de desarrollo. Algunos de esos procesos son Extreme Programming (XP), Rational Unified Process (RUP), Feature Driven Development (FDD), etc. Cualquiera sea el "proceso" utilizado y aplicado al desarrollo del software (RUP, FDD, etc), y casi independientemente de l, siempre se debe aplicar un "Modelo de Ciclo de Vida". Cuando un proyecto fracasa, rara vez es debido a fallas tcnicas, la principal causa de fallos y fracasos es la falta de aplicacin de una buena metodologa o proceso de desarrollo. Entre otras, una fuerte tendencia, desde hace pocas dcadas, es mejorar las metodologas o procesos de desarrollo, o crear nuevas y concientizar a los profesionales en su utilizacin adecuada. Normalmente los especialistas en el estudio y desarrollo de estas reas (metodologas) y afines (tales como modelos y hasta la gestin misma de los proyectos) son los Ingenieros en Software, es su orientacin. Los especialistas en cualquier otra rea de desarrollo informtico (analista, programador, Lic. en Informtica, Ingeniero en Informtica, Ingeniero de Sistemas, etc.) normalmente aplican sus conocimientos especializados pero utilizando modelos, paradigmas y procesos ya elaborados.

60

Es comn para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen sus propias metodologas, normalmente un hbrido de los procesos anteriores y a veces con criterios propios. El proceso de desarrollo puede involucrar numerosas y variadas tareas, desde lo administrativo, pasando por lo tcnico y hasta la gestin y el gerenciamiento. Pero casi rigurosamente siempre se cumplen ciertas etapas mnimas; las que se pueden resumir como sigue: Captura, Elicitacin, Especificacin y Anlisis de requisitos (ERS) Diseo Codificacin Pruebas (unitarias y de integracin) Instalacin y paso a Produccin Mantenimiento 4.1 Modelos de proceso o ciclo de vida

Para cada una de las fases o etapas listadas en el tem anterior, existen sub-etapas (o tareas). El modelo de proceso o modelo de ciclo de vida utilizado para el desarrollo define el orden para las tareas o actividades involucradas tambin definen la coordinacin entre ellas, enlace y realimentacin entre las mencionadas etapas. Entre los ms conocidos se puede mencionar: modelo en cascada o secuencial, modelo espiral, modelo iterativo incremental. De los antedichos hay a su vez algunas variantes o alternativas, ms o menos atractivas segn sea la aplicacin requerida y sus requisitos. 4.1.1 Modelo cascada

61

Este, aunque es ms comnmente conocido como modelo en cascada es tambin llamado "modelo clsico", "modelo tradicional" o "modelo lineal secuencial". El modelo en cascada puro difcilmente se utilice tal cual, pues esto implicara un previo y absoluto conocimiento de los requisitos, la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores; ello slo podra ser aplicable a escasos y pequeos desarrollos de sistemas. En estas circunstancias, el paso de una etapa a otra de las mencionadas sera sin retorno, por ejemplo pasar del Diseo a la Codificacin implicara un diseo exacto y sin errores ni probable modificacin o evolucin: "codifique lo diseado que no habrn en absoluto variantes ni errores". Esto es utpico; ya que intrnsecamente el software es de carcter evolutivo, cambiante y difcilmente libre de errores, tanto durante su desarrollo como durante su vida operativa. Algn cambio durante la ejecucin de una cualquiera de las etapas en este modelo secuencial implicara reiniciar desde el principio todo el ciclo completo, lo cual redundara en altos costos de tiempo y desarrollo. Sin embargo, el modelo cascada en algunas de sus variantes es uno de los actualmente ms utilizados, por su eficacia y simplicidad, ms que nada en software de pequeo y algunos de mediano porte; pero nunca (o muy rara vez) se lo usa en su forma pura, como se dijo anteriormente. En lugar de ello, siempre se produce alguna realimentacin entre etapas, que no es completamente predecible ni rgida; esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas, cambios o evoluciones durante el ciclo de vida. As por ejemplo, una vez capturados (elicitados) y especificados los requisitos (primera etapa) se puede pasar al diseo del sistema, pero durante esta ltima fase lo ms probable es que se deban realizar ajustes en los requisitos (aunque sean mnimos), ya sea por fallas detectadas, ambigedades o bien por que los propios requisitos han cambiado o evolucionado; con lo cual se debe

62

retornar a la primera o previa etapa, hacer los pertinentes reajustes y luego continuar nuevamente con el diseo; esto ltimo se conoce como realimentacin. Lo normal en el modelo cascada ser entonces la aplicacin del mismo con sus etapas realimentadas de alguna forma, permitiendo retroceder de una a la anterior (e incluso poder saltar a varias anteriores) si es requerido. Hay ms variantes similares al modelo: refino de etapas (ms etapas, menores y ms especficas) o incluso mostrar menos etapas de las indicadas, aunque en tal caso la faltante estar dentro de alguna otra. El orden de esas fases indicadas en el tem previo es el lgico y adecuado, pero advirtase, como se dijo, que normalmente habr realimentacin hacia atrs. El modelo lineal o en Cascada es el paradigma ms antiguo y extensamente utilizado, sin embargo las crticas a l (ver desventajas) han puesto en duda su eficacia. Pese a todo tiene un lugar muy importante en la Ingeniera de software y contina siendo el ms utilizado; y siempre es mejor que un enfoque al azar. Desventajas del modelo cascada: Los cambios introducidos durante el desarrollo pueden

confundir al equipo profesional en las etapas tempranas del proyecto. Si los cambios se producen en etapa madura (codificacin o prueba) pueden ser catastrficos para un proyecto grande. No es frecuente que el cliente o usuario final explicite clara y

completamente los requisitos (etapa de inicio); y el modelo lineal lo requiere. La incertidumbre natural en los comienzos es luego difcil de acomodar.

63

El cliente debe tener paciencia ya que el software no estar

disponible hasta muy avanzado el proyecto. Un error detectado por el cliente (en fase de operacin) puede ser desastroso, implicando reinicio del proyecto, con altos costos.

4.1.2 Modelos evolutivos El software evoluciona con el tiempo. Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo. Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo, por lo que se debe introducir una versin funcional limitada de alguna forma para aliviar las presiones competitivas. En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que estn diseados para acomodarse a una evolucin temporal o progresiva, donde los requisitos centrales son conocidos de antemano, aunque no estn bien definidos a nivel detalle. En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software, se plantea como esttico con requisitos bien conocidos y definidos desde el inicio. Los evolutivos son modelos iterativos, permiten desarrollar versiones cada vez ms completas y complejas, hasta llegar al objetivo final deseado; incluso evolucionar ms all, durante la fase de operacin. Los modelos Iterativo Incremental y Espiral (entre otros) son dos de los ms conocidos y utilizados del tipo evolutivo.

64

4.1.2.1 Modelo iterativo incremental En trminos generales, los pasos generales que sigue el proceso de desarrollo de un producto software. En el modelo de ciclo de vida seleccionado, se identifican claramente dichos pasos. La Descripcin del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final. Las actividades concurrentes (Especificacin, Desarrollo y Validacin) sintetizan el desarrollo pormenorizado de los incrementos, que se har posteriormente. Ciclo iterativo incremental: Este permite la entrega de versiones parciales a medida que se va construyendo el producto final. Es decir, a medida que cada incremento definido llega a su etapa de operacin y mantenimiento. Cada versin emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios. El incremental es un modelo de tipo evolutivo que est basado en varios ciclos Cascada realimentados aplicados repetidamente, con una filosofa iterativa. Bajo este modelo se entrega software por partes funcionales ms pequeas, pero reutilizables, llamadas incrementos. En general cada incremento se construye sobre aquel que ya fue entregado. El cliente utiliza inicialmente ese sistema bsico intertanto, el resultado de su uso y evaluacin puede aportar al plan para el desarrollo del/los siguientes incrementos (o versiones). Adems tambin aportan a ese plan otros factores, como lo es la priorizacin (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia).

65

Luego de cada integracin se entrega un producto con mayor funcionalidad que el previo. El proceso se repite hasta alcanzar el software final completo. Nota: Puede ser considerado y til, en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento, teniendo as una mixtura de modelos que mejoran el esquema y desarrollo general. Ejemplo: Un procesador de texto que sea desarrollado bajo el paradigma Incremental podra aportar, en principio, funciones bsicas de edicin de archivos y produccin de documentos (algo como un editor simple). En un segundo incremento se le podra agregar edicin ms sofisticada, y de generacin y mezcla de documentos. En un tercer incremento podra considerarse el agregado de funciones de correccin ortogrfica, esquemas de paginado y plantillas; en un cuarto capacidades de dibujo propias y ecuaciones matemticas. As sucesivamente hasta llegar al procesador final requerido. As, el producto va creciendo, acercndose a su meta final, pero desde la entrega del primer incremento ya es til y funcional para el cliente, el cual observa una respuesta rpida en cuanto a entrega temprana; sin notar que la fecha lmite del proyecto puede no estar acotada ni tan definida, lo que da margen de operacin y alivia presiones al equipo de desarrollo. Como se dijo, el Iterativo Incremental es un modelo del tipo evolutivo, es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo; se admite cierto margen para que el software pueda evolucionar. Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estticos y definidos, cuestin esa que si es indispensable para poder utilizar un modelo Cascada.

66

El modelo es aconsejable para el desarrollo de software en el cual se observe, en su etapa inicial de anlisis, que posee reas bastante bien definidas a cubrir, con suficiente independencia como para ser desarrolladas en etapas sucesivas. Tales reas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anlisis previo, es decir, definir cual ser la primera, la segunda, y as sucesivamente; esto se conoce como definicin de los incrementos con base en priorizacin. Pueden no existir prioridades funcionales por parte del cliente, pero el desarrollador debe fijarlas de todos modos y con algn criterio, ya que basndose en ellas se desarrollarn y entregarn los distintos incrementos. El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular, por tanto este modelo facilita tal paradigma de diseo. En resumen, un modelo incremental lleva a pensar en un desarrollo modular, con entregas parciales del producto software denominados incrementos del sistema, que son escogidos segn prioridades predefinidas de algn modo. El modelo permite una implementacin con refinamientos sucesivos (ampliacin y/o mejora). Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versin previamente implementada del producto software. Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario, un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o, eventualmente, podr constituir una mejora/adecuacin de uno ya planeado. Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccin/incorporacin tarda) se debe evaluar la factibilidad

67

y realizar un acuerdo con el cliente, ya que puede impactar fuertemente en los costos. La seleccin de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para l como para el grupo de desarrollo). Se priorizan las entregas de aquellos mdulos o incrementos en que surja la necesidad operativa de hacerlo, por ejemplo para cargas previas de informacin, indispensable para los incrementos siguientes. El modelo iterativo incremental no obliga a especificar con precisin y detalle absolutamente todo lo que el sistema debe hacer, (y cmo), antes de ser construido (como el caso del cascada, con requisitos congelados). Slo se hace en el incremento en desarrollo. Esto torna ms manejable el proceso y reduce el impacto en los costos. Esto es as, porque en caso de alterar o rehacer los requisitos, solo afecta una parte del sistema. Aunque, lgicamente, esta situacin se agrava si se presenta en estado avanzado, es decir en los ltimos incrementos. En definitiva, el modelo facilita la incorporacin de nuevos requisitos durante el desarrollo. El modelo incremental no es recomendable para casos de sistemas de tiempo real, de alto nivel de seguridad, de procesamiento distribuido, y/o de alto ndice de riesgos. 4.1.2.2 Modelo espiral El modelo espiral fue propuesto inicialmente por Barry Boehm. Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemticos del Modelo Cascada. Proporciona potencial para desarrollo rpido de versiones incrementales. En el modelo Espiral el software se construye en una serie de versiones incrementales. En las primeras iteraciones la versin incremental podra ser un modelo

68

en papel o bien un prototipo. En las ltimas iteraciones se producen versiones cada vez ms completas del sistema diseado. Proyectos pequeos requieren baja cantidad de tareas y tambin de formalidad. En proyectos mayores o crticos cada regin de tareas contiene labores de ms alto nivel de formalidad. En cualquier caso se aplican actividades de proteccin (por ejemplo, gestin de configuracin del software, garanta de calidad, etc.). El modelo espiral puede ir adaptndose y aplicarse a lo largo de todo el Ciclo de vida del software (en el modelo clsico, o cascada, el proceso termina a la entrega del software). Una visin alternativa del modelo puede observarse examinando el "eje de punto de entrada de proyectos". Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados); a saber: Un proyecto de "Desarrollo de Conceptos" comienza al inicio de

la espiral, hace mltiples iteraciones hasta que se completa, es la zona marcada con verde. Si lo anterior se va a desarrollar como producto real, se incia otro proyecto: "Desarrollo de nuevo Producto". Que evolucionar con iteraciones hasta culminar; es la zona marcada en color azul. Eventual y anlogamente se generarn proyectos de "Mejoras de Productos" y de "Mantenimiento de productos", con las iteraciones necesarias en cada rea (zonas roja y gris, respectivamente). Cuando la espiral se caracteriza de esta forma, est operativa hasta que el software se retira, eventualmente puede estar inactiva (el proceso), pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo, en "Mejora del Producto").

69

El modelo espiral da un enfoque realista, que evoluciona igual que el software; se adapta muy bien para desarrollos a gran escala. El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucin. Mantiene el enfoque clsico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad. Este modelo requiere considerar riesgos tcnicos en todas las etapas del proyecto; aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema. El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos); tambin en sistemas de altos riesgos o crticos (Ej. navegadores y controladores aeronuticos) y en todos aquellos en que sea necesaria una fuerte gestin del proyecto y sus riesgos, tcnicos o de gestin. Desventajas importantes: Requiere mucha experiencia y habilidad para la evaluacin de

los riesgos, lo cual es requisito para el xito del proyecto. Es difcil convencer a los grandes clientes que se podr

controlar este enfoque evolutivo. Este modelo no se ha usado tanto, como el Cascada (Incremental) o MCP, por lo que no se tiene bien medida su eficacia, es un paradigma relativamente nuevo y difcil de implementar y controlar. 4.1.2.3 Modelo espiral Win & Win

70

Una variante interesante del Modelo Espiral previamente visto es el "Modelo espiral Win-Win"8 (Barry Boehm). El Modelo Espiral previo (clsico) sugiere la comunicacin con el cliente para fijar los requisitos, en que simplemente se pregunta al cliente qu necesita y l proporciona la informacin para continuar; pero esto es en un contexto ideal que rara vez ocurre. Normalmente cliente y desarrollador entran en una negociacin, se negocia coste frente a funcionalidad, rendimiento, calidad, etc. "Es as que la obtencin de requisitos requiere una negociacin, que tiene xito cuando ambas partes ganan". Las mejores negociaciones se fuerzan en obtener "Victoria & Victoria" (Win & Win), es decir que el cliente gane obteniendo el producto que lo satisfaga, y el desarrollador tambin gane consiguiendo presupuesto y fecha de entrega realista. Evidentemente, este modelo requiere fuertes habilidades de negociacin. El modelo Win-Win define un conjunto de actividades de negociacin al principio de cada paso alrededor de la espiral; se definen las siguientes actividades: 1. Identificacin del sistema o subsistemas clave de los directivos (saber qu quieren). 2. Determinacin de "condiciones de victoria" de los directivos

(saber qu necesitan y los satisface) 3. ganen). 5. Etapas en el desarrollo del software Negociacin de las condiciones "victoria" de los directivos para

obtener condiciones "Victoria & Victoria" (negociar para que ambos

71

5.1

Captura, anlisis y especificacin de requisitos

Al inicio de un desarrollo (no de un proyecto), esta es la primera fase que se realiza, y, segn el modelo de proceso adoptado, puede casi terminar para pasar a la prxima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de carcter evolutivo). En simple palabras y bsicamente, durante esta fase, se adquieren, renen y especifican las caractersticas funcionales y no funcionales que deber cumplir el futuro programa o sistema a desarrollar. Las bondades de las caractersticas, tanto del sistema o programa a desarrollar, como de su entorno, parmetros no funcionales y arquitectura dependen enormemente de lo bien lograda que est esta etapa. Esta es, probablemente, la de mayor importancia y una de las fases ms difciles de lograr certeramente, pues no es automatizable, no es muy tcnica y depende en gran medida de la habilidad y experiencia del analista que la realice. Involucra fuertemente al usuario o cliente del sistema, por tanto tiene matices muy subjetivos y es difcil de modelar con certeza y/o aplicar una tcnica que sea "la ms cercana a la adecuada" (de hecho no existe "la estrictamente adecuada"). Si bien se han ideado varias metodologas, incluso software de apoyo, para captura, elicitacin y registro de requisitos, no existe una forma infalible o absolutamente confiable, y deben aplicarse conjuntamente buenos criterios y mucho sentido comn por parte del o los analistas encargados de la tarea; es fundamental tambin lograr una fluida y adecuada comunicacin y comprensin con el usuario final o cliente del sistema.

72

El artefacto ms importante resultado de la culminacin de esta etapa es lo que se conoce como especificacin de requisitos software o simplemente documento ERS. Como se dijo, la habilidad del analista para interactuar con el cliente es fundamental; lo comn es que el cliente tenga un objetivo general o problema a resolver, no conoce en absoluto el rea (informtica), ni su jerga, ni siquiera sabe con precisin qu debera hacer el producto software (qu y cuantas funciones) ni, mucho menos, cmo debe operar. En otros casos menos frecuentes, el cliente "piensa" que sabe precisamente lo que el software tiene que hacer, y generalmente acierta muy parcialmente, pero su empecinamiento entorpece la tarea de licitacin. El analista debe tener la capacidad para lidiar con este tipo de problemas, que incluyen relaciones humanas; tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacin y comprensin. Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema, este es el caso ms sencillo para el analista. Las tareas relativas a captura, elicitacin, modelado y registro de requerimientos, adems de ser sumamente importante, puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo; al proceso y metodologas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingeniera de Software. Hay grupos de estudio e investigacin, en todo el mundo, que estn exclusivamente abocados a la idear modelos, tcnicas y procesos para intentar lograr la correcta captura, anlisis y registro de requerimientos.

73

Estos grupos son los que normalmente hablan de la Ingeniera en Requisitos; es decir se plantea sta como un rea o disciplina pero no como una carrera universitaria en si misma. Algunos requisitos no necesitan la presencia del cliente, para ser capturados y/o analizados; en ciertos casos los puede proponer el mismo analista o, incluso, adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales). Por citar ejemplos probables: Algunos requisitos sobre la

arquitectura del sistema, requisitos no funcionales tales como los relativos al rendimiento, nivel de soporte a errores operativos, plataformas de desarrollo, relaciones internas o ligas entre la informacin (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos, etc. Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o ms sencilla operatividad; etc. La obtencin de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo; normalmente a medida que se captura la informacin, se la analiza y realimenta con el cliente, refinndola, pulindola y corrigiendo si es necesario; cualquiera sea el mtodo de ERS utilizado. EL analista siempre debe llegar a conocer la temtica y el problema a resolver, dominarlo, hasta cierto punto, hasta el mbito que el futuro sistema a desarrollar lo abarque. Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas reas o disciplinas de trabajo (que no son especficamente suyas); as por ejemplo, si el sistema a desarrollar ser para gestionar informacin de una aseguradora y sus sucursales remotas, el analista se debe compenetrar en cmo ella trabaja y maneja su informacin, desde niveles muy bajos e incluso llegando hasta los gerenciales. Dada a gran diversidad de campos a cubrir, los analistas suelen ser asistidos por especialistas, es decir gente que conoce

74

profundamente el rea para la cual se desarrollar el software; evidentemente una nica persona (el analista) no puede abarcar tan vasta cantidad de reas del conocimiento. En empresas grandes de desarrollo de productos software, es comn tener analistas especializados en ciertas reas de trabajo. Contrariamente, no es problema del cliente, es decir l no tiene por qu saber nada de software, ni de diseos, ni otras cosas relacionadas; slo se debe limitar a aportar objetivos, datos e informacin (de mano propia o de sus registros, equipos, empleados, etc) al analista, y guiado por l, para que, en primera instancia, defina el "Universo de Discurso", y con posterior trabajo logre confeccionar el adecuado documento ERS. Es bien conocida la presin que sufren los desarrolladores de sistemas informticos para comprender y/o rescatar las necesidades de los clientes/usuarios. Cuanto ms complejo es el contexto del problema ms difcil es lograrlo, a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan. Cuando esto no sucede es muy probable que se genere un conjunto de requisitos errneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacin por parte de los clientes/usuarios y un altsimo costo de reingeniera y mantenimiento. Todo aquello que no se detecte, o resulte mal entendido en la etapa inicial provocar un fuerte impacto negativo en los requisitos, propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto ms tarda sea su deteccin. 5.1.1 Procesos, modelado y formas de

licitacin de requisitos

75

Siendo que la captura, licitacin y especificacin de requisitos, es una parte crucial en el proceso de desarrollo de software, ya que de esta etapa depende el logro de los objetivos finales previstos, se han ideado modelos y diversas metodologas de trabajo para estos fines. Tambin existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos. El estndar IEEE 830-1998 brinda una normalizacin de las "Prcticas Recomendadas para la Especificacin de Requisitos Software". A medida que se obtienen los requisitos, normalmente se los va analizando, el resultado de este anlisis, con o sin el cliente, se plasma en un documento, conocido como ERS o Especificacin de Requisitos Software, cuya estructura puede venir definida por varios estndares, tales como CMM-I. Un primer paso para realizar el relevamiento de informacin es el conocimiento y definicin acertada lo que se conoce como "Universo de Discurso" del problema, que se define y entiende por: Universo de Discurso (UdeD): es el contexto general en el cual el software deber ser desarrollado y deber operar. El UdeD incluye todas las fuentes de informacin y todas las personas relacionadas con el software. Esas personas son conocidas tambin como actores de ese universo. El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software. A partir de la extraccin y anlisis de informacin en su mbito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software.

76

El objetivo de la Ingeniera de Requisitos (IR) es sistematizar el proceso de definicin de requisitos permitiendo elicitar, modelar y analizar el problema, generando un compromiso entre los Ingenieros de Requisitos y los clientes/usuarios, ya que ambos participan en la generacin y definicin de los requisitos del sistema. La IR aporta un conjunto de mtodos, tcnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo ms seguros, veraces, completos y oportunos posibles, permitiendo bsicamente: Comprender el problema Facilitar la obtencin de las necesidades del cliente/usuario Validar con el cliente/usuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas, modelos y metodologas para elicitar, definir y documentar requerimientos, no se puede decir que alguna de ellas sea mejor o peor que la otra, suelen tener muchsimo en comn, y todas cumplen el mismo objetivo. Sin embargo, lo que si se puede decir sin dudas es que es indispensable utilizar alguna de ellas para documentar las especificaciones del futuro producto software. As por ejemplo, hay un grupo de investigacin argentino que desde hace varios aos ha propuesto y estudia el uso del LEL (Lxico Extendido del Lenguaje) y Escenarios como metodologa, aqu se presenta una de las tantas referencias y bibliografa sobre ello. Una posible lista, general y ordenada, de tareas recomendadas para obtener la definicin de lo que se debe realizar, los productos a obtener y las tcnicas a emplear durante la actividad de elicitacin de requisitos, en fase de Especificacin de Requisitos Software es:

77

1. 2. 3. 4. 5. 6. 7. 8.

Obtener informacin sobre el dominio del problema y el sistema Preparar y realizar las reuniones para elicitacin/negociacin. Identificar/revisar los objetivos del usuario. Identificar/revisar los objetivos del sistema. Identificar/revisar los requisitos de informacin. Identificar/revisar los requisitos funcionales. Identificar/revisar los requisitos no funcionales. Priorizar objetivos y requisitos.

actual (UdeD).

Algunos principios bsicos a tener en cuenta: Software. Representar el comportamiento del software a consecuencias Reconocer requisitos incompletos, ambiguos o contradictorios. Dividir claramente los modelos que representan la informacin, de acontecimientos externos, particulares, incluso inesperados. Presentar y entender cabalmente el dominio de la informacin Definir correctamente las funciones que debe realizar el

del problema.

las funciones y comportamiento y caractersticas no funcionales. 5.1.2 Clasificacin requerimientos Se pueden identificar dos formas de requisitos: Requisitos de usuario: Los requisitos de usuario son frases en e identificacin de

lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar, as como las restricciones bajo las que debe operar.

78

Requisitos de sistema: Los requisitos de sistema determinan

los servicios del sistema y pero con las restricciones en detalle. Sirven como contrato. Es decir, ambos son lo mismo, pero con distinto nivel de detalle. Ejemplo de requisito de usuario: El sistema debe hacer prstamos Ejemplo de requisito de sistema: Funcin prstamo: entrada cdigo socio, cdigo ejemplar; salida: fecha devolucin; etc. Se clasifican en tres los tipos de requisitos de sistema: Requisitos funcionales Los servicios que proporciona el sistema (funciones). La respuesta del sistema ante determinadas entradas. El comportamiento del sistema en situaciones particulares. Requisitos no funcionales Los requisitos funcionales describen:

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej. cotas de tiempo, proceso de desarrollo, rendimiento, etc.) Ejemplo 1. La biblioteca Central debe ser capaz de atender simultneamente a todas las bibliotecas de la Universidad Ejemplo 2. El tiempo de respuesta a una consulta remota no debe ser superior a 1/2 s A su vez, hay tres tipos de requisitos no funcionales: Requisitos del producto. Especifican el comportamiento del

producto (Ej. prestaciones, memoria, tasa de fallos, etc.)

79

Requisitos organizativos. Se derivan de las polticas y

procedimientos de las organizaciones de los clientes y desarrolladores (Ej. estndares de proceso, lenguajes de programacin, etc.) Requisitos externos. Se derivan de factores externos al sistema

y al proceso de desarrollo (Ej. requisitos legislativos, ticos, etc.) Requisitos del dominio. Los requisitos del dominio se derivan

del dominio de la aplicacin y reflejan caractersticas de dicho dominio. Pueden ser funcionales o no funcionales. Ej. El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacin de Bibliotecas de Espaa (LIBE). Ej. El sistema de biblioteca no podr acceder a bibliotecas con material censurado. 5.2 Diseo del sistema

El Diseo de sistemas es el arte de definir la arquitectura de hardware y software, componentes, mdulos y datos de un sistema de cmputo para satisfacer ciertos requerimientos. Es la etapa posterior al anlisis de sistemas. El diseo de sistemas tiene un rol ms respetado y crucial en la industria de procesamiento de datos. La importancia del software multiplataforma ha incrementado la ingeniera de software a costa de los diseos de sistemas. Los mtodos de Anlisis y diseo orientado a objetos se estn volviendo en los mtodos ms ampliamente utilizados para el diseo de sistemas. El UML se ha vuelto un estandard en el Anlisis y diseo orientado a objetos. Es ampliamente utilizado para el modelado de

80

sistemas de software y se ha incrementado su uso para el diseo de sistemas que no son software as como organizaciones.

5.3

Codificacin del software

Durante esta la etapa se realizan las tareas que comnmente se conocen como programacin; que consiste, esencialmente, en llevar a cdigo fuente, en el lenguaje de programacin elegido, todo lo diseado en la fase anterior. Esta tarea la realiza el programador, siguiendo por completo los lineamientos impuestos en el diseo y en consideracin siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa. Es comn pensar que la etapa de programacin o codificacin (algunos la llaman implementacin) es la que insume la mayor parte del trabajo de desarrollo del software; sin embargo, esto puede ser relativo (y generalmente aplicable a sistemas de pequeo porte) ya que las etapas previas son cruciales, crticas y pueden llevar bastante ms tiempo. Se suele hacer estimaciones de un 30% del tiempo total insumido en la programacin, pero esta cifra no es consistente ya que depende en gran medida de las caractersticas del sistema, su criticidad y el lenguaje de programacin elegido.8 En tanto menor es el nivel del lenguaje mayor ser el tiempo de programacin requerido, as por ejemplo se tardara ms tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C. Mientras se programa la aplicacin, sistema, o software en general, se realizan tambin tareas de depuracin, esto es la labor de ir liberando al cdigo de los errores factibles de ser hallados en esta fase (de semntica, sintctica y lgica). Hay una suerte de solapamiento con la fase siguiente, ya que para depurar la lgica es necesario realizar

81

pruebas unitarias, normalmente con datos de prueba; claro es que no todos los errores sern encontrados slo en la etapa de programacin, habrn otros que se encontrarn durante las etapas subsiguientes. La aparicin de algn error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de diseo antes de continuar la codificacin. Durante la fase de programacin, el cdigo puede adoptar varios estados, dependiendo de la forma de trabajo y del lenguaje elegido, a saber: Cdigo fuente: es el escrito directamente por los

programadores en editores de texto, lo cual genera el programa. Contiene el conjunto de instrucciones codificadas en algn lenguaje de alto nivel. Puede estar distribuido en paquetes, procedimientos, bibliotecas fuente, etc. Cdigo objeto: es el cdigo binario o intermedio resultante de procesar con un compilador el cdigo fuente. Consiste en una traduccin completa y de una sola vez de ste ltimo. El cdigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora. Se trata de una representacin intermedia entre el cdigo fuente y el cdigo ejecutable, a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequeo intrprete intermedio. El cdigo objeto no existe si el programador trabaja con un lenguaje a modo de intrprete puro, en este caso el mismo intrprete se encarga de traducir y ejecutar lnea por lnea el cdigo fuente (de acuerdo al flujo del programa), en tiempo de ejecucin. En este caso tampoco existe el o los archivos de cdigo ejecutable. Una desventaja de esta modalidad es que la ejecucin del

82

programa o sistema es un poco ms lenta que si se hiciera con un intrprete intermedio, y bastante ms lenta que si existe el o los archivos de cdigo ejecutable. Es decir no favorece el rendimiento en velocidad de ejecucin. Pero una gran ventaja de la modalidad intrprete puro, es que el esta forma de trabajo facilita enormemente la tarea de depuracin del cdigo fuente (frente a la alternativa de hacerlo con un compilador puro). Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacin elegido lo permite), es decir inicialmente trabajar a modo de intrprete puro, y una vez depurado el cdigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el cdigo ejecutable completo, con lo cual se agiliza la depuracin y la velocidad de ejecucin se optimiza. Cdigo ejecutable: Es el cdigo binario resultado de enlazar uno o ms fragmentos de cdigo objeto con las rutinas y bibliotecas necesarias. Constituye uno o ms archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambin parte en una memoria virtual), y proceder a su ejecucin directa. Por lo anterior se dice que el cdigo ejecutable es directamente "inteligible por la computadora". El cdigo ejecutable, tambin conocido como cdigo mquina, no existe si se programa con modalidad de "intrprete puro". 5.4 Pruebas (unitarias y de integracin) Entre las diversas pruebas que se le efectan al software se pueden distinguir principalmente: Prueba unitarias: Consisten en probar o testear piezas de

software pequeas; a nivel de secciones, procedimientos, funciones y mdulos; aquellas que tengan funcionalidades especficas. Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones

83

de cdigo, mucho ms reducidas que el conjunto, y que tienen funciones concretas con cierto grado de independencia. Pruebas de integracin: Se realizan una vez que las pruebas

unitarias fueron concluidas exitosamente; con stas se intenta asegurar que el sistema completo, incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e interoperar en conjunto. Las pruebas normalmente se efectan con los llamados datos de prueba, que es un conjunto seleccionado de datos tpicos a los que puede verse sometido el sistema y/o mdulos y/o bloques de cdigo. Tambin se escogen: Datos que llevan a condiciones lmites al software a fin de probar su tolerancia y robustez; datos de utilidad para mediciones de rendimiento; datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estar sometido pero pueden ocurrir; etc. Los "datos de prueba" no necesariamente son ficticios o "creados", pero normalmente si lo son los de poca probabilidad de ocurrencia. Generalmente, existe una fase probatoria final y completa del software, llamada Beta Test, durante la cual el sistema instalado en condiciones normales de operacin y trabajo es probado exhaustivamente a fin de encontrar errores, inestabilidades, respuestas errneas, etc. que hayan pasado los previos controles. Estas son normalmente realizadas por personal idneo contratado o afectado especficamente a ello. Los posibles errores encontrados se transmiten a los desarrolladores para su depuracin. En el caso de software de desarrollo "a pedido", el usuario final (cliente) es el que realiza el Beta Test, teniendo para ello un perodo de prueba pactado con el desarrollador. 5.5 Instalacin y paso a produccin

84

La instalacin del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino, inicializados, y, eventualmente, configurados; todo ello con el propsito de ser ya utilizados por el usuario final. Constituye la etapa final en el desarrollo propiamente dicho del software. Luego de sta el producto entrar en la fase de funcionamiento y produccin, para el que fuera diseado. La instalacin, dependiendo del sistema desarrollado, puede consistir en una simple copia al disco rgido destino (casos raros actualmente); o bien, ms comnmente, con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables, bibliotecas, datos propios, etc.) son descomprimidos y copiados a lugares especficos preestablecidos del disco; incluso se crean vnculos con otros productos, adems del propio sistema operativo. Este ltimo caso, comnmente es un proceso bastante automtico que es creado y guiado con heramientas software especficas (empaquetado y distribucin, instaladores). En productos de mayor complejidad, la segunda alternativa es la utilizada, pero es realizada y/o guiada por especialistas; puede incluso requerirse la instalacin en varios y distintos computadores (instalacin distribuida). Tambin, en software de mediana y alta complejidad normalmente es requerido un proceso de configuracin y chequeo, por el cual se asignan adecuados parmetros de funcionamiento y se testea la operatividad funcional del producto. En productos de venta masiva las instalaciones completas, si son relativamente simples, suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos, paquetes de oficina, utilitarios,

85

etc.) con herramientas propias de instalacin guiada; incluso la configuracin suele ser automtica. En productos de diseo especfico o "a medida" la instalacin queda restringida, normalmente, a personas especialistas involucradas en el desarrollo del software en cuestin. Una vez realizada exitosamente la instalacin del software, el mismo pasa a la fase de produccin (operatividad), durante la cual cumple las funciones para las que fue desarrollado, es decir, es finalmente utilizado por el (o los) usuario final, produciendo los resultados esperados. 5.6 Mantenimiento

El mantenimiento de software es el proceso de control, mejora y optimizacin del software ya desarrollado e instalado, que tambin incluye depuracin de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test. Esta fase es la ltima (antes de iterar, segn el modelo empleado) que se aplica al ciclo de vida del desarrollo de software. La fase de mantenimiento es la que viene despus de que el software est operativo y en produccin. De un buen diseo y documentacin del desarrollo depender cmo ser la fase de mantenimiento, tanto en costo temporal como monetario. Modificaciones realizadas a un software que fue elaborado con una documentacin indebida o pobre y mal diseo puede llegar a ser tan costosa como el desarrollar el software desde el inicio. Por ello, es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacin. El perodo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida. Esta fase puede involucrar actualizaciones y evoluciones del software; no necesariamente implica que el sistema tuvo errores. Uno o ms cambios en el software, por ejemplo de adaptacin o

86

evolutivos, puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial, alterando todas las dems; dependiendo de cun profundos sean los cambios. El modelo cascada comn es particularmente costoso en mantenimiento, ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las dems fases del ciclo de vida. Durante el perodo de mantenimiento, es comn que surjan nuevas revisiones y versiones del producto; que lo liberan ms depurado, con mayor y mejor funcionalidad, mejor rendimiento, etc. Varias son las facetas que pueden ser alteradas para provocar cambios deseables, evolutivos, adaptaciones o ampliaciones y mejoras. Bsicamente se tienen los siguientes tipos de cambios: Perfectivos: Aquellos que llevan a una mejora de la calidad

interna del software en cualquier aspecto: Reestructuracin del cdigo, definicin ms clara del sistema y su documentacin; optimizacin del rendimiento y eficiencia. Evolutivos: Agregados, modificaciones, incluso eliminaciones,

necesarias en el software para cubrir su expansin o cambio segn las necesidades del usuario. Adaptivos: Modificaciones que afectan a los entornos en los

que el sistema opera, tales como: Cambios de configuracin del hardware (por actualizacin o mejora de componentes electrnicos), cambios en el software de base, en gestores de base de datos, en comunicaciones, etc. Correctivos: Alteraciones necesarias para corregir errores de

cualquier tipo en el producto software desarrollado.

87

CONCLUSION El software esta constituido por toda la parte intangible del computador, es decir los programas, procesos y cmputos que los la conforman las operaciones de un sistema de computacin. Este esta compuesto por programas, los cuales son una secuencia de instrucciones que el computador puede interpretar, estos programas estn divididos en rutinas y estas cumplen una determinada funcin dentro del mismo. Cabe sealar que el software se clasifica en: software de sistema el cual es un programa que sirve para controlar e interactuar con el sistema operativo, este proporciona control sobre el hardware y soporta los otros programas, los software de programacin son un conjunto de herramientas que permiten el desarrollo de programas informticos usando diferentes alternativas y lenguajes de programacin de manera practica, existen otras clasificaciones como el software libre entre otros. El software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software; se refiere a cuatro libertades de los usuarios del software: la libertad de usar el programa, con cualquier propsito; de estudiar el funcionamiento del programa, y adaptarlo a las necesidades; de distribuir copias, con lo cual se puede ayudar a otros y de mejorar el programa y hacer pblicas las mejoras, de modo que toda la comunidad se beneficie. De igual manera el software puede estar constituido por diferentes modelos como por ejemplo el modelo de procesos de ciclo de vida el cual define el orden de las tareas o actividades involucradas, tambin crea la coordinacin, enlace y retroalimentacin entre ellas para cada etapa, el

88

modelo cascada o modelo clsico requiere conocimientos de los requisitos y este podra ser aplicable a pequeos o pocos desarrollos de sistemas. El modelo espiral se constituye en una serie de versiones incrementales para crear un modelo o prototipo y a medida que este avanza se crean versiones mas avanzadas del sistema, referente al modelo Win-Win la idea de este modelo es que el cliente o usuario obtenga un producto que satisfaga y que el que desarrolla el sistema gane contratos por la eficacia del sistema. El software en desarrollo requiere de algunas etapas que nos ayudara a reunir y especificar las caractersticas funcionales y no funcionales que debe cumplir el programa o sistema a desarrollar, as como tambin, identificar los requerimientos por parte de los usuarios respecto a las restricciones que encuentre en el sistema, el cual determina los servicios del sistema. El diseo del sistema es una arte ya que esta define la arquitectura del hardware y el software, los componentes, los mdulos, y datos del sistema de cmputos para satisfacer ciertos requerimientos as como la codificacin, las pruebas, la instalacin y el mantenimiento que hacen que el sistema funcione de manera ptima y eficiente. Durante nuestra carrera como estudiantes hemos sido testigos de los grandes y sorprendentes avances que la tecnologa ha desarrollado en los ltimos aos. Estas nuevas tecnologas nos demuestran con hechos y resultados lo importante que son para la actualidad; a su vez se van convirtiendo en un estndar para poder competir en el mundo real. Un factor que ha sido relevante en este desarrollo de tecnologas ha sido el Software, ya que ha facilitado y agilizado varios procesos que ya se manejaban con anterioridad. Adems que se ha convertido en una

89

caracterstica primordial que deben tener las Organizaciones para poder convertirse en una de las mejores a nivel mundial. BIBLIOGRAFIA JACOBSON, Ivar; BOOCH, Grady; RUMBAUGH, James (2000). El Proceso Unificado de Desarrollo de Software (en Espaol). Pearson Addisson-Wesley. Pressman, Roger S. (2003). Ingeniera del Software, un enfoque Prctico, Quinta edicin edicin (en Espaol), Mc Graw Hill. ISBN 84-481-3214-9. Gottesdiener, Ellen; P. Sawyer (2002). Requirements by Collaboration: Workshops for Defining Needs (en Ingls). Addison-Wesley Professional, pp. 368 p.

90

ANEXOS

91

Sistema Operativo

92

Interaccin entre el SO con el resto de las partes.

Componentes del Sistema Operativo

Mapa conceptual del software libre.

93

Mapa conceptual del software libre y de cdigo abierto.

Modelo cascada realimentado para el ciclo de vida.

94

Diagrama genrico del desarrollo evolutivo incremental.

Modelo iterativo incremental para el ciclo de vida del software.

95

Modelo espiral para el ciclo de vida del software.

Diagrama de tareas para captura y anlisis de requisitos.

96

Diagrama a bloques de la operacin de un buen compilador

97