여러 가지 예가 있으므로 질문에 초점을 맞추기 위해 특정 예를 선택하겠습니다.
사용자가 특정 특성 (또는 권한)을 가질 수 있다고 가정 해 봅시다.
관리자, 가상, 외부, 재무 등.
복잡하게하기 위해 사용자는 Premium, Regular, Limited 등의 다른 라이센스도 가지고 있습니다.
아마도 이것이 어디로 가고 있는지 볼 수 있습니다.
제한된 라이센스를 가진 사용자는 관리자이거나 재무 권한을 가질 수 없습니다.
가능성 :
행동을 막고 그 이유를 설명 할 수있는 방법이 있습니까? 툴팁으로 비활성화 된 컨트롤이 작동합니까? 더 나은 아이디어가 있습니까?
다른 예를 간단히 언급하려면-대화 형 그래프가 있고 그래프에서 대부분의 점을 이동할 수 있지만 일부는 정지해야한다고 가정 해 봅시다. 다른 이유를 설명하지 않고 이동할 수 없음을 나타 내기 위해 다르게 그릴 수도 있고, 사용자가 드래그하여 오류 메시지를 표시하도록 할 수도 있습니다.
응용 프로그램에 따라 종종 사용자가 액세스 할 수없는 페이지 부분을 표시하지 않습니다. 사용자가 다른 사용자의 권한을 변경 한 것처럼 들리므로이 방법이 작동하지 않을 수 있습니다. 비활성화 된 입력 요소를 표시 할 때마다 오류 메시지를 표시하는 것이 좋습니다. 사용자는 자신이 할 수있는 조치를 수행 할 수 없을 때 실망 할 수 있습니다. 방금 사용하지 않으면 아마도 이유를 이해하지 못하고 프로그램에서 가져옵니다. 마찬가지로, 메시지가 가능한 한 간단하고 요점인지 확인하려고합니다. 긴 오류 메시지는 종종 무시됩니다.
사용자가 액세스 할 수없는 기능에 대한 UI의 일부를 완전히 숨기려면 다음을 고려하십시오.
다음은 간단한 예입니다. 응용 프로그램에 인쇄 옵션이 포함되어 있다고 가정하십시오. 사용 가능한 프린터가없는 경우 인쇄 메뉴 명령을 완전히 숨겨야합니까? 사용자가 모든 메뉴를 검색하고 기술 지원 팀에 연락하여 "인쇄"명령을 찾으려고하면 혼란스럽고 시간이 낭비됩니까? 기술 지원 팀이이 사용자에게 "인쇄"명령이 표시되지 않음을 이해합니까? 예를 들어 프린터가 연결되어 있지만 전원을 절약하기 위해 자체 전원을 끈 경우 의도하지 않은 부작용이 있습니까?
일반적으로 옵션을 사용할 수있는 경우가 많은 경우 특히 옵션이 비활성화 된 옵션 또는 옵션이 현재 사용 가능합니다.
두 가지 접근 방식이 있습니다.
security 때문에 작업이 비활성화되면 가능한 경우 실제로 제거하려고 시도합니다. 메뉴 항목이나 대부분의 툴바 버튼으로 쉽게 사용할 수 있습니다.
더 저렴한 버전의 소프트웨어를 사용하여 작업이 비활성화 된 경우 그대로 유지하지만 비활성화합니다. 이를 통해 사용자는 "더 많은 비용을 지불하면이를 가질 수 있음"을 알 수 있지만 제거 된 경우 무엇을 놓쳤는 지 알 수 없습니다. 사용자가 실제로 작업을 수행하지 않고 작업을 수행 할 수 있는지 여부를 사용자가 알 수 없기 때문에 "라이센스로 인해이 작업을 수행 할 수 없습니다"팝업이 잘못된 UI로 표시됩니다.
다른 접근 방식은 동작을 전혀 표시하지 않는 것입니다.
스택 교환이 좋은 예입니다. 다른 사람의 게시물에 대한 "수정"권한이없는 경우 "수정"링크가 표시되지 않습니다 모두. 이것은 클릭하지 않고 왜 작동하지 않는지 궁금합니다.
모든 상황에서 작동하지는 않지만 예를 들어 "admin"및 "financial"옵션/링크는 제한된 사용자에게는 나타나지 않으며 심지어 해당 사용자의 관리 화면에도 나타나지 않습니다. 사용자가 "일반"또는 "프리미엄"사용자로 변경된 경우 해당 옵션/링크가 나타납니다.
그런 다음 관리자가 특정 옵션/링크가 보이지 않는 이유를 상기시킬 수 있도록 반 눈에 띄는 곳에 사용자 유형을 표시하는 것을 고려할 수 있습니다!
다른 답변에서 언급했듯이 사용자에게 시스템 내에서 작업을 수행 할 수있는 권한이 없으면 (편집/관리자 권한 없음) 작업이 전혀 표시되지 않아야합니다.
응용 프로그램 상태로 인해 작업이 비활성화 된 경우 (읽기 전용 파일을 편집 할 수없고, 텍스트를 선택하지 않은 경우 복사/붙여 넣기 할 수없는 경우, 사용자에게는 몇 가지 기능이없는 평가판 소프트웨어가 있습니다) 등 작업을 현재 수행 할 수 없다는 시각적 표시와 함께 작업은 displayed이어야합니다. 사용자가 tries 해당 조치를 수행 할 수없는 이유를 찾을 수 있어야하기 때문에 "disabled"라고 말하지 않습니다. 이를 통해 사용자는 작업이 비활성화되었음을 알 수 있지만 그 이유를 설명하는 메시지를받을 수도 있습니다.
사용자에게 기능이없는 평가판/라이센스가없는 응용 프로그램 버전이있는 경우 조심해야합니다. 예를 들어, 비용을 지불하지 않으면 CD를 리핑하지 않는 ISO 읽기/쓰기 응용 프로그램이있는 경우 "CD 리핑"옵션을 표시 할 수 있지만 사용자가 CD를 수행하지 못하게 할 수 있습니다. 그러나 응용 프로그램에 고급 버전의 기능 (예 : Visual Studio)의 전체 제품군이있는 경우 모든 것을 표시하지만 허용하지 않으면 사용자에게 좌절감을 줄 수 있습니다. 나는 IDE을 열고 싶지 않다. 데이터베이스, 네트워킹, 통합 UML, 테스트, 프로파일 링 등을 볼 수있다. .
내 경험 규칙은 다음과 같습니다. 권한으로 인해 사용자가 작업을 사용할 수없는 경우 표시되지 않습니다. 임시 컨텍스트로 인해 조치를 사용할 수없는 경우 (이 '저장'단추는 사용자가 저장할 항목을 입력 할 때까지 의미가 없습니다), 사용 불가능합니다.
"권한"은 "관리자 사용자 대 일반 사용자"및 "프리미엄 라이센스 대 싼 라이센스"를 모두 포함합니다. 사용할 수없는 UI 요소는 복잡합니다. 추가 기능을 광고하는 방법이 아닙니다.
많은 답변 이이 옳은 것처럼 보이며 Nielsen의 휴리스틱 중 하나와 정확하게 요약하고 싶었습니다. 상태는 다음과 같습니다.
오류 방지 좋은 오류 메시지보다 더 나은 것은 문제가 처음에 발생하는 것을 방지하는 신중한 디자인입니다. 오류가 발생하기 쉬운 조건을 제거하거나 점검하여 조치를 취하기 전에 확인 옵션을 사용자에게 제시하십시오.
출처 : http://www.useit.com/papers/heuristic/heuristic_list.html
shemnon 's 답변을 정말 좋아합니다. 나는 그의 두 번째 사건을 확장하고 점화의 언급 된 닐슨 계명을 적용 할 것이다. 사용자에게 더 저렴한 라이센스가 있으면 옵션을 비활성화하고 선택 개체를 옵션으로 비활성화하여 옵션의 비활성화 상태를 더욱 명확하게하는 아이콘으로 바꿉니다.
같은 것
이 가정 제품이 아직 개발 중이므로 최소한 같은 페이지에 사용자의 라이센스 수준에 대한 설명도 포함시킬 것입니다. 이렇게하면 관리자는 관리자가 해당 라이센스의 직접적인 영향을받는 시스템 변수를 보는 것과 동시에 사용자의 라이센스 레벨을 볼 수 있습니다.
소프트웨어의 아름다움은 정보를 호출하기 만하면된다는 것입니다.
편집 : 또한 역할 중심의 권한 체계를 사용하여 권한을 개별 사용자가 아닌 역할에 할당 할 수 있습니다. 이것은 종종 개별 사용자 권한을 미세 관리 할 필요가없는 많은 오버 헤드를 완화합니다.
- 관리자가 역할 편집 화면을 엽니 다.
- 관리자는 역할이 적용될 가장 낮은 라이센스에 대한 단일 선택 단추를 선택할 수 있습니다.
- 선택한 역할에서 사용할 수없는 권한이 비활성화되고 "x"됩니다.
- 관리자는 남아있는 활성 옵션에서 권한을 선택합니다.
- 나중에 사용자 관리 화면 또는 사용자 프로필에서 관리자는 사용자가 라이센스를 기반으로 할 수있는 역할 목록을보고 관리자가 하나 이상을 선택합니다.
일반적으로 제 경험 법칙은 다음과 같습니다 (그리고 그것을 깨뜨릴 좋은 이유가 필요합니다) : 비활성화 된 구성 요소의 이유가 컨텍스트에서 흐르거나 다른 이유로 인해 사용자가 이해하기 쉽다면, 그런 다음 차단이 선호되는 솔루션입니다. 그렇지 않으면, 사용자는 왜 이런지 알아 내려고하는 것에 좌절 할 수 있으며, 최악의 경우, 다음에 발생할 때 그 이유 (그가 알아 낸 경우)를 기억하지 못할 것입니다.
특정 질문에 대답하기 위해 사용자가 클릭하기 전에 제한 사항을 이해할 수 있도록 충분한 정보를 표시하려고합니다. 귀하의 예에서, 귀하는 해야합니다 각 사용자의 라이센스를 설정하기 위해 컨트롤과 시각적으로 연결된 (예 : 근접성으로) 읽기 전용 필드로 라이센스를 나열해야합니다. 권한. 또는 라이센스 필드를 권한 레이블과 동적으로 결합 할 수 있습니다 (예 : "권한 (제한된 라이센스) :").
적용 할 수없는 권한은 사용하지 않도록 설정해야하며 숨겨져서는 안됩니다. 혼란스러운 가치가있는 경우 인라인 텍스트, 호버 텍스트/툴팁 또는 라이센스가 허용하지 않는 이유를 설명하는 링크를 포함하십시오 (인라인 텍스트가 권한을 나열하면 비활성화 된 컨트롤을 대체 할 수 있습니다 (예 : "관리자"). , 제한된 사용자에게는 금융이 허용되지 않습니다”).
사용자가 UI에서 명령을 사용하기 위해 무언가를 할 수있는 경우 일반적인 규칙은 사용하지 않는 것입니다. Disabled는 "이 명령을 수행 할 수 있지만 현재 상황은 아닙니다."를 의미합니다. “방법은”현재 선택을 포함합니다. 비활성화를 사용할 때마다 사용자가 일부 개체에 대해 관련 명령이 비활성화 된 이유를 이해할 수 있도록 명확한 표시가 있어야합니다.
no way 가없는 경우 메시지 상자를 사용하여 도메인에 대한 평균 지식이 있다고 가정하여 사용자에게 비활성화 이유를 명확하게 표시하십시오. 비활성화 된 컨트롤의 툴팁은 좋은 생각이지만 모든 경우에 충분하지는 않습니다.
조직에서 현재 위치를 고려하여 UI에서 수행 한 작업에 관계없이 사용자가 명령에 액세스 할 수없는 경우 숨기기를 사용하십시오. 예를 들어 사용자에게 권한이 부여되지 않은 작업은 단순히 나타나지 않습니다. 이 경우 비활성화 또는 메시지 상자를 사용하는 것은 혼란스럽고 실망 스럽습니다. 사용자와 관련하여 권한이없는 작업은 작업이 아니며 (그렇지 않으면 액세스 권한이있는) 작업이므로 관련 컨트롤이 UI에 존재하지 않아야합니다. 문서 또는 조직 절차 설명서는 이러한 작업이 수행되는 방법을 사용자에게 알려줄 수 있습니다 (예 : "관리자가 새 고객 계정을 생성합니다"또는 "계정을 편집하려면 재무 권한이 필요합니다. 권한을 업그레이드하기위한 절차는 관리자에게 문의하십시오). ”).
컨트롤 제어 에 자세한 내용이 있습니다.
위의 요점 중 일부는 훌륭하며 반복하고 싶지 않지만 ...
이 경우 사용 가능한 모든 옵션이 표시됩니다. 규칙에 적용되지 않은 옵션은 비활성화해야합니다 (회색으로 표시). 어떤 인터페이스 사용자라도 무언가가 회색으로 표시되면 일반적으로 일부 규칙 세트에 적용 할 수 없음을 인식하는 것이 일반적입니다.
툴팁은 비활성화 된 버튼과 완벽하게 일치합니다. 적절한 라이센스가없는 사용자가 더 높은 라이센스가 필요한 영역을보고있는 경우 단추의 기술을 "지금 업그레이드!"와 같은 것으로 완전히 변경 한 경우 위의 라이센스가있는 특수한 고급 사례가 있습니다. 회색으로 표시하지 않고 제품에 대한 광고를 개선하는 것이 좋습니다.
관리자가보고있는 경우 이유를 설명하는 도구 설명과 함께 재무 옵션이 회색으로 표시됩니다.
문제의 상황을 완전히 알지 못하며 관련 제품이 없을 수도 있습니다. 그러나 내가 이해 한 것에 기초하여, 그것은 그것에 대한 나의 반응입니다.
Windows UXGuide에는 오류를 표시할지 또는 잘못된 입력을 방지 할지를 결정하는 데 도움이되는 많은 리소스가 있습니다. 특히 ui에 대해 아래 진술을하는 a section 가 있습니다.
사용자가 메시지의 결과로 동작을 수행하거나 행동을 변경하지 않을 경우 오류 메시지를 표시하지 마십시오. 사용자가 취할 수있는 조치가 없거나 문제가 심각하지 않은 경우 오류 메시지를 표시하지 마십시오.
또한이 토론은 Karl Shifflett이 자신의 blog post "Fort Knox Business Objects (yes/no)"에서 Business Objects의 진입 여부에 대한 장단점을 설명합니다. 유효하지 않은 상태 및이 결정이 사용자 상호 작용에 미치는 영향.
개인적으로 사용자가 대부분 버튼과 같은 작업을 수행하는 잘못된 항목을 만들거나 컨트롤을 비활성화하지 못하게하는 경향이 있지만 복잡한 텍스트 입력과 관련된 일부 컨트롤의 경우 메시지 상자보다 눈에 띄지 않지만 인라인 경고가 표시되는 경향이 있습니다. 건너편.
이것은 실제로 하나 또는 상황이되어서는 안됩니다. 다른 답변에는 사용할 수없는 옵션을 표시 한 이유와 표시하지 않는 이유가 나와 있습니다. 그러나 어느 쪽이든 백엔드에서 올바르게 처리해야합니다. 사용자가 입력 할 수있는 유일한 입력이 올바른 입력이라고 생각하더라도 사용자 입력 및 권한을 올바르게 확인해야합니다.
이는 사용자가 비활성화 된 제어/옵션/입력을 인위적으로 활성화 할 수있는 모든 웹 기반 응용 프로그램에서 이중 적용됩니다. Firebug를 사용하면 내가 할 수있는 일을 제어 할 수있는 앱의 능력을 능가하지 마십시오. 사용할 수없는 옵션을 사용하려는 경우 이벤트를 기록해야합니다.