lunes, 6 de septiembre de 2010

EL SOFTWARE

CONCEPTOS DE SOFTWARE

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.

El software esta constituido por programas que, como vimos en el capitulo anterior, 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

El software se puede clasificar 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.


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, algunos sencillos y otros mas complejos y con mayor funcionalidad, 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 multiples usuarios.

El trabajo multitarea

Cuando una CPU trabaja con múltiples tareas en forma concurrente, realmente se ocupo 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 o la primera, momento en el que recibe los dato solicitados y continua con el proceso.

Esto permite que la CPU aproveche su tiempo en otras tareas, mientras espera acciones de los dispositivos periféricos que son, en términos relativos, mucho más lentos que ella.


Mas allá de esto el trabajo multitarea permite, en sistemas operativos complejos, asignar prioridades de procesamiento; es decir, 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 rnemoria 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




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 podemos mencionar, entre otros: el Microsoft Windows, el Mac-Os y el Linux.



El sistema operativo actúa en forma mancomunada con el hardware, no todo sistema operativo sirve para todo hardware.



Por ejemplo, las computadoras personales identificadas. como "compatibles con Windows" , permiten utilizar uno de los sistemas operativos mas difundidos, el Windows, de Microsoft.



En ambientes de maquinas grandes es normal que encontrar sistemas operativos específicos para una familia de equipos, tal el caso de los sistemas operativos OS/390 y el i5/OS de IBM.



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.

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.

Por lo tanto, 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 (si fuera posible), 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 máquina.


LOS LENGUAJES DE PROGRAMACION


Los lenguajes de programación son las estructuras de instrucciones, interpretadas y traducidas lenguaje de maquina, que es el lenguaje 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.


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, como primera parte del proceso, validan la corrección interna del programa fuente (el compilador no puede validar errores en cuanto a la funcionalidad del programa; por ejemplo, si en lugar de sumar se indica que reste).
Esto es, validan que el programa sea consistente en si mismo, que se respete la sintaxis propia del lenguaje de programación, etcétera.


Si se detectan errores, los mismos son comunicados 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.


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.
Resulta sumamente complejo para la persona, y simple para el sistema de cómputos.


•Lenguaje ensamblador (segunda generación)


Estos lenguajes, desarrollados en los años cincuenta, 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 generación


Para facilitar aun más la programación, surgieron los lenguajes de tercera generación, que acercan el programa fuente a un lenguaje más parecido al utilizado entre nosotros.
Los dos lenguajes mas conocidos de este tipo son el Fortran y el Cobol.


•Lenguajes de cuarta y quinta generación



La denominación 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 lenguajes poseen herramientas para que el usuario final, dentro del marco dado en el desarrollo del sistema, pueda realizar consultas y reportes, no programados previamente, en forma directa sin participación de personal técnico.
LOS UTILITARIOS O SOFWARE DE SERVICIOS



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 para cumplir con las tareas necesarias en la forma que los usuarios finales las requieren.





*En el campo comercial:





- El sistema de clientes se ocupa de la administración de datos de los clientes.





- 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 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; de esta manera, 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.

Por ejemplo, cuando el vendedor entrega al comprador una licencia de uso sobre su creación intelectual; es decir, que puede usar el software, pero no modificarlo ni copiarlo para entregarlo a terceros, en venta o cesión.





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.

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.


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:



Al seleccionar el software debemos tener en cuenta el que más se adapte a nuestros requerimientos, considerando:


* Facilidad de uso y documentación

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.

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 más 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 (conocida como help) 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. Por ejemplo, si generamos una planilla de cálculo y queremos compartirla con un compañero o amigo, ambos deben tener un software compatible. La planilla que grabamos debe poder ser leída por el otro software.

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 (del ingles data interchange format: formato para intercambio de datos) comunes para intercambiar entre bases de datos o rtf (del ingles rich text format), 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 (cada vez mas completas y a la vez complejas) requieran, para funcionar adecuadamente, la capacidad de proceso y almacenamiento de tas nuevas versiones de hardware.

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.



Algunas palabras y siglas de uso común:



¿QUÉ SON LOS CONTROLADORES?

Un controlador de dispositivo, llamado normalmente controlador (en inglés, device driver) es unprograma informático que permite al sistema operativo interactuar con un periférico, haciendo unaabstracción delhardware 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.
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.

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:

- 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.

- 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.

- 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.

En esta sección se incluyen las tareas principales para la seguridad de los paquetes de controladores de dispositivos: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.

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 limite de los 64 Kb, ya que el DOS se encarga de relocalizar las referencias absolutas a segmentos como en cualquier programa EXE ordinario.

No hay comentarios:

Publicar un comentario