stringtranslate.com

Программное обеспечение

Программное обеспечение, написанное на языке JavaScript

Программное обеспечение состоит из компьютерных программ , которые дают указания компьютеру о выполнении работы . [ 1 ] Программное обеспечение можно определить в широком смысле, включив в него проектную документацию, спецификации и наборы для тестирования. [2]

История программного обеспечения тесно связана с развитием цифровых компьютеров в середине 20-го века. Ранние программы были написаны на машинном языке, специфичном для аппаратного обеспечения. Введение языков программирования высокого уровня в 1958 году позволило использовать больше инструкций, понятных человеку, что сделало разработку программного обеспечения более простой и переносимой между различными архитектурами компьютеров . Программное обеспечение на языке программирования запускается через компилятор или интерпретатор для выполнения на оборудовании архитектуры. Со временем программное обеспечение стало сложным из-за развития сетей , операционных систем и баз данных .

Программное обеспечение можно разделить на два основных типа:

  1. операционные системы , которые управляют аппаратными ресурсами и предоставляют услуги для приложений
  2. прикладное программное обеспечение , которое выполняет определенные задачи для пользователей

Рост облачных вычислений привел к появлению новой модели поставки программного обеспечения — Software as a Service (SaaS). В SaaS приложения размещаются у провайдера и доступны через Интернет .

Процесс разработки программного обеспечения включает несколько этапов. Эти этапы включают проектирование программного обеспечения , программирование , тестирование , выпуск и обслуживание . Обеспечение качества и безопасность программного обеспечения являются критически важными аспектами разработки программного обеспечения, поскольку ошибки и уязвимости безопасности могут привести к сбоям системы и нарушениям безопасности. Кроме того, юридические вопросы, такие как лицензии на программное обеспечение и права интеллектуальной собственности, играют важную роль в распространении программных продуктов.

История

Интегральная схема является важнейшим изобретением для создания современных программных систем. [3]

Первое использование слова «программное обеспечение» приписывают математику Джону Уайлдеру Тьюки в 1958 году. [4] Первые программируемые компьютеры, которые появились в конце 1940-х годов, [5] были запрограммированы на машинном языке . Машинный язык сложен для отладки и непереносим на другие компьютеры. [6] Первоначально аппаратные ресурсы были дороже человеческих ресурсов . [7] По мере того, как программы становились сложными, производительность программистов стала узким местом. Введение языков программирования высокого уровня в 1958 году скрыло детали оборудования и выразило базовые алгоритмы в коде. [8] [9] Ранние языки включают Fortran , Lisp и COBOL . [9]

Типы

Диаграмма, показывающая, как пользователь взаимодействует с прикладным программным обеспечением на типичном настольном компьютере . Уровень прикладного программного обеспечения взаимодействует с операционной системой , которая, в свою очередь, взаимодействует с оборудованием . Стрелки указывают поток информации.

Существует два основных типа программного обеспечения:

Сравнение локального оборудования и программного обеспечения, инфраструктуры как услуги (IaaS), платформы как услуги (PaaS) и программного обеспечения как услуги (SaaS)

Программное обеспечение также можно классифицировать по способу его развертывания . Традиционные приложения приобретаются с бессрочной лицензией на определенную версию программного обеспечения, загружаются и запускаются на оборудовании, принадлежащем покупателю. [18] Развитие Интернета и облачных вычислений позволило создать новую модель — программное обеспечение как услуга (SaaS), [19] в которой поставщик размещает программное обеспечение (обычно построенное поверх арендованной инфраструктуры или платформ ) [20] и предоставляет использование программного обеспечения клиентам, часто в обмен на абонентскую плату . [18] К 2023 году продукты SaaS, которые обычно поставляются через веб-приложение , стали основным методом, с помощью которого компании доставляют приложения. [21]

Разработка и обслуживание программного обеспечения

