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

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Программный продукт»)
Перейти к: навигация, поиск
Пользователь Прикладное программное обеспечение Операционная система Аппаратное обеспечение
Взаимодействие между пользователем, прикладным программным обеспечением, операционной системой и аппаратным обеспечением (оборудованием).

Програ́ммное обеспе́чение[1][2][3] (допустимо также произношение обеспече́ние[3][4][5]) (ПО) — все или часть программ, процедур, правил и соответствующей документации системы обработки информации (ISO/IEC 2382-1: 1993. Information technology — Vocabulary — Part 1: Fundamental terms)[6][7].

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

  • Компьютерные программы, процедуры и, возможно, соответствующая документация и данные, относящиеся к функционированию компьютерной системы (FCD ISO/IEC 24765. Systems and Software Engineering Vocabulary)[6].
  • Совокупность программ системы обработки информации и программных документов[8], необходимых для эксплуатации этих программ (ГОСТ 19781-90[9]).

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

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

В компьютерном сленге часто используется слово софт от английского слова software, которое в этом смысле впервые применил в статье в American Mathematical Monthly математик из Принстонского университета Джон Тьюки (англ. John W. Tukey) в 1958 году[11].

История[править | править вики-текст]

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

Классификация ПО[править | править вики-текст]

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

  • интерпретируемые и
  • компилируемые.

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

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

По способу распространения и использования программы делят на

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

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

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

Системное программное обеспечение[править | править вики-текст]

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

Встроенные программы[править | править вики-текст]

Встроенные программы или firmware — это программы, «зашитые» в цифровые электронные устройства. В ряде случаев (например, BIOS IBM-PC совместимых компьютеров) являются по сути частью операционной системы, хранящейся в постоянной памяти. В достаточно простых устройствах вся операционная система может быть встроенной. Многие устройства современных компьютеров имеют собственные «прошивки», осуществляющие управление этими устройствами и упрощающие взаимодействие с ними.

Утилиты[править | править вики-текст]

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

Прикладное программное обеспечение[править | править вики-текст]

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

Универсальные[править | править вики-текст]

Специализированные[править | править вики-текст]

Научное программное обеспечение[править | править вики-текст]

Развитие вычислительных методов позволило решать разнообразные научные задачи с помощью вычислительной техники. На данный момент существуют программы для множества областей: математики, химии, физики, астрономии, лингвистики, биологии, медицины и т. д.

Из известных пакетов перечислим здесь Matlab, GNU Octave, Scilab, Midas, OpenStructure, ROOT

Развлекательное программное обеспечение[править | править вики-текст]
Мультимедийное программное обеспечение[править | править вики-текст]
САПР[править | править вики-текст]
Системы электронного документооборота[править | править вики-текст]

Инструментальное программное обеспечение[править | править вики-текст]

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

Связанные темы[править | править вики-текст]

Архитектура программного обеспечения[править | править вики-текст]

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

Качество программного обеспечения[править | править вики-текст]

Качество программного обеспечения — способность программного продукта при заданных условиях удовлетворять установленным или предполагаемым потребностям[15]; весь объем признаков и характеристик программ, который относится к их способности удовлетворять установленным или предполагаемым потребностям[16][17].

Тестирование программного обеспечения[править | править вики-текст]

Процесс исследования программного обеспечения (ПО) с целью получения информации о качестве продукта. С точки зрения ISO 9126, качество программного обеспечения можно определить как совокупную характеристику исследуемого ПО с учётом следующих составляющих:

Лицензия на программное обеспечение[править | править вики-текст]

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

Патенты и программное обеспечение[править | править вики-текст]

Патенты на математические и алгоритмические методы, содержащиеся в программном обеспечении; или (по определению, предложенному Фондом за свободную информационную инфраструктуру) «патент на что‐либо, выполняемое компьютером посредством программного обеспечения».[18] Аргументы защитников программных патентов таковы:

  1. Защита сложного ПО от подражателей, которым не нужно тратить время и деньги на проектные работы.
  2. Защита изобретателей-одиночек от крупных компаний.
  3. Благодаря труднодоступности запатентованных технологий появляются технологии более совершенные.

Разработка[править | править вики-текст]

Методологии[править | править вики-текст]

Проектирование[править | править вики-текст]

Пользовательский интерфейс[править | править вики-текст]

Документация[править | править вики-текст]

Документация — печатные руководства пользователя, диалоговая (оперативная) документация и справочный текст, описывающие как пользоваться программным продуктом[19].

