Для начала это звучит сложно.Тем не менее, IMO это может быть достигнуто просто следуя основам.При разработке своей среды вы должны уделять особое внимание следующему -
Стремиться к модульному дизайну - Всегда кодировать интерфейсы, отдавать предпочтение композиции, а не наследованию и т. Д.
Написать модульные тесты для всего кода - Это очень важно, поскольку тесты не только приведут вас к слабосвязанному дизайну, но также окажутся важными при проверке обратной совместимости, что является важной проблемой в таких проектах.
Создавайте только то, что нужно, и избегайте слишком много первоначального проектирования и чрезмерного проектирования - Обратите внимание, что фреймворки лучше всего извлекать из кода, а не строить заранее.В таких проектах очень легко увлечься и построить то, что не нужно.Нежелательные функции не только потратят время и деньги, но также затруднят внесение будущих изменений.Не делайте слишком много начального проектирования и создавайте вещи небольшими итерациями, часто проводите рефакторинг и используйте модульные тесты в качестве своей системы безопасности.