Расширяемые программы
Разработчику большой программы редко приходится писать что-либо заново, "с чистого листа" — чаще он развивает то, что написано и отлажено ранее. Прививая программе новые полезные качества, разработчик конечно же заботится и о том, чтобы не утратить уже достигнутого. Дело это весьма деликатное, поскольку развитие обычно подразумевает редактирование имеющихся исходных текстов, а редактирование всегда чревато внесением ошибок, влекущих потерю работоспособности. Можно было бы избежать непосредственного редактирования, частично дублируя имеющиеся тексты, однако дублирование, как известно, губительно для последующего развития. К счастью, существуют программные конструкции, позволяющие развивать программу безболезненно, лишь дополняя ее новыми модулями, но вовсе не затрагивая и не дублируя отлаженных ранее текстов.
Разумеется, применение безболезненно развиваемых конструкций не способно полностью исключить редактирование имеющихся текстов: время от времени требуются революционные преобразования программы, которые по своей природе выплескиваются за рамки любых априорных ограничений. Известно однако, что революционные преобразования относительно редки, основной же объем изменений выполняется эволюционно. А эволюционные изменения обычно удается уложить в безболезненное русло, что выводит процесс развития на новый уровень надежности. Кроме того, безболезненно развиваемые конструкции позволяют проявить важные структурные свойства программы, существенно повышая ее маневренность и наглядность.
В основе безболезненно развиваемых конструкций лежат два взаимосвязанных постулата. (1) Любая точка роста (hot spot) программы представима в форме расширяемого набора однородных модулей. (2) Любое эволюционное изменение программы представимо в форме совокупности модулей, предназначенных для пополнения одной или нескольких точек роста. Иначе говоря, ключом к построению безболезненно развиваемой программы служит девиз "Ищи однородность — найдешь расширяемость".
• Горбунов-Посадов М.М. Сложность в программировании (видео). URL: https://www.youtube.com/watch?v=1dmaqUeh8iQ
• Горбунов-Посадов М.М. Как растет программа. — Препринты ИПМ им.М.В.Келдыша. — 2000. — № 50. — 16 с. — URL: https://keldysh.ru/gorbunov/grow.htm
• Горбунов-Посадов М.М. Расширяемые программы. — М.: Полиптих, 1999. — 336 с. — URL: https://keldysh.ru/gorbunov/
• Горбунов-Посадов М.М. Конфигурационные ориентиры на пути к многократному использованию. — Препринты ИПМ им.М.В.Келдыша. — 1997. — № 37. — 16 с. — URL: https://keldysh.ru/gorbunov/reuse.htm
• Горбунов-Посадов М.М. Система открыта, но что-то мешает // Открытые системы. — 1996. — № 6. — С. 36‑39. — URL: https://keldysh.ru/gorbunov/open.htm
• Горбунов-Посадов М.М. Безболезненное развитие программы // Открытые системы. — 1996. — № 4. — С. 65‑70. — URL: https://keldysh.ru/gorbunov/evolution.htm
|