Software 1
Upcoming SlideShare
Loading in...5
×
 

Software 1

on

  • 311 views


Statistics

Views

Total Views
311
Views on SlideShare
311
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Software 1 Software 1 Document Transcript

  • Trabajo informático<br />Software<br />Trabajo presentado<br />Por Miguel Ramírez<br />Para el profesor<br />Elkin navarro<br />En la asignatura de<br />Herramientas informáticas<br />Universidad de Cartagena<br />6 de mayo de 2011<br />Magangue – bolívar<br />Tabla de contenido <br />pág.<br />software 3<br />clasificación 3<br />proceso de creación 5<br />sistema operativo 9<br />componentes 12<br />corrección de errores 18<br />introducción 18<br />servidor 19<br />tipos de servidor 21<br />herramienta de diagnostico 24<br />ofimática 25<br />base de datos 26<br />tipo de base de datos 26<br />sistema de programación 27<br />editor de texto 28<br />tipo 29<br />función 31<br />depurador 33<br />compilador 37<br />tipo 40<br />enlazador 41<br />Software<br />Se conoce como software al equipamiento lógico o soporte lógico de una computadora digital; comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas, en contraposición a los componentes físicos, que son llamados hardware.<br />Los componentes lógicos incluyen, entre muchos otros, las aplicaciones informáticas; tales como el procesador de texto, que permite al usuario realizar todas las tareas concernientes a la edición de textos; el software de sistema, tal como el sistema operativo, que, básicamente, permite al resto de los programas funcionar adecuadamente, facilitando también la interacción entre los componentes físicos y el resto de las aplicaciones y proporcionando una interfaz para el usuario.<br />Clasificación del software<br />Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, a los fines prácticos se puede clasificar al software en tres grandes tipos:<br />Software de sistema: Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles de la computadora en particular que se use, aislándolo especialmente del procesamiento referido a las características 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:<br />Sistemas operativos<br />Controladores de dispositivos<br />Herramientas de diagnóstico<br />Herramientas de Corrección y Optimización<br />Servidores<br />Utilidades<br />Software de programación: Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica. Incluye entre otros:<br />Editores de texto<br />Compiladores<br />Intérpretes<br />Enlazadores<br />Depuradores<br />Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI).<br />Software de aplicación: Es aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios. Incluye entre otros:<br />Aplicaciones para Control de sistemas y automatización industrial<br />Aplicaciones ofimáticas<br />Software educativo<br />Software empresarial<br />Bases de datos<br />Telecomunicaciones (por ejemplo Internet y toda su estructura lógica)<br />Videojuegos<br />Software médico<br />Software de Cálculo Numérico y simbólico.<br />Software de Diseño Asistido (CAD)<br />Software de Control Numérico (CAM)<br />Proceso de creación del software<br />Artículo principal: Proceso para el desarrollo de software<br />Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solución de un problema u obtención de un producto, en este caso particular, para lograr la obtención de un producto software que resuelva un problema.<br />El proceso de creación de software puede llegar a ser muy complejo, dependiendo de su porte, características y criticidad del mismo. Por ejemplo la creación de un sistema operativo es una tarea que requiere proyecto, gestión, numerosos recursos y todo un equipo disciplinado de trabajo. En el otro extremo, si se trata de un sencillo programa (por ejemplo, la resolución de una ecuación de segundo orden), éste puede ser realizado por un solo programador (incluso aficionado) fácilmente. Es así que normalmente se dividen en tres categorías según su tamaño (líneas de código) o costo: de Pequeño, Mediano y Gran porte. Existen varias metodologías para estimarlo, una de las más populares es el sistema COCOMO que provee métodos y un software (programa) que calcula y provee una estimación de todos los costos de producción en un «proyecto software» (relación horas/hombre, costo monetario, cantidad de líneas fuente de acuerdo a lenguaje usado, etc.).<br />Considerando los de gran porte, es necesario realizar complejas tareas, tanto técnicas como de gerencia, una fuerte gestión y análisis diversos (entre otras cosas), por lo cual se ha desarrollado una ingeniería para su estudio y realización: es conocida como Ingeniería de Software.<br />En tanto que en los de mediano porte, pequeños 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 también en algunos de pequeño porte, según su complejidad), se deben seguir ciertas etapas que son necesarias para la construcción del software. Tales etapas, si bien deben existir, son flexibles en su forma de aplicación, de acuerdo a la metodología o Proceso de Desarrolloescogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso).<br />Los «procesos de desarrollo de software» poseen reglas preestablecidas, y deben ser aplicados en la creación del software de mediano y gran porte, ya que en caso contrario lo más 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 y porte del software a desarrollar, a criterio del líder (si lo hay) del equipo de desarrollo. Algunos de esos procesos son Programación Extrema(en inglés eXtreme Programming o XP), Proceso Unificado de Rational (en inglés Rational Unified Process o RUP), Feature Driven Development (FDD), etc.<br />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».6<br />Se estima que, del total de proyectos software grandes emprendidos, un 28% fracasan, un 46% caen en severas modificaciones que lo retrasan y un 26% son totalmente exitosos. 7<br />Cuando un proyecto fracasa, rara vez es debido a fallas técnicas, la principal causa de fallos y fracasos es la falta de aplicación de una buena metodología o proceso de desarrollo. Entre otras, una fuerte tendencia, desde hace pocas décadas, es mejorar las metodologías o procesos de desarrollo, o crear nuevas y concientizar a los profesionales en su utilización adecuada. Normalmente los especialistas en el estudio y desarrollo de estas áreas (metodologías) y afines (tales como modelos y hasta la gestión misma de los proyectos) son los Ingenieros en Software, es su orientación. Los especialistas en cualquier otra área de desarrollo informático (analista, programador, Lic. en Informática, Ingeniero en Informática, Ingeniero de Sistemas, etc.) normalmente aplican sus conocimientos especializados pero utilizando modelos, paradigmas y procesos ya elaborados.<br />Es común para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen sus propias metodologías, normalmente un híbrido de los procesos anteriores y a veces con criterios propios.<br />El proceso de desarrollo puede involucrar numerosas y variadas tareas6 , desde lo administrativo, pasando por lo técnico y hasta la gestión y el gerenciamiento. Pero casi rigurosamente siempre se cumplen ciertas etapas mínimas; las que se pueden resumir como sigue:<br />Captura, Elicitación8 , Especificación y Análisis de requisitos (ERS)<br />Diseño<br />Codificación<br />Pruebas (unitarias y de integración)<br />Instalación y paso a Producción<br />Mantenimiento<br />En las anteriores etapas pueden variar ligeramente sus nombres, o ser más globales, o contrariamente, ser más refinadas; por ejemplo indicar como una única fase (a los fines documentales e interpretativos) de «análisis y diseño»; o indicar como «implementación» lo que está dicho como «codificación»; pero en rigor, todas existen e incluyen, básicamente, las mismas tareas específicas.<br />En el apartado 4 del presente artículo se brindan mayores detalles de cada una de las listadas etapas.<br />Sistema operativo<br />Estimación del uso de sistemas operativos según una muestra de computadoras con acceso a Internet en Noviembre de 2009 (Fuente: W3counter).<br />Un sistema operativo (SO) es el programa o conjunto de programas que efectúan la gestión de los procesos básicos de un sistema informático, y permite la normal ejecución del resto de las operaciones.1<br />Nótese que es un error común muy extendido denominar al conjunto completo de herramientas sistema operativo, es decir, la inclusión en el mismo término de programas como el explorador de ficheros, el navegador y todo tipo de herramientas que permiten la interacción con el sistema operativo, también llamado núcleo o HYPERLINK "http://es.wikipedia.org/wiki/N%C3%BAcleo_(inform%C3%A1tica)" o "Núcleo (informática)"kernel. Uno de los más prominentes ejemplos de esta diferencia, es el núcleo Linux, que es el núcleo del sistema operativo GNU, del cual existen las llamadas distribuciones GNU. Este error de precisión, se debe a la modernización de la informática llevada a cabo a finales de los 80, cuando la filosofía de estructura básica de funcionamiento de los grandes computadores2 se rediseñó a fin de llevarla a los hogares y facilitar su uso, cambiando el concepto de computador multiusuario, (muchos usuarios al mismo tiempo) por un sistema monousuario (únicamente un usuario al mismo tiempo) más sencillo de gestionar.3 (Véase HYPERLINK "http://es.wikipedia.org/wiki/AmigaOS" o "AmigaOS"AmigaOS, HYPERLINK "http://es.wikipedia.org/wiki/BeOS" o "BeOS"beOS o HYPERLINK "http://es.wikipedia.org/wiki/MacOS" o "MacOS"MacOS como los pioneros4 de dicha modernización, cuando los Amiga, fueron bautizados con el sobrenombre de Video Toasters5 por su capacidad para la Edición de vídeo en entorno HYPERLINK "http://es.wikipedia.org/wiki/Multitarea" o "Multitarea"multitarearound robin, con gestión de miles de colores e interfaces intuitivos para diseño en 3D.<br />Uno de los propósitos del sistema operativo que gestiona el núcleo intermediario consiste en gestionar los recursos de localización y protección de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con estos detalles. Se encuentran en la mayoría de los aparatos electrónicos que utilizan microprocesadores para funcionar. (Teléfonos móviles, reproductores de DVD, computadoras, radios, etc.).<br />Spoolers<br />Los primeros sistemas (1945-1950) eran grandes máquinas operadas desde la consola maestra por los programadores. Durante la década siguiente (1950-1960) se llevaron a cabo avances en el hardware: lectoras de tarjetas, impresoras, cintas magnéticas, etc. Esto a su vez provocó un avance en el software: compiladores, ensambladores, cargadores, manejadores de dispositivos, etc.<br />Hace aparición el disco magnético con lo que surgen nuevas soluciones a los problemas de rendimiento. Se eliminan las cintas magnéticas para el volcado previo de los datos de dispositivos lentos y se sustituyen por discos (un disco puede simular varias cintas). Debido al solapamiento del cálculo de un trabajo con la E/S de otro trabajo se crean tablas en el disco para diferentes tareas, lo que se conoce como HYPERLINK "http://es.wikipedia.org/wiki/Spooling" o "Spooling"Spool (Simultaneous Peripherial Operation On-Line).<br />Sistemas operativos multiprogramados<br />Surge un nuevo avance en el hardware: el hardware con protección de memoria. Lo que ofrece nuevas soluciones a los problemas de rendimiento:<br />Se solapa el cálculo de unos trabajos con la entrada/salida de otros trabajos.<br />Se pueden mantener en memoria varios programas.<br />Se asigna el uso de la CPU a los diferentes programas en memoria.<br />Debido a los cambios anteriores, se producen cambios en el monitor residente, con lo que éste debe abordar nuevas tareas, naciendo lo que se denomina como Sistemas Operativos multiprogramados, los cuales cumplen con las siguientes funciones:<br />Administrar la memoria.<br />Gestionar el uso de la CPU (planificación).<br />Administrar el uso de los dispositivos de E/S.<br />Cuando desempeña esas tareas, el monitor residente se transforma en un sistema operativo multiprogramado.<br />Modos de ejecución en un CPU<br />Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el Sistema Operativo, tiene que poder utilizar todo el juego de instrucciones del CPU. Por ello, una CPU debe tener (al menos) dos modos de operación diferentes:<br />Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego restringido de las aplicaciones.<br />Modo supervisor: la CPU debe poder ejecutar el juego completo de instrucciones.<br />Componentes de un sistema operativo<br />Componentes del Sistema Operativo.<br />Gestión de procesos<br />Un proceso es simplemente, un programa en ejecución que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de:<br />Crear y destruir los procesos.<br />Parar y reanudar los procesos.<br />Ofrecer mecanismos para que se comuniquen y sincronicen.<br />La gestión de procesos podría 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 después 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 más antiguas.<br />Gestión de la memoria principal<br />La Memoria es una gran tabla de palabras o bytes que se referencian cada una mediante una dirección única. Este almacén de datos de rápido accesos es compartido por la CPU y los dispositivos de E/S, es volátil y pierde su contenido en los fallos del sistema. El SO es el responsable de:<br />Conocer qué partes de la memoria están siendo utilizadas y por quién.<br />Decidir qué procesos se cargarán en memoria cuando haya espacio disponible.<br />Asignar y reclamar espacio de memoria cuando sea necesario.<br />Gestión del almacenamiento secundario<br />Un sistema de almacenamiento secundario es necesario, ya que la memoria principal (almacenamiento primario) es volátil y además muy pequeña para almacenar todos los programas y datos. También es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de:<br />Planificar los discos.<br />Gestionar el espacio libre.<br />Asignar el almacenamiento.<br />Verificar que los datos se guarden en orden<br />Controlador de dispositivo<br />Un controlador de dispositivo, llamado normalmente controlador (en inglés, device driver) es un programa informático que permite al sistema operativointeractuar con un periférico, haciendo una abstracción del hardware y proporcionando una interfaz -posiblemente estandarizada- para usarlo. Se puede esquematizar como un manual de instrucciones que le indica al sistema operativo, cómo debe controlar y comunicarse con un dispositivo en particular. Por tanto, es una pieza esencial, sin la cual no se podría usar el hardware.<br />Existen tantos tipos de controladores como tipos de periféricos, y es común encontrar más 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 página web del fabricante), se pueden encontrar también los proporcionados por el sistema operativo, o también versiones no oficiales hechas por terceros.<br />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 sólo 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 técnicas descritas en esta guía, proporcionan las ventajas siguientes:<br />Seguridad mejorada. Puesto que los usuarios estándar no pueden instalar controladores de dispositivos que no estén firmados o que estén firmados por un editor que no es de confianza, los administradores tendrán un control riguroso respecto a los controladores de dispositivos que pueden usarse en una organización. Podrán impedirse los controladores de dispositivos desconocidos, así como cualquier controlador de dispositivo que el administrador no permita expresamente. Mediante el uso de directivas de grupo, un administrador puede proporcionar a todos los equipos cliente de una organización los certificados de los editores que se consideren de confianza, permitiendo la instalación de los controladores sin intervención del usuario, para comprobar que se trata de una firma digital de confianza.<br />Reducción de los costes de soporte técnico. Los usuarios sólo podrán instalar los dispositivos que hayan sido probados y admitidos por la organización. En consecuencia, el sistema permite mantener la seguridad del equipo, al tiempo que se reducen las solicitudes del departamento de soporte técnico.<br />Experiencia de usuario mejorada. Un paquete de controladores firmado por un editor de confianza y almacenado provisionalmente en el almacén de controladores funciona de modo automático, cuando el usuario conecta el dispositivo al equipo. No se requiere acción alguna por parte del usuario.<br />En esta sección se incluyen las tareas principales para la seguridad de los paquetes de controladores de dispositivos:<br />Los controladores de dispositivo (device drivers en inglés) son programas añadidos al núcleo del sistema operativo, concebidos inicialmente para gestionar periféricos y dispositivos especiales. Pueden ser de dos tipos: orientados a caracteres (tales como los dispositivos NUL, AUX, PRN, del sistema) o bien orientados a bloques, constituyendo las conocidas unidades de disco. La diferencia fundamental entre ambos tipos de controladores es que los primeros reciben o envían la información carácter a carácter; en cambio, los controladores de dispositivo de bloques procesan, como su propio nombre indica, bloques de cierta longitud en bytes (sectores). Los controladores de dispositivo, aparecidos con el DOS 2.0, permiten añadir nuevos componentes al ordenador sin necesidad de rediseñar el sistema operativo.<br />Tradicionalmente han sido programas binarios puros, similares a los COM aunque ensamblados con un ORG 0, a los que se les colocaba una extensión SYS. Sin embargo, no hay razón para que ello sea así, ya que un controlador de dispositivo puede estar incluido dentro de un programa EXE, con la condición de que el código del controlador sea el primer segmento de dicho programa. El EMM386.EXE del MS-DOS 5.0 sorprendió a más de uno en su día, ya que llamaba la atención observar como se podía cargar con DEVICE: lo cierto es que esto es factible incluso desde el DOS 2.0 (pese a lo que pueda indicar algún libro), pero ha sido mantenido casi en secreto. Actualmente es relativamente frecuente encontrar programas de este tipo. La ventaja de un controlador de dispositivo de tipo EXE es que puede ser ejecutado desde el DOS para modificar sus condiciones de operación, sin complicar su uso por parte del usuario con otro programa adicional. Además, un controlador de dispositivo EXE puede superar el límite de los 64 Kb, ya que el DOS se encarga de relocalizar las referencias absolutas a segmentos como en cualquier programa EXE ordinario.<br />Categoría: Software de sistema<br />Detección y corrección de errores<br />En matemáticas, computación y teoría de la información, la detección y corrección de errores es una importante práctica para el mantenimiento e integridad de los datos a través de canales ruidosos y medios de almacenamiento poco confiables.<br />Introducción<br />La comunicación entre varias computadoras produce continuamente un movimiento de datos, generalmente por canales no diseñados para este propósito (línea telefónica), y que introducen un ruido externo que produce errores en la transmisión. Por lo tanto, debemos asegurarnos que si dicho movimiento causa errores, éstos puedan ser detectados. El método para detectar y corregir errores es incluir en los bloques de datos transmitidos bits adicionales denominados redundancia.<br />Se han desarrollado dos estrategias básicas para manejar los errores:<br />Incluir suficiente información redundante en cada bloque de datos para que se puedan detectar y corregir los bits erróneos. Se utilizan códigos de corrección de errores.<br />Incluir sólo la información redundante necesaria en cada bloque de datos para detectar los errores. En este caso el número de bits de redundancia es menor. Se utilizan códigos de detección de errores.<br />Si consideramos un bloque de datos formado por m bits de datos y r de redundancia, la longitud final del bloque será n, donde n = m + r.<br />En resumen, este método requiere de un polinomio generador que, elegido correctamente, puede llegar a detectar gran cantidad de errores:<br />Errores simples: todos<br />Errores dobles: todos<br />Errores en las posiciones impares de los bits: todos<br />Errores en ráfagas con una longitud menor que el grado del polinomio generador: todos<br />Otras ráfagas: un porcentaje elevado y cercano al 100%<br />Servidor<br />En informática, un servidor es una computadora que, formando parte de una red, provee servicios a otras computadoras denominadas clientes.<br />También se suele denominar con la palabra servidor a:<br />Una aplicación informática 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 término. Es posible que un ordenador cumpla simultáneamente las funciones de cliente y de servidor.<br />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 unordenador central (mainframe), un miniordenador, una computadora personal, una PDA o un sistema embebido; sin embargo, hay computadoras destinadas únicamente a proveer los servicios de estos programas: estos son los servidores por antonomasia.<br />Ejemplo de un servidor del tipo rack.<br />Un servidor no es necesariamente una máquina de última generación de grandes proporciones, no es necesariamente un superordenador; un servidor puede ser desde una computadora vieja, hasta una máquina sumamente potente (ej.: servidores web, bases de datos grandes, etc. Procesadores especiales y hasta varios terabytes de memoria). 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 trabaje por la red y a la que los usuarios de su red ingresen a través de un programa de servidor web como Apache.<br />Por lo cual podemos llegar a la conclusión de que un servidor también puede ser un proceso que entrega información o sirve a otro proceso. El modelo Cliente-servidor no necesariamente implica tener dos ordenadores, ya que un proceso cliente puede solicitar algo como una impresión a un proceso servidor en un mismo ordenador.<br />Tipos de servidores<br />En la siguiente lista hay algunos tipos comunes de servidores:<br />Servidor de archivo: es el que almacena varios tipos de archivos y los distribuye a otros clientes en la red.<br />Servidor de impresiones: controla una o más impresoras y acepta trabajos de impresión de otros clientes de la red, poniendo en cola los trabajos de impresión (aunque también puede cambiar la prioridad de las diferentes impresiones), y realizando la mayoría o todas las otras funciones que en un sitio de trabajo se realizaría para lograr una tarea de impresión si la impresora fuera conectada directamente con el puerto de impresora del sitio de trabajo.<br />Servidor de correo: almacena, envía, recibe, en ruta y realiza otras operaciones relacionadas con email para los clientes de la red.<br />Servidor de fax: almacena, envía, recibe, en ruta y realiza otras funciones necesarias para la transmisión, la recepción y la distribución apropiadas de los fax.<br />Servidor de la telefonía: realiza funciones relacionadas con la telefonía, como es la de contestador automático, realizando las funciones de un sistema interactivo para la respuesta de la voz, almacenando los mensajes de voz, encaminando las llamadas y controlando también la red o el Internet, p. ej., la entrada excesiva de la voz sobre IP (VoIP), etc.<br />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 se soliciten muy frecuentemente), también proporciona servicios de seguridad, o sea, incluye uncortafuegos. Permite administrar el acceso a internet en una red de computadoras permitiendo o negando el acceso a diferentes sitios Web.<br />Servidor del acceso remoto (RAS): controla las líneas de módem de los monitores u otros canales de comunicación de la red para que las peticiones conecten con la red de una posición remota, responde llamadas telefónicas entrantes o reconoce la petición de la red y realiza la autentificación necesaria y otros procedimientos necesarios para registrar a un usuario en la red.<br />Servidor de uso: realiza la parte lógica de la informática 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 la interfaz operadora o la porción del GUI del proceso (es decir, la lógica de la presentación) que se requiere para trabajar correctamente.<br />Servidor web: almacena documentos HTML, imágenes, archivos de texto, escrituras, y demás material Web compuesto por datos (conocidos colectivamente como contenido), y distribuye este contenido a clientes que la piden en la red.<br />Servidor de base de datos: provee servicios de base de datos a otros programas u otras computadoras, como es definido por el modelo cliente-servidor. También puede hacer referencia a aquellas computadoras (servidores) dedicadas a ejecutar esos programas, prestando el servicio.<br />Servidor de reserva: tiene el software de reserva de la red instalado y tiene cantidades grandes de almacenamiento de la red en discos duros u otras formas del almacenamiento (cinta, etc.) disponibles para que se utilice con el fin de asegurarse de que la pérdida de un servidor principal no afecte a la red. Esta técnica también es denominada clustering.<br />Servidor de impresión: muchas impresoras son capaces de actuar como parte de una red de ordenadores sin ningún otro dispositivo, tal como un "print server" (servidor de impresión), a actuar como intermediario entre la impresora y el dispositivo que está solicitando que se termine un trabajo de impresión.<br />Sin embargo, de acuerdo al rol que asumen dentro de una red se dividen en:<br />Servidor dedicado:: son aquellos que le dedican toda su potencia a administrar los recursos de la red, es decir, a atender las solicitudes de procesamiento de los clientes<br />Servidor no dedicado: son aquellos que no dedican toda su potencia a los clientes, sino también pueden jugar el rol de estaciones de trabajo al procesar solicitudes de un usuario local.<br />Herramienta de diagnóstico<br />Una herramienta de diagnóstico es un software que permite monitorear y en algunos casos controlar la funcionalidad del hardware, como: computadoras, servidores y periféricos, según el tipo y sus funciones. Estos dispositivos pueden ser, la memoria RAM, el procesador, los discos duros, HYPERLINK "http://es.wikipedia.org/wiki/Router" o "Router"ruteadores, tarjetas de red, entre muchos dispositivos más. El software permite monitorear temperatura, rendimiento, transferencia de datos, etc.<br />Aplicación informática<br />En informática, una aplicación es un tipo de programa informático diseñado como herramienta para permitir a un usuario realizar uno o diversos tipos de trabajo. Esto lo diferencia principalmente de otros tipos de programas como los sistemas operativos (que hacen funcionar al ordenador), las utilidades (que realizan tareas de mantenimiento o de uso general), y los lenguajes de programación (con el cual se crean los programas informáticos).<br />Suele resultar una solución informática para la automatización de ciertas tareas complicadas como pueden ser lacontabilidad, la redacción de documentos, o la gestión de un almacén. Algunos ejemplos de programas de aplicación son los procesadores de textos, hojas de cálculo, y base de datos.<br />Ofimática<br />Se llama ofimática al equipamiento hardware y software usado para crear, coleccionar, almacenar, manipular y transmitir digitalmente la información necesaria en una oficina para realizar tareas y lograr objetivos básicos. Las actividades básicas de un sistema ofimático comprenden el almacenamiento de datos en bruto, la transferencia electrónica de los mismos y la gestión de información electrónica relativa al negocio.1 La ofimática ayuda a optimizar o automatizar los procedimientos existentes.<br />La ofimática con red de área local (LAN) permite a los usuarios transmitir datos, correo electrónico e incluso voz por la red. Todas las funciones propias del trabajo en oficina, incluyendo dictados, mecanografía, archivado, copias, fax, télex, microfilmado y gestión de archivos, operación de los teléfonos y la centralita, caen en esta categoría. La ofimática fue un concepto muy popular en los años 1970 y 1980, cuando los ordenadores de sobremesa se popularizaron.<br />¿Qué son las bases de datos?<br />Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar fácilmente. A continuación te presentamos una guía que te explicará el concepto y características de las bases de datos.<br />El término de bases de datos fue escuchado por primera vez en 1963, en un simposio celebrado en California, USA. Una base de datos se puede definir como un conjunto de información relacionada que se encuentra agrupada ó estructurada.<br />Desde el punto de vista informático, la base de datos es un sistema formado por un conjunto de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos.<br />Tipos de Base de Datos<br />Entre los diferentes tipos de base de datos, podemos encontrar los siguientes:<br />MySql: es una base de datos con licencia GPL basada en un servidor. Se caracteriza por su rapidez. No es recomendable usar para grandes volúmenes de datos.<br />PostgreSql y Oracle: Son sistemas de base de datos poderosos. Administra muy bien grandes cantidades de datos, y suelen ser utilizadas en intranets y sistemas de gran calibre.<br />Access: Es una base de datos desarrollada por Microsoft. Esta base de datos, debe ser creada bajo el programa access, el cual crea un archivo .mdb con la estructura ya explicada.<br />Microsoft SQL Server: es una base de datos más potente que access desarrollada por Microsoft. Se utiliza para manejar grandes volúmenes de informaciones.<br />Modelo entidad-relación<br />Los diagramas o modelos entidad-relación (denominado por su siglas, ERD “Diagram Entity relationship”) son una herramienta para el modelado de datos de un sistema de información. Estos modelos expresan entidades relevantes para un sistema de información, sus inter-relaciones y propiedades.<br />                                              <br />Sistema de programación<br />El sistema de programación permite, mediante las instrucciones del autómata, confeccionar el programa de usuario. Posteriormente el programa realizado, se trasfiere a la memoria de programa de usuario. <br />Una memoria típica permite almacenar como mínimo hasta mil instrucciones con datos de bit, y es del tipo lectura/escritura, permitiendo la modificación del programa cuantas veces sea necesario. <br />Tiene una batería tampón para mantener el programa si falla la tensión de alimentación.<br />La programación del autómata consiste en el establecimiento de una sucesión ordenada de instrucciones, escritas en un lenguaje de programación concreto. <br />Estas instrucciones están disponibles en el sistema de programación y resuelven el control de un proceso determinado.   <br />Editor de texto<br />Los editores de textos "planos" se distinguen de los procesadores de texto en que se usan para escribir sólo texto, sin formato y sin imágenes, es decir sindiagramación.<br />El texto plano es representado en el editor mostrando todos los caracteres presentes en el archivo. Los únicos caracteres de formateo son los caracteres de control del respectivo código de caracteres. En la práctica, éstos son: salto de línea, tabulación horizontal y retorno de carro. El código de caracteres más usado en el año 2007 es el ASCII.<br />Los documentos creados por un procesador de texto generalmente contienen más caracteres de control para darle al texto un formato o diagramación particular, a menudo protegidos de ser copiados por una marca registrada como por ejemplo negrilla, cursiva, columnas, tablas, tipografía, etc. En un comienzo se utilizaron tales formatos sólo en autoedición, pero hoy se utilizan incluso en el procesador de texto más sencillo.<br />Los procesadores de texto pueden en la mayoría de los casos almacenar un texto plano en un archivo de texto plano, pero se le debe ordenar explícitamente que se desea esa opción, de otra manera podría guardarlo con algún formato especial.<br />Tipos de editores de texto<br />Hay una gran variedad de editores de texto. Algunos son de uso general, mientras que otros están diseñados para escribir o programar en un lenguaje. Algunos son muy sencillos, mientras que otros tienen implementadas gran cantidad de funciones<br />El editor de texto debe ser considerado como una herramienta de trabajo del programador o administrador de la máquina. Como herramienta permite realizar ciertos trabajos, pero también requiere de aprendizaje para que el usuario conozca y obtenga destreza en su uso. La llamada curva de aprendizaje es una representación de la destreza adquirida a lo largo del tiempo de aprendizaje. Un editor puede ofrecer muchas funciones, pero si su curva de aprendizaje es muy larga, puede desanimar el aprendizaje y terminará siendo dejado de lado. Puede que un editor tenga una curva de aprendizaje muy empinada y corta, pero si no ofrece muchas funciones el usuario le reemplazará por otro más productivo. Es decir la elección del editor más apropiado depende de varios factores, alguno de ellos muy subjetivos. Esta coyuntura de intereses ha dado lugar a largas discusiones sobre la respuesta a la pregunta "¿cual es el mejor editor de texto?". Hoy en día muchos editores originalmente salidos de Unix o Linux han sido portados a otros sistemas operativos, lo que permite trabajar en otros sistemas sin tener que aprender el uso de otro editor.<br />Algunos editores son sencillos mientras que otros ofrecen una amplia gama de funciones.<br />Editores para profesionales deben ser capaces de leer archivos de gran extensión, mayor que la capacidad e la memoria RAM de la máquina y también arrancar rápidamente, ya que el tiempo de espera disminuye la concentración y disminuye de por si la productividad. Los editores de texto sirven para muchas cosas pues facilitan el trabajo<br />Algunos editores de texto incluyen el uso de lenguajes de programación para automatizar engorrosos o repetidos procedimientos a realizar en el texto. Por ejemplo, Emacs puede ser adaptado a las necesidades del usuario, incluso las combinaciones de teclas para ejecutar funciones pueden ser adaptadas y es programable en HYPERLINK "http://es.wikipedia.org/wiki/Lisp"Lisp.<br />Muchos editores de texto incluyen coloreado de sintaxis y funciones que ofrecen al usuario completar una palabra iniciada usando para ello la configuración.<br />Algunas funciones especiales son:<br />Editores diseñados para un lenguaje de programación determinado, con coloreado de sintaxis, macros, completación de palabras, etc.<br />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.<br />Un Entorno de desarrollo integrado es un programa que incluye un editor y otras herramientas de trabajo, como compiladores, extractores de diferencias entre dos textos, repositorios, etc, incluidos en un solo programa.<br />Funciones típicas de un editor de texto<br />Marcar región<br />Es la función que marca, visualmente o no, una parte del texto para ser elaborada con otras funciones. La región puede contener varias líneas del texto (región horizontal) o bien varias columnas adyacentes del texto (región vertical).<br />Búsqueda y reemplazo<br />El proceso de búsqueda de una palabra o una cadena de caracteres, en un texto plano y su reemplazo por otra. Existen diferentes métodos: global, por región, reemplazo automático, reemplazo con confirmación, búsqueda de texto o búsqueda de una Expresión regular.<br />Copiar, cortar y pegar<br />Sirve para copiar, trasladar o borrar una region marcada.<br />Formatear<br />Los editores de texto permiten automatizar las únicas funciones de formateo que utilizan: quebrar la línea, HYPERLINK "http://es.wikipedia.org/wiki/Indentaci%C3%B3n" o "Indentación"indentar, formatear comentarios o formatear listas.<br />Deshacer y rehacer<br />onsiste en que el programa editor va almacenando cada una de las operaciones hechas por el usuario hasta un número configurable. Si el usuario se arrepiente de algún cambio, por muy anterior que sea, el editor le permite revertir todos los cambios hechos hasta el número configurado. Rehacer es por consiguiente, revertir algo revertido.<br />Importar<br />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 Línea de comandos al archivo que se está editando.<br />Filtros<br />Algunos editores de texto permiten hacer pasar las líneas del texto o de una región por algún programa para modificarlas u ordenarlas. Por ejemplo, para ordenar alfabéticamente una lista de nombres o sacar un promedio de una lista de números.<br />Acceso remoto<br />Un editor para trabajar en la administración de una red de computadoras debe ofrecer la funcionalidad de editar archivos en máquinas remotas, ya sea por medio de ftp, HYPERLINK "http://es.wikipedia.org/wiki/SSH" o "SSH"ssh o algún otro Protocolo de red. HYPERLINK "http://es.wikipedia.org/wiki/Emacs"Emacs lo puede hacer mediante el HYPERLINK "http://es.wikipedia.org/wiki/Plugin" o "Plugin"Plugin HYPERLINK "http://savannah.gnu.org/projects/tramp"tramp (ampliamente configurable con ssh, ftp, scp, sftp, etc), Ultraedit, del ambiente Windows, lo hace mediante ftp.<br />Depurador<br />Un depurador (en inglés, debugger), es un programa usado para probar y depurar (eliminar los errores) de otros programas (el programa "objetivo"). El código a ser examinado puede alternativamente estar corriendo en un simulador de conjunto de instrucciones (ISS), una técnica que permite gran potencia en su capacidad de detenerse cuando son encontradas condiciones específicas pero será típicamente algo más lento que ejecutando el código directamente en el apropiado (o el mismo) procesador. Algunas depuradores ofrecen dos modos de operación - la simulación parcial o completa, para limitar este impacto.<br />Si es un depurador de nivel de fuente o depurador simbólico, comúnmente ahora visto en entornos de desarrollo integrados, cuando el programa "se estrella" o alcanza una condición predefinida, la depuración típicamente muestra la posición en el código original. Si es un depurador de bajo nivel o undepurador de lenguaje de máquina, muestra la línea en el fuente desensamblado (a menos que también tenga acceso en línea al código fuente original y pueda exhibir la sección apropiada del código delensamblador o del compilador). Un "estrellamiento" sucede cuando el programa no puede continuar normalmente debido a un error de programación. Por ejemplo, el programa pudo haber intentado usar unainstrucción no disponible en la versión actual del CPU o haber intentado tener acceso a memoria protegidao no disponible.<br />Típicamente, los depuradores también ofrecen funciones más sofisticadas tales como correr un programa paso a paso (un paso o animación del programa), parar el programa (breacking), es decir, pausar el programa para examinar el estado actual en cierto evento o instrucción especificada por medio de un HYPERLINK "http://es.wikipedia.org/w/index.php?title=Breakpoint&action=edit&redlink=1" o "Breakpoint (aún no redactado)"breakpoint, y el seguimiento de valores de algunas variables. Algunos depuradores tienen la capacidad de modificar el estado del programa mientras que está corriendo, en vez de simplemente observarlo. También es posible continuar la ejecución en una posición diferente en el programa bypaseando un estrellamiento o error lógico.<br />La importancia de un buen depurador no puede ser exagerada. De hecho, la existencia y la calidad de tal herramienta para un lenguaje y una plataforma dadas a menudo puede ser el factor de decisión en su uso, incluso si otro lenguaje/plataforma es más adecuado para la tarea.[cita requerida] La ausencia de un depurador, una vez estando acostumbrado a usar uno, se ha dicho que "hace que usted se sienta como un hombre ciego en un cuarto oscuro buscando un gato negro que no está allí".1 Sin embargo, el software puede (y a menudo) se comporta diferentemente corriendo bajo un depurador que normalmente, debido a los cambios inevitables que la presencia de un depurador hará a la temporización interna de un programa de software. Como resultado, incluso con una buena herramienta de depuración, es a menudo muy difícil rastrear problemas de tiempo de corrida en complejos sistemas distribuidos con múltiples hilos.<br />La misma funcionalidad que hace a un depurador útil para eliminar errores permite ser usado como herramienta de craqueo de software para evadir la protección anticopia, la gestión de derechos digitales, y otras características de protección de software. A menudo también lo hace útil como herramienta general de verificación de pruebas, cobertura de fallas, o analizador de desempeño, especialmente si son mostradas las longitudes de trayectoria de instrucción.<br />La mayoría de los motores de depuración actuales, tales como HYPERLINK "http://es.wikipedia.org/wiki/Gdb" o "Gdb"gdb y HYPERLINK "http://es.wikipedia.org/w/index.php?title=Dbx_(depurador)&action=edit&redlink=1" o "Dbx (depurador) (aún no redactado)"dbx proporcionan interfaces basadas en línea de comandos. Los frontales de depuración son extensiones populares a los motores de depuración, que proporcionan integración al IDE, animación del programa, y características de visualización. Algunos depuradores de los primeros mainframes tales como el Oliver y el SIMON proporcionaron esta misma funcionalidad para el IBM System/360 y posteriores sistemas operativos, hasta los años 1970.<br />Soporte de hardware para la depuración<br />La mayoría de los microprocesadores modernos tienen al menos una de estas características en su diseño de CPU para hacer la depuración más fácil:<br />Soporte en hardware para ejecutar un programa paso a paso, tal como el HYPERLINK "http://es.wikipedia.org/wiki/Registro_de_estado" o "Registro de estado"trap flag.<br />Un conjunto de instrucciones conformado con los requerimientos de virtualización de Popek y Goldberg, hace más fácil escribir el software depuración que corre en el mismo CPU que el software que está siendo depurado; tal CPU puede ejecutar los bucles internos del programa bajo prueba a velocidad completa, y todavía permanecer bajo control del depurador.<br />In-system programming (ISP) (programación en sistema) permite a un depurador de hardware externo reprogramar un sistema bajo prueba, por ejemplo, adición o eliminación de instrucciones de puntos de ruptura (breakpoints). Muchos sistemas con tal soporte de ISP también tienen otro soporte de hardware de depuración.<br />Soporte de hardware para breakpoints de código y datos, tales como comparadores de direcciones y comparadores de valores de datos, o con considerablemente más trabajo implicado, hardware de fallo de página.<br />El acceso de JTAG a las interfaces de depuración de hardware tales como en procesadores de la arquitectura ARM o usando el conjunto de comandos HYPERLINK "http://es.wikipedia.org/w/index.php?title=Nexus_(est%C3%A1ndar)&action=edit&redlink=1" o "Nexus (estándar) (aún no redactado)"Nexus. Los procesadores usados en sistemas empotrados típicamente tienen extenso soporte de depuración JTAG.<br />Los HYPERLINK "http://es.wikipedia.org/wiki/Microcontrolador" o "Microcontrolador"microcontroladores con tan poco como seis pines necesitan usar sustitutos de bajo conteo de pines para JTAG, tal como BDM, HYPERLINK "http://es.wikipedia.org/w/index.php?title=Spy-Bi-Wire&action=edit&redlink=1" o "Spy-Bi-Wire (aún no redactado)"Spy-Bi-Wire, o HYPERLINK "http://es.wikipedia.org/w/index.php?title=DebugWire&action=edit&redlink=1" o "DebugWire (aún no redactado)"DebugWireen el HYPERLINK "http://es.wikipedia.org/w/index.php?title=Atmel_AVR&action=edit&redlink=1" o "Atmel AVR (aún no redactado)"Atmel AVR. DebugWire, por ejemplo, usa señalización bidireccional en el pin del RESET<br />Compilador<br />Diagrama a bloques de la operación de un buen compilador.<br />Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.1<br />Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luegocompilarlo a un programa más manejable por una computadora.<br />Partes de un compilador<br />La construcción de un compilador involucra la división del proceso en una serie de fases que variará con su complejidad. Generalmente estas fases se agrupan en dos tareas: el análisis del programa fuente y la síntesis del programa objeto.<br />Análisis: Se trata de la comprobación de la corrección del programa fuente, e incluye las fases correspondientes al Análisis Léxico (que consiste en la descomposición del programa fuente en componentes léxicos), Análisis Sintáctico (agrupación de los componentes léxicos en frases gramaticales ) y Análisis Semántico (comprobación de la validez semántica de las sentencias aceptadas en la fase de Análisis Sintáctico).<br />Síntesis: Su objetivo es la generación de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generación de Código (normalmente se trata de código intermedio o de código objeto) y de Optimización de Código (en las que se busca obtener un código lo más eficiente posible).<br />Alternativamente, las fases descritas para las tareas de análisis y síntesis se pueden agrupar en Front-end y Back-end:<br />Front-end: es la parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y está compuesta por las fases comprendidas entre el Análisis Léxico y la Generación de Código Intermedio.<br />Back-end: es la parte que genera el código máquina, específico de una plataforma, a partir de los resultados de la fase de análisis, realizada por el Front End.<br />Esta división permite que el mismo Back End se utilice para generar el código máquina de varios lenguajes de programación distintos y que el mismo Front Endque sirve para analizar el código fuente de un lenguaje de programación concreto sirva para generar código máquina en varias plataformas distintas. Suele incluir la generación y optimización del código dependiente de la máquina.<br />El código que genera el Back End normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador (linker)<br />Tipos de compiladores<br />Esta taxonomía de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias categorías:<br />Compiladores cruzados: generan código para un sistema distinto del que están funcionando.<br />Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original.<br />Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código fuente.<br />Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el código máquina.<br />Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código según se necesitan.<br />Pauta de creación de un compilador: En las primeras épocas de la informática, el software de los compiladores era considerado como uno de los más complejos existentes.<br />Los primeros compiladores se realizaron programándolos directamente en lenguaje máquina 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.<br />Actualmente existen herramientas que facilitan la tarea de escribir compiladores ó intérpretes informáticos. Estas herramientas permiten generar el esqueleto delanalizador sintáctico a partir de una definición formal del lenguaje de partida, especificada normalmente mediante una gramática formal y barata, dejando únicamente al programador del compilador la tarea de programar las acciones semánticas asociadas.<br />Enlazador<br />Un enlazador (en inglés, linker) es un programa que toma los ficheros de código objeto generado en los primeros pasos del proceso de compilación, la información de todos los recursos necesarios (biblioteca), quita aquellos recursos que no necesita, y enlaza el código objeto con su(s) biblioteca(s) con lo que finalmente produce un fichero ejecutable o una biblioteca. En el caso de los programas enlazados dinámicamente, el enlace entre el programa ejecutable y las bibliotecas se realiza en tiempo de carga o ejecución del programa.<br />