Software

El software se refiere a un conjunto de instrucciones, datos o programas que se utilizan para operar computadoras y ejecutar tareas específicas. A diferencia del hardware, que describe los aspectos físicos de una computadora, el software es la parte variable de un equipo y se puede considerar como el cerebro de la máquina.

Existen dos categorías principales de software: el software de aplicación y el software de sistema. El software de aplicación es aquel que cumple con una necesidad específica o realiza tareas específicas, mientras que el software de sistema está diseñado para ejecutar el hardware de una computadora y proporcionar una plataforma para que las aplicaciones se ejecuten.

Otros tipos de software incluyen el software de programación, que proporciona las herramientas necesarias para los desarrolladores de software; el middleware, que actúa como intermediario entre el software de sistema y las aplicaciones; y el software de controlador, que opera los dispositivos y periféricos de una computadora.

Historia del software

El término «software» no se utilizó hasta finales de la década de 1950. Durante este tiempo, aunque se estaban creando diferentes tipos de software de programación, generalmente no estaban disponibles comercialmente. En consecuencia, los usuarios, principalmente científicos y grandes empresas, a menudo tenían que escribir su propio software.

A continuación, se muestra una breve cronología de la historia del software:

21 de junio de 1948: Tom Kilburn, un científico de la computación, escribe la primera pieza de software del mundo para la computadora Manchester Baby en la Universidad de Manchester, Inglaterra.

Principios de la década de 1950: General Motors crea el primer sistema operativo para la máquina IBM 701 Electronic Data Processing Machine. Se llama General Motors Operating System (GM OS).

1958: el estadístico John Tukey acuña la palabra «software» en un artículo sobre programación informática.

Finales de la década de 1960: se introducen los disquetes y se utilizan en las décadas de 1980 y 1990 para distribuir software.

3 de noviembre de 1971: AT&T lanza la primera edición del sistema operativo Unix.

1977: Apple lanza el Apple II y el software de consumo despega.

1979: VisiCorp lanza VisiCalc para Apple II, el primer software de hoja de cálculo para computadoras personales.

1981: Microsoft lanza MS-DOS, el sistema operativo en el que se ejecutaban muchas de las primeras computadoras IBM. IBM comienza a vender software y el software comercial se vuelve accesible para el consumidor promedio.

Década de 1980: los discos duros se vuelven estándar en las PC y los fabricantes comienzan a incluir software en las computadoras.

1983: se lanza el movimiento de software gratuito con el proyecto GNU (GNU is not Unix) Linux de Richard Stallman para crear un sistema operativo similar a Unix con código fuente que se puede copiar, modificar y distribuir de forma gratuita.

1984: se lanza Mac OS para ejecutar la línea Macintosh de Apple.

Mediados de la década de 1980: se lanzan aplicaciones de software clave, incluidas AutoDesk AutoCAD, Microsoft Word y Microsoft Excel.

1985: se lanza Microsoft Windows 1.0.

1989: los CD-ROM se vuelven estándar y almacenan mucha más información que los disquetes. Los programas de software grandes se pueden distribuir de manera rápida, fácil y relativamente económica.

1991: se lanza el kernel de Linux, la base del sistema operativo Linux de código abierto.

1997: se introducen los DVD y pueden almacenar más datos que los CD, lo que permite incluir paquetes de programas, como Microsoft Office Suite, en un solo disco.

1999: Salesforce.com utiliza la computación en la nube para pionera en la entrega de software a través de internet.

2000: se pone de moda el término «software como servicio» (SaaS).

2007: se lanza el iPhone y las aplicaciones móviles comienzan a tener un gran impacto.

2010 hasta la actualidad: los DVD se vuelven obsoletos a medida que los usuarios compran y descargan software de internet y la nube. Los proveedores adoptan modelos basados en suscripción y SaaS se vuelve común.

