Software
Se
conoce como software al equipamiento lógico o soporte lógico de un sistema
informático, que 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.
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 llamado
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 con el usuario.
El
anglicismo "software" es el más ampliamente difundido al referirse a
este concepto, especialmente en la jerga técnica; en tanto que el término
sinónimo «logicial», derivado del término francés logiciel, es utilizado
mayormente en países y zonas de influencia francesa. Su abreviatura es Sw.
Definición de software
Existen
varias definiciones similares aceptadas para software, pero probablemente la
más formal sea la siguiente:
Es
el conjunto de los programas de cómputo, procedimientos, reglas, documentación
y datos asociados, que forman parte de las operaciones de un sistema de
computación.
Extraído
del estándar 729 del IEEE5
Considerando
esta definición, el concepto de software va más allá de los programas de
computación en sus distintos estados: código fuente, binario o ejecutable;
también su documentación, los datos a procesar e incluso la información de
usuario forman parte del software: es decir, abarca todo lo intangible, todo lo
«no físico» relacionado.
El
término «software» fue usado por primera vez en este sentido por John W. Tukey
en 1957. En la ingeniería de software y las ciencias de la computación, el
software es toda la información procesada por los sistemas informáticos:
programas y datos.
El
concepto de leer diferentes secuencias de instrucciones (programa) desde la
memoria de un dispositivo para controlar los cálculos fue introducido por
Charles Babbage como parte de su máquina diferencial. La teoría que forma la
base de la mayor parte del software moderno fue propuesta por Alan Turing en su
ensayo de 1936, «Los números computables», con una aplicación al problema de
decisión.
Clasificación del software
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:
Software de sistema: Su
objetivo es desvincular adecuadamente al usuario y al programador de los
detalles del sistema informático 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 les procura al usuario y programadores
adecuadas interfaces de alto nivel, controladores, herramientas y utilidades de
apoyo que permiten el mantenimiento del sistema global. Incluye entre otros:
ü Sistemas
operativos
ü Controladores
de dispositivos
ü Herramientas
de diagnóstico
ü Herramientas
de Corrección y Optimización
ü Servidores
ü Utilidades
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. Incluyen básicamente:
ü Editores
de texto
ü Compiladores
ü Intérpretes
ü Enlazadores
ü Depuradores
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).
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 muchos otros:
ü Aplicaciones
para Control de sistemas y automatización industrial
ü Aplicaciones
ofimáticas
ü Software
educativo
ü Software
empresarial
ü Bases
de datos
ü Telecomunicaciones
(por ejemplo Internet y toda su estructura lógica)
ü Videojuegos
ü Software
médico
ü Software
de cálculo numérico y simbólico.
ü Software
de diseño asistido (CAD)
ü Software
de control numérico (CAM)
Elementos del Software
Están
compuestos por una serie de rutinas, las cuales están formadas por instrucciones,
procedimientos y comando que conforma dicho programa. Cada una de las rutinas
realiza una función dentro del mismo.
Algunos
elementos del software son:
ü Archivo
ü Registros
ü Campos
ü Caracteres
ü Dato
Mantenimiento del Software.
El
mantenimiento de software es el proceso de control, mejora y optimización del
software ya desarrollado e instalado, que incluye depuración de errores y
defectos que puedan haberse filtrado de la fase de pruebas de control y beta
test. Esta fase es la última (antes de iterar, según el modelo empleado) que se
aplica al ciclo de vida del desarrollo de software. La fase de mantenimiento es
la que viene después de que el software está operativo y en producción.
De un buen diseño y documentación del
desarrollo dependerá cómo será la fase de mantenimiento, tanto en costo
temporal como monetario. Modificaciones realizadas a un software que fue
elaborado con una documentación indebida o pobre y mal diseño puede llegar a
ser tanto o más costosa que desarrollar el software desde el inicio. Por ello,
es de fundamental importancia respetar debidamente todas las tareas de las
fases del desarrollo y mantener adecuada y completa la documentación.
Perfectivos: Aquellos que llevan a una mejora de la
calidad interna del software en cualquier aspecto: Reestructuración del código,
definición más clara del sistema y su documentación; optimización del
rendimiento y eficiencia.
Evolutivos: Agregados,
modificaciones, incluso eliminaciones, necesarias en el software para cubrir su
expansión o cambio, según las necesidades del usuario.
Adaptivos: Modificaciones que afectan a los entornos en
los que el sistema opera, tales como: Cambios de configuración del hardware
(por actualización o mejora de componentes electrónicos), cambios en el
software de base, en gestores de base de datos, en comunicaciones, etc.
Correctivos: Alteraciones
necesarias para corregir errores de cualquier tipo en el producto software
desarrollado.
Codificación del software
Durante
esta etapa se realizan las tareas que comúnmente se conocen como programación;
que consiste, esencialmente, en llevar a código fuente, en el lenguaje de
programación elegido, todo lo diseñado en la fase anterior. Esta tarea la
realiza el programador, siguiendo por completo los lineamientos impuestos en el
diseño y en consideración siempre a los requisitos funcionales y no funcionales
(ERS) especificados en la primera etapa.
Es
común pensar que la etapa de programación o codificación (algunos la llaman
implementación) es la que insume la mayor parte del trabajo de desarrollo del
software; sin embargo, esto puede ser relativo (y generalmente aplicable a
sistemas de pequeño porte) ya que las etapas previas son cruciales, críticas y
pueden llevar bastante más tiempo.
Durante
la fase de programación, el código puede adoptar varios estados, dependiendo de
la forma de trabajo y del lenguaje elegido, a saber:
Código fuente: es
el escrito directamente por los programadores en editores de texto, lo cual
genera el programa. Contiene el conjunto de instrucciones codificadas en algún
lenguaje de alto nivel. Puede estar distribuido en paquetes, procedimientos,
bibliotecas fuente, etc.
Código objeto: es
el código binario o intermedio resultante de procesar con un compilador el
código fuente. Consiste en una traducción completa y de una sola vez de éste
último. El código objeto no es inteligible por el ser humano (normalmente es
formato binario) pero tampoco es directamente ejecutable por la computadora. Se
trata de una representación intermedia entre el código fuente y el código
ejecutable, a los fines de un enlace final con las rutinas de biblioteca y
entre procedimientos o bien para su uso con un pequeño intérprete intermedio.
El
código objeto no existe si el programador trabaja con un lenguaje a modo de
intérprete puro, en este caso el mismo intérprete se encarga de traducir y
ejecutar línea por línea el código fuente (de acuerdo al flujo del programa),
en tiempo de ejecución. En este caso tampoco existen el o los archivos de
código ejecutable. Una desventaja de esta modalidad es que la ejecución del
programa o sistema es un poco más lenta que si se hiciera con un intérprete
intermedio, y bastante más lenta que si existen el o los archivos de código
ejecutable. Es decir no favorece el rendimiento en velocidad de ejecución. Pero
una gran ventaja de la modalidad intérprete puro, es que el esta forma de
trabajo facilita enormemente la tarea de depuración del código fuente (frente a
la alternativa de hacerlo con un compilador puro). Frecuentemente se suele usar
una forma mixta de trabajo (si el lenguaje de programación elegido lo permite),
es decir inicialmente trabajar a modo de intérprete puro, y una vez depurado el
código fuente (liberado de errores) se utiliza un compilador del mismo lenguaje
para obtener el código ejecutable completo, con lo cual se agiliza la
depuración y la velocidad de ejecución se optimiza.
Código ejecutable: Es
el código binario resultado de enlazar uno o más fragmentos de código objeto
con las rutinas y bibliotecas necesarias. Constituye uno o más archivos
binarios con un formato tal que el sistema operativo es capaz de cargarlo en la
memoria RAM (eventualmente también parte en una memoria virtual), y proceder a
su ejecución directa. Por lo anterior se dice que el código ejecutable es
directamente «inteligible por la computadora». El código ejecutable, también
conocido como código máquina, no existe si se programa con modalidad de
«intérprete puro».
A grandes rasgos, se puede decir que existen
tres tipos de software:
Software de Aplicación:
Aquí se incluyen todos aquellos programas que permiten al usuario realizar una
o varias tareas específicas. Aquí se encuentran aquellos programas que los
individuos usan de manera cotidiana como: procesadores de texto, hojas de
cálculo, editores, telecomunicaciones, software de cálculo numérico y
simbólico, videojuegos, entre otros.
Software de Programación:
Son aquellas herramientas que un programador utiliza para poder desarrollar
programas informáticos. Para esto, el programador se vale de distintos
lenguajes de programación. Como ejemplo se pueden tomar compiladores, programas
de diseño asistido por computador, paquetes integrados, editores de texto,
enlazadores, depuradores, intérpretes, entre otros.
Software de Sistema: Es
aquel que permite a los usuarios interactuar con el sistema operativo así como
también controlarlo. Este sistema está compuesto por una serie de programas que
tienen como objetivo administrar los recursos del hardware y, al mismo tiempo,
le otorgan al usuario una interfaz. El sistema operativo permite facilitar la
utilización del ordenador a sus usuarios ya que es el que le da la posibilidad
de asignar y administrar los recursos del sistema, como ejemplo de esta clase
de software se puede mencionar a Windows, Linux y Mac OS X, entre otros. Además
de los sistemas operativos, dentro del software de sistema se ubican las herramientas
de diagnóstico, los servidores, las utilidades, los controladores de
dispositivos y las herramientas de corrección y optimización, etcétera.
Interfaz Gráfica
Con
la idea de simplificar el uso de los ordenadores para usuarios de todo tipo y
no sólo para los expertos, se ha convertido en una práctica habitual utilizar
metáforas visuales por medio de la llamada interfaz gráfica de usuario (IGU ó
GUI en inglés) para que el usuario interactúe y establezca un contacto más
fácil e intuitivo con el ordenador. Si, como afirma Neal Stephenson: "en
el principio fue la línea de comandos..." tal como los hackers siguen hoy
reivindicando no sólo con nostalgia, sino también como una forma de tener
control real sobre las máquinas, en la actualidad prima la cultura de la
interfaz "amigable" y vistosa. En estos casos, un simple clic de
ratón sobre algún gráfico (imagen) que aparece en la pantalla, sustituye a la
tediosa tarea de escribir código fuente para que el ordenador interprete que
debe realizar alguna acción. En 1981 aparecieron los primeros ordenadores
personales, los llamados Pcs, pero hasta 1993 no se generalizaron las
interfaces gráficas de usuario. El escritorio del sistema operativo Windows de
Microsoft y su sistema de ventanas sobre la pantalla se ha estandarizado y
universalizado, pero fueron los ordenadores Macintosh de la compañía Apple los
primeros que introdujeron las interfaces gráficas de usuario.
Una
interfaz es un dispositivo que permite comunicar dos sistemas que no hablan el
mismo lenguaje. Restringido a aspectos técnicos, se emplea el término interfaz
para definir el juego de conexiones y dispositivos que hacen posible la
comunicación entre dos sistemas. Sin embargo, cuando aquí hablamos de interfaz
nos referimos a la cara visible de los programas tal y como se presenta a los
usuarios para que interactúen con la máquina. La interfaz gráfica implica la
presencia de un monitor de ordenador o
pantalla constituida por una serie de menús e iconos que representan las
opciones que el usuario puede tomar dentro del sistema.
En
el caso del hipertexto, la interfaz hipertextual consistiría en el diseño
navegacional y el conjunto de herramientas y utilidades que permiten al
usuario-lector interactuar con los contenidos. La interfaz proporcionará al
usuario el conjunto de posibilidades que podrá seguir durante todo el tiempo
que se relacione con el programa, detallando lo que verá y escuchará en cada
momento, y las acciones que puede realizar, así como las respuestas que puede
ofrecer el sistema. El usuario, además de entender el mensaje, ha de comprender
la mecánica operativa que se le ofrece (sintaxis, órdenes, códigos,
abreviaturas, iconos, etc.). Una buena interfaz requiere poco esfuerzo por
parte del usuario, simplicidad y funcionalidad.
Las
características básicas de una buena interfaz
podrían sintetizarse en:
ü Facilidad
de comprensión, aprendizaje y uso
ü Representación
fija y permanente de un determinado contexto de acción (fondo)
ü El
objeto de interés ha de ser de fácil identificación
ü Diseño
ergonómico mediante el establecimiento de menús, barras de acciones e iconos de
fácil acceso
Las
interacciones se basarán en acciones físicas sobre elementos de código visual o
auditivo (iconos, botones, imágenes, mensajes de texto o sonoros, barras de
desplazamiento y navegación...) y en selecciones de tipo menú con sintaxis y
órdenes
Las
operaciones serán rápidas, incrementales y reversibles, con efectos inmediatos
ü Existencia
de herramientas de Ayuda y Consulta
ü Tratamiento
del error bien cuidado y adecuado al nivel de usuario
Hoja
de Calculo
Una
hoja de cálculo (o programa de hojas de cálculo) es un software a través del
cual se pueden usar datos numéricos y realizar cálculos automáticos de números
que están en una tabla. También es posible automatizar cálculos complejos al
utilizar una gran cantidad de parámetros y al crear tablas llamadas hojas de
trabajo.
Además,
las hojas de cálculo también pueden producir representaciones gráficas de los
datos ingresados:
Por
lo tanto, la hoja de cálculo es una herramienta multiuso que sirve tanto para
actividades de oficina, que implican la organización de grandes cantidades de
datos, como para niveles estratégicos y de toma de decisiones al crear
representaciones gráficas de la información sintetizada.
Las
compañías de software han creado muchas hojas de cálculo. Las más importantes
son:
Muchas
empresas han desarrollado hojas de cálculo. Veamos algunos ejemplos:
Excel:
Diseñada por Microsoft en 1985 y renovada bianualmente, permite una gran
cantidad de funciones de distintos tipos, y también introdujo la elaboración de
gráficos representativos. El formato es el de un libro, con hojas con la forma
de un cuaderno contable lleno de celdas. Cuenta con distintos tipos de menús
integrados de una manera cómoda e intuitiva para el usuario (que lo hacen
destacar y ser pionera en lo que respecta a estética, orden y organización),
pero la mayoría de quienes lo frecuentan
utilizan una cantidad muy básica de funciones. Es la hoja de cálculo más
usada a pesar de ser como todos los productos de Microsoft Office, paga.
Lotus 1.2.3:
Desarrollada por la empresa IBM, fue el programa más popular en un tiempo por
la rápida fama que consiguió al casi no tener ninguna falla. De algún modo,
tiene un funcionamiento más práctico, que permite por ejemplo sumar más
intuitivamente según lo que se tipee. Permite la focalización en los detalles,
al tiempo que las distintas versiones se han perfeccionado posibilitando crear cuadros.
Como Lotus también comercializa Approach (base de datos), el programa permite
combinarse con ellas, realizando cálculos y estadísticas derivadas de ello.
Calc:
Está integrado en el sistema Open Office, e integra algunas de las mejores
características del Lotus con las del Excel. Permite abrir y guardar archivos
con los formatos de los otros dos, lo que le da una practicidad que se le
agrega a la buena inmunidad que tiene a los macro virus –también debida a su
poca difusión a comparación de las anteriores-. Introdujo la idea de realizar
agrupaciones dentro de las tablas dinámicas. Permite, en contraste con el
Excel, calcular respecto a fechas anteriores al siglo XX (la función fecha)
aunque no soporta hojas con tamaños muy grandes (tiene una cantidad limitada de
filas y columnas). Es software libre, por lo tanto gratuito y modificable.
Numbers: La
más reciente de todas, fue desarrollada por la empresa Apple a partir del 2007,
especial para ser utilizada en los productos que funcionen con el sistema
operativo que dicha empresa comercializa. La competencia más fuerte es con el
Excel, y las ventajas aparecen en la exposición de las funciones (son muchas
pero están bien explicadas y mostradas), en el diseño de la hoja (presenta 12
diseños más que la competencia) y en la exportación (mucha más compatibilidad
con redes sociales, mails o PDF). Es pago, y se compatibiliza con todos los
productos Apple.
Kspread: La
hoja de cálculo puesta en funcionamiento por Linux, en el marco de muchos
procesadores gratuitos y abiertos a ser modificados por la propia comunidad que
los utiliza. Las características que integra no son superiores a las otras,
aunque permite importar casi todas las hojas de los otros tipos.
Quattro Pro:
Originalmente diseñada por Borland International, pero luego comercializada por
Corel, introdujo la particular característica de crear mapas para distinguir
las estadísticas por regiones. Se utiliza dentro de Windows, y la configuración
general del software le trajo problemas legales a la compañía al ser muy
similar al Lotus 1.2.3.
Manejador de Base de Datos
Es
un software que tiene como objetivo facilitar la construcción y manipulación de
bases de datos sirviendo como interfaz entre éstas, los usuarios y los
distintos tipos de aplicaciones que las utilizan.
Caracteristicas
ü Establecen
la organización de los datos de acuerdo con las especificaciones dadas por los
programas utilizados.
ü Tienen
datos de naturaleza descriptiva para las bases de datos, llamados metadatos.
ü Poseen
soporte de múltiples vistas de datos y con capacidad para compartirlo.
ü Utilizan
procesos de transacciones de multiusuario.
ü Permiten
el desarrollo de aplicaciones en un tiempo reducido.
ü Tienen
disponibilidad de la información actualizada.
ü Manejan
bases de datos de cualquier tamaño, de acuerdo con el sistema manejador
elegido.
ü La
base de datos que manipulan puede tener diferentes tipos de complejidad de
acuerdo con el objetivo específico.
ü Acceso
controlado a los datos mediante mecanismos de seguridad
Evolución Histórica y SMBD
Los
sistemas de archivos fueron desde los años 40 los elementos que permitieron el
almacenamiento de datos basados en lenguajes como Fortran y Cobol. El concepto
como tal de Sistema Manejador de Base de Datos (SMBD) o Sistema Gestor de Base
de Datos (DBMS, Data Base Management System) nace desde 1964 utilizando
realmente la Administración de Datos.
Lenguajes
Entre
los lenguajes que se utilizan en un DBMS se encuentra:
ü Lenguaje
de Manipulación de Datos
ü (DML,
Data Manipulation Language):
Por
medio de este lenguaje los usuarios pueden realizar consultas o manipular datos
que se encuentran ya organizados en una forma estructurada.
En
la actualidad el DML más utilizado es el SQL (Structured Query Language), usado
para manipular datos de base de datos relacional. Entre otros se encuentran:
IMS/DL1, CODASYL.
Los DML se pueden clasificar en dos
grupos:
Lenguajes de consulta
procedimentales: El usuario da instrucciones para que se
desarrollen procedimientos u operaciones sobre la base de datos.
Lenguajes de consulta no
procedimentales: El usuario realiza una descripción de un
procedimiento específico.
Ejemplos
de comandos DML son:
SELECT:
Utilizado para recuperación de datos en lenguajes como SQL, indicando la
información a recuperar mediante cuatro partes básicas: la claúsula Select
seguida de la descripción de lo que se quiere buscar, los nombres de las
columnas. La cláusula From seguida de la especificación de la tabla o tablas de
las que se realizan la consulta. Ambas claúsulas son obligatorias.
Las
otras dos claúsulas son opcionales, la claúsula Where como criterio de
selección y la claúsula Orderby como criterio de ordenación.
INSERT:
Utilizada para la inserción de nuevos datos en una tabla, agregando nuevos
registros a la tabla especificada. También es utilizado para la inserción de
varias filas a la vez indicando una consulta que genere varios registros con
valores a insertar.
DELETE:
Mediante esta sentencia podemos eliminar filas en una tabla. Se pueden borrar
una fila o varias filas. En el caso que se quiera borrar todas las filas la
tabla queda vacía pero la definición de la tabla no desaparece.
UPDATE: Se
utiliza para modificar valores de una o más columnas en las filas seleccionadas
de una tabla específica. En la sentencia se debe detallar la tabla destino a
modificar.
Lenguaje De Definición De Datos
(DDL, Data Definition Language):
Permite
definir las estructuras que almacenarán los datos y los procedimientos o
funciones para realizar las consultas.
Al
principio fue usado el referente a Codasyl, donde se establecía el esquema de
la base de datos usando descripciones de los registros y campos del modelo.
Posteriormente se utilizó como parte del SQL y en la actualidad se hace
referencia a cualquier lenguaje formal usado para describir datos o
estructuras.
Lenguaje de control de Datos (DCL, Data
Control Language):
Permite
al administrador controlar el acceso a los datos contenidos en la Base de
Datos.
Ejemplo de comandos DCL, tenemos:
REVOKE:
elimina permisos concedidos por el comando GRANT.
GRANT:
asigna permisos a usuarios y roles para tareas específicas.
Componentes
Entre
los componentes que encontramos en un SMDB (Sistema Manejador de Base de Datos)
tenemos:
Procesos
Los
procesos principales que realiza el SMBD son:
Definir los datos:
Especificar los tipos de datos, estructuras y restricciones que se presenten
Construir la base de datos:
Almacenar los datos en un medio de almacenamiento.
Manipular la base de datos:
Consultar, actualizar la base de datos, realizar reportes, eliminar datos,
manejar restricciones y verificar integridad entre otros.
Capacidades
Control de redundancia:
Las
vistas de diferentes usuarios se deben integrar en el diseño de la base de
datos. El diseño debe almacenar cada dato lógico en un solo lugar en la base de
datos para evitar la inconsistencia y ahorrar espacio de almacenamiento.
Restricción de acceso no autorizado:
Se
debe contar con un subsistema de seguridad que permita crear cuentas con las
restricciones respectivas.
Forzar el uso de restricciones de
integridad:
El
SMBD debe ofrecer recursos necesarios para definir las restricciones de
integridad que deben cumplir los datos y hacer como tal que sean cumplidas. Los
diseñadores de base de datos deben identificar estas restricciones durante el
diseño. Las restricciones se pueden especificar en el SMBD cumpliéndose de forma automática aunque
también se pueden verificar con aplicativos adicionales o software de
validación.
Implementar Métodos de Respaldo y
Recuperación:
Un
buen SMBD debe tener un subsistema de respaldo y recuperación con recursos para
cuando se presenten fallos de hardware y software.
Proporcionar múltiples interfaces de
usuario:
De
acuerdo con los usuarios, grupos de usuarios y roles el SMBD debe suministrar
los mecanismos de acceso utilizando los permisos y restricciones dadas.
Representar relaciones complejas entre
datos:
Cuando
los datos dentro del modelo necesitan realizar relaciones con restricciones y
consultas complejas, el SMBD debe facilitar al Administrador de la Base de
Datos la ejecución de las operaciones necesarias.
No hay comentarios:
Publicar un comentario