Para que un ordenador, teléfono inteligente u otro dispositivo digital funciones es necesario contar con varios elementos. Dentro de estos elementos tenemos los componentes físicos o de hardware del dispositivo. Estos son los procesadores, pantalla, teclados y muchos más. Ahora bien, algo tiene que indicarle a estos dispositivos cómo deben funcionar o qué operaciones realizar. Este es el otro componente fundamental de estos dispositivos y es conocido como software. Existen muchos tipos de software con muchísimas funcionalidades. Si quieres conocer qué es un software te invito a que continúes leyendo.
Tabla de contenidos
Definición de software
En el año 1957, John W. Tukey fue el primero en usar el término software para referirse al soporte lógico de un sistema computacional.
Existen muchas maneras de definir qué es un software, no obstante, el estándar IEEE 729 lo define como “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”.
Siguiendo esta definición, la conceptualización del software es algo más que un código fuente, binario o ejecutable. Es decir, la documentación, los datos, además de la información de usuario también forman parte del software. Esta parte de los sistemas de cómputos agrupan todo lo intangible, es decir, todo lo que no sea físico dentro del propio sistema.
La rama de la ciencia computacional que se encarga de estudiar y diseñar los procesos de construcción de software se conoce como Ingeniería de Software. Dentro de la ingeniería de software, este se define como toda información procesada por un sistema informático, es decir, el programa y los datos como un todo.
Todo software tiene una base teórica definida en el ensayo “Los números computables” de Alan Turing publicada en 1936. El control de las operaciones mediante la lectura de instrucciones almacenadas en memorias, fue introducido por Charles Babbage en el diseño de su máquina diferencial.
Clasificaciones de softwares
Realmente es muy difícil y engorroso establecer una clasificación de softwares. No obstante, para fines prácticos estos pueden ser agrupados en tres tipos diferentes: softwares de sistema, programación y aplicación.
Sistema
El objetivo del software de sistema es de hacer que el procesamiento interno sea totalmente transparente para el usuario. Este tipo de software controla la comunicación y ejecución de tareas por los dispositivos físicos. Este software provee al programador y al usuario interfaces de alto nivel, herramientas, controladores y diversas utilidades. Todo esto con la finalidad de tener un control global de todo el sistema computacional. Los softwares más comunes de sistema incluyen:
- Los sistemas operativos.
- Controladores de dispositivos.
- Herramientas para diagnósticos.
- Utilidades de optimización y corrección.
- Servidores.
Programación
Estos softwares son herramientas que permiten el desarrollo de otros softwares. Son utilizadas por personal calificado dentro de este campo conocidos como programadores. Existen muchas herramientas de este tipo que emplean codificaciones en diferentes lenguajes de programación. Estos softwares están compuestos, generalmente por:
- Un editor de texto utilizado para escribir las sentencias en un lenguaje de programación específico.
- Compilador encargado de traducir al sistema informático el lenguaje propio de la herramienta a un lenguaje de bajo nivel que sea comprendido por el sistema.
- Intérprete el cual se encarga de analizar y traducir el código a otros lenguajes a en la medida que sea necesario. No guardan el resultado de la ejecución de una instrucción.
- Enlazador encargado de generar un archivo necesario a partir del código, bibliotecas y demás dependencias generadas o utilidades durante el proceso de desarrollo.
- Depurador para analizar y probar el código en busca de errores.
Todas estas herramientas generalmente están unificadas en un entorno de desarrollo integrado IDE. Estos ofrecen interfaces visuales y funciones optimizadas para brindar facilidades durante el proceso de creación de software.
Aplicación
Un software de aplicación permite al usuario llevar a cabo tareas en contextos automatizados. Puede ser cualquier herramienta de gestión, edición o control que ejecute una tarea específica. Se orientan especialmente en el campo de los negocios. Dentro de estas tenemos:
- Control de otros sistemas automáticos.
- Software ofimático (Office Word, Libre Office, etc…)
- Aplicaciones educativas.
- Aplicaciones empresariales.
- Sistemas de base de datos.
- Aplicaciones para telecomunicaciones.
- Videojuegos.
Creación del software
El proceso de creación de un software está regido por diversas metodologías de desarrollo. Cada una tiene sus propias características y genera diferentes componentes durante el ciclo de vida del software llamados artefactos.
La elección de cada metodología depende de muchos factores. En especial se tiene en cuenta la envergadura de la aplicación, el tiempo disponible, el soporte futuro, el equipo de trabajos entre otros. Hay mecanismo ágiles para proyectos de corta duración, como XP, así como metodologías de grandes volúmenes de artefactos y largos tiempos de desarrollo como RUP.
Existen pasos comunes que generalmente implementa todas las metodologías. Cada uno de estos pasos tiene subprocesos adicionales de acuerdo al nivel de complejidad del software.
Paso 1: Análisis de requisitos
Este es uno de los pasos más importantes del desarrollo de software. En ese momento es cuando se define exactamente que se quiere crear. Durante esta fase se está en constante intercambio con el cliente, explicando y asimilando información para definir la mejor manera de implementar el software.
De acuerdo al modelo de desarrollo tomado, el análisis puede realizarse al comienzo del desarrollo o irse modificando y retroalimentando durante todo el proceso. Aquí se especifican todas las características funcionales y no funcionales del producto. Es una manera de indicar a los programadores cuales son las pautas a seguir y cómo debe ser modelado el software.
Paso 2: Diseño
Esta es otra fase del ciclo de vida del software. En este momento se debe definir cómo se cumplir los requisitos extraídos de la fase de análisis. Es decir, que estructura deberá tener el software para que los requisitos del cliente sean cumplidos.
Durante esta fase aún no se ha escrito ningún código. Se pueden diseñar prototipos de interfaces gráficas y esquemas de relaciones entre clases y subsistemas.
También se define la arquitectura del software. Esta no es más que la jerarquía de módulos del software y las relaciones entre estos. Por ejemplo, una arquitectura orientada a servicios (SOAP, Rest) es un software que consulta módulos de ejecución en un servidor y espera una respuesta de estos. Esto trae la ventaja que cualquier interfaz puede hacer uso de estos servicios en futuras versione u otros software sin necesidad de cambiar el procesamiento o lógica del negocio.
En el proceso final de esta fase se crean descripciones detalladas del sistema. Estas descripciones están bastante cerca del proceso de codificación.
Paso 3: Codificación del software
Esta es la etapa conocida comúnmente como la programación del sistema. Aquí es donde se escribe e implementa el código que permitirá ejecutar las funcionalidades que respondan a los requisitos del cliente.
De conjunto al proceso de programación se realizan depuraciones del código para eliminar posibles errores de semántica y sintaxis.
Es posible que el código adopte diferentes estados durante esta etapa, estos son:
- Código fuente, el cual es el código base escrito por el programador, del software y el que sostiene toda la estructura del mismo. Aquí se escriben las instrucciones del sistema en un lenguaje de programación determinado, siendo dividido en paquetes, bibliotecas, módulos, etc.
- Código objeto, el cual resulta del proceso de compilado del código fuente. Este código no puede ser ejecutado, siendo un intermediario entre el código fuente y el ejecutable. Si el lenguaje usado trabaja en modo de intérprete puro, el código objeto no es generado. Por el contrario, el compilador se encarga de ejecutar directamente cada línea de código.
- Código ejecutable, que no es más que el código binario que resulta de unir los fragmentos de código objeto con las rutinas y bibliotecas que sea necesarias. Este código genera uno o varios ficheros binarios que luego el sistema operativo carga en la memoria RAM para su ejecución directa. Este código comúnmente nombrado como código de máquina, ya que es completamente inteligible por el ordenador.
Paso 4: Pruebas de software
El periodo de pruebas está orientado a encontrar errores de programación y lógica de negocio que hayan sido introducido durante la fase de desarrollo. Estas pueden ser divididas en os grupos fundamentales:
- Unitarias, las cuales prueban pequeñas porciones independientes del software y con funcionalidades específicas.
- Integración, las cuales se encargan de testear el funcionamiento del software como un todo.
Para efectuar las pruebas es necesario contar con un juego de datos real o ficticio del negocio. Una vez se han obtenido los datos, se procede a elaborar los casos de pruebas que intentaran hacer fallar el sistema o comprobar su correcto funcionamiento.
El ultima paso del proceso de pruebas es el conocido como “Beta Test”. Para realizar esta prueba, el software es desplegado y liberado al uso de clientes, los cuales pueden captar errores y notificarlos para que sean solucionados.
Paso 5: Producción
El proceso de producción consiste en desplegar el software en el entorno del cliente y dejarlo a punto para su uso. Aquí ocurren los procesos de capacitación a los usuarios, entrega de manuales de ejecución e instalación, y por supuesto, el cobro por el producto final.
Paso 6: Soporte y mantenimiento
Este paso es opcional y puede ser requerido por el cliente. Este proceso se negocia entre los desarrolladores y el cliente para establecerlo en un periodo determinado de tiempo.
Durante este periodo, los desarrolladores deben realizar tareas de mantenimiento al software. Estas tareas pueden ser mejoras de rendimiento y optimización o corrección de bugs encontrados durante la ejecución.
Además, el cliente puede incluir requisitos funcionales nuevos que deban ser implementados y agregados a la herramienta.
Conclusiones
Los softwares cuentan con procesos evolutivos de acuerdo a su uso y aceptación por el cliente. Estos softwares generan versiones con nuevas funcionalidades a partir de la demanda de nuevos requisitos. Cuando se cumple el ciclo de vida de un software este no se usa con la misma intensidad o no se requiere más. Cuando esto ocurre se deja de brindar soporte al sistema y es imposible enconar nuevas versiones. Es común que los usuarios migren hacia herramientas que realicen las mismas tareas y cuenten con versiones actualizadas y soporte activo.
- ¡Contraseña Olvidada en Windows 7! ¿Cómo Vuelvo a Entrar?
- ¿ Cómo Grabar su Pantalla en Windows 11 ?
- ¿Alguna vez te has preguntado qué es un Service Pack?
- ¿Cómo Iniciar Windows 8 / 8.1 en Modo Seguro?
- ¿Cómo Quitar la Protección Contra Escritura en Windows 7/8/10?
- ¿Cómo Recuperar Fotos Borradas en Android?
- ¿Cómo abrir archivos EML en Windows?
- ¿Cómo acceder a tus fotos en iCloud desde tus dispositivos Apple, Windows y Android?
- ¿Cómo Acceder al Historial de Notificaciones en Android?
- ¿Cómo Activar Bluetooth en Windows 10?
- ¿Cómo Activar el Sistema Operativo Windows?
- ¿Cómo Actualizar Chrome en tu Mac?
- ¿Cómo Actualizar Firefox?
- ¿Cómo Actualizar los Drivers o Controladores en Windows?
- ¿Cómo agregar Cuentas de Administrador a tu Mac?
- ¿Cómo apagar Siri en tu iPhone o iPad?
- ¿Cómo Arrancar en Modo Seguro en Windows 10?
- ¿Cómo arreglar el bucle de reparación automática de Windows 10?
- ¿Cómo Asignar otra Ubicación para las Descargas en Chrome?
- ¿Cómo Bloquear las Aplicaciones de tu Dispositivo Android?
- ¿Cómo cambiar el tamaño del texto en tu Android?
- ¿Cómo Cambiar el Teclado en Android?
- ¿Cómo cambiar la dirección IP en tu Mac?
- ¿Cómo cambiar los programas predeterminados en Windows 10?
- ¿Cómo Cambiar tu Contraseña de Windows?
- ¿Cómo Configurar la Página de Inicio en Chrome?
- ¿Cómo configurar monitores duales en tu Mac?
- ¿Cómo Configurar Speech to Text en Android?
- ¿Cómo Configurar un Nuevo iPhone?
- ¿Cómo configurar Windows Update?
- ¿Cómo convertir archivos PDF a Word en tu Mac?
- ¿Cómo corregir un DPC Watchdog Violation en Windows 10?
- ¿Cómo Crear un ID de Apple?
- ¿Cómo Dar y Quitar Permisos a Aplicaciones en Android?
- ¿Cómo Desactivar las Notificaciones en tu Mac?
- ¿Cómo Desbloquear el Gestor de Arranque en tu Teléfono Android?
- ¿Cómo Descomprimir Archivos en tu Dispositivo Android?
- ¿Cómo Deshabilitar Cortana en Windows 10?
- ¿Cómo deshabilitar el Firewall de Windows en las versiones desde XP hasta Windows 10?
- ¿Cómo Elimino mi Contraseña de Windows?
- ¿Cómo Encontrar tu Teléfono en Caso de Extravío o Robo?
- ¿Cómo Escribir Comandos y Scripts AWK?
- ¿Cómo Grabar su Pantalla en Windows 10?
- ¿Cómo Grabar una LLamada Telefónica en Android?