En resumen, la arquitectura de aplicaciones es un aspecto esencial del desarrollo de software. Comprender los diferentes tipos de software, cómo funciona el software y cómo mantener la calidad del software es fundamental para el éxito en esta industria. A medida que la tecnología continúa evolucionando, es emocionante ver cómo evolucionará el software en el futuro.

Tipos de software

El software de aplicación es el tipo más común de software. Se trata de paquetes de software informático que realizan funciones específicas para el usuario. Pueden ser programas independientes o un grupo de programas que se ejecutan conjuntamente. Algunos ejemplos de aplicaciones modernas incluyen suites de oficina, software de gráficos, bases de datos y programas de gestión de bases de datos, navegadores web, procesadores de texto, herramientas de desarrollo de software, editores de imágenes y plataformas de comunicación.

Software de sistema

Es aquel que se utiliza para ejecutar los programas de aplicación y el hardware de una computadora. Coordinan las actividades y funciones del hardware y el software, y controlan las operaciones de la computadora.

El sistema operativo (SO) es el mejor ejemplo de software de sistema. Otros ejemplos incluyen el firmware, los traductores de lenguaje de programación y las utilidades del sistema.

El software de controlador o Driver

es otro tipo de software que se considera a menudo como parte del software de sistema. Estos controladores permiten que los dispositivos y periféricos conectados a una computadora realicen sus tareas específicas.

Cada dispositivo conectado a una computadora necesita al menos un controlador de dispositivo para funcionar correctamente.

Middleware

El middleware es un tipo de software que actúa como intermediario entre el software de aplicación y el software de sistema, o entre diferentes tipos de software de aplicación

Por ejemplo, el middleware permite que Microsoft Windows se comunique con Excel y Word, y también se utiliza para enviar solicitudes de trabajo remoto de una aplicación en una computadora con un sistema operativo específico a una aplicación en una computadora con un sistema operativo diferente. También permite que las aplicaciones más nuevas funcionen con aplicaciones heredadas.

Software de programación

El software de programación se utiliza para escribir código. Los programadores utilizan herramientas de programación y software de programación para desarrollar, escribir, probar y depurar otros programas de software.

Algunos ejemplos de software de programación incluyen ensambladores, compiladores, depuradores e intérpretes.

¿Cómo funciona el software?

El software proporciona las instrucciones y los datos necesarios para que las computadoras funcionen y satisfagan las necesidades de los usuarios. Sin embargo, los dos tipos diferentes de software, el software de aplicación y el software de sistema, funcionan de manera distinta.

El software de aplicación consta de muchos programas que realizan funciones específicas para los usuarios finales, como escribir informes y navegar por sitios web. Las aplicaciones también pueden realizar tareas para otras aplicaciones. Las aplicaciones en una computadora no pueden funcionar por sí solas; requieren el sistema operativo de una computadora junto con otros programas de software de sistema para funcionar.

Las aplicaciones de escritorio se instalan en una computadora del usuario y utilizan la memoria de la computadora para llevar a cabo tareas. Ocupan espacio en el disco duro de la computadora y no necesitan una conexión a internet para funcionar. Sin embargo, las aplicaciones de escritorio deben cumplir con los requisitos de los dispositivos de hardware en los que se ejecutan.

Por otro lado, las aplicaciones web solo requieren acceso a internet para funcionar; no dependen del hardware ni del software de sistema para ejecutarse. En consecuencia, los usuarios pueden lanzar aplicaciones web desde dispositivos que tienen un navegador web. Dado que los componentes responsables de la funcionalidad de la aplicación se encuentran en el servidor, los usuarios pueden lanzar la aplicación desde Windows, Mac, Linux o cualquier otro sistema operativo.

El software de sistema se encuentra entre el hardware de la computadora y el software de aplicación. Los usuarios no interactúan directamente con el software de sistema, ya que se ejecuta en segundo plano y se encarga de las funciones básicas de la computadora. Este software coordina el hardware y el software de un sistema para que los usuarios puedan ejecutar software de aplicación de alto nivel y realizar acciones específicas. El software de sistema se ejecuta cuando se inicia un sistema informático y continúa funcionando mientras el sistema esté encendido.

