stringtranslate.com

Software

Las tarjetas de crédito son una de las muchas tecnologías cotidianas que dependen del software. [1]

El software consiste en programas informáticos que instruyen la ejecución de una computadora . [2]

Sobre la base de innovaciones anteriores en matemáticas y tecnología, se creó software para las computadoras digitales programables que surgieron a fines de la década de 1940 y que era necesario para darse cuenta de su utilidad. El primer software estaba estrechamente vinculado al hardware informático subyacente , pero con el tiempo, las capas inferiores del sistema se han estandarizado más y el software se ha vuelto cada vez más portátil entre diferentes sistemas y se ha abstraído del código de máquina subyacente . Los sistemas operativos administran los recursos de hardware y median entre diferentes aplicaciones que realizan tareas para el usuario. Los lenguajes de programación son el formato en el que se escribe el software y deben ser legibles por humanos y capaces de traducirse a instrucciones inequívocas para el hardware de la computadora. Se necesitan compiladores o intérpretes para vincular un programa con otro código del que depende y convertir el software en código de máquina que pueda ejecutarse en el hardware. Los programas se combinan entre sí y con aportaciones externas para poder realizar una tarea compleja.

La tarea central del desarrollo de software es programar y mantener el código fuente de un proyecto , pero el término también abarca concebir el proyecto, evaluar su viabilidad, analizar los requisitos comerciales, diseñar y lanzar el software . El aseguramiento de la calidad del software , incluida la revisión y prueba del código , es una parte esencial del proceso, ya que entregar un código de calidad reduce el costo de las fallas de confiabilidad , los ciberataques habilitados por vulnerabilidades de seguridad y los costos de mantenimiento . El mantenimiento suele consumir el 75 por ciento o más del presupuesto de ingeniería de por vida del software. El código fuente está protegido por la ley de derechos de autor , que confiere al propietario el derecho exclusivo de copiar el código. El software se ha vuelto omnipresente en la vida cotidiana de los países desarrollados . En muchos casos, el software aumenta la funcionalidad de tecnologías preexistentes, pero también ha permitido la creación de tecnologías completamente nuevas como Internet , videojuegos , redes sociales , teléfonos móviles y GPS .

Definición

El software se puede definir de manera más estricta como las instrucciones ejecutadas por el hardware de la computadora , o de manera más amplia, incluyendo otros conceptos, herramientas y métodos necesarios para crear un sistema ejecutable en el hardware de la computadora , como documentos de diseño, especificaciones y conjuntos de pruebas. [3] [4] Un programa individual o un archivo de código fuente consta de instrucciones y algoritmos inequívocos . Los programas se combinan entre sí y con aportaciones externas para poder realizar una tarea compleja. [5] [4] Herramientas como compiladores , ensambladores , diagramas de flujo , herramientas de diseño, simuladores y diagramas arquitectónicos (algunos de los cuales también son software) son esenciales para el diseño y ejecución de la mayoría de los sistemas informáticos. [4] Aunque el software es intangible , [6] [7] el software genera instrucciones para que el hardware de la computadora produzca efectos visibles y tangibles. [8]

Historia

07R01, un circuito integrado de Motorola . Los circuitos integrados fueron un invento esencial que permitió la creación de software. [9]

Una serie de inventos anteriores fueron necesarios para la creación de software, incluidas las matemáticas (especialmente los sistemas numéricos binarios y decimales , y el cero ) , los alfabetos , la escritura , las calculadoras mecánicas , [10] el álgebra booleana , los transistores , los circuitos integrados y los plásticos . [11] El software no podría existir sin las computadoras digitales , ya que fue creado específicamente para estos dispositivos y era necesario para realizar su utilidad. [12]

