Download software - Programa Integración de Tecnologías a la Docencia

Document related concepts

C (lenguaje de programación) wikipedia , lookup

MATLAB wikipedia , lookup

Interfaz binaria de aplicaciones wikipedia , lookup

Fortran wikipedia , lookup

Sistema operativo wikipedia , lookup

Transcript
1
¿Qué es el software?
Es el conjunto de instrucciones detalladas que controlan la operación de un sistema de cómputo. Sus
funciones son:
1. Administrar los recursos de cómputo de la institución
2. Proporcionar las herramientas a los seres humanos para que aprovechen estos
recursos
3. Actuar como intermediario entre las instituciones y la información
almacenada
Programas de software
Un programa de software es un conjunto de argumentos o instrucciones para la computadora. El proceso de
escribir o codificar programas se denomina programación y a las personas que se especializan en esta tareas
se las llama programadores.
Concepto de programa almacenado: la idea de que el programa no puede ser ejecutado a menos que se
almacene en la memoria primaria de la computadora junto con los datos requeridos.
Principales tipos de software
Existen diferentes tipos y clasificaciones de software a continuación se describe una de ellas:
1. Software del sistema: es un conjunto de programas generalizados que administran los
recursos de la computadora, como la unidad central de proceso, los dispositivos, etc.. los
programadores que escriben el software del sistema se llaman programadores de sistemas.
Incluye traducción de lenguajes y utilitarios (o utilerías).
2. Software de aplicaciones: se refiere a los programas que son escritos para o por usuarios
para aplicar la computadora a una tarea específica. Los programadores que escriben el
software de aplicaciones son llamados programadores de aplicaciones.
3. Software de red: En el software de red se incluyen programas relacionados con la
interconexión de equipos informáticos, es decir, programas necesarios para que las redes de
computadoras funcionen. Entre otras cosas, los programas de red hacen posible la
comunicación entre las computadoras, permiten compartir recursos (software y hardware) y
ayudan a controlar la seguridad de dichos recursos.
4. Software del lenguaje: Es el software utilizado para escribir los programas en cualquiera de
los diversos lenguajes de programación.
Lenguaje de programación, en informática, es cualquier lenguaje artificial que puede utilizarse para definir
una secuencia de instrucciones para su procesamiento por un ordenador o computadora. Es complicado
definir qué es y qué no es un lenguaje de programación. Se asume generalmente que la traducción de las
instrucciones a un código que comprende la computadora debe ser completamente sistemática.
Normalmente es la computadora la que realiza la traducción.
Vistos a muy bajo nivel, los microprocesadores procesan exclusivamente señales electrónicas binarias. Dar
una instrucción a un microprocesador supone en realidad enviar series de 1 y 0 espaciadas en el tiempo de
una forma determinada. Esta secuencia de señales se denomina código máquina. El código representa
normalmente datos y números e instrucciones para manipularlos. Un modo más fácil de comprender el
código máquina es dando a cada instrucción un mnemónico, como por ejemplo STORE, ADD o JUMP.
Esta abstracción da como resultado el ensamblador, un lenguaje de muy bajo nivel que es específico de cada
microprocesador.
2
Los lenguajes de bajo nivel permiten crear programas muy rápidos, pero que son a menudo difíciles de
aprender. Más importante es el hecho de que los programas escritos en un bajo nivel son prácticamente
específicos para cada procesador. Si se quiere ejecutar el programa en otra máquina con otra tecnología,
será necesario reescribir el programa desde el principio.
El software del sistema
Coordina las distintas partes del sistema de cómputo y sirve como mediación entre el software de aplicación
y el hardware de la computadora. El software del sistema que administra y controla las actividades y
recursos de la computadora se llama el sistema operativo.
Funciones del sistema operativo
Una manera de ver al sistema operativo es como el administrador en jefe del sistema. El software del
sistema operativo decide qué recursos de la computadora habrán de ser usados, cuáles programas se
ejecutarán y el orden en el que las actividades han de ocurrir.
Un sistema operativo realiza tres funciones:
1. define y asigna los recursos del sistema
2. programa el uso de recursos y trabajos de cómputo
3. hace el seguimiento de las actividades del sistema de cómputo
1. Asignación y designación: el SO asigna recursos a los trabajos de aplicaciones que se encuentran en la
cola de ejecución. Proporciona ubicaciones en la memoria primaria para los datos y programas y
controla los dispositivos de entrada y salida.
2. Programación: el SO decide cuándo programar los trabajos que se presentan y cuándo coordinar la
programación en distintas áreas de la computadora, de manera que partes diferentes de los distintos
trabajos puedan ser procesadas al mismo tiempo. Por ej: mientras que un programa está en ejecución, el
SO está programando el uso de los dispositivos de entrada y salida.. No todos los trabajos son llevados
a cabo en el orden en que se presentan; el SO debe programarlos de acuerdo con las prioridades de la
institución.
3. Seguimiento: el SO da seguimiento de las actividades del sistema de cómputo. Da seguimiento de cada
trabajo de cómputo y también puede dar seguimiento de quién usa el sistema, qué programas se han
ejecutado y cualquier intento no autorizado para tener acceso al sistema.
La mayor parte del SO se almacena en una copia sobre un disco, al cual la memoria primaria tiene muy
rápido acceso. Cuando partes del sistema operativo se requieren para una determinada aplicación, son
transferidas desde el disco y cargadas en la memoria primaria. El dispositivo en el que todo un SO
completo se almacena se llama dispositivo de residencia del sistema.
Multiprogramación, tiempo compartido, almacenamiento virtual y multiprocesamiento
Las computadoras tienen una serie de capacidades especiales en el sistema operativo:
 Multiprogramación: es la capacidad más importante del SO para compartir los recursos de la
