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 Anderson & Dahlin 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.

Источники