Los primeros ordenadores programables, que aparecieron a finales de los años 40, [13] estaban programados en lenguaje de máquina (instrucciones sencillas que podían ser ejecutadas directamente por el procesador). El lenguaje de máquina era difícil de depurar y no era portátil entre diferentes sistemas informáticos. [14] Inicialmente, los recursos de hardware eran escasos y costosos, mientras que los recursos humanos eran más baratos. [15] A medida que los programas se volvieron más complejos, la productividad del programador se convirtió en un cuello de botella. Esto llevó a la introducción de lenguajes de programación de alto nivel a mediados de los años cincuenta. Estos lenguajes abstrajeron los detalles del hardware y, en cambio, fueron diseñados para expresar algoritmos que los humanos pudieran entender más fácilmente. [16] [17] Como las instrucciones son distintas del hardware de la computadora subyacente, el software es relativamente reciente y se remonta a estos primeros lenguajes de programación de alto nivel como Fortran , Lisp y COBOL . [17] El primer uso de la palabra software se atribuye al matemático John Wilder Tukey en 1958. [4] Como esta primera definición de software era negativa (elementos de una computadora que no eran “tubos, transistores, cables, cintas y similares”) .”), dejó abierto a una comprensión amplia del concepto de software, como postula el historiador de la informática Nathan Ensmenger. Para los historiadores, el software es un sistema sociotécnico , lo que significa "un sistema en el que las máquinas, las personas y los procesos están inextricablemente interconectados y son interdependientes", en palabras de Ensmenger. [18] El historiador de la informática Thomas Haigh insiste en la idea de circulación y sostiene que “el software siempre implica empaquetar elementos dispares como código informático, prácticas, algoritmos, conocimiento tácito y derechos de propiedad intelectual en un artefacto adecuado para su difusión”. [19]

El primer software estaba estrechamente vinculado al hardware subyacente y, en consecuencia, no era portátil a otros sistemas. A medida que ha evolucionado, se puede crear y ejecutar software más nuevo en una amplia variedad de plataformas. Gran parte del aumento en la portabilidad se puede atribuir a la estandarización de aspectos de nivel inferior del sistema, como redes , sistemas operativos y bases de datos . Debido a que existen relativamente pocos sistemas operativos, TCP e IP se utilizan para prácticamente todas las redes y SQL se utiliza para muchas consultas de bases de datos, el software de aplicación puede ejecutarse más fácilmente en una amplia variedad de hardware. [20] El aumento del número de capas de abstracción en el sistema es un desarrollo relacionado: tanto en los lenguajes de programación donde permite una mejor estructura y una mayor modularidad , como también permite la virtualización de los recursos del sistema. Como resultado del aumento de la estabilidad y la abstracción, el software se ha vuelto cada vez más complejo y puede resolver más problemas. [21] Tanto la industria como el mundo académico han tenido una fuerte influencia en el desarrollo de diferentes aspectos del software. [22]

Tipos

Un diagrama que muestra cómo el usuario interactúa con el software de aplicación en una computadora de escritorio típica . La capa de software de aplicación interactúa con el sistema operativo , que a su vez se comunica con el hardware . Las flechas indican el flujo de información.

Hay dos tipos principales de software:

Comparación de hardware y software local, infraestructura como servicio (IaaS), plataforma como servicio (PaaS) y software como servicio (SaaS)

El software también se puede clasificar según cómo se implementa . Las aplicaciones tradicionales se compran con una licencia perpetua para una versión específica del software, se descargan y se ejecutan en el hardware que pertenece al comprador. [31] El auge de Internet y la computación en la nube permitió un nuevo modelo, el software como servicio (SaaS), [32] en el que el proveedor aloja el software (generalmente construido sobre infraestructura o plataformas alquiladas ) [33] y proporciona el uso del software a los clientes, a menudo a cambio de una tarifa de suscripción . [31] Para 2023, los productos SaaS, que generalmente se entregan a través de una aplicación web , se habían convertido en el método principal con el que las empresas entregan aplicaciones. [34]

Desarrollo y mantenimiento de software.

Diagrama de un ciclo de vida de desarrollo de software tradicional de 1988. Los números representan el costo típico de cada fase.

