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







Пользователь
Прикладное программное обеспечение
Операционная система
Аппаратное обеспечение


Взаимодействие между пользователем, прикладным ПО, операционной системой и аппаратным обеспечением.


Програ́ммное обеспе́чение[1][2][3] (допустимо также произношение обеспече́ние[3][4][5]) (ПО) — программа или множество программ, используемых для управления компьютером (ISO/IEC 26514:2008)[6].


Другие определения из международных и российских стандартов:



  • совокупность программ системы обработки информации и программных документов[7], необходимых для эксплуатации этих программ (ГОСТ 19781-90[8]);

  • все или часть программ, процедур, правил и соответствующей документации системы обработки информации (ISO/IEC 2382-1:1993)[9][10];

  • компьютерные программы, процедуры и, возможно, соответствующая документация и данные, относящиеся к функционированию компьютерной системы (IEEE Std 829—2008)[11].


Программное обеспечение является одним из видов обеспечения вычислительной системы, наряду с техническим (аппаратным), математическим, информационным, лингвистическим, организационным, методическим и правовым обеспечением[12].


Академические области, изучающие программное обеспечение, — это информатика и программная инженерия.


В компьютерном сленге часто используется слово «софт», произошедшее от английского слова «software», которое в этом смысле впервые применил в статье журнала American Mathematical Monthly математик из Принстонского университета Джон Тьюки в 1958 году[13].




Содержание






  • 1 История


    • 1.1 Предыстория. Зарождение программирования


    • 1.2 Ранняя история. Корпоративное ПО


    • 1.3 Персональные компьютеры и программное обеспечение для массового потребителя




  • 2 Классификация ПО


    • 2.1 Системное программное обеспечение


    • 2.2 Прикладное программное обеспечение




  • 3 Лицензия


  • 4 См. также


  • 5 Примечания


  • 6 Литература





История |


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




  • разработка программного обеспечения на заказ;


  • программное обеспечение для корпоративного потребителя;


  • программное обеспечение для массового потребителя.


Перечисленное появлялось друг за другом с интервалом примерно в десятилетие[14].



Предыстория. Зарождение программирования |


Первую программу написала Ада Лавлейс для разностной машины Чарльза Бэббиджа, однако поскольку эта машина так и не была достроена, разработки леди Лавлейс остались чисто теоретическими[15].


Первая теория, касающаяся программного обеспечения, была предложена английским математиком Аланом Тьюрингом в 1936 году в эссе «On computable numbers with an application to the Entscheidungsproblem» («О вычислимых числах с приложением к проблеме разрешения»)[16][17][18]. Он создал так называемую машину Тьюринга, математическую модель абстрактной машины, способной выполнять последовательности рудиментарных операций, которые переводят машину из одного фиксированного состояния в другое. Главная идея заключалась в математическом доказательстве факта, что любое наперёд заданное состояние системы может быть всегда достигнуто последовательным выполнением конечного набора элементарных команд (программы) из фиксированного набора команд.


Первые электронно-вычислительные машины 1940—1950-х годов перепрограммировались путём переключения тумблеров и переподключения кабелей, что требовало глубокого понимания их внутреннего устройства. К таким машинам, в частности, относился ENIAC (который, впрочем, впоследствии модифицировали, чтобы он мог, по крайней мере частично, программироваться с помощью перфокарт)[19].


Важным шагом в сторону современных компьютеров был переход к архитектуре Джона фон Неймана, впервые воплощённой в Великобритании, в разработанном под руководством Дж. Р. Уомерзли[en] и при участии Алана Тьюринга компьютере, известном как Марк I. Первая программа, хранимая в памяти компьютера, была запущена на нём 21 июня 1941 года. Для облегчения программирования этой машины Тьюринг придумал систему сокращённого кодирования, в которой для представления двоичного машинного кода использовалась последовательность телетайпных символов, выводимых на перфоленту[20].


Один из сотрудников Тьюринга, Джон Мочли, став позднее (вместе с Джоном Преспером Эккертом) руководителем и основателем компании Eckert–Mauchly Computer Corporation, разработавшей такие ЭВМ, как BINAC и UNIVAC, поручил своим сотрудникам создать транслятор алгебраических формул. Хотя эта амбициозная цель в 1940-х годах и не была достигнута, под руководством Мочли был разработан так называемый «Краткий код», в котором операции и переменные кодировались двухсимвольными сочетаниями. Краткий код был реализован с помощью интерпретатора[21]. Грейс Хоппер, работая с начала 1950-х годов над набором математических подпрограмм для UNIVAC I, изобрела программу-компоновщик «A-0[en]», которая по заданному идентификатору осуществляла выборку нужной подпрограммы из библиотеки, хранящейся на магнитной ленте, и записывала её в отведённое место оперативной памяти[22].


