2장 화면 설계
1. UI 요구사항 확인
UI(User Interface)
사용자와 시스템 사이에서 의사소통할 수 있도록 고안된 물리적, 가상의 매개체
ex. 디스플레이 화면, 아이콘, 검색창, 키보드, 문자, 색상, 폰트 등
UX(User Experience)는 UI를 초함하고 있다
UX : 사용자가 컴퓨터, 웹사이트, 시스템 등 정보기기의 UI를 직/간접적으로 이용해 경험한 모든 것
- CLI(Command Line Interface)
명령어를 텍스트로 입력하여 조작하는 사용자 인터페이스
(git bash, powershell 등) - GUI(Graphical User Interface)
그래픽 환경을 기반으로 한 마우스나 전자펜을 이용하는 사용자 인터페이스 (sourcetree) - NUI(Natural User Interface)
신체 부위를 이용하는 사용자 인터페이스(터치, 음성 포함) 특별한 하드웨어 없이 인간의 자연스러운 움직임을 인식하여 정보를 제공 - OUI(Organic User Interface)
현실에 존재하는 모든 사물이 입출력장치로 변화할 수 있는 사용자 인터페이스(…?)
UI 설계 원칙
- 직관성
Intuitiveness
누구나 쉽게 이해하고, 쉽게 사용할 수 있어야 한다
-> UI를 보자마자 어떻게 사용하는 것인지 파악이 가능해야 함(로그인 버튼, 햄버거 메뉴 등) - 유효성
Efficiency
사용자의 목적을 정확하게 달성해야 한다
-> 아무리 이해하기 쉽게 설계된 UI라도, 사용자가 이용하고자 하는 목적과 동떨어지면 잘 만든 UI가 아니다
(송금 버튼 대신 대표 캐릭터가 대문짝만하게 들어가 있는 은행 앱) - 학습성
Learnability
누구나 쉽게 배우고 익힐 수 있어야 한다
-> 하나의 목적을 달성하기 위해 지나치게 많은 절차가 필요하거나, 번거로워서는 안된다 - 유연성
Flexibility
사용자의 요구사항을 최대한 수용하며, 오류를 최소화해야 한다
-> 결과적으로 유효성과 함께 한다. 잘 만든 UI라도 제대로 동작하지 않으면 목적 달성이 불가능하다
직유학유
UI 설계 지침
- 사용자 중심
- 일관성
- 단순성
- 결과 예측 가능
- 가시성
- 표준화
컴포넌트 재사용의 느낌…? 버튼 디자인이 뒤죽박죽이면 뭐가 버튼이고 뭐가 태그인지 분간이 어려우니까 - 접근성
- 명확성
- 오류 발생 해결
요구사항 구분
- 기능적 요구사항
시스템이 무엇을 해야하는지 설명
입력, 출력, 데이터, 연산에 관한 요구사항 - 비기능적 요구사항
개발과정에서 지켜져야 할 제약 조건
품질, 시스템 환경, 프로젝트 계획 등
UI 품질 요구사항
- 기능성
- 신뢰성
- 사용성
- 효율성
- 유지보수성
- 이식성
UI 지침
UI 표준에 따라 사용자 인터페이스 설계, 개발 시 지켜야할 세부사항을 규정하는 가이드라인
목표 정의 > 프로젝트 계획 > 요구사항 정의 > 설계 및 구현 > 테스트 > 배포 및 관리
UI 개발을 위한 주요기법
- 3C 분석
고객, 경쟁사, 자사를 비교 및 분석 -> 자사를 어떻게 차별화하여 경쟁에 이길 것인지 분석 - SWOT 분석
강점/약점/기회/위협 - 시나리오 플래닝
다양한 시나리오를 설계함으로써 불확실성 제거 - 사용성 테스트
시나리오에 맞춰 사용자가 제품을 사용하고, 질문에 답함 - 워크숍
적은 인원이 의견을 교환하고 검토하는 세미나
사용자 요구사항 도출
- 페르소나 정의
- 콘셉트 모델 정의
- 사용자 요구사항 정의
요구사항 매트릭스 : 다양한 경로를 통해 수집된 요구사항 검토, 페르소나의 목적을 기준으로 만든 요구사항 표
정황 시나리오 : 요구사항 정의에 사용되는 초기 시나리오, 이상적인 시스템 동작에 초점 - UI 컨셉션
스토리보드
개발 후 완성된 콘텐츠의 최종 결과를 예상할 수 있는 기초 문서
와이어프레임 : 대충 레이아웃 그린 것
스토리보드 : 실제 서비스와 흡사한 모형
2. UI 설계
UML(Unified Modeling Language)
객체 지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어
-> 프로그램 설계를 표현하기 위해 사용하는 기호와 도식을 사용한 표기법
- 가시화
결과물이 있으므로 오류가 적고 의사소통이 쉽다
시각적인 그래픽 형태로 작성 - 구축
다양한 프로그래밍 언어로 결과물 구축이 가능 - 명세화
정확하고 완전한 모델 작성 가능 - 문서화
평가 및 의사소통 수단으로 사용가능한 문서
일련의 과정을 문서로 남겨 계속 유지보수한다
구성요소로 사물, 관계, 다이어그램이 있다.
- 사물
- 관계
- 일반화 관계(Generalization)
한 클래스가 다른 클래스를 포함하는 상위 개념 - 연관관계(Association)
2개 이상의 사물이 서로 관련됨
한 클래스가 다른 클래스에서 제공하는 기능을 사용 - 의존관계(Dependency)
한 클래스가 다른 클래스에서 제공하는 기능을 사용(관계가 매우 짧은 시간만 유지) - 실체화 관계(Realization)
인터페이스를 구현 받아 추상 메서드를 오버라이딩 - 집합 관계 - 집약관계(Aggregation)
한 객체가 다른 객체를 소유(has a) - 집합 관계 - 합성관계(Composition)
부분 객체가 전체 객체에 속하는 관계로 긴밀한 필수적 관계
- 일반화 관계(Generalization)
UML 다이어그램
구조적 다이어그램/정적 다이어그램
- 클래스
- 객체
- 컴포넌트
- 배치
- 복합체 구조
- 패키지
행위적 다이어그램/동적 다이어그램
- 유스케이스
- 시퀀스
- 커뮤니케이션
- 상태
- 활동
- 타이밍
UML 확장 모델의 스테레오타입
- include
하나의 유스케이스가 어떤 시점에 반드시 다른 유스케이스를 포함 - extend
하나의 유스케이스가 어떤 시점에 다른 유스케이스를 실행할 수도, 그렇지 않을 수도 있음 - interface
추상 메서드와 상수만으로 구성된 클래스 - entity
일반적으로 정보 또는 오래 지속되는 연관된 행위를 형상화 - boundary
시스템과 외부 액터와의 상호작용 담당 - control
시스템이 제공하는 기능의 로직 및 제어를 담당
UML 유형
-
클래스 다이어그램
자기만의 속성과 일정한 행동으로 구성
여러 개의 클래스들은 서로 연관이나 상속, 의존 관계 등으로 서로 간의 상호작용을 표현접근 제한자
- : private
# : protected
+ : public -
유스케이스 다이어그램
시스템과 사용자의 상호작용을 다이어그램으로 표현구성요소
- 시스템 : 만들고자 하는 프로그램 명칭
- 액터 : 시스템과 상호작용을 하는 사람, 시스템
- 유스케이스 : 사용자 입장에서 바라본 시스템의 기능
- 관계 : 액터와 유스케이스 간의 의미 있는 관계
관계
- 연관관계 : 상호작용
- 포함관계 : 유스케이스 수행 시 반드시 실행
- 확장관계 : 유스케이스 수행 시 특정 조건에 따라 확장 기능 유스케이스 수행
- 일반화관계 : 유사한 유스케이스 또는 액터를 모아 추상화
-
시퀀스 다이어그램
객체 간의 상호작용 메시지 시퀀스를 시간의 흐름에 따라 나타내는 다이어그램구성요소
- 객체
- 생명선
- 실행
- 메시지
-
패키지 다이어그램
시스템의 서로 다른 패키지들 사이의 의존 관계를 표현구성요소
- 패키지 : 요소들을 그룸으로 조직
- 의존관계 : 하나의 패키지가 다른 패키지를 사용하는 관계
-
활동 다이어그램
시스템이 어떤 기능을 수행하는지를 처리의 흐름 순서대로 표현 -
상태 다이어그램
한 객체의 상태 변화를 나타냄 -
커뮤니케이션 다이어그램
동작에 참여하는 객체 간 메시지뿐 아니라 연관까지 표현 -
컴포넌트 다이어그램
시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존 관계를 나타냄