Las empresas de software tienen como objetivo ofrecer un producto de alta calidad a tiempo y por debajo del presupuesto. Un desafío es que la estimación del esfuerzo de desarrollo de software suele ser inexacta. [35] El desarrollo de software comienza con la concepción del proyecto, la evaluación de su viabilidad, el análisis de los requisitos del negocio y la realización de un diseño de software . [36] [37] La ​​mayoría de los proyectos de software aceleran su desarrollo reutilizando o incorporando software existente, ya sea en forma de software comercial listo para usar (COTS) o de código abierto . [38] [39] El aseguramiento de la calidad del software suele ser una combinación de revisión manual del código por parte de otros ingenieros [40] y pruebas de software automatizadas . Debido a limitaciones de tiempo, las pruebas no pueden cubrir todos los aspectos de la funcionalidad prevista del software, por lo que los desarrolladores suelen centrarse en la funcionalidad más crítica. [41] Se utilizan métodos formales en algunos sistemas críticos para la seguridad para demostrar la exactitud del código, [42] mientras que las pruebas de aceptación del usuario ayudan a garantizar que el producto cumpla con las expectativas del cliente. [43] Existe una variedad de metodologías de desarrollo de software , que varían desde completar todos los pasos hasta modelos concurrentes e iterativos. [44] El desarrollo de software está impulsado por requisitos tomados de los posibles usuarios, a diferencia del mantenimiento, que está impulsado por eventos como una solicitud de cambio. [45]

Con frecuencia, el software se lanza en un estado incompleto cuando al equipo de desarrollo se le acaba el tiempo o la financiación. [46] A pesar de las pruebas y el control de calidad , prácticamente todo el software contiene errores en los que el sistema no funciona según lo previsto. El mantenimiento del software posterior al lanzamiento es necesario para corregir estos errores cuando se encuentran y mantener el software funcionando a medida que el entorno cambia con el tiempo. [47] A menudo se añaden nuevas funciones después del lanzamiento. Con el tiempo, el nivel de mantenimiento se vuelve cada vez más restringido antes de interrumpirse por completo cuando el producto se retira del mercado. [48] ​​A medida que el software envejece , se le conoce como software heredado y puede permanecer en uso durante décadas, incluso si no queda nadie que sepa cómo solucionarlo. [6] Durante la vida útil del producto, se estima que el mantenimiento del software representa el 75 por ciento o más del costo total de desarrollo. [49] [50]

Completar un proyecto de software implica varias formas de experiencia, no solo en programadores de software sino también en pruebas, redacción de documentación, gestión de proyectos , diseño gráfico , experiencia de usuario , soporte al usuario, marketing y recaudación de fondos. [51] [52] [37]

Calidad y seguridad

La calidad del software se define como el cumplimiento de los requisitos establecidos, así como de las expectativas del cliente. [53] La calidad es un término general que puede referirse al comportamiento correcto y eficiente de un código, su reutilización y portabilidad , o la facilidad de modificación. [54] Generalmente es más rentable incorporar calidad al producto desde el principio que intentar agregarla más adelante en el proceso de desarrollo. [55] Un código de mayor calidad reducirá el costo de vida útil tanto para los proveedores como para los clientes, ya que es más confiable y más fácil de mantener . [56] [57] Las fallas de software en sistemas críticos para la seguridad pueden ser muy graves, incluida la muerte. [56] Según algunas estimaciones, el costo del software de mala calidad puede llegar a representar entre el 20 y el 40 por ciento de las ventas. [58] A pesar del objetivo de los desarrolladores de ofrecer un producto que funcione completamente según lo previsto, prácticamente todo el software contiene errores. [59]

El auge de Internet también aumentó considerablemente la necesidad de seguridad informática, ya que permitió a actores maliciosos realizar ataques cibernéticos de forma remota. [60] [61] Si un error crea un riesgo de seguridad, se denomina vulnerabilidad . [62] [63] Los parches de software a menudo se lanzan para corregir vulnerabilidades identificadas, pero aquellos que permanecen desconocidos ( días cero ), así como aquellos que no han sido parcheados, aún son susceptibles de explotación. [64] Las vulnerabilidades varían en su capacidad de ser explotadas por actores maliciosos, [62] y el riesgo real depende de la naturaleza de la vulnerabilidad, así como del valor del sistema circundante. [65] Aunque algunas vulnerabilidades solo pueden usarse para ataques de denegación de servicio que comprometen la disponibilidad de un sistema, otras permiten al atacante inyectar y ejecutar su propio código (llamado malware ), sin que el usuario sea consciente de ello. [62] Para frustrar los ataques cibernéticos, todo el software del sistema debe estar diseñado para resistir y recuperarse de ataques externos. [61] A pesar de los esfuerzos para garantizar la seguridad, una fracción significativa de las computadoras están infectadas con malware. [66]

