- Se conoce como software al equipamiento lógico o soporte lógico de un sistema informático, comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas, en contra posició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 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.
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 le procura al usuario y, 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 comandospara 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)
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 un producto
software que resuelva un problema específico.
El 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 (por ejemplo, la 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) 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 y provee una aproximación de 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 complejas tareas, tanto técnicas como de gerencia, una
fuerte gestión y análisis diversos (entre otras cosas), la complejidad de ello
ha llevado a que desarrolle una ingeniería específica para tratar su estudio y
realización: es conocida como Ingeniería de Software.
En tanto que en los de mediano
porte, pequeños equipos de trabajo (incluso un avezado analista-programador solitario)
pueden 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 por el 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. Normalmente se aplican de acuerdo al tipo y porte del software a
desarrollar, a criterio del líder (si lo hay) del equipo de desarrollo. Algunos
de esos procesos son Programación Extrema (en inglés eXtreme
Programming o XP), Proceso Unificado de Rational (en
inglés Rational Unified Process o RUP), Feature Driven Development (FDD), etc.
Cualquiera sea el «proceso»
utilizado y aplicado al desarrollo del software (RUP, FDD, XP, etc), y casi
independientemente de él, siempre se debe aplicar un «modelo de ciclo de vida».6
Se estima que, del total de
proyectos software grandes emprendidos, un 28% fracasan, un 46% caen en severas
modificaciones que lo retrasan y un 26% son totalmente exitosos. 7
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 de la informática a 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
«metodologías propias», normalmente un híbrido de los procesos anteriores y a
veces con criterios propios.
El proceso de desarrollo puede
involucrar numerosas y variadas tareas6 ,
desde lo administrativo, pasando por lo técnico y hasta la gestión y el
gerenciamiento. Pero, casi rigurosamente, siempre se cumplen ciertas etapas
mínimas; las que se pueden resumir como sigue:
- Captura, elicitación8 , especificación y análisis de requisitos (ERS)
- Diseño
- Codificación
- Pruebas (unitarias y de integración)
- Instalación y paso a producción
- Mantenimiento
En las anteriores etapas pueden
variar ligeramente sus nombres, o ser más globales, o contrariamente, ser más
refinadas; por ejemplo indicar como una única fase (a los fines documentales e
interpretativos) de «análisis y diseño»; o indicar como «implementación» lo que
está dicho como «codificación»; pero en rigor, todas existen e incluyen,
básicamente, las mismas tareas específicas.
En el apartado 4 del presente
artículo se brindan mayores detalles de cada una de las etapas indicadas.

No hay comentarios:
Publicar un comentario