Контролирующие приложения

Одной из таких программ, скорее всего, станет какое-то управляющее приложение. Например, этому приложению нужно будет проверить, разрешено ли мистеру Смиту войти в дверь номер 76 в 6:30, и если это подтвердится, разрешить ему войти. Вы можете заметить, что управляющей программе потребуется доступ к базе данных (для проверки прав доступа, и, возможно, протоколирования), также эта программа должна уметь получать данные со считывателя магнитных карт (чтобы знать, кто пытается пройти в эту дверь), и управлять дверными замками (чтобы открыть дверь).

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

Система должна быть масштабируемой — т.е. она должна работать не только в маленьком офисе с несколькими устройствами, но и в большой компании с сотнями (если не тысячами) устройств.

Если вам нужна масштабируемая система, то следует позаботиться о следующих вопросах.

Достаточно ли будет мощности центрального процессора для работы системы в максимальной конфигурации?
Хватит ли возможностей аппаратуры (PCI слоты, и т.д.)?
Как распределить вашу систему?
Есть ли какие-нибудь узкие места? Где они, и как их можно обойти?
Как вы можете заметить, все эти вопросы масштабируемости очень тесно связаны с тем, насколько хорошо вы проработали структуру вашей системы. Например, если вы возложили слишком много функций на один процесс (скажем, у вас один процесс контролирует все дверные замки), то вы ограничиваете свои возможности исполнять этот процесс на нескольких процессорах. С другой стороны, если вы слишком ограничите функциональность процесса, скажем, к примеру, один процесс обслуживает одну функцию одного замка, то у вас возникнет проблема чрезмерного обмена данными и задержки в работе.

Теперь давайте рассмотрим структуру ваших драйверов, не забывая про только что упомянутые вопросы.

Добавить комментарий