Codificación y ejecución

Lenguajes de programación

El código fuente de un programa informático en C. Las líneas grises son comentarios que explican el programa a los humanos. Cuando se compila y ejecuta , dará el resultado " ¡Hola, mundo! ".

Los lenguajes de programación son el formato en el que se escribe el software. Desde la década de 1950 se han inventado miles de lenguajes de programación diferentes; algunos han estado en uso durante décadas, mientras que otros han caído en desuso. [67] Algunas definiciones clasifican el código de máquina (las instrucciones exactas implementadas directamente por el hardware) y el lenguaje ensamblador (una alternativa más legible por humanos al código de máquina cuyas declaraciones se pueden traducir uno a uno al código de máquina) como lenguajes de programación. [68] Los programas escritos en los lenguajes de programación de alto nivel utilizados para crear software comparten algunas características principales: no es necesario tener conocimiento del código de máquina para escribirlos, se pueden portar a otros sistemas informáticos y son más concisos y humanos. legible que el código de máquina. [69] Deben ser legibles por humanos y capaces de traducirse en instrucciones inequívocas para hardware informático. [70]

Compilación, interpretación y ejecución.

La invención de los lenguajes de programación de alto nivel fue simultánea con los compiladores necesarios para traducirlos automáticamente a código de máquina. [71] La mayoría de los programas no contienen todos los recursos necesarios para ejecutarlos y dependen de bibliotecas externas . Parte de la función del compilador es vincular estos archivos de tal manera que el programa pueda ser ejecutado por el hardware. Una vez compilado, el programa se puede guardar como un archivo objeto y el cargador (parte del sistema operativo) puede tomar este archivo guardado y ejecutarlo como un proceso en el hardware de la computadora. [72] Algunos lenguajes de programación utilizan un intérprete en lugar de un compilador. Un intérprete convierte el programa en código de máquina en tiempo de ejecución , lo que los hace entre 10 y 100 veces más lentos que los lenguajes de programación compilados. [73] [74]

Asuntos legales

Responsabilidad

El software a menudo se lanza sabiendo que está incompleto o contiene errores. Los compradores lo compran a sabiendas en este estado, lo que ha dado lugar a un régimen legal en el que la responsabilidad por los productos de software se reduce significativamente en comparación con otros productos. [75]

Licencias

Blender , un programa de software gratuito

El código fuente está protegido por la ley de derechos de autor que otorga al propietario el derecho exclusivo de copiar el código. Las ideas o algoritmos subyacentes no están protegidos por la ley de derechos de autor, pero a menudo se tratan como secretos comerciales y se ocultan mediante métodos como los acuerdos de confidencialidad . [76] Los derechos de autor del software han sido reconocidos desde mediados de la década de 1970 y pertenecen a la empresa que fabrica el software, no a los empleados o contratistas que lo escribieron. [77] El uso de la mayor parte del software se rige por un acuerdo ( licencia de software ) entre el titular de los derechos de autor y el usuario. El software propietario suele venderse bajo una licencia restrictiva que limita la copia y la reutilización (a menudo aplicada con herramientas como la gestión de derechos digitales (DRM)). [78] Las licencias de código abierto , por el contrario, permiten el uso gratuito y la redistribución del software con pocas condiciones. [77] La ​​mayoría de las licencias de código abierto utilizadas para el software requieren que las modificaciones se publiquen bajo la misma licencia, lo que puede crear complicaciones cuando el software de código abierto se reutiliza en proyectos propietarios. [79]

Patentes