computadora. Permite que programas múltiples compartan los recursos del sistema de cómputo
mediante el uso concurrente de un CPU. Por uso concurrente se entiende que, en cualquier momento,
sólo un programa emplea en realidad el CPU, pero las necesidades de entrada y salida de otro programas
pueden ser atendidas al mismo tiempo. Dos o más programas están activos al mismo tiempo, pero no
usan los mismos recursos de la computadora simultáneamente. Con la multiprogramación, un grupo de
programas tomará su turno para el uso del procesador.
3
 Multitareas: se refieren a la multiprogramación en los sistemas operativos individuales, como los que se
usan en las microcomputadoras. Una persona puede ejecutar dos o más programas de manera
concurrente en una sola computadora. En vez de terminar la sesión con el programa procesador de
palabra, se regresa al sistema operativo y luego se inicia una sesión con el programa de base de datos.
Las multitareas ayudan a desplegar ambos programas en la pantalla de la computadora y trabajar al
mismo tiempo.
 Almacenamiento virtual: se desarrolló luego de que algunos problemas de multiprogramación se
hicieron evidentes. El almacenamiento virtual maneja los programas más eficientemente porque la
computadora los divide en pequeñas porciones de longitud fija o variable, almacenando sólo una
pequeña porción del programa en la memoria primaria a la vez. Primero, aún cuando dos o tres
programas grandes puedan ser leídos en la memoria, una cierta parte de la memoria principal permanece
subutilizada porque los programas suman menos que el espacio de la memoria primaria disponible.
Segundo, dado el tamaño limitado de la memoria primaria, sólo un número pequeño de programas puede
requerir de hasta 200 kbytes de memoria, y la computadora puede tener solamente un megabyte de
memoria primaria. Por lo tanto, sólo unos cuantos programas pueden residir en la memoria en un
momento dado. El almacenamiento virtual rompe un programa en un número de porciones de longitud
fija llamadas páginas, o en porciones de longitud variable llamadas segmentos. El punto de ruptura real
entre segmentos puede ser determinado por el programador o por el SO . En el almacenamiento virtual,
cada una de estas porciones es relativamente pequeña, esto permite que un gran número de programas
resida en la memoria primaria, ya que sólo una página o segmento de cada programa se localiza en
realidad en ella. El resto de las páginas de los programas se almacenan en una unidad periférica de disco
hasta que están listas para ser procesadas. El almacenamiento virtual proporciona un gran número de
ventajas: 1.-la memoria primaria se utiliza a mayor capacidad; 2.- los programadores ya no tienen que
preocupares acerca del tamaño del área de la memoria primaria. Con el almacenamiento virtual no existe
un límite para los requisitos de almacenamiento del programa.
 Tiempo compartido: es una capacidad de un SO que permite que muchos usuarios compartan