В 1950-е годы появились первые высокоуровневые языки программирования, Джон Бэкус разработал FORTRAN, а Грейс Хоппер — COBOL. Подобные разработки значительно упростили написание прикладного программного обеспечения, которое писала тогда каждая фирма, приобретающая вычислительную машину[23].


В начале 1950-х годов понятие программного обеспечения ещё не сложилось. Так не говорилось о нём ничего в вышедшей в январе 1952 года в журнале Fortune статье «Office Robots», описывавшем компьютеры Univac. Хотя в статье уже рассказывается о компьютере как об универсальном устройстве, процесс программирования в этой статье был анахронически описан как «переключение тумблеров»[24]. Однако к середине 50-х годов уже вполне сложилась разработка программного обеспечения на заказ[14], хотя сам термин «программное обеспечение» ещё не использовался, тогда говорили просто о «программировании на заказ» или «программистском обслуживании»[25]. Первой программной фирмой стала компания System Development Corporation, созданная в 1956 году на базе принадлежащей правительству США фирме RAND Corporation[26]. На этом этапе заказчиками программного обеспечения (уникального и не тиражируемого) были крупные корпорации и государственные структуры, и стоимость в один миллион долларов за программу не была чем-то необычным[27].



Ранняя история. Корпоративное ПО |


Собственно сам термин «программное обеспечение» вошёл в широкий обиход с начала 1960-х годов, когда стало актуальным разграничение команд, управляющих компьютером, и его физических компонентов — аппаратного обеспечения[28]. Тогда же и началось становление индустрии программного обеспечения, как самостоятельной отрасли. Первой компанией по разработке ПО стала основанная в 1959 году Роем Наттом[en] и Флетчером Джоунсом[en] Computer Sciences Corporation[en] с начальным капиталом в 100 долларов. Первыми клиентами CSC и появившихся вслед за нею софтверных компаний были сверхкрупные корпорации и государственные организации, вроде NASA[29], и фирма продолжала работать на рынке заказного ПО, как и другие первые программистские частные стартапы, такие как Computer Usage Company[en] (CUC)[26].


Первыми самостоятельно выпущенными программными продуктами, не поставляемыми в комплекте с компьютерным оборудованием, были выпущенный фирмой Applied Data Research в 1965 году генератор компьютерной документации AUTOFLOW, автоматически рисующий блок-схемы, и транслятор языка программирования MARK-IV[en], разработанный в 1960—1967 годах в Informatics, Inc.[25][30] Становление рынка корпоративного программного обеспечения тесно связано с появлением семейства компьютеров IBM System/360. Достаточно массовые, относительно недорогие вычислительные машины, совместимые друг с другом на уровне программного кода, открыли дорогу тиражируемому программному обеспечению[31].


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


В ноябре 1966 года журнал Business Week впервые обратился к теме индустрии программного обеспечения. Статья называлась «Software Gap — A Growing Crisis for Computers» и рассказывала как о перспективности этого бизнеса, так и о кризисе, связанном с нехваткой программистов[24]. Типичные программные продукты того времени служили для автоматизации общих для бизнеса задач, таких, как начисление заработной платы или автоматизации бизнес-процессов таких предприятий среднего бизнеса, как производственное предприятие или коммерческий банк. Стоимость такого ПО, как правило, была между пятью и ста тысячами долларов[25].



Персональные компьютеры и программное обеспечение для массового потребителя |


Появление в 1970-х годах первых персональных компьютеров (таких, как Альтаир 8800) создало предпосылки и для зарождения массового рынка программного обеспечения. Изначально программы для персональных компьютеров распространялись в «коробочной» форме через торговые центры или по почте и имели цену 100—500 долларов США[25].