Диаграмма традиционного жизненного цикла разработки программного обеспечения с 1988 года. Цифры представляют типичную стоимость каждой фазы.

Компании-разработчики программного обеспечения стремятся поставлять высококачественный продукт в срок и в рамках бюджета. Проблема заключается в том, что оценка усилий по разработке программного обеспечения часто бывает неточной. [22] Разработка программного обеспечения начинается с замысла проекта, оценки его осуществимости, анализа бизнес-требований и создания программного обеспечения . [23] [24] Большинство программных проектов ускоряют свою разработку за счет повторного использования или включения существующего программного обеспечения, либо в форме коммерческого готового программного обеспечения (COTS), либо программного обеспечения с открытым исходным кодом . [25] [26] Обеспечение качества программного обеспечения, как правило, представляет собой комбинацию ручного просмотра кода другими инженерами [27] и автоматизированного тестирования программного обеспечения . Из-за ограничений по времени тестирование не может охватить все аспекты предполагаемой функциональности программного обеспечения, поэтому разработчики часто сосредотачиваются на наиболее важной функциональности. [28] Формальные методы используются в некоторых критически важных для безопасности системах для подтверждения правильности кода, [29] в то время как тестирование приемки пользователем помогает гарантировать, что продукт соответствует ожиданиям клиентов. [30] Существует множество методологий разработки программного обеспечения , которые варьируются от выполнения всех шагов по порядку до параллельных и итеративных моделей. [31] Разработка программного обеспечения обусловлена ​​требованиями, полученными от потенциальных пользователей, в отличие от обслуживания, которое обусловлено такими событиями, как запрос на изменение. [32]

Часто программное обеспечение выпускается в незавершенном состоянии, когда у команды разработчиков заканчивается время или финансирование. [33] Несмотря на тестирование и обеспечение качества , практически все программное обеспечение содержит ошибки , из-за которых система не работает так, как задумано. Техническое обслуживание программного обеспечения после выпуска необходимо для устранения этих ошибок, когда они обнаруживаются, и для поддержания работоспособности программного обеспечения, поскольку окружающая среда со временем меняется. [34] Новые функции часто добавляются после выпуска. Со временем уровень технического обслуживания становится все более ограниченным, прежде чем полностью прекратиться, когда продукт изымается с рынка. [35] По мере старения программного обеспечения оно становится известным как устаревшее программное обеспечение и может оставаться в использовании в течение десятилетий, даже если не осталось никого, кто знает, как его исправить. [36] В течение срока службы продукта техническое обслуживание программного обеспечения, по оценкам, составляет 75 процентов или более от общей стоимости разработки. [37] [38]

Завершение программного проекта требует различных форм экспертизы, не только в области программирования , но и тестирования, написания документации, управления проектами , графического дизайна , пользовательского опыта , поддержки пользователей, маркетинга и сбора средств. [39] [40] [24]

Качество и безопасность

Качество программного обеспечения определяется как соответствие заявленным требованиям, а также ожиданиям клиентов. [41] Качество — это всеобъемлющий термин, который может относиться к правильному и эффективному поведению кода, его возможности повторного использования и переносимости или простоте модификации. [42] Обычно более экономически выгодно встраивать качество в продукт с самого начала, а не пытаться добавить его позже в процессе разработки. [43] Более качественный код снизит стоимость жизненного цикла как для поставщиков, так и для клиентов, поскольку он более надежен и прост в обслуживании . [44] [45] Сбои программного обеспечения в критически важных для безопасности системах могут быть очень серьезными, включая смерть. [44] По некоторым оценкам, стоимость некачественного программного обеспечения может достигать 20–40 процентов от продаж. [46] Несмотря на цель разработчиков поставлять продукт, который работает полностью так, как задумано, практически все программное обеспечение содержит ошибки. [47]