Документ — элемент документации: целевая информация, предназначенная для конкретной аудитории, размещённая на конкретном носителе (например, в книге, на диске, в краткой справочной карте) в заданном формате[19].

Программный документ — документ, содержащий в зависимости от назначения данные, необходимые для разработки, производства, эксплуатации, сопровождения программы или программного средства[20].

См. также[править | править вики-текст]

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

Примечания[править | править вики-текст]

  1. Ожегов С. И. Словарь русского языка. — М.: Русский язык, 1986. — С. 364.
  2. Акцентологический словарь
  3. 1 2 Словари русского языка — Проверка слова «обеспечение» Грамота.ру
  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. 1 2 Батоврин В. К., 2012
  7. Система обработки информации — одна или большее число компьютерных систем и устройств, таких как офисное и коммуникационное оборудование, которые выполняют обработку информации //Стандарт ISO/IEC 2382-1
  8. Согласно ГОСТ 19.101-77 К программным относят документы, содержащие сведения, необходимые для разработки, изготовления, сопровождения и эксплуатации программ.
  9. Вычислительная техника. Терминология: Справочное пособие. Выпуск 1 / Рецензент канд. техн. наук Ю. П. Селиванов. — М.: Издательство стандартов, 1989. — 168 с. — 55 000 экз. — ISBN 5-7050-0155-X
  10. Липаев В. В. Проектирование программных средств. Учебное пособие — М.: Высшая школа. 302 с. ISBN 5-06-001570-X
  11. John Tukey, 85, Statistician; Coined the Word 'Software', Obituaries, New York Times (July 28, 2000).
  12. 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
  13. Виды программного обеспечения | Планета информатики
  14. ГОСТ 19.101-77
  15. Capability of software product to satisfy stated and implied needs under specified conditions: ISO/IEC 25010:2011 Systems and Software Engineering — Systems and Software Quality Requirements and Evaluation — Systems and Software Quality Models
  16. ГОСТ Р ИСО/МЭК 912693. Оценка программной продукции. Характеристики качества и руководства по их применению
  17. ISO 8402:94. Управление качеством и обеспечение качества. Словарь
  18. The Gauss Project. FFII. Проверено 30 мая 2007. Архивировано из первоисточника 12 февраля 2013.
  19. 1 2 ГОСТ Р ИСО/МЭК 15910-2002 — Процесс создания документации пользователя программного средства
  20. ГОСТ 19781—90 Единая система программной документации. Обеспечение систем обработки информации программное