Знаковыми для зарождающего массового рынка программного обеспечения стали такие продукты, как электронная таблица VisiCalc, идея которой пришла Дэниелу Бриклину, когда тот, будучи выпускником MIT и инженером-программистом в DEC, посещал курсы в Гарвардской школе бизнеса и хотел облегчить себе утомительные финансовые расчёты[32], и текстовый процессор WordStar[en], разработку которого начал Сеймур Рубинштейн[en], тщательно изучив потребности рынка[33]. О VisiCalc впервые заговорили, как о killer application, то есть компьютерном приложении, которое самим фактом своего существования доказывает нужность (и, зачастую, необходимость покупки) платформы, для которой реализована такая программа. Для VisiCalc и WordStar такой платформой стали персональные компьютеры, которые благодаря ним из богатой игрушки для гиков стали рабочим инструментом. С них началась микрокомпьютерная революция, а у этих программ появились конкуренты: электронные таблицы SuperCalc, Lotus 1-2-3, система управления базами данных dBase II, текстовый процессор WordPerfect и др.[34] Текстовые процессоры, электронные таблицы, системы управления базами данных, а также графические редакторы вскоре стали основными продуктами рынка программного обеспечения для персональных компьютеров[35].


Массовое тиражирование позволило снизить к середине 1990 годов стоимость программного обеспечения для персональных компьютеров до ста — пятисот долларов[25], при этом бизнес производителей ПО приобрёл определённое сходство с бизнесом звукозаписывающих компаний[34].



Классификация ПО |


Подходы к классификации ПО достаточно подробно формализованы в международном стандарте ISO/IEC 12182[36]. В частности, первая версия стандарта предусматривала 16 критериев классификации программных средств:



  • по режиму эксплуатации;

  • по масштабу;

  • по стабильности;

  • по функции;

  • по требованию защиты;

  • по требованию надежности;

  • по требуемым рабочим характеристикам;

  • по исходному языку;

  • по прикладной области;

  • по вычислительной системе и среде;

  • по классу пользователя;

  • по требованию к вычислительным ресурсам;

  • по критичности;

  • по готовности;

  • по представлению данных;

  • по использованию программных данных.


Примерами классов функции ПС являются:



  • обработка деловых сообщений;

  • компиляция;

  • научные вычисления;

  • обработка текстов;

  • медицинские системы;

  • системы управления.


Примерами классов прикладной области являются:



  • наука;

  • бытовые устройства;

  • оборудование;

  • аппаратура управления процессом;

  • предпринимательство;

  • система организации сети.


Примерами классов масштаба ПС являются:



  • малый;

  • средний;

  • большой.


Примерами классов критичности являются:



  • национальная безопасность;

  • человеческая жизнь;

  • социальный хаос или паника;

  • организационная безопасность;

  • частная собственность;

  • секретность.


Примерами классов пользователя являются:



  • начинающий;

  • средний;

  • специалист (эксперт);

  • обычный;

  • случайный;

  • другая система программного обеспечения;

  • технические средства.


Примерами классов стабильности являются:



  • постоянное внесение изменений;

  • дискретное внесение изменений;

  • маловероятное внесение изменений.


По сектору индустрии программное обеспечение делится на три категории[14]:




  • программное обеспечение, разрабатываемое на заказ;


  • программное обеспечение для крупных корпораций и организаций;


  • программное обеспечение для массового потребителя.


По степени переносимости программы делят на




  • платформозависимые;


  • кроссплатформенные.


По способу распространения и использования программы делят на.mw-parser-output .ts-Переход img{margin-left:.285714em}




  • несвободные (закрытые);


  • открытые;


  • свободные.


По назначению программы делят на:




  • системные
    ;


  • прикладные
    .


По видам программы делят[37] на:



  • компонент — программа, рассматриваемая как единое целое, выполняющая законченную функцию и применяемая самостоятельно или в составе комплекса;

  • комплекс — программа, состоящая из двух или более компонентов и (или) комплексов, выполняющих взаимосвязанные функции, и применяемая самостоятельно или в составе другого комплекса.



Системное программное обеспечение |



Комплекс программ, которые обеспечивают управление компонентами компьютерной системы, такими как процессор, оперативная память, устройства ввода-вывода, сетевое оборудование, выступая как «межслойный интерфейс», с одной стороны которого аппаратура, а с другой — приложения пользователя. В отличие от прикладного программного обеспечения, системное не решает конкретные практические задачи, а лишь обеспечивает работу других программ, предоставляя им сервисные функции, абстрагирующие детали аппаратной и микропрограммной реализации вычислительной системы, управляет аппаратными ресурсами вычислительной системы. Отнесение того или иного программного обеспечения к системному условно, и зависит от соглашений, используемых в конкретном контексте. Как правило, к системному программному обеспечению относятся операционные системы, утилиты[⇨], системы управления базами данных, широкий класс связующего программного обеспечения.