Развитие Интернета также значительно увеличило потребность в компьютерной безопасности , поскольку это позволило злоумышленникам проводить кибератаки удаленно. [48] [49] Если ошибка создает риск безопасности, она называется уязвимостью . [50] [51] Для исправления выявленных уязвимостей часто выпускаются исправления программного обеспечения , но те, которые остаются неизвестными ( нулевые дни ), а также те, которые не были исправлены, по-прежнему подлежат эксплуатации. [52] Уязвимости различаются по своей способности использоваться злоумышленниками , [50] и фактический риск зависит от характера уязвимости, а также от ценности окружающей системы. [53] Хотя некоторые уязвимости могут использоваться только для атак типа «отказ в обслуживании» , которые ставят под угрозу доступность системы, другие позволяют злоумышленнику внедрять и запускать собственный код (так называемое вредоносное ПО ) без ведома пользователя. [50] Чтобы предотвратить кибератаки, все программное обеспечение в системе должно быть разработано так, чтобы выдерживать внешние атаки и восстанавливаться после них. [49] Несмотря на усилия по обеспечению безопасности, значительная часть компьютеров заражена вредоносным ПО. [54]

Кодирование и выполнение

Языки программирования

Исходный код компьютерной программы на языке C. Серые линии — это комментарии , которые объясняют программу людям. При компиляции и запуске она выдаст вывод « Hello, world! ».

Языки программирования — это формат, в котором пишется программное обеспечение. С 1950-х годов были изобретены тысячи различных языков программирования; некоторые из них использовались десятилетиями, в то время как другие вышли из употребления. [55] Некоторые определения классифицируют машинный код — точные инструкции, непосредственно реализуемые аппаратным обеспечением — и язык ассемблера — более понятную человеку альтернативу машинному коду, операторы которой могут быть переведены один в один в машинный код — как языки программирования. [56] Программы, написанные на языках программирования высокого уровня, используемых для создания программного обеспечения, имеют несколько основных характеристик: для их написания не требуется знание машинного кода, их можно переносить на другие компьютерные системы, и они более лаконичны и понятны человеку, чем машинный код. [57] Они должны быть как понятными человеку, так и способными быть переведенными в однозначные инструкции для компьютерного оборудования. [58]

Составление, интерпретация и исполнение

Изобретение языков программирования высокого уровня произошло одновременно с компиляторами, необходимыми для их автоматического перевода в машинный код. [59] Большинство программ не содержат всех ресурсов, необходимых для их запуска, и полагаются на внешние библиотеки . Часть функции компилятора заключается в связывании этих файлов таким образом, чтобы программа могла быть выполнена оборудованием. После компиляции программа может быть сохранена как объектный файл , а загрузчик (часть операционной системы) может взять этот сохраненный файл и выполнить его как процесс на оборудовании компьютера. [60] Некоторые языки программирования используют интерпретатор вместо компилятора. Интерпретатор преобразует программу в машинный код во время выполнения , что делает их в 10–100 раз медленнее, чем компилируемые языки программирования. [61] [62]

Правовые вопросы

Обязанность

Программное обеспечение часто выпускается с осознанием того, что оно неполное или содержит ошибки. Покупатели сознательно покупают его в таком состоянии, что привело к правовому режиму, в котором ответственность за программные продукты значительно ограничена по сравнению с другими продуктами. [63]

Лицензии

Blenderбесплатная программа

Исходный код защищен законом об авторском праве , который наделяет владельца исключительным правом копировать код. Базовые идеи или алгоритмы не защищены законом об авторском праве, но часто рассматриваются как коммерческая тайна и скрываются такими методами, как соглашения о неразглашении . [64] Авторское право на программное обеспечение было признано с середины 1970-х годов и принадлежит компании, которая производит программное обеспечение, а не сотрудникам или подрядчикам , которые его написали. [65] Использование большей части программного обеспечения регулируется соглашением ( лицензией на программное обеспечение ) между владельцем авторских прав и пользователем. Проприетарное программное обеспечение обычно продается по ограничительной лицензии, которая ограничивает копирование и повторное использование (часто реализуется с помощью таких инструментов, как управление цифровыми правами (DRM)). [66] Лицензии с открытым исходным кодом , напротив, разрешают свободное использование и распространение программного обеспечения с небольшим количеством условий. [65] Большинство лицензий с открытым исходным кодом, используемых для программного обеспечения, требуют, чтобы модификации были выпущены по той же лицензии, что может создать сложности при повторном использовании программного обеспечения с открытым исходным кодом в проприетарных проектах. [67]

