Уровень доступа + функционал. Алгоритмы

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Двоешник
Открыл глаза
Сообщения: 46
Зарегистрирован: Пн фев 28, 2011 12:10:08

Уровень доступа + функционал. Алгоритмы

Сообщение Двоешник »

Есть электронный прибор с микропроцессорным управлением.
К прибору могут прикладываться самые разные люди, с разной квалификацией и полномочиями. Для этого я ввожу в систему такое понятие как уровень доступа (Level_0, Level_1, Level_2,..Level_Х)
Но помимо этого у прибора есть определённый функционал, функции которого обрабатывают например клавиатуру, датчики, ЖПС модуль, элементы индикации, исполнительные ус-ва, реле и т.д.
С разных уровней доступа, человек который работает с прибором, может рассчитывать на разный функционал. Другими словами сами логика и правила управления прибором должны учитывать уровень доступа пользователя в системе.
Скажите, как правильнее реализовать (запрограммировать) обработку и функционала и уровня доступа? Я говорю о решении ,которое будет удобно тестировать и отлаживать.

У меня есть идея поместить управление всеми элементами индикации, всеми реле и другими исполнительными устройствами в одну фукнцию, а перед всеми входными воздействиями поставить как своего рода фильтр другую функцию. И тогда уже внутри этих функций, в соответствии с уровнем доступа, принимать решения о функционале в соответствующем уровне.
Что это даст:
а) я пишу функционал так как будто нет никаких уровней доступа (но в тех местах где я что-то получаю либо чем-то управляю из алгоритма, делаю это не напрямую, а через эти функции "пробки")
б) я экономлю на объеме кода (оч. актуально в моем случае)
в) сопровождать/править/отлаживать легче

Не факт что так правильно, но если че поправьте. Спасибо!

---
Не знал куда правильнее запостить. и решил тут разместить. Если че - перенесите по месту.
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Уровень доступа + функционал. Алгоритмы

Сообщение pyzhman »

Двоешник писал(а):перед всеми входными воздействиями поставить как своего рода фильтр другую функцию.
При разделении доступа основной критерий - сигналы на выходе приблуды и содержимое памяти, в которой хранятся данные для управления в вашем случае реле. Поэтому, как мне кажется, пусть пользователь делаает все, что ему заблагорассудится, но при попытке сохранения или управления соответствующая функция-фильтр отсечет ненужное по уровню доступа. Т.е. она стоит на выходе.
Docendo discimus
Реклама
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: Уровень доступа + функционал. Алгоритмы

Сообщение Goldsmith »

Я бы в таком случае воспользовался паттерном GoF Strategy.

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

Экземпляры стратегий можно либо статически заготовить заранее, если категорий пользователей немного, либо генерировать при необходимости посредством Class Factory.

Решения вполне типовые, их легко реализовать, протестировать и отладить.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»