Программирование в большом и программирование в малом
Программирование в большом и программирование в малом — понятия в инженерии программного обеспечения, обозначающие два различных аспекта разработки программного обеспечения. Программирование в большом подразумевает проектирование крупной системы как совокупности меньших составляющих, тогда как программирование в малом — создание этих составных частей посредством программирования на языке программирования.
Термины были введены Фрэнком ДеРемером и Хансом Кроном в их статье 1975 года «Programming-in-the-large versus programming-in-the-small»[1], где авторы утверждали, что это по сути разные виды деятельности: обычные языки программирования и практика структурного программирования хорошо подходят для «программирования в малом», но не решают задачи «программирования в большом».
Эти понятия соотносятся с более поздней дихотомией Остерхаута, которая различает языки системного программирования (для компонентов) и языки сценариев (для связующего кода).
Описание
Фред Брукс отметил, что процесс создания индивидуальной программы существенно отличается от создания «программного системного продукта»[2]. Первая обычно выполняет одну относительно простую задачу, разрабатывается одним инженером, является законченной и готова к запуску в среде разработки; на неё затрачено немного времени. Такую деятельность ДеРемер и Крон определяют как программирование в малом.
Иначе обстоит дело с проектами создания программных систем (по определению Брукса): в них участвуют средние или большие промышленные команды, работают над проектом от нескольких месяцев до лет. Проект зачастую состоит из множества (иногда сотен) отдельных модулей, по сложности сравнимых с индивидуальными программами, описанными выше, но каждый модуль определяет интерфейс взаимодействия с другими модулями.
Брукс описывает, что подобные проекты ведутся как формальные работы с применением лучших отраслевых практик, включают тестирование, документирование, постоянное сопровождение, а также обеспечение обобщённости продукта — его работоспособности в разных условиях и на различных системах, отличных от среды разработки.
Программирование в большом
В разработке программного обеспечения программирование в большом может означать разработку программ большими коллективами либо небольшими группами на протяжении долгого времени[2]. Любое из этих условий приводит к созданию больших и сложных программ, сложно понимаемых сопровождающими.
При программировании в большом руководители разработки делают акцент на разбиении работы на модули с чётко определёнными взаимодействиями, что требует тщательного планирования и документирования.
Изменение таких программ может быть затруднено[2]. Изменения, затрагивающие границы модулей, могут потребовать пересмотра работы многих участников. Поэтому одной из целей программирования в большом является организация таких модулей, которые не придётся изменять при ожидаемых корректировках системы. Этого достигают за счёт проектирования модулей с высокой когезией и слабой связанностью.
Программирование в большом требует управленческих навыков: построение абстракций здесь направлено не только на описание работоспособного решения, но и на управление деятельностью всей команды.
Термин был введён Фрэнком ДеРемером и Хансом Кроном в их статье «Programming-in-the-Large Versus Programming-in-the-Small», IEEE Trans. on Soft. Eng. 2(2), 1975.
В терминах информатики программирование в большом часто связано с созданием кода, реализующего логику переходов между состояниями системы (например, когда нужно ждать сообщений, посылать сообщения, компенсировать неудавшиеся не-ACID транзакции и т.д.).
Языком, созданным с расчётом на программирование в большом, является BPEL.
Программирование в малом
В разработке программного обеспечения программирование в малом обозначает написание небольшой программы — по размеру исходного кода, обычно легко формализуемой, быстрой в реализации и решающей одну или несколько тесно связанных задач.
Программирование в малом чаще осуществляется индивидуально или малыми группами за короткий срок и зачастую сопряжено с менее формализованным процессом (например, меньшее внимание к документированию и тестированию), выбором инструментов и языков программирования (например, предпочтение слабо типизированного языка сценариев вместо строго типизированного языка). Такой подход характерен и для прототипирования программ или приоритетного быстрого развития приложения над стабильностью и корректностью.
В информатике программирование в малом связано с краткосрочным поведением программ, обычно выполняющихся в рамках одной ACID-транзакции и работающих с локальными ресурсами — файлами, базами данных и т.д.
Примечания
Литература
- DeRemer, Frank; Kron, Hans (1975). “Programming-in-the large versus programming-in-the-small”. Proceedings of the international conference on Reliable software [англ.]. Лос-Анджелес, Калифорния: Association for Computing Machinery: 114—121. DOI:10.1145/800027.808431. Дата обращения 2024-06-15.
|access-date=требует|url=(справка)