Инструменты пользователя

Инструменты сайта


bbnohost

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
bbnohost [2013/12/04 12:32]
admin
bbnohost [2014/01/10 13:15]
kpmy [Проблема герметичности]
Строка 24: Строка 24:
 Разделение *System* на абстрактный интерфейс и платформо-зависимую реализацию позволяет добиться **герметичности** платформо-независимой части системного слоя. Герметичность позволяет заменять платформо-зависимые системные модули без модификации клиентских модулей. Разделение *System* на абстрактный интерфейс и платформо-зависимую реализацию позволяет добиться **герметичности** платформо-независимой части системного слоя. Герметичность позволяет заменять платформо-зависимые системные модули без модификации клиентских модулей.
  
-В идеале, абстракции системного слоя должны удовлетворять всем потребностям прикладного слоя. Но, по историческим причинам, в эталонной сборке BlackBox системные абстракции не идеальны и поэтому имеются **нарушения герметичности** системного слоя (также обозначенные на рисунке красными стрелками), что приводит к прямой или косвенной (строковые константы и т.д.) зависимости прикладных модулей от операционной системы+Герметичность здесь понимается как отсуствие [[http://www.joelonsoftware.com/articles/LeakyAbstractions.html|протечек абстракций]] системного и прикладного слоя.
  
 +В идеале, абстракции системного слоя должны удовлетворять всем потребностям прикладного слоя. Но, по историческим причинам, в эталонной сборке BlackBox системные абстракции не идеальны и поэтому имеются **нарушения герметичности** системного слоя (также обозначенные на рисунке красными стрелками), что приводит к прямой или косвенной (строковые константы и т.д.) зависимости прикладных модулей от операционной системы. 
  
 # Решение проблемы нарушения герметичности # # Решение проблемы нарушения герметичности #
Строка 45: Строка 46:
 ## Устранение зависимостей от подсистемы Host ## ## Устранение зависимостей от подсистемы Host ##
  
-Модули подсистем *Std* и *System*, входящие в эталон BlackBox по большей части являются платформо-независимыми. Однако, в некоторых местах обнаруживаются прямые (импорт) или косвенные (через строковые константы/ресурсы, отображения на формах и т.д.) зависимости от подсистемы *Host*.+Модули подсистем *Std* и *System*, входящие в эталон BlackBoxпо большей части являются платформо-независимыми. Однако, в некоторых местах обнаруживаются прямые (импорт) или косвенные (через строковые константы/ресурсы, отображения на формах и т.д.) зависимости от подсистемы *Host*.
  
-Эти зависимости в той или иной степени обеспечивают функционирование эталона, при этомухудшая его платформо-независимость. Так как функции, которые обеспечивает *Host* необходимы системному слою, необходимо предоставить возможность использования этих функций, но уже с использованием герметичных решений. +Эти зависимости в той или иной степени обеспечивают функционирование эталона, при этом ухудшая его платформо-независимость. Так как функциональность *Host* нужна системному слою, то необходимо сохранить её, но уже с использованием герметичных решений. 
  
 Для устранения зависимости подсистемы *Std* от *Host* введём ряд дополнительных абстракций в подсистему *System*, которые заместят необходимые ранее зависимости. А подсистему *Host* дополним подсистемой *Oberhost* (рабочее название, которое может измениться в дальнейшем), в которой находятся реализации этих абстракций. Для устранения зависимости подсистемы *Std* от *Host* введём ряд дополнительных абстракций в подсистему *System*, которые заместят необходимые ранее зависимости. А подсистему *Host* дополним подсистемой *Oberhost* (рабочее название, которое может измениться в дальнейшем), в которой находятся реализации этих абстракций.
Строка 55: Строка 56:
 Прикладные компоненты с зависимостями от *Host*, должны быть аналогичным образом преобразованы в набор абстракций и Host-реализаций. Прикладные компоненты с зависимостями от *Host*, должны быть аналогичным образом преобразованы в набор абстракций и Host-реализаций.
  
 +----
  
 +Кушнир П.М., Кузьмицкий И.А. 
  
 +Ярославль, 2013 г.
bbnohost.txt · Последнее изменение: 2022/12/27 13:39 — iadenisov