sábado, 4 de julio de 2015

software de Aplicacion

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