Расширяемость программного обеспечения

интернет компьютеры программирование паттерны расширяемость

Существуют ли какие-нибудь общие приёмы написания программ, при использовании которых очень легко добавлять новую функциональность (изначально совсем не предусмотренную)?

Проблема в том, что заказчик почти никогда не знает, что хочет и приходится писать с неполной информацией. А через пару месяцев у него в голове возникает потрясающая идея, которую он хочет обязательно реализовать. И приходится немного переписывать и много отлаживать (а я ненавижу отлаживать! :). Хотелось бы обойтись без таких проблем.

Можно ли организовать процесс разработки на C++/Java/C#/etc как, скажем, на Lisp? Когда пишешь, что взбредёт в голову, а потом легко связываешь и дополняешь разные модули.

Кто что знает по теме? А?

Примечание:
> Redsrul только добавить необходимые функции.
Это если требуется добавить функциональность классу.
А если требуется расширить ПО, и раньше ты не предполагал вообще такую фичу, то придётся прописывать много чего где.
Т.е. изменения на уровне архитектуры ПО.
Ответы:
Насчет общих приемов не знаю, но по идее любой ООП язык дает эту возможность. Например для c# если требуется добавить функционал, то добавляешь поля или методы в старый класс или создаешь потомка и ничего не придется переписывать, только добавить необходимые функции.
Плагины?
Мне кажется что при изменении архитектуры (например сделать многопоточное или распределенное вычисление) едва ли спасешься от переписывания приложения, средствами языка. Разве что писать изначально программу, чтобы ее библиотеки/ библиотеки классов были независимы от друг друга.Или обращаться к ним не напрямую а через интерфейс, который при вызове будет запрашивать избыточную информацию (то есть на момент написания не нужную, но теоретически полезную при расширении).
В случае ООП это творческая задача, и решается индивидуально каждым. =)
Посмотри как сделано в эклипсе с точкам расширения. Довольно удобная в использовании схема.
можно. основной принцип такой:
есть ядро системы и библиотеки к нему (например, dll). библиотеки строятся таким образом (т.е. специальный интерфейс), что ядро умеет на лету подхватывать библиотеки. в к-х реализована новая дополнительная функциональность. характерный пример - winamp/media player и плюгины или библиотеки кодеков к нему.
дополнительно или вместо описанного выше способа - написание собственного языка, которое ядро вашей программы интерпретирует (можно и через пре-компиляцию). примером подобной организацией является, например, дистанционные системы банковского обслуживания от BSS, 1С или более продвинутые ERP-системы.
выбор конкретного решения всегда зависит от круга задач заказчика.


16 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

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

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.