가이드라인: 사용자 인터페이스 (일반)
주제
창
기초: 컨텍스트 설정
이 절에서는 창 기반 사용자 인터페이스의 분석 내용을 개괄적으로 설명합니다. 다음 개요는
이 가이드라인의 나머지 파트를 이해하는 데 필요합니다.
창 기반 사용자 인터페이스는 여러 개의 창으로 나누어집니다. 창을 화면에서 자유롭게 이동하거나 서로 겹쳐
놓거나 아이콘으로 표시할 수 있습니다. 시스템에는 보통 하나의 기본 창과 여러 개의 보조 창이
있습니다. 주로 기본 창을 통해 사용자와 상호 작용하는데, 이 기본 창에는 종종 임의 수의 객체가
포함됩니다. 보조 창은 보조 창의 객체와 해당 객체의 조작에 대한 세부사항을 제공함으로써
기본 창과의 상호 작용을 지원하는데 사용됩니다.
기본 창
기본 창에는 사용자와 상호 작용하는 임의 수의 객체가 종종 포함됩니다. 사용자는 일반적으로 하나 또는 여러 개의
객체를 먼저 선택한(예: 객체 누르기) 다음 선택한 모든 객체에 실행되는 조작(예: 메뉴 사용)을 선택하여 시스템과
상호 작용합니다. 공통 조작에는 잘라내기, 복사, 붙여넣기, 삭제 및
등록 정보 보기가 있습니다.
기본 창에는 보통 메뉴 표시줄이 있으며, 이 메뉴 표시줄에서 사용자가 조작을 선택할 수 있습니다. 사용자는
팝업 메뉴를 통해(객체에서 바로 마우스 오른쪽 단추를 누름) 조작을 선택하고 직접 조정(객체를 눌러 끌기)하여
조작을 선택할 수도 있습니다. 전체 객체의 수가 기본 창 내에 모두 표시되지 않을 수 있으므로 화면이동 막대를
사용하여 객체 전체를 이동하거나 창 크기를 조정할 수 있습니다. 또한 기본 창은 흔히 분할창(창의 하위 영역 정의)으로 나눌 수 있으며 사용자는 이 분할창 크기 또한 조정할 수 있습니다.

Microsoft® Word®의 기본 창에서 문서 표시. 이 창에는 단락 및 문자와 같은
객체가 포함됩니다. (여기에서 제시된 예가 Microsoft 플랫폼으로 설명되지만 이 가이드라인은 특정 플랫폼에
결코 고유한 것은 아닙니다.)

Microsoft® Outlook®의 기본 창에서 편지함 표시. 기본 창에는 메일 메시지와
같은 객체가 포함되어 있습니다.
합성
사용자 인터페이스에서 합성 객체는 다른 객체를 시각적으로 구성하는 객체입니다. 예를 들어,
단락은 문자의 합성이고 복잡한 그리기 객체는 원시 그리기 객체의 합성입니다.
보조 창
보조 창은 해당 객체와 이 객체의 조작에 대한 세부사항(예: 등록 정보)을 제공함으로써
기본 창을 지원합니다. 객체의 등록 정보 중에서 극소수만이 보통 기본 창에 표시됩니다. 객체의 등록 정보는
객체의 속성을 모두 보여주는 등록 정보 창(보조 창)을 열어서 볼 수 있습니다. 사용자는 흔히 토글 및
단일 선택 단추, 배율, 콤보 상자 및 텍스트 필드와 같은 제어를 사용하여 속성을 변경할 수 있습니다.

Microsoft Word의 보조 창은 단락의 등록 정보를 표시하는 등록 정보 창입니다.

Microsoft® Outlook의 등록 정보 창은 메일 메시지의 등록 정보를 표시합니다.
기본 창과 보조 창 사이에 때로는 상당히 인위적인 세선이 있습니다. 이 창은 동일한 복잡도
레벨을 표시할 수 있습니다. 예를 들어, 위에 표시된 문서 창과 메일 창을 비교해 보면, 문서 창은 기본 창으로
간주되는 반면 메일 창은 보조 창으로 간주됩니다.
그러나 기본 창과 보조 창 사이의 두 가지 주요 차이점은 다음과 같습니다.
- 기본 창은 광범위한 사용성을 제공해야 하기 때문에 어플리케이션에 중요한 것으로 종종
간주됩니다. 따라서 기본 창을 중심으로 더욱 개발 노력을 기울이는 경향이 있습니다.
- 보조 창은 흔히 기본 창을 통해 탐색함으로써 표시되지만 그 반대의 경우는 아닙니다.
등록 정보 창 외에도 대화 상자, 메시지 상자, 색상표 및 팝업 창과 같은 기타 유형의 보조 창이 있습니다.

Microsoft Word의 대화 상자는 단락과 문자 간에 찾기 조작을 제공합니다.
다수의 어플리케이션이 파일 기반입니다. 사용자는 파일 객체에 대해 열기 조작을
사용하여(예: 폴더 내의 파일 아이콘을 두 번 누르기) 이 어플리케이션을 시작할 수 있습니다. 어플리케이션의
기본 창은 해당 파일에 저장되어 있는 객체를 표시합니다. 파일에 대한 공통 조작에는 저장,
다른 이름으로 저장, 열기, 및 새로 만들기가 있는데, 보통 기본 창의 파일 메뉴에서 선택할 수 있습니다. 기본 창에서는 복수 파일(복수 문서
인터페이스(MDI)라고도 함)을 표시하기도 하므로 사용자는 다양한 파일 사이를 전환할 수 있습니다.

