화면설계
- UI 요구사항 확인
- UI 설계
소프트웨어 아키텍처
- 개발하고자 하는 소프트웨어의 사전 작업을 통하여 소프트웨어 개발을 쉽게 하도록 기본 툴을 만드는 것
아키텍처 패턴
- 소프트웨어 아키텍처에서 일반적으로 발생하는 문제점들에 대한 일반화되고 재사용 가능한 솔루션
- 계층화 패턴 or 레이어드 패턴 (Layerd Pattern)
- 하위모듈들의 그룹으로 나눌 수 있는 구조화된 프로그램
- 일반적인 데스크톱 어플리케이션, 전자상거래 웹 어플리케이션
- 클라이언트-서버 패턴 (Client-Server Pattern)
- 클라이언트가 서버에 서비스를 요청하면 서버는 클라이언트에게 적절한 서비스를 제공
- 이메일, 문서 공유 및 은행 등의 온라인 어플리케이션
- 마스터-슬레이브 패턴 (Master-Slave Pattern)
- 마스터 컴포넌트는 동등한 구조를 지닌 슬레이브 컴포넌트들로 작업을 분산하고 슬레이브가 반환한 결과값을 통해 최종 결과값을 계산
- 컴퓨터 시스템에서 버스와 연결된 주변장치
- 파이프-필터 패턴 (Pipe-Filter Pattern)
- 각 처리과정은 필터 컴포넌트에서 처리되며 파이프를 통해 전달되고 동기화된다.
- 브로커 패턴 (Broker Pattern)
- 서버는 자신의 기능들을 브로커에게 넘겨주며 클라이언트가 브로커에 서비스를 요청하면 브로커가 서버 레지스트리에 있는 적합한 서비스를 전달
- 피어투피어 패턴 (Peer to Peer Pattern)
- 각 컴포넌트를 Peer라고 하며 피어는 클라이언트로서 피어에게 서비스를 요청할수도 있고 제공할 수도 있다.
- 이벤트-버스 패턴 (Event-Bus Pattern)
- 소스는 이벤트 버스를 통해 특정 채널로 메세지를 발행하며 리스너는 메세지를 구독한다.
- 안드로이드개발, 알림 서비스
- MVC 패턴 (Model View Controller Pattern)
- 블랙보드 패턴 (Blackboard Pattern)
- 결정가능한 해결 전략이 알려지지 않은 문제에 유용
- 인터프리터 패턴 (Interpreter Pattern)
- 특정 언어로 작성된 프로그램을 해석하는 컴포넌트를 설계할 때 사용
- SQL과 같은 데이터베이스 쿼리언어, 통신 프로토콜을 정의하기 위한 언어
※ 10가지 일반적인 소프트웨어 아키텍처 패턴의 장점
- 소프트웨어 시스템 구조를 구성하기 위한 기본틀이 제시되어 개발시간을 단축함
- 검증된 구조로 개발되어 안정적인 개발 가능
- 공통 아키텍처가 공유됨으로 의사소통이 간편
- 시스템 구조를 이해하기 쉬워 유지보수 편리
소프트웨어 아키텍처 품질 요구사항
- 기능성, 사용성, 효율성, 유지보수성, 이식성, 신뢰성
UI (User Interface)
사용자가 시스템을 원할히 사용하도록 돕는 장치 및 소프트웨어
- CLI(Command Line Interface) - 텍스트 기반 인터페이스
- GUI(Graphic User Interface) - 그래픽 기반 인터페이스
- NUI(Natural User Interface) - 직관적인 사용자 반응 인터페이스
UI의 3가지 분야
- 물리적 제어분야 - 정보제공과 기능전달
- 전체적 구성에 관한 분야 - 콘텐츠의 상세적 표현
- 기능적분야 - 쉽고 간편하게 사용가능
UI 설계 원칙
- 직관성 - 누구나 쉽게 이해하고 사용할 수 있도록 함
- 유효성 - 사용자의 목적을 정확하게 달성
- 학습성 - 누구나 쉽게 배움
- 유연성 - 사용자의 요구사항을 최대한 수용하되 오류의 최소화
UI 설계 지침
- 사용자중심 - 실사용자의 이해를 바탕으로 사용자가 편하고 쉽게 사용해야 됨
- 일관성 - 버튼 조작이나 방법을 사용자가 기억하기 쉽고 빠르게 습득하여야 됨
- 단순성 - 간단하게 작동하여 인지적 부담을 최소화
- 결과예측가능 - 작동시킬 기능을 보고 결과가 예측가능해야 함
- 가시성 - 주요기능을 메인화면에 노출시켜 조작이 쉽도록 하여야 함
- 표준화 - 디자인 표준화를 통해 기능구조의 선행 학습 이후 쉽게 사용 가능
- 접근성 - 다양한 계층이 사용
- 명확성 - 개념적으로 쉽게 인지
- 오류발생해결 - 오류에 대한 상황을 정확히 인지
UI의 필요성
- 오류의 최소화
- 막연한 기능에 대해 구체적인 방법제시
- 작업시간 단축, 이해도 향상
- 정보 제공자와 공급자의 매개 역활
UI 요구사항 확인
기능적 요구사항
- 입력, 출력, 저장할 데이터, 수행할 연산, 요구사항
비기능적 요구사항
- 품질 - 사용성, 효율성, 신뢰성, 유지보수성, 재사용성
- 환경 - 플랫폼, 사용기술
- 프로젝트 게획 - 비용, 일정
구성요소의 정의
- 화면구성을 정의
- 네비게이션을 정의
- 기능을 정의
- 구성요소를 정의
UI 프로토타입 이해
새로운 컴퓨터 시스템이나 소프트웨어의 설계 또는 성능, 구현가능성, 운용가능성을 평가하거나 요구사항을 좀 더 잘 이해하고 결정하기 위해 전체적인 기능을 간략한 형태로 구현한 시제품
프로토타입의 의의
사전에 프로토타입을 먼저 제작하고 이를 바탕으로 향후 설계된 UI의 적정성을 평가해 수정 보완함으로써 추후 발생가능한 오류들을 사전에 방지하여 시스템 설계 및 개발에 소요되는 총 비용 및 노력을 절감할 수 있다.
프로토타입의 장점
- 사용자 설득과 이해가 쉽다
- 개발시간이 감소
- 오류를 사전에 발견
프로토타입의 단점
- 너무 많은 수정과정을 거친다면 오히려 작업시간이 늘어남
- 자원 효율성 관점에서 보면 필요 이상으로 자원을 많이 소모함
- 정확한 문서 작업이 생략될 수 있다.
댓글 영역