Программное обеспечение
<imagemap>: неверное или отсутствующее изображение
Програ́ммное обеспе́чение[1][2][3] (допустимо также произношениe обеспече́ние[3][4][5]) (ПО) — все или часть программ, процедур, правил и соответствующей документации системы обработки информации (ISO/IEC 2382-1:1993)[6][7].
Другие определения из международных и российских стандартов:
- Компьютерные программы, процедуры и, возможно, соответствующая документация и данные, относящиеся к функционированию компьютерной системы (IEEE Std 829—2008)[8].
- Программа или множество программ, используемых для управления компьютером (IEEE Std 829—2008)[9].
- Совокупность программ системы обработки информации и программных документов[10], необходимых для эксплуатации этих программ (ГОСТ 19781-90)[11].
Программное обеспечение является одним из видов обеспечения вычислительной системы, наряду с техническим (аппаратным), математическим, информационным, лингвистическим, организационным и методическим обеспечением[12].
Программное обеспечение — это то, что делает компьютеры универсальными, позволяя использовать типовую вычислительную машину для решения самых разнообразных задач[13].
Академические области, изучающие программное обеспечение, — это информатика и программная инженерия.
В компьютерном сленге часто используется слово софт от английского слова software, которое в этом смысле впервые применил в статье в American Mathematical Monthly математик из Принстонского университета Джон Тьюки (англ. John W. Tukey) в 1958 году[14].
История
Индустрия программного обеспечения делится на три основных сектора: разработка программного обеспечения на заказ, программное обеспечение для корпоративного потребителя и программное обеспечение для массового потребителя. Они появлялись друг за другом с интервалом примерно в десятилетие[15].
Предыстория. Зарождение программирования
Первую программу написала Ада Лавлейс для разностной машины Чарльза Бэббиджа, однако поскольку эта машина так и не была достроена, разработки леди Лавлейс остались чисто теоретическими[16].
Первая теория, касающаяся программного обеспечения, была предложена английским математиком Аланом Тьюрингом в 1936 году в эссе «On computable numbers with an application to the Entscheidungsproblem» («О вычислимых числах с приложением к проблеме разрешения»)[17][18][19]. Он создал так называемую машину Тьюринга, математическую модель абстрактной машины, способной выполнять последовательности рудиментарных операций, которые переводят машину из одного фиксированного состояния в другое. Главная идея заключалась в математическом доказательстве факта, что любое наперёд заданное состояние системы может быть всегда достигнуто последовательным выполнением конечного набора элементарных команд (программы) из фиксированного набора команд.
Первые электронно-вычислительные машины 1940—1950-х годов перепрограммировались путём переключения тумблеров и переподключения кабелей, что требовало глубокого понимания их внутреннего устройства, к таким машинам, в частности, относился ENIAC (который, впрочем, впоследствии модифицировали чтобы он мог, по крайней мере частично, программироваться с помощью перфокарт)[20].
Важным шагом в сторону современных компьютеров был переход к архитектуре Джона фон Неймана, впервые реализованной в Великобритании, в разработанной под руководством Дж. Р. Уомерзли и при участии Алана Тьюринга компьютере, известном как Манчестерский Марк I. Первая программа, хранимая в памяти компьютера, была запущена на нём 21 июня 1941 года. Для облегчения программирования этой машины Тьюринг придумал систему сокращённого кодирования, в которой для представления двоичного машинного кода использовалась последовательность телетайпных символов, выводимых на перфоленту[21].
Один из сотрудников Тьюринга, Джон Мочли, став позднее (вместе с Джоном Преспером Экертом[en]) руководителем и основателем компании, разработавшей такие ЭВМ BINAC и UNIVAC, поручил своим сотрудникам создать транслятор алгебраических формул. Хотя эта амбициозная цель в 1940-х годах и не была достигнута, под руководством Мочли был разработан так называемый «Краткий код», в котором операции и переменные кодировались двухсимвольными сочетаниями. Краткий код был реализован с помощью интерпретатора[22]. Грейс Хоппер, работая с начала 1950-х годов над набором математических подпрограмм для UNIVAC I, изобрела программу-компоновщик «A-0[en]», которая по заданному идентификатору осуществляла выборку нужной подпрограммы из библиотеки, хранящейся на магнитной ленте, и записывала её в отведённое место оперативной памяти Унивака[23].
В 50-е годы появляются первые высокоуровневые языки программирования, Джон Бэкус разрабатывает FORTRAN, а Грейс Хоппер — COBOL.
Подобные разработки значительно упростили написание прикладного программного обеспечения, которое писала тогда каждая фирма, приобретающая вычислительную машину[24].
В начале 1950-х понятие программного обеспечения ещё не сложилось. Так не говорилось о нём ничего в вышедшей в январе 1952 в журнале Fortune статье «Office Robots», описывавшем компьютеры Univac. Хотя в статье уже рассказывается о компьютере, как универсальном устройстве, процесс программирования в этой статье был анахронически описан как «переключение тумблеров» (англ. flipping a few switches)[25]. Однако к середине 50-х годов уже вполне сложилась разработка программного обеспечения на заказ (англ. software contracting)[15], хотя сам термин программное обеспечение ещё не использовался, тогда говорили просто о программировании на заказ (англ. custom programming) или программистском обслуживании (англ. programming services)[26]. Первой программной фирмой стала созданная на базе принадлежащей правительству США RAND Corporation в 1956 году компании Systems Development Corporation[en] (SDC)[27]. На этом этапе заказчиками программного обеспечения (уникального и нетиражируемого) были крупные корпорации и государственные структуры и стоимость в один миллион долларов за программу не была чем-то необычным[28].
Ранняя история. Корпоративное ПО
Собственно сам термин «программное обеспечение» (англ. software) вошёл в широкий обиход с начала 1960-х годов, когда стало актуальным разграничение команд, управляющих компьютером и его физических компонентов — аппаратного обеспечения (англ. hardware)[29]. Тогда же и началось становление индустрии программного обеспечения, как самостоятельной отрасли. Первой компанией по разработке ПО стала основанная в 1959 году Роем Наттом[en] и Флетчером Джоунсом[en] Computer Science Corporation[en] с начальным капиталом в 100 долларов. Первыми клиентами CSC и появившихся вслед за нею софтверных компаний были сверхкрупные корпорации и государственные организации, вроде NASA[30], и фирма продолжала работать на рынке заказного ПО, как и другие первые программистские частные стартапы, такие как Computer Usage Company[en] (CUC)[27].
Первыми самостоятельно выпущенными программными продуктами, не поставляемыми в комплекте с компьютерным оборудованием, были выпущенная фирмой Applied Data Research[en] в 1965 году генератор компьютерной документации AUTOFLOW, автоматически рисующая блок-схемы, и транслятор языка программирования MARK-IV[en], разработанный в 1960—1967 гг. в Informatics, Inc.[26][31] Становление рынка корпоративного программного обеспечения тесно связано с появлением семейства компьютеров IBM System/360. Достаточно массовые, относительно недорогие вычислительные машины, совместимые друг с другом на уровне программного кода, открыли дорогу тиражируемому программному обеспечению[32].
Постепенно круг заказчиков программного обеспечения расширялся, что стимулировало разработку новых видов программного обеспечения. Так появились первые фирмы, специализирующиеся на разработке систем автоматизированного проектирования[30].
В ноябре 1966 года журнал Business Week впервые обратился к теме индустрии программного обеспечения. Статья называлась «Software Gap — A Growing Crisis for Computers», и рассказывала как о перспективности этого бизнеса, так и о кризисе, связанном с нехваткой программистов[25]. Типичные программные продукты того времени служили для автоматизации общих для бизнеса задач, таких, как начисление заработной платы, или автоматизации бизнес-процессов таких предприятий среднего бизнеса, как производственное предприятие или коммерческий банк. Стоимость такого ПО, как правило, была между пятью и ста тысячами долларов[26].
Персональные компьютеры и программное обеспечение для массового потребителя
Появление в 1970-х годах первых персональных компьютеров (таких, как Альтаир 8800) создало предпосылки и для зарождения массового рынка программного обеспечения. Изначально программы для персональных компьютеров распространялись в «коробочной» форме через торговые центры или по почте и имели цену 100—500 долларов США[26].
Знаковыми для зарождающего массового рынка программного обеспечения стали такие продукты, как электронная таблица VisiCalc, идея которой пришла Дэниелу Бриклину, когда тот, будучи выпускником MIT и инженером-программистом в DEC посещал курсы в Гарвардской школе бизнеса, он хотел облегчить себе утомительные финансовые расчёты[33], и текстовый процессор WordStar[en], разработку которого начал Cеймур Рубинштейн[en], тщательно изучив потребности рынка[34]. О VisiCalc впервые заговорили, как о killer application[en], то есть компьютерном приложении, которое самим фактом своего существования, доказывает нужность (и, зачастую, необходимость покупки) платформы, для которой реализована такая программа. Для VisiCalc и WordStar такой платформой стали персональные компьютеры, которые благодаря ним из богатой игрушки для гиков стали рабочим инструментом. С них началась микрокомпьютерная революция, а у этих программ появились конкуренты: электронные таблицы SuperCalc, Lotus 1-2-3, система управления базами данных dBase II, текстовый процессор WordPerfect и др.[35]. Текстовые процессоры, электронные таблицы, системы управления базами данных а так же графические редакторы вскоре становятся основными продуктами рынка программного обеспечения для персональных компьютеров[36].
Массовое тиражирование позволило снизить к середине 1990 годов стоимость программного обеспечения для персональных компьютеров до ста — пятисот долларов[26], при этом бизнес производителей ПО приобрёл определённое сходство с бизнесом звукозаписывающих компаний[35].
Классификация ПО
По степени тиражируемости всё программное обеспечение делится на три категории: программное обеспечение, разрабатываемое на заказ, программное обеспечение для крупных корпораций и организаций и программное обеспечение для массового потребителя[15].
По степени переносимости программы делят на
По способу распространения и использования программы делят на
По назначению программы делят на:
По видам программы делят на[37]:
- компонент: программа, рассматриваемая как единое целое, выполняющая законченную функцию и применяемая самостоятельно или в составе комплекса;
- комплекс: программа, состоящая из двух или более компонентов и (или) комплексов, выполняющих взаимосвязанные функции, и применяемая самостоятельно или в составе другого комплекса.
Системное программное обеспечение
Комплекс программ, которые обеспечивают управление компонентами компьютерной системы, такими как процессор, оперативная память, устройства ввода-вывода, сетевое оборудование, выступая как «межслойный интерфейс», с одной стороны которого аппаратура, а с другой — приложения пользователя. В отличие от прикладного программного обеспечения, системное не решает конкретные практические задачи, а лишь обеспечивает работу других программ, предоставляя им сервисные функции, абстрагирующие детали аппаратной и микропрограммной реализации вычислительной системы, управляет аппаратными ресурсами вычислительной системы. Отнесение того или иного программного обеспечения к системному условно, и зависит от соглашений, используемых в конкретном контексте. Как правило, к системному программному обеспечению относятся операционные системы, утилиты , системы управления базами данных, широкий класс связующего программного обеспечения.
Прикладное программное обеспечение
Прикладное программное обеспечение — программа, предназначенная для выполнения определенных пользовательских задач и рассчитанная на непосредственное взаимодействие с пользователем.
Лицензия
Пользователь получает программное обеспечение вместе с лицензией, которая предоставляет ему право использовать программный продукт при условии выполнения положений о лицензировании. Как правило, эти условия ограничивают возможности пользователя передавать программный продукт другим пользователям, изменять код.
Часть программного обеспечения поставляется со свободной лицензией. Такие лицензии позволяют распространять программное обеспечение, а также модифицировать его.
Часть программного обеспечения распространяется как бесплатное. Существует также условно бесплатное программное обеспечение. В этом случае обычно пользователь бесплатно получает демонстрационную версию программного продукта с несколько ограниченными возможностями на определенный испытательный период, а после его окончания обязан или приобрести продукт, или деинсталлировать его.
См. также
|
Примечания
- ↑ Ожегов С. И. Словарь русского языка. — М.: Русский язык, 1986. — С. 364.
- ↑ [www.distedu.ru/mirror/_rus/www.mediaterra.ru/rhetoric/10-a_14.htm Акцентологический словарь]
- ↑ 1 2 [dic.gramota.ru/search.php?word=%EE%E1%E5%F1%EF%E5%F7%E5%ED%E8%E5&lop=x&gorb=x&efr=x&zar=x&ag=x&ab=x&lv=x&pe=x&az=x Словари русского языка — Проверка слова «обеспечение»] Грамота.ру
- ↑ Издание орфографического словаря Ожегова 2007 года приводит единственный вариант — обеспече́ние. // Орфографический словарь русского языка / Под редакцией С. И. Ожегова. Локид-Пресс, 2007. 912 с. ISBN 5-320-00396-X.
- ↑ Издание словаря Розенталя 2006 и 2007 года тоже приводит единственный вариант — обеспече́ние // Д. Э. Розенталь. Русский язык. Справочник-практикум. Оникс, Мир и образование, 2007. ISBN 5-488-00712-1, 5-94666-332-1, 978-5-488-01360-5.
- ↑ Батоврин В. К., 2012.
- ↑ Система обработки информации — одна или большее число компьютерных систем и устройств, таких как офисное и коммуникационное оборудование, которые выполняют обработку информации //[www.morepc.ru/informatisation/iso2381-1.html Стандарт ISO/IEC 2382-1]
- ↑ IEEE Std 829—2008 IEEE Standard for Software and System Test Documentation
- ↑ ISO/IEC 26514 Systems and Software Engineering — Requirements for designers and developers of user documentation
- ↑ Согласно ГОСТ 19.101-77 К программным относят документы, содержащие сведения, необходимые для разработки, изготовления, сопровождения и эксплуатации программ.
- ↑ Вычислительная техника. Терминология: Справочное пособие. Выпуск 1 / Рецензент канд. техн. наук Ю. П. Селиванов. — М.: Издательство стандартов, 1989. — 168 с. — 55 000 экз. — ISBN 5-7050-0155-X.
- ↑ Липаев В. В. Проектирование программных средств. Учебное пособие — М.: Высшая школа. 302 с. ISBN 5-06-001570-X
- ↑ Computer Languages, 1989, Возможности программного управления, с. 21.
- ↑ [query.nytimes.com/gst/fullpage.html?res=9500E4DA173DF93BA15754C0A9669C8B63&scp=1&sq=&pagewanted=1 John Tukey, 85, Statistician; Coined the Word 'Software'], Obituaries, New York Times (July 28, 2000).
- ↑ 1 2 3 Campbell-Kelly, 2003, 1. The Software Industry § Periodization, Sectorization, and Capabilities, p. 3.
- ↑ Computer Languages, 1989, 1. Невидимый конструктор § Предвестники компьютерной эры, с. 11.
- ↑ Turing A. M. [www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf On computable numbers with an application to the Entscheidungsproblem] // Proc. London Maths. Soc. (Series 2). — 1936. — Vol. 42. — P. 230—265. — DOI:10.1112/plms/s2-42.1.230.
- ↑ Turing, A. M. (1938). «[www.turingarchive.org/viewer/?id=466&title=02 On Computable Numbers, with an Application to the Entscheidungsproblem. A Correction]». Proc. London Maths. Soc. (Series 2) 43: 544—546. DOI:10.1112/plms/s2-43.6.544.
- ↑ 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.
- ↑ Computer Languages, 1989, 1. Невидимый конструктор, с. 10-11.
- ↑ Computer Languages, 1989, 1. Невидимый конструктор, с. 14-16.
- ↑ Computer Languages, 1989, 1. Невидимый конструктор § Создание кодов, понятных человеку, с. 16.
- ↑ Computer Languages, 1989, 1. Невидимый конструктор § Шаг на благо программирования, с. 18-20.
- ↑ Computer Languages, 1989, 1. Невидимый конструктор § Шаг на благо программирования, с. 20.
- ↑ 1 2 Campbell-Kelly, 2003, 1. The Software Industry, p. 1.
- ↑ 1 2 3 4 5 Campbell-Kelly, 2003, 1. The Software Industry § Periodization, Sectorization, and Capabilities, p. 4.
- ↑ 1 2 Campbell-Kelly, 2003, 1. The Software Industry § Software Contractors, p. 5.
- ↑ Campbell-Kelly, 2003, 1. The Software Industry § Periodization, Sectorization, and Capabilities, p. 3-4.
- ↑ Computer Languages, 1989, 1. Невидимый конструктор, с. 10.
- ↑ 1 2 Computer Languages, 1989, 3. Расцвет программного обеспечения § Производство программного обеспечения становится самостоятельной отраслью, с. 61.
- ↑ Campbell-Kelly, 2003, 4. Origins of the Software Products Industry § Pioneering in the Software Products Industry: Informatics Mark IV, p. 103-104.
- ↑ Campbell-Kelly, 2003, 1. The Software Industry § Corporate Software Products, p. 6.
- ↑ Computer languages, 1989, 3. Расцвет программного обеспечения § Первые промышленные стандарты, с. 68-69.
- ↑ Computer languages, 1989, 3. Расцвет программного обеспечения § Первые промышленные стандарты, с. 68.
- ↑ 1 2 Campbell-Kelly, 2003, 1. The Software Industry § Mass-Market Software Products, p. 7.
- ↑ Computer languages, 1989, 3. Расцвет программного обеспечения § Четыре «рабочие лошадки», с. 75-84.
- ↑ ГОСТ 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.
|
Статья содержит короткие («гарвардские») ссылки на публикации, не указанные или неправильно описанные в библиографическом разделе. Список неработающих ссылок: Computer languages, 1989 Пожалуйста, исправьте ссылки согласно инструкции к шаблону {{sfn}} и дополните библиографический раздел корректными описаниями цитируемых публикаций, следуя руководствам ВП:Сноски и ВП:Ссылки на источники.
|