Особое внимание в ходе проектирования было уделено «сердцу» системы: аудиоблоку. В сущности, это была внутренняя субархитектура всей системы. Чтобы определить ее, мы проанализировали потоки данных через серию компонентов и пришли к конвейерной архитектуре, изображенной на рис. 2.3. Продукты использовали разные конвейеры в зависимости от их физической конфигурации. Поначалу конвейер оставался обычной концепцией – набором блоков на диаграмме. Мы еще не решили, как это все будет связано между собой.
Также на ранней стадии были выбраны вспомогательные библиотеки, которые будут задействованы в проекте (например, библиотеки Boost С). Тогда же были приняты основополагающие решения, обеспечивающие простой и связный рост кодовой базы, в том числе:
• Верхний уровень файловой структуры.
• Правила выбора имен.
• Стиль представления.
• Стандартные идиомы программирования.
• Выбор инфраструктуры модульного тестирования.
• Вспомогательная инфраструктура (контроль версий, система сборки, непрерывная интеграция).
Все эти «мелочи» были очень важны: они вплотную смыкались с программной архитектурой и, в свою очередь, повлияли на многие последующие архитектурные решения.
Related posts: