El software puede
aplicarse a numerosas situaciones del mundo real. En primer lugar, a
todos aquellos problemas para los que se haya establecido un conjunto
específico de acciones que lleven a su resolución (esto es, un
algoritmo). En estos casos, utilizaremos lenguajes de programación
procedimentales para implementar estos algoritmos. También puede
aplicarse a situaciones en las que el problema puede describirse
formalmente, por lo general en forma recursiva. En estos casos no
necesitamos describir el método de resolución, es decir cómo se resuelve
el problema, sino que bastará con describir en problema en sí,
indicando cuál es la solución deseada, y utilizaremos lenguajes
declarativos para ello. También puede aplicarse a problemas que los
humanos resolvemos utilizando multitud de reglas heurísticas
posiblemente contradictorias, para lo cual utilizaremos un sistema
experto e incluso para problemas de los cuales no tenemos una idea clara
de cómo se resuelven, pero de los que conocemos cuál es la solución
apropiada para algunos ejemplos de los datos de entrada. En este caso
utilizaremos redes neuronales.
En cualquier caso, es difícil establecer categorías genéricas
significativas para las aplicaciones del software. Conforme aumenta la
complejidad del mismo se hace más complicado establecer compartimentos
nítidamente separados. No obstante la siguiente clasificación ha venido
aceptándose tradicionalmente:
Software de sistemas
Está formado por todos aquellos programas cuya finalidad es servir al
desarrollo o al funcionamiento de otros programas. Estos programas son
muy variados: editores, compiladores, sistemas operativos, entornos
gráficos, programas de telecomunicaciones, etc. pero se caracterizan por
estar muy próximos al hardware, por ser utilizados concurrentemente por
numerosos usuarios y por tratarse de programas de amplia difusión, no
estando diseñados normalmente a medida. Esto permite un mayor esfuerzo
en su diseño y optimización, pero también les obliga a ser muy fiables,
cumpliendo estrictamente las especificaciones para las que fueron
creados. Un ejemplo de este tipo de software son los sistemas
operativos, como Windows y Unix.
Software de tiempo real
Esta formado por todos aquellos programas que miden, analizan y
controlan los sucesos del mundo real a medida que ocurren, debiendo
reaccionar de forma correcta a los estímulos de entrada en un tiempo
máximo prefijado. Deben, por tanto, cumplir unos requisitos temporales
muy estrictos y, dado que los procesos que controlan pueden ser
potencialmente peligrosos, tienen que ser fiables y tolerantes a fallos.
Por otro lado, no suelen ser muy complejos y precisan de poca
interacción con el usuario. Un sistema de tiempo real es aquel en el que
para que las operaciones computacionales estén correctas no depende
solo de que la lógica e implementación de los programas computacionales
sea correcto, sino también en el tiempo en el que dicha operación
entregó su resultado. Si las restricciones de tiempo no son respetadas
el sistema se dice que ha fallado. Un Buen ejemplo es el de un robot que
necesita tomar una pieza de una banda sinfín. Si el Robot llega tarde,
la pieza ya no estará donde debía recogerla. Por lo tanto el trabajo se
llevó acabo incorrectamente, aunque el robot haya llegado al lugar
adecuado. Si el robot llega antes de que la pieza llegue, la pieza aun
no estará ahí y el robot puede bloquear su paso.
Software de gestión
El procesamiento de información de gestión constituye, casi desde los
inicios de la informática la mayor de las áreas de aplicación de los
ordenadores. Estos programas utilizan grandes cantidades de información
almacenadas en bases de datos con objeto de facilitar las transacciones
comerciales o la toma de decisiones. Además de las tareas convencionales
de procesamiento de datos, en las que el tiempo de procesamiento no es
crítico y los errores pueden ser corregidos a posteriori, incluyen
programas interactivos que sirven de soporte a transacciones
comerciales.
Software científico y de ingeniería
Otro de los campos clásicos de aplicación de la informática. Se
encarga de realizar complejos cálculos sobre datos numéricos de todo
tipo. En este caso la corrección y exactitud de las operaciones que
realizan es uno de los requisitos básicos que deben de cumplir.
El campo del software científico y de ingeniería se ha visto ampliado
últimamente con el desarrollo de los sistemas de diseño, ingeniería y
fabricación asistida por ordenador (CAD, CAE y CAM), los simuladores
gráficos y otras aplicaciones interactivas que lo acercan más al
software de tiempo real e incluso al software de sistemas.
Software de ordenadores personales
El uso de ordenadores personales y de uso doméstico se ha
generalizado a lo largo de la pasada década. Aplicaciones típicas son
los procesadores de textos, las hojas de cálculo, bases de datos,
aplicaciones gráficas, juegos, etc. Son productos de amplia difusión
orientados a usuarios no profesionales, por lo que entre sus requisitos
se encuentran la facilidad de uso y el bajo coste. Un ejemplo de este
tipo de software es el paquete de Office.
Software empotrado
Software empotrado es aquel que va instalado en otros productos
industriales, como por ejemplo la electrónica de consumo, dotando a
estos productos de un grado de inteligencia cada vez mayor. Se aplica a
todo tipo de productos, desde un vídeo doméstico hasta un misil con
cabeza atómica, pasando por algunos sistemas de control de los
automóviles, y realiza funciones muy diversas, que pueden ir desde
complicados cálculos en tiempo real a sencillas interacciones con el
usuario facilitando el manejo del aparato que los incorpora. Comparten
características con el software de sistemas, el software de tiempo real,
el software de ingeniería y científico y el software de ordenadores
personales. Otro ejemplo de los productos que utilizan este tipo de
software son los telefonos celulares.
Software de inteligencia artificial
El software basado en lenguajes procedimentales es útil para realizar
de forma rápida y fiable operaciones que para el ser humano son
tediosas e incluso inabordables. Sin embargo, es difícilmente aplicable a
problemas que requieran la aplicación de funciones intelectuales más
elevadas, por triviales que nos puedan parecer. El software de
inteligencia artificial trata de dar respuesta a estas deficiencias,
basándose en el uso de lenguajes declarativos, sistemas expertos y redes
neuronales.
Un ejemplo de este software es Smart Airport Operations Center,
programa de logística creado por Ascent Technology, el cual es utilizado
en los areopuertos, que computacionalmente, son el mayor reto mundial
para resolver problemas. Un cambio (atraso, lluvia, falta de un
empleado) genera el efecto dominó. Con el susodicho software, este pulpo
balancea todos los detalles hasta que todo cuadre.
Son logísticas, pero el problema es más sutil que una ecuación
gigante. No hay manera de “solucionar” un aeropuerto con sus miles de
variables. A cambio, los algoritmos genéticos usan la selección natural,
la mutación, el cruce de escenarios subóptimos, permitiendo que el
programa encuentre la mejor opción. La gente hace esto instintivamente
en la vida diaria.
No hay comentarios:
Publicar un comentario