не знаю уж в какой мере мой опыт является best practice, да и не отношу я себя к великим... хотя..... :о)))
ключевой принцип, по-моему, должен заключаться в разделении ответственности: группа, отвечающая за ядро, д.б. ответственна за ядро :о)) плюс совместимость с отдельными проектами (индивидуально или в комплексе), а проектные группы д.отвечать за реализацию своих, особенных требований.
также где нужно должны использоваться принципы единства архитектуры, централизации и унификации. централизоваться должны функции, выполняемые в интересах более чем одной п/г, при этом проектные решения должны быть [максимально] унифицированными.
впрочем принципов можно напридумывать довольно много. со временем они сложатся в стройную систему
если какое-то особенное требование затрагивает ядро, то вопрос должен рассматриваться совместно и в каждом случае должно приниматься обоснованное решение. также должна отслеживаться "последовательность линии", особенно в отношении каких-либо архитектурных решений.
для этого могу посоветовать организовать комитет по требованиям (все равно какое-то подобное собрание у Вас уже должно существовать стихийно), состоящий из представителей р/г отдельных проектов, ответственных за управление и контроль реализации требований, и из отвественных за управление и реализацию требований в ядре продукта. очевидно также вам нужно будет иметь систематизированное представление требований всего семейства продуктов (ответственность за него скорее за "ядерными" управляющими требованиями), критерии отнесения требований к ядру или продукту, четкие процедуры взаимодействия обоих подгрупп на всех этапах работы с требованиями и схема и базовые критерии принятия решения (чтобы было без обиды). процедуры работы с требованиями по сути остаются теми же, но содержательно усложняются, т.к. увеличивается количество участников, принимающих участие в процессе управления требований в целом.
также должна поддерживаться определенная ритмичность рассмотрения подобных вопросов, гарантирующая своевременность принятия подобных решений, т.к. иначе проектные группы, не дождавшись "ядерной" реакции по новым требованиям, начнут на себя брать то, что к ним не относится.
на ваши вопросы однозначных ответов сейчас дать нельзя, т.к. ситуации описаны довольно абстрактно, поэтом возможно и так и эдак решать в каждом конкретном случае, например:
1. если Х относится к ядру, но не используется в других проектах (т.е. один частный случай), то "ядерщики" могут взять на себя либо делегировать реализацию проектной группе с последующим контролем качества и интеграцией с основным продуктом
если используется в проектах, то ответственность на "ядерщиках"
если от частного случая переход к обширной практике, то "ядерщики" должны взять себе соответствующую фичу, забрав ее у соответствующей проектной группы. при этом должен контролироваться стандарт документирования.
в общем я бы назвал это "схемой, похожей на осьминога" :о)))
2. однозначно, что взаимозависимости должны контролироваться "ядерной" группой управления, т.к. одна проектная группа может ничего не знать о содержании работ другой п/г (хотя может и знать). при большом количестве проектов за счет этого достигается значительная экономия на ресурсах п/г, занимающихся перекрестной поддержкой друг друга. от этого нужно уходить вплоть до создание специальной централизованной группы при значительном росте количества проектов.
3. на уровне ТЗ для заказчика неважно, как и где будет реализовываться фича Z*, поэтому, не зная деталей, я бы предложил разделить ответственность: за Z отвечает "группа ядра", за довесок и за Z* в целом перед заказчиком - п/г
при желании подробности можно обсудить в личке.
насчет софта... предполагаю, что можно прикрутить Caliber RM или что-то подобное, т.к. он позволяет связывать требования разных групп/уровней. хотя "это было давно и неправда"...
P.S. Могу посоветовать заглянуть в книжку Фатрелла (Фатрелл, Шафер, Шафер Управление программными проектами). К тому же есть опыт разработки и поддержки платформ (у той же 1С - в свое время про это много писалось, как сейчас не в курсе)