Литература[править | править вики-текст]

  • Брауде Э. Технология разработки программного обеспечения. — СПб.: Питер, 2004.
  • Брукс Ф. Мифический человеко-месяц или как создаются программные системы. — СПб.: Символ-Плюс, 1999.
  • Гагарина Л. Г., Кокорева Е. В., Виснадул Б. Д. Технология разработки программного обеспечения. — М.: ИД «ФОРУМ»; ИНФРА-М, 2008. — ISBN 978-5-8199-0342-1
  • Орлов С. А. Технологии разработки программного обеспечения. — СПб.: Питер, 2003.
  • Батоврин В. К. Толковый словарь по системной и программной инженерии. — М.: ДМК Пресс, 2012. — С. 280. — ISBN 978-5-94074-818-2
  • Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Paulo Merson, Robert Nord, Judith Stafford: Documenting Software Architectures: Views and Beyond, Second Edition. Addison-Wesley, 2010, ISBN 0-321-55268-7. This book describes what is software architecture and shows how to document it in multiple views, using UML and other notations. It also explains how to complement the architecture views with behavior, software interface, and rationale documentation. Accompanying the book is a wiki that contains an example of software architecture documentation.
  • Len Bass, Paul Clements, Rick Kazman: Software Architecture in Practice, Third Edition. Addison Wesley, 2012, ISBN 0-321-81573-4 (This book, now in third edition, eloquently covers the fundamental concepts of the discipline. The theme is centered around achieving quality attributes of a system.)
  • Amnon H. Eden, Rick Kazman. Architecture, Design, Implementation. On the distinction between architectural design and detailed design.
  • Javier Garzás and Mario Piattini. An ontology for micro-architectural design knowledge, IEEE Software Magazine, Volume: 22, Issue: 2, March-April 2005. pp. 28 — 33.
  • Philippe Kruchten: Architectural Blueprints — the 4+1 View Model of Software Architecture. In: IEEE Software. 12 (6) November 1995, pp. 42-50 (also available online at the Rational website(PDF))
  • Tony Shan and Winnie Hua (2006). Solution Architecting Mechanism. Proceedings of the 10th IEEE International EDOC Enterprise Computing Conference (EDOC 2006), October 2006, p23-32
  • SOMF: Bell, Michael Service-Oriented Modeling: Service Analysis, Design, and Architecture. Wiley (2008). Архивировано из первоисточника 29 мая 2013.
  • Albrecht, A. J. (1979), «Measuring application development productivity. In Proceedings of the Joint SHARE/GUIDE IBM Applications Development Symposium.», IBM 
  • Ben-Menachem, M. & Marliss (1997), «Software Quality, Producing Practical and Consistent Software», Thomson Computer Press 
  • Boehm, B.; Brown, J.R.; Kaspar, H. & MacLeod, G.J. (1978), «Characteristics of Software Quality», North-Holland. 
  • Chidamber, S. & Kemerer (1994), «A Metrics Suite for Object Oriented Design. IEEE Transactions on Software Engineering, 20 (6)», сс. 476–493 
  • Ebert, Christof & Dumke, Reiner, «Software Measurement: Establish - Extract - Evaluate - Execute», Kindle Edition, с. 91 
  • Garmus, D. & Herron (2001), «Function Point Analysis», Addison Wesley 
  • Halstead, M.E. (1977), «Elements of Software Science», Elsevier North-Holland 
  • Hamill, M. & Goseva-Popstojanova, K. (2009), «Common faults in software fault and failure data. IEEE Transactions of Software Engineering, 35 (4)», сс. 484–496. 
  • Jackson, D.J. (2009), «A direct path to dependable software. Communications of the ACM, 52 (4).» 
  • Martin, R. (2001)), «Managing vulnerabilities in networked systems», IEEE Computer. 
  • McCabe, T. (December 1976.), «A complexity measure. IEEE Transactions on Software Engineering» 
  • McConnell, Steve (1993), «Code Complete» (First ed.), Microsoft Press 
  • Nygard, M.T. (2007)), «Release It! Design and Deploy Production Ready Software», The Pragmatic Programmers. 
  • Park, R.E. (1992), «Software Size Measurement: A Framework for Counting Source Statements. (CMU/SEI-92-TR-020).», Software Engineering Institute, Carnegie Mellon University 
  • Pressman, Scott (2005), «Software Engineering: A Practitioner's Approach» (Sixth, International ed.), McGraw-Hill Education 
  • Spinellis, D. (2006), «Code Quality», Addison Wesley 
  • Гленфорд Майерс, Том Баджетт, Кори Сандлер Искусство тестирования программ, 3-е издание = The Art of Software Testing, 3rd Edition. — М.: «Диалектика», 2012. — 272 с. — ISBN 978-5-8459-1796-6
  • Лайза Криспин, Джанет Грегори Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд = Agile Testing: A Practical Guide for Testers and Agile Teams. — М.: «Вильямс», 2010. — 464 с. — (Addison-Wesley Signature Series). — 1000 экз. — ISBN 978-5-8459-1625-9
  • Канер Кем, Фолк Джек, Нгуен Енг Кек Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений. — Киев: ДиаСофт, 2001. — 544 с. — ISBN 9667393879
  • Калбертсон Роберт, Браун Крис, Кобб Гэри Быстрое тестирование. — М.: «Вильямс», 2002. — 374 с. — ISBN 5-8459-0336-X
  • Синицын С. В., Налютин Н. Ю. Верификация программного обеспечения. — М.: БИНОМ, 2008. — 368 с. — ISBN 978-5-94774-825-3
  • Бейзер Б. Тестирование чёрного ящика. Технологии функционального тестирования программного обеспечения и систем. — СПб.: Питер, 2004. — 320 с. — ISBN 5-94723-698-2
  • Bessen James Patent Failure. — Princeton University Press, 2008.
  • Klemens Ben Math You Can't Use: Patents, Copyright, and Software. — Brookings Institution Press, 2005.
  • Warshofsky Fred The Patent Wars: The Battle to Own the World's Technology. — Wiley.
  • Information Feudalism — Peter Drahos Drahos Peter Information Feudalism: Who Owns the Knowledge Economy?. — The New Press.
  • Müller Florian No Lobbyists As Such: The War over Software Patents in the European Union. — 2006. — 377-page play-by-play memoir of the story of Florian’s part in the campaign over the EU software patent directive.
  • Leith Philip Software and Patents in Europe. — Cambridge University Press, 2007.