El software esta constituido por programas que, se cargan en la Unidad Central de Proceso para su ejecución.
Hay diferentes niveles de software o programa, en función de la "cercanía" que tienen para trabajar con las funciones básicas del hardware o con los datos como información.
SOFTWARE DE BASE Y DE APLICACIÓN
Podemos clasificar el software en dos grandes grupos:
Software de base: se ocupa del control de las tareas básicas del sistema de computación, tales como la administración de la memoria, de los dispositivos de entrada-salida, etcétera.
Software de aplicación: se ocupa de resolver las tareas requeridas por el ser humano, tales como procesar la información contable, realizar la liquidación de haberes, reservar un pasaje de micro.
EL SISTEMA OPERATIVO
El sistema operativo es el software de más bajo nivel, indica y supervisa las operaciones de la CPU. Sus componentes pueden agruparse así:
■ Programa de carga inicial o, más utilizada en el ámbito de las computadoras personales: boot.
Es un programa pequeño que le indica a la computadora las primeras acciones que debe realizar, cuando se enciende y luego de los chequeos establecidos por hardware, incluyendo los programas y archivos que ofrecen datos que requiere el sistema operativo para trabajar en cada computadora en particular, y el resto de los programas que conforman el sistema operativo.
■ Los programas de control. Constituyen el núcleo del sistema operativo, y son los programas que se ocupan de:
• El control los recursos físicos del sistema; manejo de entradas y salidas, lectura y grabación de archivos, manejo de los contenidos de la memoria, ejecución de procesos de transformación de datos en la CPU, etcétera.
• La coordinación de las acciones de esos recursos; tomar los datos y llevarlos al punto correcto para su procesamiento, coordinar las diferentes funciones requeridas por múltiples programas que se encuentren en ejecución, etcétera.
■ Los objetivos de los sistemas operativos son:
•Utilizar, al máximo, la capacidad de proceso del sistema.
• Minimizar el tiempo de espera de los equipos periféricos (unidades de entrada-salida y almacenamiento).
• Garantizar el correcto procesamiento.
Si bien encontramos múltiples sistemas operativos, sus componentes básicos son comunes a todos.
Una primera clasificación entre sistemas operativos la encontramos entre los que permiten trabajar a un solo usuario por vez y los que permiten la concurrencia de rnultiples usuarios.
EL TRABAJO MULTITAREA
Cuando una CPU trabaja con múltiples tareas en forma concurrente, realmente se ocupa de una tarea por vez, alternando su atención entre todas las concurrentes.
Por ejemplo, cuando /a CPU esta ejecutando un programa que requiere datos que están en una unidad de almacenarniento externo, da la orden de tal lectura y pasa a la tarea siguiente.
Estando en la tarea siguiente ejecuta uno o varias instrucciones y vuelve a saltar a otra tarea, así hasta volver a la primera, momento en el que recibe los dato solicitados y continúa con el proceso.
Esto permite que la CPU aproveche su tiempo en otras tareas, mientras espera acciones de los dispositivos periféricos que son, mucho más lentos que ella.
El trabajo multitarea permite, en sistemas operativos complejos, indicarle al sistema que de mayor atención, materializada en mayor tiempo de CPU a un programa que a otro.
Los sistemas operativos multitarea deben almacenar, en áreas de memoria la situación de cada tarea en el momento que la abandonan para, al retomarla, recupere los datos y continuar el proceso.
Esta situación agrega significativa complejidad al sistema operativo.
EL TRABAJO MULTIUSUARIO
El trabajo multiusuario se da cuando una CPU esta conectada por medio de una red, o vínculos específicos, a varios usuarios, tengan estas estaciones de trabajo o equipos de computación personal. Como en el caso del trabajo multitarea, la CPU se ocupa de un solo usuario por vez.
Los sistemas operativos multiusuarios deben almacenar en áreas de memoria 1a situación de cada tarea y usuario en el momento en que la abandonan, para, al retomarla, recuperar los datos y continuar el proceso. Esta situación agrega aun más complejidad al sistema operativo.
Encontramos diferentes tipos de sistemas operativos. En el ambiente de las computadoras personales: el Microsoft Windows, el Mac-Os y el Linux.
Como el sistema operativo actúa en forma mancomunada con el hardware, no todo sistema operativo sirve para todo hardware
Las computadoras personales identificadas. como "compatibles con Windows" -independientemente del fabricante y del chip procesador que las integre, siendo los mas comunes los fabricados por Intel y por Amdha- permiten utilizar uno de los sistemas operativos mas difundidos, el Windows, de Microsoft.
Otros equipos, tales como los Apple, utilizan el sistema operativo Mac-Os.
En ambientes de maquinas medianas, que permiten los múltiples usuarios, y de servidores de redes: Windows Server, Novell, Linux, diferentes versiones de Unix y OS/400.
En ambientes de maquinas grandes es normal que encontrar sistemas operativos específicos para una familia de equipos: OS/390 y el i5/OS de IBM.
Los sistemas operativos desarrollados para manejar una computadora específica se conocen, como sistemas propietarios. Los sistemas que permiten trabajar con múltiples maquinas se conocen como sistemas abiertos.
Dentro de los sistemas abiertos encontramos aquellos cuyo código es público y otros cuyo código es manejado por una empresa. Este ultimo caso es el de Windows, su código es construido y actualizado exclusivamente por Microsoft, si bien puede ser utilizado en maquinas de múltiples proveedores.
LA MEMORIA VIRTUAL Y EL PAGINADO
Cuando un programa no "entra" -es decir, todas las instrucciones que lo integran requieren mas espacio físico del disponible en la memoria principal-, este no podrá cargarse íntegramente.
En estos casos, el programa se segmenta en paginas que se almacenan en los dispositivos de almacenamiento.
Una porción reside en la RAM y el resto en lo VM, las paginas apropiadas se transfieren a la RAM conforme se necesitan. Esta actividad se conoce como paginado de memoria. Así se independiza el tamaño del programa de la capacidad de 1a RAM.
Si bien esto evita que sea necesario que todo el programa se cargue en la RAM para su ejecución, si por la estructura del programa se requiere acceder a información que se encuentra en el disco en forma continua, la performance del sistema caerá, ya que requiere un acceso "lento” para obtener las instrucciones por lo que lo UAL y la UC estarán esperando (u ocupándose de otras tareas) gran parte del tiempo.
Es posible que la ejecución de un proceso tarde más de lo esperado debido a la gran actividad sobre el disco, y el tiempo que ella requiere.
En este caso se presentan dos alternativas que pueden ser complementarias, en caso de necesitar mejorar el tiempo de ejecución.
Una de ellos es aumentar el tamaño de 1a memoria, permitiendo así que todo el programa, o una parte significativa del mismo, entre en la memoria primaria.
La otra es modificar el programa, optimizando su codificación, o partiéndolo; es decir, sacando funciones para cuya resolución se utilizara otro programa y otra maquina.
LOS LENGUAJES DE PROGRAMACION
Los lenguajes de programación son las estructuras de instrucciones, interpretadas y traducidas a lenguaje de maquina, que puede interpretar la CPU.
Encontramos una gran cantidad de lenguajes de programación, mas o menos lejos de los lenguajes de maquina; es decir, mas o menos cerca del lenguaje natural (castellano, ingles, etcétera).
Se dice que un lenguaje de programación es de una generación superior a otra, cuando esta mas cerca del lenguaje natural.
Hoy en día utilizamos comúnmente lenguajes de tercera y cuarta generación. Los primeros están constituidos por una serie de instrucciones en lenguaje más o menos comprensible, con una sintaxis lógica cercana a la sintaxis que requiere la CPU.
Los lenguajes de cuarta generación tienen como objetivo que los seres humanos, sin preparación en cuanto a conocimientos técnicos sobre la lógica en que las computadoras actúan, podamos comunicarnos con ellas en forma cercana a la modalidad que nos comunicamos con nuestros semejantes.
Como ejemplo de lenguaje de tercera generación podemos mencionar el Cobol, y como ejemplo de lenguaje de cuarta generación, los lenguajes administradores de bases de datos en general, que adoptan la forma de lenguajes de consulta estructurados.
COMPILADORES E INTÉRPRETES
El programa en el lenguaje que escribimos las instrucciones se llama programa fuente, mientras que el programa en el lenguaje que la maquina las interpreta se llama programa objeto.
El proceso de transformación del programa fuente al programa objeto se denomina compilación, y es realizado por la maquina mediante la ejecución del programa compilador.
En este proceso, el programa que se ejecuta en la CPU es el compilador, la entrada es el programa en lenguaje fuente y la salida es el programa en lenguaje objeto.
Los compiladores, validan la corrección interna del programa fuente. Validan que el programa sea consistente en si mismo, que se respete la sintaxis propia del lenguaje de programación, etcétera.
Por ejemplo, si se define la realización de cálculos sobre ciertos datos para su archivo posterior, verifican que los datos requeridos en los cálculos se encuentren en los archivos de entrada identificados en el mismo programa fuente, como así también que los datos de salida tengan un destino en algún archivo de salida.
Si se detectan errores, los mismos son comunicados (por una impresión o información en pantalla) al programador, si no se detectan errores se genera el programa objeto o ejecutable.
Este ejecutable es guardado en los almacenamientos del sistema, para su posterior ejecución todas las veces que sea requerido. Este proceso de almacenamiento de los programas fuentes y objetos se denomina catalogación. Entonces nos encontramos con una biblioteca de programas fuentes y otra de programas objetos.
Es habitual que con el paso del tiempo se requiera modificar alguna acción de un programa, situación esta que, en lugar de desarrollo de un nuevo programa, se llama mantenimiento de uno existente. Es muy probable, sobre todo si ha transcurrido mucho tiempo, que la tarea la realice un programador diferente al que inicialmente se ocupo de la programación.
Por supuesto, el programa compilador esta estrictamente vinculado con la maquina para la cual genera los programas objeto.
Una alternativa a la compilación es la interpretación de los programas fuentes.
Mientras que en la compilación encontramos dos pasos para la ejecución de un programa (primero se genera el programa objeto y luego se ejecuta el programa objeto) en la interpretación, el mismo programa, denominado interprete, se ocupa de leer el programa fuente interpretarlo en lenguaje maquina y ejecutarlo en el momento.
El programa interprete también detecta los errores internos del programa fuente, los indica e interrumpe la ejecución.
La utilización de intérpretes permite al programador seguir las instrucciones del programa y facilita la depuración de errores.
Cuando un programa esta totalmente depurado, y será ejecutado rutinariamente en múltiples oportunidades, es conveniente compilarlo, generando el modulo ejecutable, de esta forma se evita la interpretación en cada ejecución, mejorando el rendimiento del sistema.
Lenguaje maquina (primera generación)
Esta constituido por instrucciones, en el código binario, que la computadora interpreta.
Somos nosotros quienes tenemos que escribir las instrucciones con la conjunción de "O" y "1 " que el sistema de computación puede interpretar.
Lenguaje ensamblador (segunda generación) y el nacimiento de los compiladores
Estos lenguajes, iniciaron la utilización de códigos para reemplazar tanto las instrucciones en lenguaje maquina cuando las direcciones de memoria en el mismo lenguaje, simplificando así la compleja tarea de programación en lenguaje maquina.
Esta utilización de códigos produjo una separación entre el lenguaje en el que escribimos los instrucciones y el lenguaje que la maquina utiliza, dando nacimiento a los programas compiladores.
Lenguajes de tercera generacion
Acercan el programa fuente a un lenguaje más parecido al utilizado entre nosotros. Los dos lenguajes mas conocidos de este tipo son:
• Fortran, con una estructuro cercana a las matemáticas esta orientado a la construcción de programas con gran carga de cálculos.
• Cobol, con una estructura cercana al lenguaje natural (en ingles), orientado a las matemáticas, y a la construcción de programas para la automatización de funciones de negocios simples, tales como la facturación y la liquidación de haberes; esto es, el manejo de una gran cantidad de datos de entrada, cálculos no muy complejos y el manejo de un gran volumen de información de salida.
Como en el caso de los ensambladores, también encontramos programas compiladores.
Se establecieron estándares para aislar o separar al lenguaje de la maquina (permitir que el mismo programa fuente pudiera ser compilado por diferentes compiladores para producir programas objeto ejecutables en diferentes maquinas, tales como el Cobol'64, si bien el objetivo de un lenguaje universal, aceptable entre maquinas de diferente porte y proveedor, no fue alcanzado debido a la utilización de particularidades para cada maquina.
El Cobol, sigue utilizándose en el mundo comercial. Hoy en día sigue siendo el lenguaje más utilizado, debido a su gran base instalada originada en su uso por más de 30 años, y su permanente actualización. Su última versión, denominada Cobol 2002, incorpora conceptos de actualidad.
Lenguajes de cuarta y quinta generación
El lenguaje de cuarta generación fue utilizada por primera vez en 1982, por James Martin, refiriéndose a lenguajes que permiten una codificación de más alto nivel, reduciendo significativamente el trabajo de programación con relación al de tercera generación.
Estos pueden incluir herramientas específicas para generar listados, pantallas de consultas y actualizaciones, generar el código directamente desde herramientas de diseño de sistema asistido por computadora.
Dentro de este grupo encontramos los lenguajes que utilizan sentencias de SQL
Estos lenguajes poseen herramientas para que el usuario final, pueda realizar consultas y reportes, no programados previamente, en forma directa sin participación de personal técnico.
Los lenguajes de quinta generación se orientan más a la resolución de problemas, basándose más en la gestión de restricciones que en el manejo de una lógica de programación.
Su utilización no ha tomado gran difusión.
El software es el conjunto de instrucciones que controlan el funcionamiento del sistema de computación. Es decir, el software le "da vida" al hardware, le da una razón de ser, una finalidad.
LOS UTILITARIOS O SOFTWARE DE SERVICIO
Los programas utilitarios permiten realizar actividades habituales y comunes en un sistema de computación, tales como:
• Copiar archivos.
• Compararlos.
• Administrar la compilación y catalogación de programas.
• Realizar copias de seguridad.
• Llevar estadísticas sobre el uso del sistema.
En el ambiente de PC, la forma grafica de presentación nos permite realizar estas tareas en forma muy simple, en algunos casos arrastrando iconos, como en el caso de mover un archivo de una carpeta o directorio a otra, mas aun, ayudado por preguntas de confirmación, para evitar errores.
LOS SISTEMAS DE APLICACION
Los sistemas de aplicación se ocupan de realizar funciones especificas (preprogramadas) para cumplir con las tareas necesarias en la forma que los usuarios finales las requieren. A continuación damos algunos ejemplos.
■ En el campo comercial:
• El sistema de clientes se ocupa de la administración de datos de los clientes.
• El sistema de facturación se ocupa del cálculo y la emisión de facturas para los clientes, en función de los datos del sistema de clientes, los productos o servicios entregados.
• El sistema de reserva de pasajes, de micro o avión, se ocupa de mantener y actualizar la información sobre la cantidad de asientos disponibles y asignados en cada viaje o vuelo habilitado.
■ En el campo de la ingeniería:
• Aplicaciones para el cálculo de estructuras.
• Aplicaciones para el diseño de edificios o grandes proyectos.
■ En el campo de la medicina:
• Los sistemas de diagnostico por imágenes.
SOFTWARE PROPIETARIO Y SOFTWARE LIBRE
El software -tanto de base como de aplicación- es desarrollado y construido por medio de la aplicación de conocimientos de sus elaboradores; los desarrolladores del software son dueños de su propiedad intelectual.
Si el dueño del software establece restricciones sobre su utilización y/o modificación se dice que se trata de un software propietario, o no libre.
Aun si la pieza de software en cuestión se obtiene gratis, el propietario, al entregarla, puede establecer restricciones con relación a su utilización. Por ejemplo, cediendo en forma gratuita exclusivamente su derecho de uso para fines personales, no pudiendo ser utilizada en aplicaciones comerciales, ni copiar, vender o ceder a terceros. Cuando un software propietario se obtiene en forma gratuita se dice que es una pieza free-ware
De esta manera podemos encontrar software gratuito y, a la vez, propietario: no libre.
También encontramos software propietario que es gratuito para uso no comercial, pero con costo para usos comerciales.
Corno ejemplo de software propietario, no gratuito, podemos mencionar Microsoft Windows, productos de Adobe para la generación de PDF y software para juegos. Como ejemplos de software propietario gratuito, para usos no comerciales, podemos mencionar Adobe Reader y Pdf995.
Cuando hablamos de software de código abierto nos referimos a software cuyo programa fuente es accesible y modificable por el usuario, sin restricciones. Este software puede obtenerse en forma gratuita u onerosa.
El concepto de software libre se refiere a aquel cuya licencia de uso garantiza a su receptor la libertad de utilizarlo en lo que quiera, modificarlo como quiera y redistribuirlo, otorgando licencias de igual tipo como desee.
• La libertad de modificarlo implica la necesidad de que se trate de software de código abierto. Se acepta que esta libertad se condicione en cuanto a la forma de incorporar mejoras y a la obligación de compartir esas mejoras con el resto de la comunidad.
• La libertad de redistribuirlo implica que se pueden hacer copias y entregar a terceros, con o sin cargo, independientemente de haberlo obtenido en forma gratuita u onerosa. Es más, un poseedor de licencia puede ofrecer un determinado software sin cargo y otro, el mismo software, en forma onerosa.
Por lo tanto, un software de open source, que se vende sin otorgar el derecho a copiarlo y entregarlo en forma gratuita, no es un software libre.
SOFTWARE DE APLICACIÓN DE USO GENERALIZADO EN COMPUTADORAS PERSONALES
En el ambiente de PC hogareñas y de oficina encontramos habitualmente software que cubre todas o algunas de las siguientes funciones:
• Correo electrónico.
• Agenda.
• Procesador de textos.
• Planilla de cálculos.
• Presentaciones.
• Navegadores para Internet.
• Administradores simples de bases de datos.
Como ejemplos de navegadores de Internet podemos mencionar los software: Internet Explorer de Microsoft, y el Firefox de Mozilla Fundation, siendo este último libre, de código abierto y gratuito.
Estos programas pueden obtenerse por separado o en conjuntos, integrados por varios de ellos, tomando el nombre de suites. Encontramos propuestas tanto de software propietario cuanto de software libre. Dentro de las ofertas del mercado las más difundidas son:
También, en ambientes específicos de trabajo, es habitual encontrar software que cubra necesidades más puntuales: planificación de tareas, graficación y edición compleja de textos.
Al seleccionar el software debemos tener en cuenta el que mas se adapte a nuestros requerimientos, considerando:
■ Facilidad de uso y documentación
Podemos verificar la facilidad de uso mediante una prueba realizada en el negocio de venta.
La documentación del sistema debe permitir tanto aprender a usar sus funciones básicas como también evacuar las dudas sobre su utilización y permitir la investigación de las funciones mas avanzadas.
Encontramos diferentes tipos de documentación, y es bueno que las evaluemos individualmente. Ellas son:
- Manuales, cuyo objetivo es presentar en forma ordenada y creciente, en cuanto a su complejidad, las diferentes funciones del producto.
- Ayudas interactivas, que presentan información en pantalla sobre la utilización específica de alguna función. En este caso es importante comparar la facilidad de consulta de las ayudas para un caso en particular.
Tutores interactivos, que toman la forma de cursos en pantalla, presentando ejemplos y requiriendo ciertas acciones simples para confirmar el aprendizaje.
■ Integrabilidad
También es importante evaluar la posibilidad de compartir la información generada entre las distintas aplicaciones, en dos niveles:
- Poder incorporar un trabajo de una aplicación en otra, como una imagen.
- Poder incorporar un trabajo de una aplicación en otra, manteniendo las características de la aplicación original
■ Compatibilidad
Poder compartir los archivos generados, tanto con otras personas como con otras aplicaciones. Esto es de fundamental importancia también si cambiamos de versión de programa o de línea de productos, con relación a los archivos que grabamos con la aplicación anterior.
Asimismo, si queremos incorporar en una planilla de calculo los datos de una base de datos, la estructura de la base de datos debe poder ser traducida por la planilla de calculo para incorporarla, o bien debemos poder generar desde la base de datos un archivo intermedio de trabajo en un formato tal que pueda se leído por la planilla de calculo. Para este ultimo caso es habitual utilizar archivos de texto, de impresión o con formatos específicos para el intercambio, conocidos como dif, comunes para intercambiar entre bases de datos o rtf , comunes para intercambiar entre diferentes procesadores de texto.
■ Capacidad
Debemos verificar que pueda realizar las tareas que son nuestro objetivo que resuelva.
■ Compatibilidad con Internet
Dada la difusión actual y esperada de Internet es importante considerar la compatibilidad de las aplicaciones con Internet, en particular con los documentos del tipo HTML.
■ Requerimientos de hardware
Debemos asegurarnos que el software funcione razonablemente en la maquina (el hardware) en que lo vamos a cargar para su utilización.
El vertiginoso avance tanto en el hardware cuanto en el software provoca que las nuevas versiones de software requieran, para funcionar, la capacidad de proceso y almacenamiento de las nuevas versiones de hardware.
Por lo tanto, no es raro que si tenemos una maquina comprada hace dos o tres años al cargarle la ultima versión de una planilla de calculo, funcione con lentitud o, incluso, no funcione adecuadamente.
Es recomendable verificar este punto antes de realizar la compra, para evaluar la posibilidad de actualizar o reemplazar el hardware en forma simultánea, y no tener que hacerlo forzados por el problema resultante del nuevo software.
DIFERENCIAS ENTRE SOFTWARE Y HARDWARE:
EL HARDWARE: Componentes físicos del ordenador, es decir, todo lo que se puede ver y tocar. Clasificaremos el hardware en dos tipos:
- El que se encuentra dentro de la torre o CPU, y que por lo tanto no podemos ver a simple vista.
- El que se encuentra alrededor de la torre o CPU, y que por lo tanto, si que vemos a simple vista, y que denominamos periféricos.
EL SOFTWARE: Son las instrucciones que el ordenador necesita para funcionar, no existen físicamente, o lo que es igual, no se pueden ver ni tocar. También tenemos de dos tipos:
- Sistemas Operativos: Tienen como misión que el ordenador gestione sus recursos de forma eficiente, además de permitir su comunicación con el usuario. Para saber más de los sistemas operativos pincha en el enlace
- Aplicaciones: Son programas informáticos que tratan de resolver necesidades concretar del usuario, como por ejemplo: escribir, dibujar, escuchar música,...
No hay comentarios:
Publicar un comentario