Патенты

Патенты предоставляют изобретателю исключительную, ограниченную по времени лицензию на новый продукт или процесс. [68] Идеи о том, чего может достичь программное обеспечение, не защищены законом, а конкретные реализации вместо этого защищены законом об авторском праве . В некоторых странах требование, чтобы заявленное изобретение оказывало влияние на физический мир, также может быть частью требований для того, чтобы патент на программное обеспечение считался действительным. [69] Патенты на программное обеспечение исторически были спорными . До дела 1998 года State Street Bank & Trust Co. против Signature Financial Group, Inc. патенты на программное обеспечение, как правило, не признавались в Соединенных Штатах. В том случае Верховный суд постановил, что бизнес-процессы могут быть запатентованы. [70] Патентные заявки являются сложными и дорогостоящими, а судебные иски, связанные с патентами, могут привести к увеличению стоимости продуктов. [71] В отличие от авторских прав, патенты, как правило, применяются только в юрисдикции, где они были выданы. [72]

Влияние

Компьютерное моделирование является одним из достижений, которые стало возможным благодаря программному обеспечению. [73]

Инженер Кейперс Джонс пишет, что «компьютеры и программное обеспечение вносят глубокие изменения во все аспекты человеческой жизни: образование, работу, войну, развлечения, медицину, юриспруденцию и все остальное». [74] Оно стало повсеместным в повседневной жизни в развитых странах . [75] Во многих случаях программное обеспечение дополняет функциональность существующих технологий, таких как бытовая техника и лифты . [76] Программное обеспечение также породило совершенно новые технологии, такие как Интернет , видеоигры , мобильные телефоны и GPS . [76] [77] Новые методы общения, включая электронную почту , форумы , блоги , микроблоги , вики и социальные сети , стали возможны благодаря Интернету. [78] Огромные объемы знаний, превосходящие любую бумажную библиотеку, теперь доступны с помощью быстрого поиска в Интернете . [77] Большинство творческих профессионалов перешли на программные инструменты, такие как автоматизированное проектирование , 3D-моделирование , цифровое редактирование изображений и компьютерная анимация . [73] Почти каждое сложное устройство управляется программным обеспечением. [77]

