Русская Википедия:Пакет прикладных программ

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Другие значения Шаблон:Seealso Паке́т прикладны́х програ́мм (аббр. ППП, Шаблон:Lang-en[1]) или паке́т програ́мм — набор взаимосвязанных модулей, предназначенных для решения задач определённого класса некоторой предметной области. По смыслу ППП было бы правильнее назвать пакетом модулей вместо устоявшегося термина пакет программ. Отличается от библиотеки тем, что создание библиотеки не ставит целью полностью покрыть нужды предметной области, так как приложение может использовать модули нескольких библиотек. Требования же к пакету программ жёстче: приложение для решения задачи должно использовать только модули пакета, а создание конкретного приложения может быть доступно непрограммистамШаблон:Sfn.

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

Цепочечный подход

Проще всего проиллюстрировать пакетный подход на примере конвейера в Unix. Система Unix содержит большое количество небольших программ, выполняющих конкретную функцию. В конвейере входящие в цепочку программы могут обрабатывать некоторые данныеШаблон:Sfn.

В следующем примере данные об объёмах хранящихся в текущем каталоге подкаталогов вычисляются (команда du), сортируются (sort), выбираются 10, занимающих наибольший объём (tail), отбрасывается первое поле с числом (cut) и результат печатается на принтере (lpr):
du . | sort -n | tail -n 10 | cut -f 2- | lpr

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

Каркасный подход

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

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

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

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

Виды пакетов

Можно выделить следующие виды ППП[2]:

Примечания

Шаблон:Примечания

Литература и ссылки