Прикладное программное обеспечение |



Прикладное программное обеспечение — программа, предназначенная для выполнения определённых пользовательских задач и рассчитанная на непосредственное взаимодействие с пользователем.



Лицензия |


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


Часть программного обеспечения поставляется со свободной лицензией. Такие лицензии позволяют распространять программное обеспечение, а также модифицировать его.


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



См. также |


.mw-parser-output .ts-Родственные_проекты{background:#f8f9fa;border:1px solid #a2a9b1;clear:right;float:right;font-size:90%;margin:0 0 1em 1em;padding:.5em .75em}.mw-parser-output .ts-Родственные_проекты th,.mw-parser-output .ts-Родственные_проекты td{padding:.25em 0;vertical-align:middle}.mw-parser-output .ts-Родственные_проекты td{padding-left:.5em}














Логотип «Викиновостей»

В Викиновостях есть события по этой теме:
Программное обеспечение


  • Жизненный цикл программного обеспечения

  • Программно-аппаратный комплекс

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


  • Лицензия на программное обеспечение

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

    • Свободное программное обеспечение

    • Открытое программное обеспечение



  • Компьютерный язык

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

  • Связующее программное обеспечение

  • Лингвистическое программное обеспечение

  • Программная инженерия

  • Раздутое программное обеспечение

  • Software Asset Management



Примечания |





  1. Ожегов С. И. Словарь русского языка. — М.: Русский язык, 1986. — С. 364.


  2. Акцентологический словарь


  3. 12 Словари русского языка — Проверка слова «обеспечение» Грамота.ру


  4. Издание орфографического словаря Ожегова 2007 года приводит единственный вариант — обеспече́ние. // Орфографический словарь русского языка / Под редакцией С. И. Ожегова. Локид-Пресс, 2007. 912 с. ISBN 5-320-00396-X.


  5. Издание словаря Розенталя 2006 и 2007 года тоже приводит единственный вариант — обеспече́ние // Д. Э. Розенталь. Русский язык. Справочник-практикум. Оникс, Мир и образование, 2007. ISBN 5-488-00712-1, 5-94666-332-1, 978-5-488-01360-5.


  6. ISO/IEC 26514:2008 Systems and Software Engineering — Requirements for designers and developers of user documentation


  7. Согласно ГОСТ 19.101-77 К программным относят документы, содержащие сведения, необходимые для разработки, изготовления, сопровождения и эксплуатации программ.


  8. ГОСТ 19781-90. Обеспечение систем обработки информации программное. Термины и определения


  9. Батоврин В. К., 2012.


  10. Система обработки информации — одна или большее число компьютерных систем и устройств, таких как офисное и коммуникационное оборудование, которые выполняют обработку информации //Стандарт ISO/IEC 2382-1


  11. IEEE Std 829—2008 IEEE Standard for Software and System Test Documentation


  12. ГОСТ 34.003-90 Информационная технология. Автоматизированные системы. Термины и определения


  13. John Tukey, 85, Statistician; Coined the Word 'Software', Obituaries, New York Times (July 28, 2000).


  14. 123 Campbell-Kelly, 2003, 1. The Software Industry § Periodization, Sectorization, and Capabilities, p. 3.


  15. Computer Languages, 1989, 1. Невидимый конструктор § Предвестники компьютерной эры, с. 11.


  16. Turing A. On Computable Numbers, with an Application to the Entscheidungsproblem // Proceedings of the London Mathematical Society — London Mathematical Society, 1937. — Vol. 42. — P. 230–265. — ISSN 0024-6115; 1460-244X — doi:10.1112/PLMS/S2-42.1.230
    <a href="https://wikidata.org/wiki/Track:Q25864184"></a><a href="https://wikidata.org/wiki/Track:Q7251"></a><a href="https://wikidata.org/wiki/Track:Q6087100"></a><a href="https://wikidata.org/wiki/Track:Q1810244"></a>



  17. Turing A. M. On Computable Numbers, with an Application to the Entscheidungsproblem. A Correction // Proceedings of the London Mathematical Society — London Mathematical Society, 1938. — Vol. s2-43, Iss. 6. — P. 544–546. — ISSN 0024-6115; 1460-244X — doi:10.1112/PLMS/S2-43.6.544
    <a href="https://wikidata.org/wiki/Track:Q27638524"></a><a href="https://wikidata.org/wiki/Track:Q6087100"></a><a href="https://wikidata.org/wiki/Track:Q1810244"></a>



  18. Hally, Mike. Electronic brains/Stories from the dawn of the computer age. — London : British Broadcasting Corporation and Granta Books, 2005. — P. 79. — ISBN 1-86207-663-4.


  19. Computer Languages, 1989, 1. Невидимый конструктор, с. 10-11.


  20. Computer Languages, 1989, 1. Невидимый конструктор, с. 14-16.


  21. Computer Languages, 1989, 1. Невидимый конструктор § Создание кодов, понятных человеку, с. 16.


  22. Computer Languages, 1989, 1. Невидимый конструктор § Шаг на благо программирования, с. 18-20.


  23. Computer Languages, 1989, 1. Невидимый конструктор § Шаг на благо программирования, с. 20.


  24. 12 Campbell-Kelly, 2003, 1. The Software Industry, p. 1.


  25. 12345 Campbell-Kelly, 2003, 1. The Software Industry § Periodization, Sectorization, and Capabilities, p. 4.


  26. 12 Campbell-Kelly, 2003, 1. The Software Industry § Software Contractors, p. 5.


  27. Campbell-Kelly, 2003, 1. The Software Industry § Periodization, Sectorization, and Capabilities, p. 3-4.


  28. Computer Languages, 1989, 1. Невидимый конструктор, с. 10.


  29. 12 Computer Languages, 1989, 3. Расцвет программного обеспечения § Производство программного обеспечения становится самостоятельной отраслью, с. 61.


  30. Campbell-Kelly, 2003, 4. Origins of the Software Products Industry § Pioneering in the Software Products Industry: Informatics Mark IV, p. 103-104.


  31. Campbell-Kelly, 2003, 1. The Software Industry § Corporate Software Products, p. 6.


  32. Computer Languages, 1989, 3. Расцвет программного обеспечения § Первые промышленные стандарты, p. 68-69.


  33. Computer Languages, 1989, 3. Расцвет программного обеспечения § Первые промышленные стандарты, p. 68.


  34. 12 Campbell-Kelly, 2003, 1. The Software Industry § Mass-Market Software Products, p. 7.


  35. Computer Languages, 1989, 3. Расцвет программного обеспечения § Четыре «рабочие лошадки», с. 75-84.


  36. ISO/IEC TR 12182:2015 Systems and software engineering — Framework for categorization of IT systems and software, and guide for applying it


  37. ГОСТ 19.101-77




Литература |



  • ГОСТ Р ИСО/МЭК 12207-2010 Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств.

  • Батоврин В. К. Толковый словарь по системной и программной инженерии. — М.: ДМК Пресс, 2012. — С. 280. — ISBN 978-5-94074-818-2.

  • Брукс Ф. Мифический человеко-месяц или как создаются программные системы. — СПб.: Символ-Плюс, 1999.


  • ДеМарко Т. Deadline. Роман об управлении проектами. — М.: Манн, Иванов и Фербер. — 2013. — 352 с. ISBN 978-5-91657-284-1


  • ДеМарко Т., Листер Т. Человеческий фактор. Успешные проекты и команды. — М.: Символ-Плюс. — 2014. — 288 с. ISBN 978-5-93286-217-9


  • Йордан Э. Путь камикадзе. Как разработчику программного обеспечения выжить в безнадежном проекте. — М.: Лори, 2012. — 290 с. ISBN 978-5-85582-227-3


  • Соммервилл И. Инженерия программного обеспечения. — Издательство Вильямс, 2002. — 624 с. ISBN 5-8459-0330-0

  • Time-Life Books. Язык компьютера = Computer Languages. — М.: Мир, 1989. — Т. 2. — 240 с. — (Understanding Computers). — 100 000 экз. — ISBN 5-03-001148-X.

  • Martin Campbell-Kelly. From Airline Reservations to Sonic the Hedgehog: A History of the Software Industry. — MIT Press, 2003. — 372 с. — (History of Computing). — ISBN 978-1422391761.











Popular posts from this blog

Усть-Каменогорск

Халкинская богословская школа

Высокополье (Харьковская область)