Diseño e implementación del software

El ciclo de vida del desarrollo de software es un marco que utilizan los gerentes de proyectos para describir las etapas y tareas asociadas con el diseño de software. Los primeros pasos en el ciclo de vida del diseño son planificar el esfuerzo y luego analizar las necesidades de las personas que utilizarán el software, creando requisitos detallados. Después del análisis inicial de los requisitos, la fase de diseño tiene como objetivo especificar cómo cumplir esos requisitos del usuario.

El siguiente paso es la implementación, donde se completa el trabajo de desarrollo y luego se realiza la prueba de software. La fase de mantenimiento implica cualquier tarea necesaria para mantener el sistema en funcionamiento.

El diseño de software incluye una descripción de la estructura del software que se implementará, los modelos de datos, las interfaces entre los componentes del sistema y, posiblemente, los algoritmos que utilizará el ingeniero de software.

El proceso de diseño de software transforma los requisitos del usuario en una forma que los programadores de computadoras pueden utilizar para codificar e implementar el software. Los ingenieros de software desarrollan el diseño del software de manera iterativa, agregando detalles y corrigiendo el diseño a medida que lo desarrollan.

Los diferentes tipos de diseño de software incluyen:

Diseño arquitectónico: es el diseño fundacional que identifica la estructura general del sistema, sus componentes principales y sus relaciones entre sí utilizando herramientas de diseño arquitectónico.

Diseño de alto nivel: es la segunda capa de diseño que se centra en cómo se puede implementar el sistema, junto con todos sus componentes, en forma de módulos compatibles con una pila de software. Un diseño de alto nivel describe las relaciones entre el flujo de datos y los diversos módulos y funciones del sistema.

Diseño detallado: es la tercera capa de diseño que se centra en todos los detalles de implementación necesarios para la arquitectura especificada.

Cómo mantener la calidad del software

La calidad del software se mide en función de si el software cumple con sus requisitos funcionales y no funcionales.

Los requisitos funcionales identifican lo que el software debe hacer. Incluyen detalles técnicos, manipulación y procesamiento de datos, cálculos o cualquier otra función específica que especifique lo que una aplicación pretende lograr.

Los requisitos no funcionales, también conocidos como atributos de calidad, determinan cómo debe funcionar el sistema. Estos requisitos incluyen la portabilidad, la recuperación ante desastres, la seguridad, la privacidad y la usabilidad.

Las pruebas de software detectan y resuelven problemas técnicos en el código fuente del software y evalúan la usabilidad general, el rendimiento, la seguridad y la compatibilidad del producto para garantizar que cumpla con sus requisitos.

Las dimensiones de la calidad del software incluyen las siguientes características:

  • Accesibilidad: grado en que un grupo diverso de personas, incluidas aquellas que requieren tecnologías adaptativas como el reconocimiento de voz y los ampliadores de pantalla, pueden usar cómodamente el software.
  • Compatibilidad: adecuación del software para su uso en diferentes entornos, como con diferentes sistemas operativos, dispositivos y navegadores.
  • Eficiencia: capacidad del software para funcionar bien sin desperdiciar energía, recursos, esfuerzo, tiempo o dinero.
  • Funcionalidad: capacidad del software para llevar a cabo sus funciones especificadas.
  • Instalabilidad: capacidad del software para instalarse en un entorno específico.
  • Localización: capacidad del software para funcionar en varios idiomas, zonas horarias y otras características similares.
  • Mantenibilidad: facilidad con la que se puede modificar el software para agregar y mejorar funciones, solucionar errores, etc.
  • Rendimiento: rapidez con la que el software funciona bajo una carga específica.
  • Portabilidad: capacidad del software para transferirse fácilmente de una ubicación a otra.
  • Confiabilidad: capacidad del software para realizar una función requerida en condiciones específicas durante un período de tiempo definido sin errores.
  • Escalabilidad: medida de la capacidad del software para aumentar o disminuir el rendimiento en respuesta a cambios en sus demandas de procesamiento.
  • Seguridad: capacidad del software para proteger contra el acceso no autorizado, invasión de la privacidad, robo, pérdida de datos, software malintencionado, etc.
  • Testabilidad: facilidad de prueba del software.
  • Usabilidad: facilidad de uso del software.

