sábado, 2 de agosto de 2008

SOFTWARE

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 IEEE[2]
Bajo esta definición, el concepto de software va más allá de los programas de cómputo en sus distintos estados: código fuente, binario o ejecutable; también su documentación, datos a procesar e información de usuario es 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 las ciencias de la computación y la ingeniería de software, el software es toda la información procesada por los sistemas informáticos: programas y datos. El concepto de leer diferentes secuencias de instrucciones 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 vez primera por Alan Turing en su ensayo de 1936, "Los números computables", con una aplicación al problema de decisión.



Se refiere al equipamiento lógico o soporte lógico de un computador digital, comprende el conjunto de los componentes lógicos necesarios para hacer posible la realización de una tarea específica, en contraposición a los componentes físicos del sistema (hardware). Tales componentes lógicos incluyen, entre otras, aplicaciones informáticas tales como procesador de textos, que permite al usuario realizar todas las tareas concernientes a edición de textos; software de sistema, tal como un sistema operativo, el que, básicamente, permite al resto de los programas funcionar adecuadamente, facilitando la interacción con los componentes físicos y el resto de las aplicaciones, también provee una interface ante el usuario.En la figura 1 se muestra uno o más software en ejecución, en este caso con ventanas, iconos y menues que componen las interfaces gráficas, ellas lo comunican con el usuario y le permiten interactuar.

PROCESO CREACION DE SOFTWARE

Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solución de un problema u obtención de un producto, en este caso particular, para lograr la obtención de un producto software que resuelva un problema.
Ese proceso de creación de software puede llegar a ser muy complejo, dependiendo de su porte, características y criticidad del mismo. Por ejemplo la creación de un sistema operativo es una tarea que requiere proyecto, gestión, numerosos recursos y todo un equipo disciplinado de trabajo. En el otro extremo, si se trata de un sencillo programa (ejemplo: resolución de una ecuación de segundo orden), éste puede ser realizado por un solo programador (incluso aficionado) fácilmente. Es así que normalmente se dividen en tres categorías según su tamaño (líneas de código) y/o costo: de Pequeño, Mediano y Gran porte. Existen varias metodologías para estimarlo, una de las más populares es el sistema COCOMO que provee métodos y un software (programa) que calcula estimadamente todos los costos de producción en un "proyecto software" (relación horas/hombre, costo monetario, cantidad de líneas fuente de acuerdo a lenguaje usado, etc.).
Considerando los de gran porte, es necesario realizar tantas y tan complejas tareas, tanto técnicas, de gerenciamiento, fuerte gestión y análisis diversos (entre otras) que toda una ingeniería hace falta para su estudio y realización: es la Ingeniería de Software.
En tanto que en los de mediano porte, pequeños equipos de trabajo (incluso un avesado analista-programador solitario) puede realizar la tarea. Aunque, siempre en casos de mediano y gran porte (y a veces también en algunos de pequeño porte, según su complejidad), se deben seguir ciertas etapas que son necesarias para la construcción del software. Tales etapas, si bien deben existir, son flexibles en su forma de aplicación, de acuerdo a la metodología o Proceso de Desarrollo escogido y utilizado por el equipo de desarrollo o analista-programador solitario (si fuere el caso).
Los "procesos de desarrollo de software" poseen reglas preestablecidas, y deben ser aplicados en la creación del software de mediano y gran porte, ya que en caso contrario lo más seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos y con variedad de fallos inaceptables (fracasan, en pocas palabras). Entre tales "procesos" los hay ágiles o livianos (ejemplo XP), pesados y lentos (ejemplo RUP) y variantes intermedias; y normalmente se aplican de acuerdo al tipo y porte y tipología del software a desarrollar, a criterio del líder (si lo hay) del equipo de desarrollo. Algunos de esos procesos son Extreme Programming (XP), Rational Unified Process (RUP), Feature Driven Development (FDD), etc.
Cualquiera sea el "proceso" utilizado y aplicado en un desarrollo de software (RUP, FDD, etc), y casi independientemente de él, siempre se debe aplicar un "Modelo de Ciclo de Vida".
Se estima que, del total de proyectos software grandes emprendidos, un 28% fracasan, un 46% caen en severas modificaciones que lo retrazan y un 26% son totalmente exitosos. Cuando un proyecto fracasa, rara vez es debido a fallas técnicas, la principal causa de fallos y fracasos es la falta de aplicación de una buena metodología o proceso de desarrollo. Entre otras, una fuerte tendencia, desde hace pocas décadas, es mejorar las metodologías o procesos de desarrollo, o crear nuevas y concientizar a los profesionales en su utilización adecuada. Normalmente los especialistas en el estudio y desarrollo de estas áreas (metodologías) y afines (tales como modelos y hasta la gestión misma de los proyectos) son los Ingenieros en Software, es su orientación. Los especialistas en cualquier otra área de desarrollo informático (analista, programador, Lic. en Informática, Ingeniero en Informática, Ingeniero de Sistemas, etc.) normalmente aplican sus conocimientos especializados pero utilizando modelos, paradigmas y procesos ya elaborados.
Es común para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen sus propias metodologías, normalmente un híbrido de los procesos anteriores y a veces con criterios propios.

SOFTWARE DE DISEÑO