Las patentes otorgan al inventor una licencia exclusiva y por tiempo limitado para un producto o proceso novedoso. [80] Las ideas sobre lo que el software podría lograr no están protegidas por la ley y las implementaciones concretas están cubiertas por la ley de derechos de autor . En algunos países, el requisito de que la invención reivindicada tenga un efecto en el mundo físico también puede ser parte de los requisitos para que una patente de software se considere válida. [81] Las patentes de software han sido históricamente controvertidas . Antes del caso de 1998 State Street Bank & Trust Co. contra Signature Financial Group, Inc. , las patentes de software generalmente no eran reconocidas en los Estados Unidos. En ese caso, la Corte Suprema decidió que los procesos comerciales podían patentarse. [11] Las solicitudes de patentes son complejas y costosas, y los juicios relacionados con patentes pueden aumentar el costo de los productos. [82] A diferencia de los derechos de autor, las patentes generalmente sólo se aplican en la jurisdicción donde fueron emitidas. [83]

Impacto

Las simulaciones generadas por computadora son uno de los avances que permite el software. [84]

El ingeniero Capers Jones escribe que "las computadoras y el software están provocando cambios profundos en todos los aspectos de la vida humana: educación, trabajo, guerra, entretenimiento, medicina, derecho y todo lo demás". [85] Se ha vuelto omnipresente en la vida cotidiana de los países desarrollados . [86] En muchos casos, el software aumenta la funcionalidad de las tecnologías existentes, como los electrodomésticos y los ascensores . [1] El software también generó tecnologías completamente nuevas, como Internet , videojuegos , teléfonos móviles y GPS . [1] [87] Internet permitió nuevos métodos de comunicación, incluidos el correo electrónico , foros , blogs , microblogging , wikis y redes sociales . [88] Ahora se encuentran disponibles enormes cantidades de conocimiento que exceden cualquier biblioteca en papel con una búsqueda rápida en la web . [87] La ​​mayoría de los profesionales creativos han pasado a herramientas basadas en software, como el diseño asistido por computadora , el modelado 3D , la edición de imágenes digitales y la animación por computadora . [84] Casi todos los dispositivos complejos están controlados por software. [87]