simultáneamente los recursos de procesamiento de la computadora. Se diferencia de la
multiprogramación en que el CPU emplea una cantidad fija de tiempo en un programa antes de moverse
al siguiente. En un ambiente de tiempo compartido, miles de usuarios tienen asignado un período de
tiempo de computadora muy pequeño (2 milisegundos), pero como el CPU opera al nivel de
nanosegundos, un CPU puede llevar a cabo una gran cantidad de trabajo en 2 milisegundos.
 Multiproceso: es un SO capaz de unir 2 o más CPU para que trabajen en paralelo en un solo sistema de
computación, el cual puede asignar múltiples CPU para ejecutar diferentes instrucciones a partir del
mismo programa o de diferentes programas en forma simultánea, dividiendo el trabajo entre los CPU.
Mientras que la multiprogramación utiliza un procesamiento concurrente con una CPU, el multiproceso
utiliza procesamientos simultáneos con múltiples CPU.
Traducción de lenguaje y software de utilerías
Cuando las computadoras ejecutan programas escritos en lenguajes como COBOL, FORTRAN o C, deben
convertir estas instrucciones ilegibles para los seres humanos en una forma que puedan entender. El
software del sistema incluye programas especiales de traducción de lenguajes que traducen programas de
lenguaje de más alto nivel, escritos en lenguajes de programación como BASIC, COBOL y FORTRAN, a
un lenguaje de máquina que ésta puede ejecutar. Este tipo de software del sistema se llama compilador o
intérprete. El programa en el lenguaje de alto nivel antes de su traducción en lenguaje de máquina se llama
código fuente. Un compilador traduce el código fuente en un código de máquina llamado código objeto.
Algunos lenguajes de programación, como BASIC, no usan un compilador sino un intérprete, que traduce
cada instrucción en código fuente, una a la vez, en código de máquina y lo ejecuta; su ejecución es muy
4
lenta porque sólo se traduce una instrucción a la vez. Un ensamblador es semejante a un compilador, pero
se usa para traducir sólo el lenguaje ensamblador al código de máquina.
En el software de sistema se incluyen los programas de utilería para rutinas, tareas repetitivas como
copiar, limpiar la memoria primaria, etc.. si se ha trabajado en una computadora y se han realizado
funciones como establecer archivos nuevos, eliminar viejos o formateo de disquetes, se ha trabajado con
programas de utilería. Los programas de utilería son programas para tareas repetitivas escritos
previamente, que se almacenan para que puedan ser compartidos por todos los usuarios de un sistema de
cómputo y puedan ser rápidamente usados en muchas aplicaciones diferentes de sistemas de información
cuando se requiere.
Sistemas operativos para microcomputadoras
Todo software se basa en SO específicos y en el hardware de la computadora. Un paquete de software
escrito para un SO de microcomputadora puede no correr en otra. Los SO de las microcomputadoras en sí
tienen características distintivas (como soporte a las multitareas o al trabajo gráfico) que determinan los
tipos de aplicaciones para las que son ideales.
Sistemas
Características
operativos
OS/2 (Sistema SO para la línea de estaciones de trabajo a base de microcomputadoras IBM personal
Operativo/2)
System/2.
eComStation
(eCS) es el sistema operativo para PC, desarrollado por Serenity Systems, que está
basado en OS/2 Warp 4.5, incluyendo una nueva interfaz gráfica y varias mejoras, como
el Journaling File System, un sistema de archivos que es mucho más tolerante a fallos y
que es usado por otros sistemas como AIX.
Windows Server SO para Servidores
UNIX-(XENIX) Usado para poderosas microcomputadoras, estaciones de trabajo y minicomputadoras.
Permite multitareas, procesamiento multiusuario y trabajo en redes; puede llevarse a
diferentes modelos de hardware de computadoras.
System 7
SO para la computadora Macintosh. Permita multitareas y tiene capacidades poderosas
de gráficas y multimedia.
Mac OS X
Es una línea de sistemas operativos computacionales desarrollada, comercializada y
vendida por Apple Inc..
Se basa en Unix y usa una interfaz gráfica desarrollada por Apple llamada Aqua, que se
inspira libremente en la interfaz de Mac OS Classic. El gestor de ventanas X11,
característico en la familia de sistemas Unix, y Java se usan sólo para compatibilidad con
software no nativo de Mac.
Solaris
Es un sistema operativo de tipo Unix desarrollado por Sun Microsystems desde 1992
como sucesor de SunOS. Es un sistema certificado oficialmente como versión de Unix.
Funciona en arquitecturas SPARC y x86 para servidores y estaciones de trabajo.
MS-DOS
Contiene características semejantes al PC-DOS, pero es el SO para los clones de IBMPC.
Windows Vista Es una línea de sistemas operativos desarrollada por Microsoft para ser usada en
ordenadores de sobremesa, ordenadores portátiles, Tablet PC y Centros multimedia.
GNU/Linux
El término empleado para referirse al sistema operativo similar a Unix que utiliza como
base las herramientas de sistema de GNU y el núcleo Linux. Su desarrollo es uno de los
ejemplos más prominentes de software libre; todo el código fuente puede ser utilizado,
modificado y redistribuido libremente por cualquiera bajo los términos de la GPL de
GNU (Licencia Pública General de GNU) y otras licencias libres.[
5
Selección del SO para una microcomputadora
Por empezar el SO seleccionado debe ser compatible con el software requerido por las aplicaciones a
utilizar; debe ser fácil de instalar y operar, y las características de la interfase con el usuario del SO deben
ser fáciles de aprender.
Software de aplicaciones
El software de aplicaciones está principalmente relacionado con el cumplimiento de las tareas de los
usuarios finales. Muchos diferentes lenguajes de programación pueden usarse para desarrollar software de
aplicaciones. Cada uno de ellos tiene fuerzas y debilidades.
Generaciones de lenguajes de programación
PRIMERA GENERACIÓN: Para comunicarse con la primera generación de computadoras, los
programadores tenían que escribir los programas en lenguaje de máquina: los 0s y 1s del código binario,
esto hacía de la programación primitiva un proceso lento y de intenso trabajo.
A medida que mejoró el hardware de las computadoras y la velocidad de procesamiento y el tamaño de la
memoria crecieron, los lenguajes de computadora cambiaron de lenguajes de máquina a lenguajes que
fueran más fáciles de entender por las personas.
SEGUNDA GENERACIÓN: ocurrió a principios de los ´50, con el desarrollo de lenguaje ensamblador. En
vez de emplear 1s y 0s, los programadores podían sustituir acrónimos tipo lenguaje y palabras como add
(suma), sub (resta) y load (carga) en oraciones de programación. Un traductor de lenguaje llamado
compilador transformaba las frases en un lenguaje tipo inglés en lenguaje de máquina.
TERCERA GENERACIÓN: desde mediados de los ´50 hasta los ´70, surgieron los primeros lenguajes de
alto nivel. Estos lenguajes permitieron a los matemáticos trabajar por primera vez con las computadoras
mediante el uso de lenguajes tales como el FORTRAN (FORmula TRANslator program). . COBOL
(Common Business Oriented Language) permitió el uso de expresiones en inglés como print y sort por los
programadores, que ya no tenían que pensar en términos de ceros y unos.
Se llaman lenguajes de alto nivel porque cada expresión en COBOL o FORTRAN genera múltiples
expresiones en el nivel de lenguaje de máquina. El uso de estos lenguajes requiere de compiladores mucho
más rápidos y eficientes para traducir los lenguajes de alto nivel en códigos de máquina.
CUARTA GENERACIÓN: estos lenguajes surgieron a finales de los ´70 y su desarrollo aún continúa. En
estos lenguajes, se reduce dramáticamente el tiempo de programación y las tareas de software son muy
fáciles.
Cada nueva generación de software requiere más y más área de almacenamiento primario, compiladores
más rápidos y mayor almacenamiento secundario.
Lenguajes de programación populares
LENGUAJE ENSAMBLADOR: lenguaje de programación desarrollado en los ´50 que se parece al
lenguaje de máquina, pero sustituye los códigos numéricos por expresiones mnemotécnicas. da un gran
control a los programadores, es costoso en términos de tiempo del programador, difícil de leer, rastrear y
aprender. Se emplea hoy día principalmente en software de sistemas.
6
FORTRAN: fue desarrollado en 1956 para proporcionar una manera más fácil de escribir las aplicaciones
científicas y de ingeniería. Es de especial utilidad en el procesamiento de datos numéricos; es relativamente
fácil de aprender y las versiones actuales proporcionan estructuras sofisticadas para el control de la lógica
del programa.
COBOL: se empezó a utilizar a principios de los ´60. Fue diseñado para realizar tareas repetitivas como la
de las nóminas. Sus estructuras principales de datos son registros, archivos, tablas y listas. Es fácilmente
aprendido por los analistas de negocios. Es pobre en cuanto a operaciones matemáticas de cierta
complejidad.
BASIC (Beginners All-puspose Symbolic Instruction Code) fue desarrollado en 1964 para enseñar a los
estudiantes cómo usar las computadoras. Hoy día es el más popular en las escuelas superiores y para las
microcomputadoras. Puede hacer casi todas las tareas de procesamiento de la computadora desde
operaciones de inventarios hasta cálculos matemáticos. Es fácil de usar; su debilidad es que hace pocas
tareas bien, aunque las hace todas.
LP/1 (Programming Language ): fue desarrollado por IBM en 1964. Es el lenguaje de programación de
propósito general más poderoso, y es algo difícil de aprender.
PASCAL: lamado en honor de Blas Pascal.
ADA:
C: fue desarrollado a principios de los ´70, y es el lenguaje en que mucho del SO UNIX ha sido escrito. En
C se combinan algunas de las características de control rígido y eficiencia de ejecución del lenguaje
ensamblador, con la flexibilidad de su uso en máquinas. En otras palabras, puede trabajar en una diversidad
de computadoras en vez de una sola.
LISIP Y PROLOG:
Nuevas herramientas y enfoques de software
Los lenguajes de cuarta generación consisten en una variedad de herramientas de software que permite a
los usuarios finales desarrollar aplicaciones de software con una mínima (si no es ninguna) asistencia
técnica o que estimulan la productividad de los programadores profesionales.
Lenguajes de cuarta generación
Existen siete categorías de cuarta generación:
1. LENGUAJE DE INTERROGACIÓN (SQL): es un lenguaje de computadora de alto nivel que se
emplea para recuperar información específica de las bases de datos o archivos.
2. GENERADORES DE REPORTES: son programas que extraen datos de los archivos o de las bases
de datos y crean reportes sobre diseño de acuerdo con muchos formatos que no son rutinariamente
producidos por un sistema de información.
3. LENGUAJES DE GRÁFICAS: son lenguajes de cómputo que despliega datos de archivos o de
bases de datos de forma gráfica.
4. GENERADORES DE APLICACIONES: es un software que contienen módulos preprogramados
que pueden generar aplicaciones enteras, con un desarrollo a gran velocidad. Un usuario puede
especificar lo que se requiere hacer y el generador de aplicación creará el código apropiado para la
entrada, validación, actualización, procesamiento e informes.
5. LENGUAJES DE PROGRAMACIÓN DE MUY ALTO NIVEL: están diseñados para generar
códigos de programas con menos instrucciones que los lenguajes convencionales como el COBOL o
el FORTRAN. Se usan principalmente como herramienta de productividad por los programadores
profesionales.
6. PAQUETES DE SOFTWARE DE APLICACIONES O ENTORNOS INTEGRADOS DE
DESARROLLO: es un conjunto preescrito, precodificado y comercialmente disponible de
programas que elimina la necesidad de escribir programas de software para ciertas funciones.
7
7. HERRAMIENTAS DE MICROCOMPUTADORA: algunas de las herramientas más populares y
promotoras de la productividad de la cuarta generación son los paquetes de aplicaciones de propósito
general, que han sido desarrollados para las microcomputadoras, en especial para los procesadores
de palabra, las hojas de cálculo, administración de datos, gráficas y software de edición de escritorio.
Programación orientada a objetos
Un registro creciente de proyectos de software y la necesidad de los negocios de poner de moda sistemas
que sean flexibles y rápidos de hacer, ha lanzado un nuevo enfoque para el desarrollo de software con las
herramientas de programación “orientada a objetos”.
Los métodos tradicionales de desarrollo de software han tratado a los datos y procedimientos como
componentes independientes. Un procedimiento de programación por separado debe ser escrito cada vez
que alguien desea actuar sobre un elemento de datos en particular. Los procedimientos actúan sobre los
datos que el programa les envía.
La programación orientada a objetos combina los datos y los procedimientos específicos que operan en
aquellos datos en un “objeto”: en el objeto se combinan los datos y el código de programa. En vez de pasar
datos a los procedimientos, los programas envían un mensaje a un objeto para que realice un procedimiento
que ya tiene integrado a los procedimientos se les llama “métodos” en los lenguajes orientados a objetos). El
mismo mensaje puede ser enviado a muchos objetos diferentes, pero cada uno de ellos implantará el
mensaje de forma diferente.
Ejemplo: una aplicación financiera orientada a objetos puede tener que los objetos Cliente envíen mensajes
de debe y haber a los objetos Cuentas. Los objetos Cuentas, a su vez, pueden mantener a los objetos
Efectivo, Cuentas por pagar y Cuentas por Cobrar.
Los datos de un objeto están ocultos en otras partes del programa y sólo pueden ser manejados desde dentro
del objeto. El método para manejar los datos del objeto puede ser cambiado internamente sin afectar a las
otras partes del programa. Los programadores pueden enfocarse sobre lo que quieren que el objeto haga, y
el objeto decide cómo hacerlo.
Cómo seleccionar el software y los lenguajes de programación
Si bien los administradores no necesitan ser especialistas en programación, deben conocer las diferencias
entre los lenguajes de programación y ser capaces de emplear criterios claros para decidir qué lenguaje usar.
Los criterios más importantes son:
ADAPTABILIDAD: algunos lenguajes son de propósito general y pueden ser usados en una diversidad de
problemas, mientras que otros son lenguajes de propósito específico adecuados sólo para tareas limitadas.
La selección de lenguaje implica la identificación del uso y de los usuarios.
SOFISTICACIÓN: los lenguajes de alto nivel deben tener estructuras de control y estructuras de datos
sofisticadas. Las primeras definen la forma de los programas haciéndolos claros, lógicos y estructurados,
fáciles de leer y mantener. Los lenguajes deben seleccionarse de manera que puedan soportar muchas
estructuras de datos diferentes.
CONSIDERACIONES DE TIPO ORGANIZACIONAL: con el objeto de ser eficaces, el lenguaje debe ser
aprendido fácilmente por el personal de programación de la empresa, de ser fácil de mantener y cambiar y lo
suficientemente flexible, de manera que pueda crecer dentro de la institución. Estas consideraciones
organizacionales tienen implicaciones a largo plazo en los costos.
SOPORTE: es importante adquirir software que sea de un uso extensivo en otras instituciones y que pueda
recibir soporte muchas empresas y despachos de consultoría y servicios. A menudo es menos caro adquirir
8
software escrito en algún lado, o hacer que una empresa de servicios lo escriba, que desarrollar internamente
el software. En estas situaciones resulta determinante tener software de amplio uso. Otra opción es si el
software es reutilizable. Sólo una pequeña porción del software escrito es única, nueva y específica para las
aplicaciones individuales.
EFICIENCIA: la eficiencia con la cual un lenguaje compila y ejecuta permanece como consideración al
adquirir software. Los lenguajes con compiladores o intérpretes lentos como el BASIC pueden ser caros en
su operación y mantenimiento. En general los lenguajes de la 4° generación son muy lentos y caros en
términos de tiempo de máquina
Retos de administración
1. incremento de la complejidad y de los errores de software
2. el registro de aplicaciones pendientes.