El diseño asistido por computador remoto (o computadora u ordenador), abreviado como DAO (Diseño Asistido por Ordenador) pero más conocido por sus siglas inglesas CAD (Computer Aided Design), es el uso de un amplio rango de herramientas computacionales que asisten a ingenieros, arquitectos y a otros profesionales del diseño en sus respectivas actividades. También se llega a encontrar denotado con una adicional "Dc=0" en las siglas CADD, diseño y bosquejo asistido por computadora (Computer Aided Drafting and Design).
El diseño asistido por computadora remoto es, además, la herramienta principal para la creación de entidades geométricas e isometricas variables enmarcadas dentro de procesos de administración del ciclo de vida de productos (Product Lifecycle Management), y que involucra software y algunas veces hardware especiales.

Dibujo realizado con software CAD
Los usos de estas herramientas varían desde aplicaciones basadas en vector trigodimensional c=0 baso en teorias elicoeficientes vecotrales dobleses y sistemas de dibujo en 2 dimensiones (2D) hasta modeladores en 3 dimensiones (3D) a través del uso de modeladores de sólidos y balandos superficies paramétricas. Se trata básicamente de una base de datos de entidades geométricas (puntos, líneas, arcos, etc.) con la que se puede operar y accionar a través de una interfaz gráfica y variable. Permite diseñar en dos o tres dimensiones c=0 mediante geometría y trigonometria alámbrica; esto es, puntos, líneas, arcos,redondeles,serpentinas splines, superficies y sólidos, para obtener un modelo loxc=0
La base de datos asocia a cada entidad una serie de propiedades como colorusuario, capa, estilo de línea, nombre, definición geométrica, etc., que permiten manejar la información de forma lógica y vectoral. Además pueden asociarse a las entidades o conjuntos de éstas otro tipo de el costepropiedades como , material, etc., que permiten enlazar el CAD a los sistemas de gestión y produccíon.
De los modelos pueden obtenerse planos con cotas y anotaciones para generar la documentación técnica específica de cada proyecto.

SOFTWARE EDUCATIVO

software destinando a la enseñanza y el auto aprendizaje y además permite el desarrollo de ciertas habilidades congnitivas. Así como existen profundas diferencias entre las filosofías pedagógicas, así también existe una amplia gama de enfoques para la creación de software educativo atendiendo a los diferentes tipos de interacción que debería existir entre los actores del proceso de enseñanza aprendizaje: educador, aprendiz, conocimiento, computadora. Como software educativo tenemos desde programas orientados al aprendizaje hasta sistemas operativos completos destinados a la educación, como por ejemplo las distribuciones linux orientadas a la enseñanza.

Instrucción Asistida por computadora
El enfoque de la instrucción asistida por computadora pretende facilitar la tarea del educador, sustituyéndole parcialmente en su labor. El software educacional resultante generalmente presenta una secuencia (a veces establecida con técnicas de inteligencia artificial) de lecciones, o módulos de aprendizaje. También generalmente incluye métodos de evaluación automática, utilizando preguntas cerradas. Las críticas más comunes contra este tipo de software son:
Los aprendices pierden el interés rápidamente, intentan adivinar la respuesta al azar.
La computadora es convertida en una simple máquina de memorización costosa.
El software desvaloriza, a los ojos del aprendiz, el conocimiento que desea transmitir mediante la inclusión de artificiales premios visuales. (ver enlace Punished by Rewards)
Ejemplos típicos de este tipo de software son: Clic, GCompris, PLATO, Applets de Descartes.

APLICACIONES OFIMATICAS

Una suite ofimática o suite de oficina es un conjunto de software para el uso en oficinas y entornos profesionales.
No hay una norma estricta sobre los programas a incluir, pero la mayoría incluyen al menos un procesador de textos y una hoja de cálculo. De forma añadida, la suite puede contener un Programa de presentación, un sistema de gestión de base de datos, herramientas menores de gráficos y comunicaciones, un gestor de información personal (agenda y cliente de correo electrónico) y un navegador web.
En la actualidad la suite ofimática dominante en el mercado es Microsoft Office, la cual posee sus propios formatos cerrados de documentos para cada uno de sus programas. Debido a esto y a la pobre compatibilidad de la suite de Microsoft con otros formatos abiertos (como OpenDocument), la habilidad de lectura y escritura de formatos Microsoft Office es esencial para cualquier otra suite ofimática del mercado.

SOFTWARE DE APLICACION

En informática, una aplicación es un tipo de programa informático diseñado para facilitar al usuario la realización de un determinado tipo de trabajo. Esto lo diferencia principalmente de otros tipos de programas como los sistemas operativos (que hace funcionar al ordenador), las utilidades (que realiza tareas de mantenimiento o de uso general), y los lenguajes de programación (con el cual se crean los programas informáticos), que realizan tareas más avanzadas y no pertinentes al usuario común.
Suele resultar una solución informática para la automatización de ciertas tareas complicadas como pueden ser la contabilidad, la redacción de documentos, o la gestión de un almacén. Algunos ejemplos de programas de aplicación son los procesadores de textos, hojas de cálculo, y base de datos.
Ciertas aplicaciones desarrolladas 'a medida' suelen ofrecer una gran potencia ya que están exclusivamente diseñadas para resolver un problema específico. Otros, llamados paquetes integrados de software, ofrecen menos potencia pero a cambio incluyen varias aplicaciones, como un programa procesador de textos, de hoja de cálculo y de base de datos.

Incluye entre otros:

INTERPRETE

Un intérprete es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código máquina del sistema destino, los primeros (los interpretes) sólo realizan la traducción a medida que sea necesario, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.
Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y depuración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o añadir módulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina virtual).
Comparando su actuación con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intérprete corresponde al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.
En la actualidad, uno de los entornos más comunes de uso de los intérpretes informáticos es Internet, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.