Нас ещё в советские времена учили разделению функций между программной и аппаратной частью при проектировании автоматизированных систем. В рассматриваемой ситуации получается аналогично - необходимо разделение функций между прикладным ПО и системным (функциям ОС). Если нужна переносимость - всё, что можно сделать средствами ОС, этими средствами лучше и делать. А переносимость конечно нужна, так как она обеспечивает живучесть проекта.Olej писал(а): 4. сетевые сервисы - здесь то же решение, что п.2: оберните их с помощью Boost ... но в отношении сетевых дел важнее другое (чем сокеты написать): отнесите всё относящеееся к конфигурации и настройке сетевых сервисов к компетенции ОС, не оставляйте следов этой конкретики в программном коде.
6. а ещё :
- отдайте языковую локализацию на откуп установкам ОС, не используйте явную локализацию в коде...
- C++ реализация будет более переносимой, чем C
и т.д.
С пятым пунктом (нестандартным оборудованием, платы АЦП там всякие...) стратегия для переносимости напрашивается аналогичная сетевым сервисам. Это если абстрактно подходить, а как реализуемость такой абстракции обеспечить... Надо бы ещё подумать.