Referencias

  1. ^ abc Kitchin y Dodge 2011, pag. 5.
  2. ^ Escalera, Ralph M. (2003). Principios de los sistemas de información, sexta edición . Thompson. pag. 16.ISBN​ 0-619-06489-7. El software consiste en programas informáticos que gobiernan el funcionamiento de la computadora.
  3. ^ Osterweil 2013, pág. 61.
  4. ^ abcd Tracy 2021, pag. 2.
  5. ^ Kitchin y Dodge 2011, págs.3, 24.
  6. ^ ab Tracy 2021, pag. 3.
  7. ^ Kitchin y Dodge 2011, pag. 24.
  8. ^ Kitchin y Dodge 2011, págs. 3–4.
  9. ^ Jones 2014, págs.19, 22.
  10. ^ Jones 2014, págs.9, 21.
  11. ^ ab Jones 2014, pág. 19.
  12. ^ Jones 2014, pag. 22.
  13. ^ Gabbrielli y Martini 2023, pag. 519.
  14. ^ Gabbrielli y Martini 2023, págs. 520–521.
  15. ^ Gabbrielli y Martini 2023, pag. 522.
  16. ^ Gabbrielli y Martini 2023, pag. 521.
  17. ^ ab Tracy 2021, pag. 1.
  18. ^ Ensmenger, Nathan (2010). Los chicos de la informática toman el control: las computadoras, los programadores y la política de la experiencia técnica. Historia de la informática. Cambridge, Masa: MIT Press. ISBN 978-0-262-05093-7. OCLC  496282165.
  19. ^ Hocquet, Alejandro; Wieber, Federico; Gramelsberger, Gabriele; Hinsen, Konrad; Diesmann, Markus; Pasquini Santos, Fernando; Landstrom, Catharina; Peters, Benjamín; Kasprowicz, Dawid; Borrelli, Arianna; Roth, Phillip; Lee, Clarissa Ai Ling; Olteanu, Alin; Böschen, Stefan (1 de julio de 2024). "El software en la ciencia es omnipresente pero se pasa por alto". Ciencia Computacional de la Naturaleza . doi : 10.1038/s43588-024-00651-2 . ISSN  2662-8457.
  20. ^ Tracy 2021, pag. 249.
  21. ^ Tracy 2021, pag. 250.
  22. ^ Tracy 2021, págs. 250-251.
  23. ^ Anderson y Dahlin 2014, pág. 6.
  24. ^ abc Anderson y Dahlin 2014, pág. 7.
  25. ^ Tanenbaum y Bos 2023, pag. 5.
  26. ^ Anderson y Dahlin 2014, págs.7, 9, 13.
  27. ^ Anderson y Dahlin 2014, págs. 6–7.
  28. ^ Jones 2014, pag. 121.
  29. ^ Tracy 2021, pag. 66.
  30. ^ Tracy 2021, pag. 72.
  31. ^ ab O'Regan 2022, pag. 386.
  32. ^ Campbell-Kelly y García-Swartz 2015, págs. 156-157.
  33. ^ Rosati y Lynn 2020, pag. 23.
  34. ^ Vatio 2023, pag. 4.
  35. ^ O'Regan 2022, pag. 7.
  36. ^ O'Regan 2022, pag. 5.
  37. ^ ab Dooley 2017, pág. 1.
  38. ^ O'Regan 2022, págs. 18, 110-111.
  39. ^ Tracy 2021, págs.43, 76.
  40. ^ O'Regan 2022, págs. 117-118.
  41. ^ O'Regan 2022, pag. 54.
  42. ^ O'Regan 2022, pag. 267.
  43. ^ O'Regan 2022, pag. 20.
  44. ^ O'Regan 2022, pag. 9.
  45. ^ Tripatía y Naik 2014, p. 26.
  46. ^ Reifer 2012, pag. 22.
  47. ^ Tripatía y Naik 2014, págs.4, 27.
  48. ^ Tripatía y Naik 2014, p. 89.
  49. ^ Varga 2018, pag. 6.
  50. ^ Ulziit y col. 2015, pág. 764.
  51. ^ Tucker, Morelli y de Silva 2011, pág. 7.
  52. ^ Stull 2018, págs. 24-25.
  53. ^ Galin 2018, pag. 3.
  54. ^ Galin 2018, pag. 26.
  55. ^ O'Regan 2022, págs.68, 117.
  56. ^ ab O'Regan 2022, págs.3, 268.
  57. ^ Varga 2018, pag. 12.
  58. ^ O'Regan 2022, pag. 119.
  59. ^ Ablon y Bogart 2017, pag. 1.
  60. ^ Campbell-Kelly y García-Swartz 2015, p. 164.
  61. ^ ab O'Regan 2022, pag. 266.
  62. ^ abc Ablon y Bogart 2017, pag. 2.
  63. ^ Daswani y Elbayadi 2021, pag. 25.
  64. ^ Daswani y Elbayadi 2021, págs. 26-27.
  65. ^ Haber y Hibbert 2018, págs. 5-6.
  66. ^ Kitchin y Dodge 2011, pag. 37.
  67. ^ Tracy 2021, pag. 117.
  68. ^ Tracy 2021, págs. 118-120.
  69. ^ Tracy 2021, págs. 118-119.
  70. ^ Kitchin y Dodge 2011, pag. 26.
  71. ^ Tracy 2021, pag. 121.
  72. ^ Tracy 2021, págs. 122-123.
  73. ^ O'Regan 2022, pag. 375.
  74. ^ Sebesta 2012, pag. 28.
  75. ^ Kitchin y Dodge 2011, págs. 36-37.
  76. ^ O'Regan 2022, págs. 394–396.
  77. ^ ab O'Regan 2022, pag. 403.
  78. ^ O'Regan 2022, págs.394, 404.
  79. ^ Langer 2016, págs. 44–45.
  80. ^ O'Regan 2022, pag. 395.
  81. ^ Gerardo Con Díaz, "El texto en la máquina: la ley estadounidense de derechos de autor y las múltiples naturalezas del software, 1974-1978", Tecnología y Cultura 57 (octubre de 2016), 753–79.
  82. ^ O'Regan 2022, pag. 398.
  83. ^ O'Regan 2022, pag. 399.
  84. ^ ab Manovich 2013, pag. 333.
  85. ^ Jones 2014, pag. 32.
  86. ^ Kitchin y Dodge 2011, pag. IV.
  87. ^ abc Jones 2014, pag. xxviii.
  88. ^ Manovich 2013, pag. 329.

Fuentes