Ссылки

  1. ^ Stair, Ralph M. (2003). Принципы информационных систем, шестое издание . Томсон. стр. 16. ISBN 0-619-06489-7. Программное обеспечение состоит из компьютерных программ, которые управляют работой компьютера.
  2. ^ Остервейл 2013, стр. 61.
  3. Джонс 2014, стр. 19, 22.
  4. ^ Трейси 2021, стр. 2.
  5. ^ Габбриелли и Мартини 2023, с. 519.
  6. ^ Габбриелли и Мартини 2023, стр. 520–521.
  7. ^ Габбриелли и Мартини 2023, с. 522.
  8. ^ Габбриелли и Мартини 2023, с. 521.
  9. ^ ab Tracy 2021, стр. 1.
  10. ^ Андерсон и Далин 2014, с. 6.
  11. ^ abc Андерсон и Далин 2014, стр. 7.
  12. ^ Таненбаум и Бос 2023, стр. 5.
  13. ^ Андерсон и Далин 2014, стр. 7, 9, 13.
  14. ^ Андерсон и Далин, 2014, стр. 6–7.
  15. ^ Джонс 2014, стр. 121.
  16. ^ Трейси 2021, стр. 66.
  17. ^ Трейси 2021, стр. 72.
  18. ^ ab O'Regan 2022, стр. 386.
  19. ^ Кэмпбелл-Келли и Гарсия-Шварц 2015, стр. 156–157.
  20. ^ Розати и Линн 2020, стр. 23.
  21. Уотт 2023, стр. 4.
  22. О'Реган 2022, стр. 7.
  23. О'Реган 2022, стр. 5.
  24. ^ ab Dooley 2017, стр. 1.
  25. О'Реган 2022, стр. 18, 110–111.
  26. Трейси 2021, стр. 43, 76.
  27. О'Реган 2022, стр. 117–118.
  28. О'Реган 2022, стр. 54.
  29. О'Реган 2022, стр. 267.
  30. О'Реган 2022, стр. 20.
  31. О'Реган 2022, стр. 9.
  32. ^ Трипатия и Найк 2014, с. 26.
  33. ^ Рейфер 2012, стр. 22.
  34. ^ Трипати и Найк 2014, стр. 4, 27.
  35. ^ Трипатия и Найк 2014, с. 89.
  36. ^ Трейси 2021, стр. 3.
  37. ^ Варга 2018, стр. 6.
  38. ^ Улзиит и др. 2015, стр. 764.
  39. ^ Такер, Морелли и де Сильва 2011, с. 7.
  40. ^ Stull 2018, стр. 24–25.
  41. ^ Галин 2018, стр. 3.
  42. ^ Галин 2018, стр. 26.
  43. О'Реган 2022, стр. 68, 117.
  44. ^ ab O'Regan 2022, стр. 3, 268.
  45. ^ Варга 2018, стр. 12.
  46. О'Реган 2022, стр. 119.
  47. ^ Эблон и Богарт 2017, стр. 1.
  48. ^ Кэмпбелл-Келли и Гарсия-Шварц 2015, стр. 164.
  49. ^ ab O'Regan 2022, стр. 266.
  50. ^ abc Ablon & Bogart 2017, стр. 2.
  51. ^ Дасвани и Эльбаяди 2021, с. 25.
  52. ^ Дасвани и Эльбаяди, 2021, стр. 26–27.
  53. ^ Хабер и Хибберт 2018, стр. 5–6.
  54. ^ Китчин и Додж 2011, стр. 37.
  55. ^ Трейси 2021, стр. 117.
  56. ^ Трейси 2021, стр. 118–120.
  57. Трейси 2021, стр. 118–119.
  58. ^ Китчин и Додж 2011, стр. 26.
  59. ^ Трейси 2021, стр. 121.
  60. Трейси 2021, стр. 122–123.
  61. О'Реган 2022, стр. 375.
  62. ^ Sebesta 2012, стр. 28.
  63. Китчин и Додж 2011, стр. 36–37.
  64. О'Реган 2022, стр. 394–396.
  65. ^ ab O'Regan 2022, стр. 403.
  66. О'Реган 2022, стр. 394, 404.
  67. ^ Лангер 2016, стр. 44–45.
  68. О'Реган 2022, стр. 395.
  69. ^ Херардо Кон Диас, «Текст в машине: американское право об авторском праве и многообразие программного обеспечения, 1974–1978», Technology and Culture 57 (октябрь 2016 г.), 753–79.
  70. ^ Джонс 2014, стр. 19.
  71. О'Реган 2022, стр. 398.
  72. О'Реган 2022, стр. 399.
  73. ^ ab Manovich 2013, стр. 333.
  74. ^ Джонс 2014, стр. 32.
  75. ^ Китчин и Додж 2011, стр. iv.
  76. ^ ab Kitchin & Dodge 2011, стр. 5.
  77. ^ abc Jones 2014, стр. xxviii.
  78. ^ Манович 2013, стр. 329.

Источники