Microsoft® Windows® 플랫폼의 파일 관리 창은 파일 및 폴더를 표시합니다.
시각적
차원 -
사용 가능한 기본 창의 핵심은 포함된 객체와 해당 속성을 시각화할 경우 시각적 차원을
사용하는 것입니다. 식별에 필요한 것보다 많은 속성을 제시하면 다음과 같은 장점이 있습니다.
- 사용자는 표시해야 하는 창의 수를 줄이기 때문에(사용자가 기본 창에 나타난 속성을 참조해야
할 경우) 창 탐색 오버헤드를 방지할 수 있습니다.
- 사용자는 비교와 패턴 인식 시작에 종종 유용한 여러 가지 객체의 다양한 특성을 동시에
볼 수 있습니다. 사용자가 시각적 차원을 활용하면 해당 업무를 간단히 처리한다는 완전히 새로운
느낌을 만들어 나갈 수 있습니다.
시각적 차원은 다음과 같습니다.
이 차원은 아래에 제시되어 있습니다. 그러나 객체의 시각화를 설계할 때 사용 가능한 화면 영역을
확인해야 합니다. 가능한 화면 영역을 작게 사용할 경우 오버헤드 작성을 시도하고 여러 개의 시각적 차원을
사용하는 것이 화면 영역을 추가로 소모할 정도로 가치가 있는지 고려하십시오. 사용자가 실제로 필요한
것은 가능한 많은 객체를 보는 것이므로 이름 목록별로만 제공하는 것이 사용자에게 적합할 수 있습니다.
이 시각적 차원을 사용하거나 확장하여 객체를 고유하게 식별할 수 있어야 합니다. 아래는 이 주제에
대해 설명한 것입니다(아래 "식별" 섹션 참조).
또한 예를 들어, 객체를 이동하거나(해당 위치가 시간이 지나면서 변경됨) 객체의 모양 또는 색상을
변경함으로써(해당 상태가 시간이 지나면서 변경됨) 시간 차원과 상관하여 시각적 차원을 사용할 수 있습니다.
후자의 경우는 아래 "모양" 섹션에서 설명합니다.
위치
위치에서 제공할 수 있는 대부분의 직관적인 특성은 실제 위치입니다.
예:
- 객체가 실제와 동일한 경도 및 위도에 나타나는 지도를 표시하는 지리 정보 시스템(GIS).
- 객체가 실제 좌표에 따라 해당 환경과 함께 정확하게 나타나는 컴퓨터 지원 설계(CAD) 프로그램.
- 객체(문자)가 인쇄물에 나타나는 것과 동일한 위치로 창에 이 객체를 표시하는 WYSIWYG(What You
See Is What You Get) 편집기.
때때로 실제 크기(CAD 프로그램 및 WYSIWYG 편집기의 예)를 표시하는 것이 타당하기도
하고 때때로 타당하지 않기도 합니다(예: 객체의 크기가 객체 사이의 거리보다 훨씬
더 작은 경우).
예를 들어, 사용자가 행선지를 입력해야 하는 항공 예약 시스템을 상상해보십시오. 이에 대해
제시할 수 있는 내용은 여러 공항들이 포함되어 있는 지도를 표시하는 것입니다(여기에서 공항은 객체임). 당연히
공항의 실제 크기는 부적절(너무 작아서 볼 수 없음)하기 때문에 모든 공항은 크기가 동일한 아이콘으로 표시됩니다.
이 예를 보면 사용자가 객체를 식별하는 데 도움을 주는 한 비록 타당하지 않더라도 실제 위치가 사용될 수 있음을
알 수 있습니다. 이 예에서 사용자는 공항의 위치를 알 필요가 없습니다. 그러나 사용자가 지리에 밝으면 목록에서보다
지도에서 행선지를 찾는 것이 더 쉬울 수 있습니다.
위치를 사용하여 "가상의" 실제 위치를 표시할 수 있습니다. 예를 들어, 사용자가 여러 상점에서 물건을 구입할 수 있는 홈 쇼핑 시스템을 상상해보십시오. 이에 대해 제시할 수 있는 내용은 여러 상점이 위치하는 가상 몰의
약도를 표시하는 것입니다(여기에서 상점은 객체임). 이 약도는 이 상점의 실제 위치와는 관련이 없습니다. 약도는
사용자의 공간적 기억력만 이용하는 것입니다. 목록 또는 계층 구조 상으로 항목을 기억하는 것보다 x-y 위치를 기억하는
것이 더 쉽습니다.
위치에 대한 다른 대안은 객체 간 연관성을 표시하는 것입니다. 수직 위치가 동일한 모든 객체는
한 방법으로 연관되어 있고, 수평 위치가 동일한 모든 객체는 다른 방법으로 연관되어 있습니다. 스프레드시트가 한 예입니다.
유사한 대안은 한 개 축이 일부 속성의 값 범위를 표시하도록 하는 것입니다. 예를 들어, 여행 예약 시스템에서
예약된 항공편(여기에서 항공편은 객체임)은 시간과의 관계, 예약된 항공편이 지속되는 기간, 그리고 사용자가
각 행선지에 채류하는 시간이 표시되는 수평 시간 축을 따라 표시될 수 있습니다. 이는 사용자가 모두 알
필요가 없는 것이지만 무난하게 표시될 수 있는지 확인하는 것이 좋습니다.
전체 값 범위를 표시하여 많은 화면 영역을 사용하지 않으려면 객체 간 거리를 축소시킬 수
있습니다. 여행 예약의 예에서 예약된 모든 항공편이 사이에 공백이 없이 수평으로 배치되는 것을 의미하지만
첫 번째 항공편은 왼쪽에, 두 번째 항공편은 첫 번째 항공편의 바로 오른쪽에 위치합니다. 사용자는 각 행선지에
채류하는 시간을 볼 수 없지만 항공편이 얼마나 지속되는지 알 수 있습니다.
크기
다수의 경우에서 "크기"는 위치와 동일한 것을 표시해야 합니다. 예를 들어, CAD 시스템에서
당연히 어느 정도 실제 크기를 표시합니다.
그러나 때때로 예를 들어, 행선지 선택을 지원하는 지도에서 공항을 어느 정도 크기로 표시해야 하는지
자유롭게 선택합니다.
이 경우에 크기는 객체의 실제 크기로서 가장 직관적으로 인지되는 것을 표시해야 합니다. 파일의 경우, 객체
크기는 점유된 디스크 공간의 양을 표시해야 합니다. 은행 계좌의 경우, 객체 크기는 잔액을 표시해야 합니다. 대부분
크기의 경우, 비례 배율이 보통 너무 많은 화면 영역을 차지하므로 대수 배율이 더 적합합니다.
크기는 실제로 직관적이어서 크기가 타당하지 않아도 이를 표시하는 것을 고려할 수
있습니다. 결국, 실제로 여러 가지 사항(객체)이 크기가 각기 다르기 때문에 시각적 필드를 다양한 비율로
점유하게 됩니다. 그리고 이는 무난하게 객체들을 구별하는 데 도움을 줍니다.
유사하게 사용자 인터페이스에서 다양한 크기를 사용하는 것은 사용자가 여러 가지 다른 객체를 구별하는 데
종종 도움을 줍니다.
수평 범위가 한 속성을 표시하고 수직 범위가 다른 속성을 표시하게 하는 것이 가능하더라도(이는
오히려 직관적이지 못하고 사용자에게 혼란을 줄 수 있음) 크기는 보통 한 속성만 표시하는 데 사용되어야 합니다.
수직 범위 또는 수평 범위 중에서 한 가지는 크기가 나타낼 속성에(대수적으로) 비례해야 합니다.
나머지 범위는 고정되어야 합니다(예: 이름의 길이에 따라 달라짐). 수평 및 수직 범위 모두가 동일한
속성에 비례하는 경우 값을 거의 추가하지 못합니다. 보기가 힘들며 화면 영역을 더 많이 점유하기만 합니다.
모양
모양은 GUI에서 보통 아이콘으로 표시합니다. 모양은 유형의 차이를 맵핑하는
것보다 외형의 차이를 맵핑하는 것이 직관적이기 때문에 유형을 표시하는 데 가장 적합합니다. 실제로 유형이
동일한 서로 다른 객체는 보통 유사하게 보이는 반면 유형이 다른 객체는
다르게 보입니다. 예를 들어, 의자의 여러 다른 객체는 유사하게 보이는(의자에는 네 개의 다리와 좌석
및 등받이가 모두 있음) 반면 자동차는 의자와 매우 다르게 보입니다.
따라서 다양한 객체의 유형이 다를 경우 기준은 무엇입니까?
다른 클래스는 다른 유형으로 확실히 간주됩니다. 또한 일부 속성은 "유형과 유사합니다." 이 속성에는
일련의 제한된 가능 값이 있어야 하고 해당 값은 조작과 가능한 기타 속성의 값에 대하여 객체와 수행할 수 있는 작업을
보통 판별합니다.
이는 실제로 동일합니다. 의자와 자동차의 가장 중요한 차이는 사용 방법입니다. 의자는 휴식용으로 사용하고
자동차는 수송용으로 사용합니다.
그러나 다양한 유형으로 간주되어야 하는 것을 분석할 경우 가장 중요한 것은 어떤 속성을 사용자가
유형으로 가장 유사하게 인식하는가 입니다.
복수 클래스 또는 "유형" 유사 속성이 없다면 아이콘을 사용하여 일부 기타
제한된 값 속성에 대해 다른 값을 표시할 수 있지만 이 속성이 사용자에게 중요한 관심사인 경우에만 해당합니다.
유형을 표시하는 것 외에 객체의 여러 가지 다른 상태를 표시하는 데 아이콘을 종종 사용하기도
합니다. 객체를 선택할 경우 두 가지 방법 중 하나로 보통 표시됩니다. 색상이 검정색으로 변경되거나
주위에 사각형을 표시합니다. 다른 가능한 상태는 객체에 대한 등록 정보 창을 열어보았다는 흔적입니다. 보통,
전자 우편을 읽었는지 여부와 같은 표시될 수 있는 기타 어플리케이션 특정 상태가 있습니다. 상태 프리젠테이션으로
인해 사용자가 유형을 인식하기가 더 어려운지 아니면 그 반대의 경우인지 반드시 확인하십시오.
색상
색상은 시각적 인식에 따라 세 가지 컴포넌트로 나눌 수 있습니다. 이 세 가지는 색조(빨간색, 파란색,
갈색 등), 채도 및 명도입니다. 그러나 이는 사용자가 인식하기에 너무 어렵기 때문에 다른 컴포넌트를
사용하여 다른 속성을 표시하지 않아야 합니다.
색조는 일련의 제한된 가능 값으로 유형 또는 속성을 표시하는 데 사용할 수 있습니다. 그러나 아이콘이
표시하는 값을 사용자가 이해할 수 있도록 아이콘을 설계할 수 있기 때문에 유형 또는 속성 표시에 아이콘을
사용하는 것이 더 적합하지만 색상과 대부분 유형의 값 사이에는 위와 같은 직관적인 맵핑이 이루어지지 않습니다.
따라서 직관적인 아이콘을 찾을 수 없는 경우 아이콘 대신 색조를 사용할 수 있습니다. 아이콘 유형이 많이
있는 경우의 대안은 유형 아이콘을 카테고리화(의미가 유사한 일부 아이콘은 빨간색, 의미가 다른 일부 아이콘은 파란색
등으로 카테고리화)하는 데 색조를 사용하는 것입니다.
채도는 값 범위가 있는 속성을 표시하는 데 사용할 수 있지만 오히려 사용자 인터페이스가 무난하지 않고
제대로된 모양을 보이지 않습니다. 다른 채도를 사용하는 것은 눈에 대한 피로를 줄여주지만 높은 채도를
사용하면 오히려 거슬리게 보입니다.
명도는 색상에서 가장 많이 사용할 수 있는 컴포넌트입니다. 명도는 값 범위가 있는 속성을 표시하는 데
사용할 수도 있으며 크게 거슬리지 않으므로 2차적으로 중요한 속성에 사용할 수 있습니다. 무난한 명도의 경우,
명도 없음(흰색)에서 완전 명도(검정색)로 변경해서도 안되고 낮은 명도(밝은 회색)에서 높은 명도(짙은 회색)로만
변경해야 합니다. 사용자가 대부분의 객체를 작성하는 다수의 시스템에서 일정 시기, 예를 들어, 최종 변경 이후
시간에 따라 객체를 표시하는 것이 매우 유용합니다. 이렇게 하면 사용자들이 작업하려는 객체를 식별하는 데
도움이 됩니다(이는 종종 "최종 변경 이후 시간"이 가장 짧은 객체입니다). 따라서 사용자에게 실제로
표시해야 하는 값 범위 속성이 없으면 표시 시기를 고려하십시오.
아이콘을 미적 감각이 돋보이도록 하는 데 흔히 색상이 사용되며 이는 사용자가 아이콘을
신속하게 구별하는 데 도움이 됩니다. 복수 색상의 아이콘을 제공하는 경우 다른 목적으로 색상을
사용하지 않아야 합니다.
일부 사람들은 색맹이고 모든 화면에서 색상을 지원하지 않으므로 중요한 일부 정보를 표시하는 유일한
수단으로 색상을 사용하지 않아야 합니다. 한편, 색상을 계획하여 무난하게 사용하면 사용자 인터페이스의
미적 감각을 돋보이게 할 수 있습니다.
식별사용자는
각 객체를 고유하게 식별할 수 있어야 합니다. 때때로 다른 시각적 차원이 식별하는 데 충분할 수 있지만
대부분의 경우 그렇지는 않습니다.
아이콘 내 또는 가까이에 이름을 표시하는 것은 식별을 지원하는 데 있어 가장 많이 사용하는
기술입니다. 이름의 장점은 매우 작은 화면 영역에서도 다양한 수많은 이름을 분명하게
표시할 수 있다는 것입니다.
속성값(일반적으로 텍스트)에서 이름을 생성할 수 있는 경우가 가장 좋습니다. 대안은 사용자가 객체를
작성할 때 이름을 지정하도록 하는 것이지만 이는 시간이 다소 소요되므로 사용성이 떨어집니다.
때때로 아이콘 안에 이름이 포함되도록 아이콘 모양을 만들 수 있습니다. 이렇게 하면 화면 영역이
절약되고 아이콘과 이름 간의 관계를 강력하게 표시할 수 있습니다. 그러나 여기에는 다음과 같은
문제점을 일으킬 수 있습니다.
- 아이콘 가운데(이름이 표시되는 곳)가 비어 있어야 합니다.
- 이름의 길이는 가변적이어야 하는데, 이는 아이콘의 수평 범위가 이름의 길이에 따라
달라지거나 일부 이름은 잘려나갈 수 있다는 것을 의미합니다.
- 적당한 길이의 모든 텍스트는 폭보다 더 길기 때문에 아이콘은 높이보다 폭이 커야 합니다.
결과적으로 아이콘의 아래 또는 오른쪽에 이름을 표시해야 하는데, 화면 영역을 덜 차지하는
장점이 있지만 객체(아이콘 + 이름)의 폭이 높이보다 더 커 보이는 단점도 있습니다.
이름을 표시할 공간이 전혀 충분하지 않으면(아이콘에 이름을 지정하지 않고 아이콘을
보통 식별할 수 있기 때문에 가능한 경우) 커서가 아이콘 위에 있을 때 표시되는 팝업 창을 통해
이름을 표시할 수 있습니다.
글꼴과 속성값 간의 직관적인 맵핑을 찾을 수 있다면(예를 들어, 객체를 구별하거나 중요도를
강조하기 위해 굵은체나 기울임체를 사용할 수 있다면) 이름의 글꼴은 제한된 선택 속성을 표시하는 데
사용할 수 있습니다. 그러나 대부분의 경우에 글꼴이 눈에 거슬리거나 거의 직관적이지 않기 때문에
글꼴을 사용하는 것은 바람직하지 않습니다.
이름(또는 실제로 사용자가 변경하도록 허용된 다른 텍스트)을 표시하는 경우 기본 창에서 직접 이름을
편집해야 합니다. 대안은 사용자가 이름 변경 조작을 요청한 후 새 이름을 입력하거나 등록 정보 창을 열어
이름을 편집하는 것입니다.
기본 창에서 직접 이름을 편집하는 것이 신속할 뿐만 아니라 "변경하는 위치를 볼 수 있다는"
원칙을 따르게 됩니다.
강력한 찾기 및 선택 
변경되거나 조작되어야 하는 객체 그룹이 객체를 식별하는 선택 기준을 사용자가 표현할 수 있도록 구성되면
기본 창의 검색 툴은 모든 기준 일치사항을 항상 선택함으로써 문제점을 해결할 수 있습니다.
검색을 관리하는 방법에는 두 가지가 있습니다.
- 검색 기준이 적용되는 모든 객체를 기본 창에서 선택합니다. 발견된 모든 객체가 기본 창에
동시에 표시된다고 보장할 수 없는 경우(객체들이 너무 떨어져 있을 수 있기 때문에) 검색 창에 히트
목록을 표시할 수도 있습니다. 검색 후에 사용자는 추가 검색 기준을 지정하거나 선택한 객체에 대한
조작을 수행합니다. 이 접근 방법의 장점은 사용자가 검색 기준과 일치하는 모든 객체에 일부 조작을
명령할 수 있다는 것입니다.
- 검색 기준과 일치하는 다음 객체를 선택하고 이 객체가 표시될 수 있도록 기본 창의 컨텐츠를 화면이동하는
검색 창에 검색 단추를 제공합니다. 검색 후에 사용자는 선택한 객체에 대한 조작을 수행한 다음 검색
기준과 일치하는 객체를 순차적으로 계속 검색할 수 있습니다. 이 접근 방법의 장점은 사용자가 주변에서(별도
히트 목록에서보다 오히려 기본 창) 발견된 각 객체를 볼 수 있다는 것입니다.
다수의 경우에서 예를 들어, 순차적 검색 창에서 모두 선택 단추 또는 병렬 검색 창에서 다음 보기 단추를 포함시킴으로써 두 가지 경우를 결합하고자 합니다.
정렬
시스템에서 모든 객체를 이름의 알파벳 순서로 수직 배열하거나 속성값에 따라 배열하는 것이 정렬의
예가 됩니다. 그러면 사용자는 화면이동하여 객체를 찾습니다. 이는 구현 및 사용자 조작 모두와 관련하여 가장
간단한 찾아보기 지원입니다.
사용자는 원하는 객체의 이름(또는 이에 따라 정렬한 속성)을 항상 알고 있으면 정렬이 최적의 상태로
이루어집니다. 이런 방식으로 구현되어야 하는 시스템의 예는 전화번호부입니다. 기본 창에는 정렬 순서
및/또는 기준을 변경하기 위한 조작이 종종 있습니다.
사용자 제어 상속
사용자 제어 상속의 예는 각 단락이 속하는 "양식"을 정의한 다음 이 양식(이 양식에 속하는
모든 문자)이 배치되는 방법을 정의하는 WYSWIG 편집기입니다.
검색 툴과 비교해 볼 때 단점은 사용자 제어 상속이 조작의 수행이 아닌 복수 객체 속성(그리고 연관)의
변경만 지원한다는 것입니다. 또한 사용자 제어 상속은 사용자가 그룹(사용 가능한 양식)을 명확하게
정의하고 유지관리해야 한다는 점에서 오버헤드를 추가시킵니다. 이는 훨씬 복잡한 개념이기도 합니다.
그러나 객체에 대해 검색 기준을 지정할 수 없는 경우 또는 사용자가 속성값을 상대적으로 변경해야
하는 경우(두 개씩 증가하는 것 처럼) 사용자 제어 상속을 제공하는 것이 솔루션이 될 수 있습니다.
사용자 제어 상속이 유용하다면 클래스의 속성은 객체를 대부분의 속성값이 동일한 그룹으로
카테고리화할 수 있는 정도여야 합니다.
검색 툴과 비교해 볼 때 장점은 사용자 제어 상속이 오버라이드를 지원한다는 것입니다. 예를 들어,
객체에서 명확하게 정의되지 않았다면 속성값을 변경하십시오. 또는 사용자 제어 상속을 통해 사용자는
일반적인(이에 따라 강력한) 속성값을 정의할 수 있습니다. 예를 들어, 이 양식에서 글꼴을 상속하지만
두 개 픽셀을 더 크게 합니다. 사용자 제어 상속은 그룹에 쉽게 지정할 수 있는 검색 기준이 없을 때 특히 유용합니다.
사용자 제어 상속을 지원하는 클래스는 스스로 상속하거나 목적을 상속할 새 클래스를 작성할 수
있습니다. 송장이 되거나, 계정이 되거나 등과 같이 원래 객체를 지향했던 것을 상속하고 수행하는 데 동일한
객체를 사용할 수 있으므로 클래스가 스스로를 상속하도록 하는 것이 약간 더 강력합니다. 이렇게 되면
사용자(및 시스템)가 관리하는 클래스가 거의 없어집니다. 한편, 상속할 클래스를 새로 작성하면 클래스의
정상적인 조작과 상속이 분명하게 분리되기 때문에 이해하기가 쉬워진다는 장점이 있습니다. 새 클래스를
작성하는 것은 대부분의 경우에, 특히 사용자가 컴퓨터와 객체 지향 모델에 경험이 많지 않은 경우에 최상의 솔루션이
됩니다. 새로 작성한 클래스는 여러 개의 상속 레벨을 지원하기 위해 우선적으로 스스로를 상속해야 합니다.
대부분 시스템의 경우, 사용자가 상속 그룹이 구조화되는 방법을 사전에 정확하게 알 수 없으므로 사용자는
특정 객체의 상속 그룹을 종종 변경해야 합니다. 이에 해당하는 조작을 제공하십시오.
시스템에서 사용자 제어 상속을 지원하도록 결정하면 상속해야 할 내용(속성, 연관, 클래스)을 분석하고
여기에만 해당하는 상속을 지원하십시오. 이렇게 하면 사용자와 개발자 모두가 크게 일반적이지 않지만 쉬운 방법으로 기능을 관리하게 됩니다. 새 클래스에서 상속해야 할 것을 모델링하십시오. 다수의 속성이 상속 중인
클래스와 상속된 클래스 모두에서 모델링됩니다. 사용자 제어 상속은 개발자가 아닌 사용자가 시간을 절약할 수
있게 해줍니다. 클래스가 스스로 상속하면 이는 모든 것이 상속 가능하다는 의미입니다.
사용자가 실제로 상속된 클래스의 객체를 새로 작성할 필요가 있는지 아니면 시스템에서 한 번만
충분한 수의 객체를 제공할 수 있는지 판별하십시오.
사용자가 객체를 새로 작성하지 못하도록 금지한다면 상속의 유연성이 상당히 떨어지지만 다른 한편으로는
조작이 용이해집니다.
또한 상속 중인 객체에서 숫자 속성의 변경사항을 상속된 값과 상대적인 것으로 해석해야 하는지 아니면
고정적인 것으로 해석해야 하는지 여부를 판별하십시오. 예를 들어, 객체가 글꼴 크기 12를 상속하고 사용자가
이 글꼴 크기를 14로 변경한다고 가정해 보겠습니다. 상대적으로 해석해 보면 시스템에서 객체의 글꼴 크기를
+2 값으로 상속했다고 기억합니다. 즉, 상속된 객체의 글꼴 크기가 해당 글꼴 크기로 변경되면 상속 중인 객체
또한 해당 글꼴 크기로 변경됩니다. 상대적인 해석을 지지하는 경우 상속된 객체의 속성에 주목해야
합니다(상속을 조사할 때 보는 곳이기 때문임). 사용자에게 상대적인 해석이 제시된다는 점이 중요합니다(예를
들면, 단지 "글꼴 크기: 14"보다 오히려 "글꼴 크기: 12 + 2 = 14"로 해석). 상대적이거나
고정적인 해석에 편승하여 상황을 찾아내는 시나리오를 탐색할 수 있습니다. 모두 지원해야 합니다.
사용자 제어 상속이 중급 또는 고급 사용자 전용이기 때문에 정상적인 사용을 방해하지 않도록(예를 들어, 사용자가 상속을 사용할 수 없을 경우) 설계해야 합니다. 그렇지 않으면 초보 사용자들이 사용을 꺼려할 수 있습니다.
구성하는 사용자 제어 상속이 사용자를 더욱 편리하게 하려는 것임을 기억하십시오. 일반적이거나
순수할 필요는 없지만 사용하기에는 편리해야 합니다.
찾아보기 계층 구조를 사용하면 사용자(또는 시스템)는 객체를 기본 창 또는 합성(계층 구조로 조직화된)으로
카테고리화할 수 있습니다. 찾아보기 계층 구조는 사용자만 한 가지(또는 여러 가지) 카테고리를 검색하도록
합니다. 이렇게 되면 특정 시점에 표시해야 할 객체의 수가 감소합니다. 약점은 사용자가 보통 카테고리화
작업을 관리해야 한다는 것입니다. 이 기술의 예가 파일 브라우저입니다. 여기에 디렉토리 또는 폴더가 있는
이유는 사용자가 파일을 찾는 데 도움을 주기 위해서입니다.
창 관리 
창 크기 및 위치는 보통 사용자가 완전히 제어합니다. 그러나 시스템이 창의 크기와 위치에
영향을 미치도록 함으로써 창 오버헤드 감소를 고려할 수 있습니다.
기본 창이 클수록 객체를 더 많이 표시할 수 있으나 화면 영역 또한 더 많이 차지하게 됩니다. 기본 창은
보통 화면 영역을 불필요하게 차지하지 않으면서 가능한 많은 객체를 표시해야 합니다.
- 모든 객체를 표시할 만큼 각 기본 창을 크게 조정하나 해당 화면보다는 크게 조정하지 마십시오. 전체 객체를
표시하지만 전자 출판 프로그램의 여백과 같이 유용한 파트를 표시할 수 있도록 충분히 크게 조정하십시오. 이 빈
영역을 표시할 공간이 있지만 이 공간이 기타 어플리케이션을 가려버릴 수 있습니다.
- 사용자가 세션 간의 크기를 조정할 수 있음을 기억하십시오. 객체의 수가 늘어나면 창이 이미 전체 화면이
아니거나 사용자가 기본값보다 작게 창 크기를 선택한 경우 모든 객체가 표시되도록 창 크기를 늘리십시오. 객체의
수가 줄어들면 사용자가 기본값보다 크게 창 크기를 선택하지 않았다면 크기를 줄이십시오. 이 규칙은 사용자의
크기 조정 조작의 의도를 따르도록 하는 데 있습니다.
어플리케이션을 다른 어플리케이션과 함께 종종 사용해야 하는 경우에는 기본 창의 크기를 추가적으로
제한할 수 있습니다. 그러면 창의 기본 크기를 화면 절반(전체 화면에 반대)으로 최소화할 수 있습니다.
되도록이면 다른 어플리케이션을 가리지 않도록 기본 창의 기본 위치를 지정하십시오. 일부 창을
가려야 한다면 가장 오래 동안 사용하지 않았던 창을 선택하고 사용자가 이를 쉽게 활성화 할 수 있도록
창을 조금만 보이게 하십시오.
위의 규칙을 적용하는 데 있어 단점은 사용자가 제어할 수 있는 파트가 적다는 것입니다(시스템이 질문하지
않고 창 크기를 변경하며 사용자가 지정한 세션 간의 위치 조정을 기억하지도 못함). 따라서 이 규칙을 적용하면
사용자가 제어를 사용하여 기능을 전환할 수 있어야 합니다.
보조 창의 경우 해당 크기 및 위치는 창이 호출한 창을 가리지 않고 다른 보조 창도 가리지 않는
정도여야 합니다. 보조 창이 호출한 창을 가려할 경우 이 보조 창이 선택한 객체를 가리지 않는지
확인하십시오. 선택한 객체와 같이 중요한 파트를 가리는 것은 보조 창의 공통된 사용 상의 결점입니다.
주요 기본 창 외 기본 창의 경우 마지막 단락의 크기 조정 규칙을 적용해야 합니다.
그러나 대화 상자가 활성 창을 가리지 않도록 배치해야 합니다. 대화 상자가 보통 일시적이고 작기 때문에
사용자는 일반적으로 대화 상자가 열려 있는 동안에는 활성 창을 볼 필요가 없습니다. 활성 창 위에 대화 상자를
배치하면 사용자가 이를 인식하며 커서가 보통 활성 창 위에 이미 있기 때문에 마우스 이동의 필요가 거의 없습니다.
등록 정보 창의 경우 속성 수가 크기를 결정합니다. 크기가 너무 크면(화면의 약 1/4) 탭을 더 많이 사용해야 합니다.
세션 정보 
모든 어플리케이션 형상은 사용자가 지정하지 않아도 세션과 세션 간에 저장됩니다. 보기를 선택한 창의 크기 및 위치, 그리고 화면이동 막대의 위치도 저장되어야 합니다. 사용자가 어플리케이션을 다시 시작할 때 마지막으로
어플리케이션을 종료했을 때와 같이 정확하게 나타납니다. 이에 대한 동기는 세션을 시작할 때 보통 사용자가 수행할
첫 번째 항목은 마지막 세션을 종료했을 때 있었던 곳으로 돌아가 작업하는 것입니다.
온라인 도움말 
온라인 도움말은 시스템에서 매우 중요한 파트입니다. 잘 설계된 도움말 시스템은 대부분 시스템의 경우
사용자 매뉴얼을 대체할 수 있어야 합니다. 대부분의 사용자가 매뉴얼을 사용하지 않는다고 알려진 경우에도
대부분의 프로젝트에서는 매뉴얼을 구성하고 작성하는 데 상당한 노력을 기울입니다. 대신 훌륭한 도움말 시스템이
있다면 이러한 노력을 투입해야 하는지 신중하게 고려해야 합니다.
고려해야 하는 다수의 도움말 툴이 있습니다.
- 주제별 도움말은 가장 중요한 도움말 툴입니다. 사용자는 이 도움말 툴을 통해 주제를 입력하거나
기존 주제를 찾을 수 있고 이 주제에 대한 도움말을 볼 수 있습니다. 핵심은 동의어가 많은 대형 도움말 색인을
제공하는 것입니다. 주의: 사용자가 도움말을 필요로 할 때 정확한 용어를 모를 수 있습니다.
- 객체별 도움말은 바로 가는 도움말입니다. 사용자 인터페이스의 특정 파트(객체)를 설명하는
텍스트를 표시합니다. 사용자가 바로 가는 도움말을 요청하고 도움말이 필요한 사용자 인터페이스의 일부분을
선택합니다. 이런 유형의 도움말은 편리하게 사용할 경우 사용자 인터페이스의 모든 파트에서
지원되어야 합니다. 다른 대안은 사용자가 몇 초 동안 어떤 행위도 하지 않으면 커서에 인접한 파트에
시스템이 제공하는 바로 가는 도움말의 축약 형식인 팝업 창으로 내재된 도움말을 제공하는 것입니다. 팝업
창에 내재된 도움말은 사용자 인터페이스의 정상적인 조작을 방해하지 않는다는 장점이 있습니다.
- 메시지 영역은 시스템에서 사용자의 조치에 대해 요청하지 않은 "설명"을
출력하는(보통 기본 창에 있는) 영역입니다. 이는 옵션으로 제공됩니다.
- 마법사는 사용자가 특정 작업 방법에 대한 도움말을 요청할 때
제공을 고려해야 하는 가장 대중적인 기술입니다. 마법사는 "hand-holding" 기술을 사용하여
중대한 타스크로 사용자를 안내합니다. 마법사는 사용자가 텍스트로 설명되는 타스크의 일부분을 실행하도록
해주는 조작(단추)과 병행하여 설명 텍스트를 표시합니다. 선택사항으로 마법사는 질문하고 사용자의 응답에 따라
자동으로 타스크를 수행합니다. 마법사는 중요하고 자주 사용되는 타스크에 가장 적합합니다.
바로 가는 도움말 및 마법사는 사용 테스트 중에 필요성을 확인할 수 있습니다. 사용 테스트 중에
사용자가 사용자 인터페이스의 여러 파트를 이해하지 못하면 바로 가는 도움말이 필요하다는
증거입니다. 특정 타스크를 수행하는 데 어려움이 있으면 마법사가 필요하다는 증거입니다.
다수의 도움말 시스템에 발생하는 문제점은 이 도움말 시스템이 초보자용(명백한 것을 설명하는
엄청난 양의 텍스트 전송) 또는 전문가용(사용자가 거의 어플리케이션을 개발한 프로그램머 정도의 관련 지식을
갖춘 것으로 예상하는 참조 매뉴얼)으로 작성되어 있다는 것입니다. 대부분 시스템의 경우, 사용자 대부분이
"중간 정도의 지식을 갖추는 것으로 개선되어 가고" 있습니다. 이들을 위한 도움말을 작성하십시오.
실행 취소 
실행 취소는 일반적으로 성취하기(구현하기) 어렵지만 매우 유용한 기능입니다. 사용자가 이 기능을 사용하면
어떤 항목을 제거한다는 것을 염려하지 않아도 되므로 빠르게 파악할 수 있습니다. 이는 정보 손실 위험을
감소시키기도 합니다. 정보 손실을 방지하는 대안적인 솔루션은 사용자가 정보 손실을 초래할 수 있는 모든 조작을
확인하게 하는 것입니다. 그러나 이는 상당한 상호 작용 오버헤드를 가중시키고 사용자가 무의식적으로 확인하게
되므로 적합한 솔루션이라 할 수 없으며, 따라서 이 해결책은 사용하지 않는 것이 좋습니다.
사용할 만한 옵션이라면 다시 실행과 가능하다면 여러 개 레벨의 실행 취소 및 다시 실행을
제공해야 합니다. 그러나 첫 번째 실행 취소 레벨로도 늘어난 사용성의 대부분을 성취한 것과 다름 없습니다.
매크로 에이전트 
매크로를 제공하는 경우, 사용자 조치를 지속적으로 모니터하고 반복되는 상호 작용 순서를 찾는
에이전트를 이용하는 것이 매우 유용할 수 있습니다. 반복되는 상호 작용 순서가 발견되자 마자 바로 이 에이전트는
해당되는 매크로를 작성합니다(사용자에게 허가를 요청한 후). 사용자가 두 개 텍스트 단락에 대해 "밑줄"을
쳤고 "밑줄"을 친 후에 텍스트 색상을 파란색으로 변경했다고 가정합니다. 그러면 에이전트는 사용자가 선택한
텍스트 단락에 대해 "밑줄" 및 "색상을 파란색으로 설정"을 모두 수행하는 매크로를 원하는지
사용자에게 질문합니다. 그렇다면 에이전트는 해당 매크로와 이 매크로를 실행하는 누름 단추(또는 메뉴 항목)을 작성해야 합니다.
사용자가 레코딩 중에 객체를 선택하면 이는 보통 "델타" 스펙으로 해석됩니다. 즉, "다음
선택", "첫 번째 하위 선택" 등과 같이 이전 선택과 관련하여 어떤 객체를 선택했는가 입니다.
객체 속성의 변경을 델타 스펙(예를 들어, 12에서 14로 속성값 변경을 14로 설정하는 것보다는 오히려 2가
증가하는 것으로 해석)으로 해석해야 하는지 여부는 명백하지 않습니다. 복수 객체에 대한 속성을 고정 값으로
변경하는 것이 복수 객체를 선택한 다음 해당되는 속성 창을 열어 종종 수행할 수 있기 때문에 보통 델타 스펙으로
해석하는 것이 더 유용합니다. 속성 창에서는 속성을 한 번만 14로 설정합니다.
동적 하이라이트
흔히 클래스 간 연관이 양방향인데, 이는 실제 사용자 인터페이스에서 해당 연관이 두 객체 모두에 표시된다는
것을 의미합니다. 객체 A에 중심을 두는 사용자는 A가 객체 B와 연관이 있음을 알 수 있다면
사용자에게는 보통 그 역도 흥미가 있습니다(객체 B에 중심을 둘 때 사용자는 B가 A와
연관이 있는 것으로 알 수 있음).
연관은 보통 객체의 등록 정보 창에 표시되고 연관된 객체는 이름별로 식별합니다.
일반적으로 기본 창에서 객체 간 연관을 시각화하는 것은 까다롭습니다. 연관을 화살표 또는 선으로 시각화하면
오히려 좋지않은 인상을 주며 "혼란스럽게" 됩니다. 연관을 시각화하는 한 가지 좋은 방법은 연관되는
객체 위에 커서가 있을 때 연관된 모든 객체를 하이라이트하는 것입니다. 이에 대한 예는 문서 편집기에서 각주가
문자와 연관되어 있는 경우이고 연관되어 있는 문자 위에 커서가 있으면 각주가 하이라이트되는 경우입니다.
|