Пакет прикладных программ

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

Пакетному подходу можно противопоставить создание «универсальной» программы. Такая программа может участвовать в решении различных задач, тогда как в пакетном подходе несколько модулей пакета объединяются для решения одной задачи. Разница может показаться небольшой (из пакета программ можно, добавив управляющую надстройку, сделать «универсальную» программу, или наоборот, использовать некоторые модули «универсальной» программы в качестве ППП). Тем не менее, с точки зрения архитектуры, ППП более удобен для расширения и модификации, так как развитие ППП может происходить за счёт добавления новых модулей, не затрагивающих работоспособность ранее отлаженных модулей.

Цепочечный подход 
Проще всего проиллюстрировать пакетный подход на примере конвейера в Unix. Система Unix содержит большое количество небольших программ, выполняющих конкретную функцию. В конвейере входящие в цепочку программы могут обрабатывать некоторые данные.
 
 
{| class="wikitable" |}
В следующем примере данные об объёмах хранящихся в текущем каталоге подкаталогов вычисляются (команда du), сортируются (sort), выбираются 10, занимающих наибольший объём (tail), отбрасывается первое поле с числом (cut) и результат печатается на принтере (lpr):
du . | sort -n | tail -n 10 | cut -f 2- | lpr

Цепочечный подход в ряде случаев можно автоматизировать, поручив построение цепочки системным средствам пакета. Помимо перечислительного механизма к созданию цепочки (явное задание входящих в цепочку модулей), возможен ассоциативный механизм, при котором модуль включается системными средствами в формируемую программу на основании некоторого атрибута. В случае, когда пользователь задаёт известные и искомые величины, восстановление цепочки средствами системы называется автоматическим планированием вычислений. Несмотря на некоторые достоинства и отдельные успехи (системы ПРИЗ и СПОРА), автоматическое планирование вычислений не получило массового развития по причине бедности цепочки как конфигурационного ориентира.

Каркасный подход 
При накоплении опыта программирования в любой предметной области со временем вырабатывается представления о рациональной модульной организации, накапливается набор модулей, которые сильно не изменяются при переходе от одной версии программ к другой, а также находятся постоянные места для сменных модулей. В результате вырисовывается архитектура приложения, состоящая из постоянного компонента — каркаса, имеющего гнёзда для размещения сменных модулей. Разумеется, гнёзда и сменные модули имеют согласованные спецификации.

Задание конкретной конфигурации для пользователя упрощается. Гнёзда каркаса — отражение характеристик решаемой задачи, а сменные модули — допустимые значения этих характеристик.

Например, в каркасе с двумя вариантными гнёздами можно описать конфигурацию расчёта, не касаясь алгоритма задачи: Материал ← Алюминий, Точность ← Двойная.

В отличие от цепочечного, каркасный подход даёт больше свободы в проектировании структуры формируемой программы, что является предпочтительным для большинства предметных областей.

Виды пакетов 
Можно выделить следующие виды ППП:
 Общего назначения. Примеры: текстовый процессор, электронные таблицы, графический редактор, СУБД
 Офисные пакеты. Для обеспечения деятельности офиса. Включают органайзеры, средства OCR и т. п.
 Проблемно-ориентированные. Для предметных областей, в которых возможна типизация структур данных, алгоритмов обработки и функций управления. Примеры: бухгалтерский учёт, управление персоналом.
 САПР
 Настольная издательская система
 Системы искусственного интеллекта. Системы с диалогом на естественном языке, экспертные системы и т. п.

Примечания

Литература и ссылки 
 
 Литвиненко А. Н., Кручинин А. Н. Метод модификации программного кода на основе компонентного подхода. Ростовский государственный университет
 Анатольев А. Г., АСОИУ ОмГТУ, Учебно-методический комплекс по дисциплине «Пакеты прикладных программ»
 Пакеты прикладных программ и их классификация на сайте www.maksakov-sa.ru/

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