Para mantener la calidad del software una vez que se implementa, los desarrolladores deben adaptarlo constantemente para cumplir con los nuevos requisitos de los clientes y resolver los problemas que los clientes identifican. Esto incluye mejorar la funcionalidad, corregir errores y ajustar el código del software para prevenir problemas. La duración de un producto en el mercado depende de la capacidad de los desarrolladores para cumplir con estos requisitos de mantenimiento.

En cuanto al mantenimiento, existen cuatro tipos de cambios que los desarrolladores pueden realizar:

Correctivos: los usuarios a menudo identifican y reportan errores que los desarrolladores deben corregir, incluidos errores de codificación y otros problemas que impiden que el software cumpla con sus requisitos.

Adaptativos: los desarrolladores deben realizar cambios regularmente en su software para garantizar que sea compatible con los cambios en los entornos de hardware y software, como cuando se lanza una nueva versión del sistema operativo.

Perfectivos: estos son cambios que mejoran la funcionalidad del sistema, como mejorar la interfaz de usuario o ajustar el código del software para mejorar el rendimiento.

Preventivos: estos cambios se realizan para evitar que el software falle e incluyen tareas como la reestructuración y optimización del código.

Desarrollo moderno de software

DevOps es un enfoque organizativo que reúne a los equipos de desarrollo de software y operaciones de TI.

Promueve la comunicación y colaboración entre estos dos grupos. El término también describe el uso de prácticas de desarrollo de software iterativas que utilizan automatización e infraestructura programable. Este enfoque permite una mayor eficiencia y entrega continua de software.

Licencias de software y patentes

Una licencia de software es un documento legalmente vinculante que restringe el uso y la distribución del software. Por lo general, las licencias de software otorgan a los usuarios el derecho a una o más copias del software sin violar los derechos de autor. La licencia describe las responsabilidades de las partes que celebran el acuerdo y puede imponer restricciones sobre cómo se puede utilizar el software.

Los términos y condiciones de las licencias de software generalmente incluyen el uso justo del software, las limitaciones de responsabilidad, las garantías, las exclusiones y las protecciones en caso de que el software o su uso infrinjan los derechos de propiedad intelectual de otras personas.

Las licencias suelen ser para software propietario, que sigue siendo propiedad de la organización, grupo o individuo que lo creó; o para software gratuito, donde los usuarios pueden ejecutar, estudiar, modificar y distribuir el software. El software de código abierto es un tipo de software en el que el software se desarrolla de manera colaborativa y el código fuente está disponible de forma gratuita. Con las licencias de software de código abierto, los usuarios pueden ejecutar, copiar, compartir y cambiar el software de manera similar al software gratuito.

En las últimas dos décadas, los proveedores de software han dejado de vender licencias de software de forma individual y han adoptado un modelo de suscripción de software como servicio (SaaS). Los proveedores de software alojan el software en la nube y lo ponen a disposición de los clientes, quienes pagan una tarifa de suscripción y acceden al software a través de internet.

Si bien los derechos de autor pueden evitar que otros copien el código de un desarrollador, no pueden impedir que desarrollen el mismo software de forma independiente sin copiarlo. Una patente, por otro lado, permite a un desarrollador evitar que otra persona utilice los aspectos funcionales del software que el desarrollador reclama en una patente, incluso si esa otra persona desarrolló el software de forma independiente.

En general, cuanto más técnico sea el software, más probabilidades hay de que se pueda patentar. Por ejemplo, un producto de software podría obtener una patente si crea un nuevo tipo de estructura de base de datos o mejora el rendimiento y la función general de una computadora.

Scroll al inicio
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad