자격증고나리/🥇 정보처리기사
[Day 2] 1과목 소프트웨어 구축
병아리는삐약삐약
2024. 4. 4. 03:00
소프트웨어 아키텍처
소프트웨어 아키텍처 4+1 뷰
- 논리적 관점 : 설계
- 구현 관점 : 구현. 컴포넌트다이어그램
- 프로세스 관점 : 시스템(성능/효율 등). 동적인 측면
- 배치 관점 : 시스템(시스템 구성) < 시스템 아키텍처. 비기능적 요구사항
- 유스케이스 관점 : 사용자 기능. 유스케이스 다이어그램
아키텍처 패턴 종류
- 계층화 패턴
- 각 계층이 하위 계층의 기능을 사용하도록 하는 구조
- OSI7계층, TCP/IP 4계층 등에 사용. 계층간 독립성으로 유지보수와 업그레이드 용이
- 클라이언트-서버 패턴
- 서버가 여러 클라이언트에 서비스를 제공하는 구조
- 대부분의 웹, dbms에서 사용. 중앙집중식 데이터 관리
- 마스터-슬레이브 패턴
- 여러 슬레이브에 작업을 분산, 처리 결과를 종합하는 구조
- 클-서 패턴과 비슷하지만 슬레이브는 단순히 요청받은 작업만 수행. 처리속도향상
- 파이프-필터 패턴
- 각 단계의 처리를 수행하고 파이프를 통해 다음 단계로 보내는 구조
- 각 필터의 독립적인 처리 . 시스템의 확장성과 재사용성이 높다
- 브로커 패턴
- 분산 시스템에서 컴포넌트 간 통신을 중재하는 브로커 컴포넌트를 사용
- ex) 유튜브 시청 시 각 나라의 영상을 브로커 컴포넌트에서 수신요청
- 피어 투 피어 패턴
- 모든 컴포넌트(피어)가 서버와 클라이언트의 역할을 동시수행
- 파일 공유 시스템 등, 분산 네트워크 구조(중앙집중식x)
- 이벤트-버스 패턴
- 버스로 연결됨, 메세지를 발행하면 리스너가 이를 구독
- 알림/메세지 시스템 등. 비동기 통신
- 모델-뷰-컨트롤러(MVC)
- 모델(데이터베이스), 뷰(화면), 컨트롤러(처리)
- 각 컴포넌트에서는 독립성, 재사용성, 확장성, 웹개발에 널리 사용
- 블랙보드 패턴
- 명확한 해결 전략이 정의되지 않거나 복잡한 문제에서
- 여러 컴포넌트가 공유하는 중앙저장소(블랙보드)를 통해 협업
- 인터프리터 패턴
- 프로그래밍 언어의 해석과 실행을 위한 컴포넌트 설계에 사용.
- 참고. 인터프리터 : 한줄씩 번역 / 컴파일러 : 통으로 번역
UML
uml 특징
- 가시화 언어 : 다이어그램을 통해 시각적으로 표현
- 명세화 언어 : 표준화된 언어로 요구사항과 기능 명세(정형명세)
- 구축 언어 : 설계와 구현에 도움됨. 객체지향
- 문서화 언어 : 표준화된 형태로 문서화
3가지 구성요소
- 사물 : 구조/행동/그룹/주해(주석)
- 관계
- 일반화관계(generalization) : 상속, 상위 개념. 슈퍼클래스와 서브 클래스 ex) 세탁기/tv/냉장고(s) - 가전제품(S)
- 연관 관계(association) : ex)사람 - 휴대폰. 완전 연관. 늘 서로 관련된 관계
- 의존 관계(dependency) : ex)사람 - 색연필. 한 클래스가 다른 클래스의 기능을 사용할 때.
- 연관관계와의 차이 : 늘 필요하지 x, 한 메서드를 실행하는 동안만 관계 유지(매개변수로)
- 실체화 관계(realization) : 인터페이스, 다른 객체가 오퍼레이션을 수행(오버라이딩)
- 집합관계 - 집약관계(aggregation) : ex) 불고기 - 간장/다시다/미원, 전체객체가 사라져도 부분객체는 사라지지 않음. has a 관계. 라이프 타임이 독립적
- 집합관계 - 합성관계(composition) : ex) 책상 - 다리/나사/상판, 전체 객체가 사라지면 부분 객체도 사라짐. 라이프 타임이 의존적
- 다이어그램
- 구조 다이어그램 : 객체, 속성 등
- 클래스 다이어그램 : 클래스들의 관계
- 객체 다이어그램 : 객체간의 관계
- 배치 다이어그램 : 물리적 배치
- 복합체 구조 다이어그램 : 클래스나 컴포넌트의 내부 복합 구조
- 패키지 다이어그램 : 클래스와 패키지의 그룹화
- 행위 다이어그램 : 시간 흐름, 상태 등
- 클래스 다이어그램 : 기능과 사용자의 상호작용, 액터/유스케이스/시스템
- 순차 다이어그램 : 객체간의 상호작용을 시간순서에 따라 표현
- 커뮤니케이션 다이어그램 : 시간의 흐름보다 객체간의 관계와 통신
- 상태 다이어그램 : 객체의 생명주기 동안의 상태를 표현, 내/외부 이벤트 반응
- 활동 다이어그램 : 시스템의 프로세스 또는 워크플로우. 비즈니스 프로세스 모델링
- 상호작용 다이어그램 : 고수준 워크플로우, 활동 + 순차
- 타이밍 다이어그램 : 객체의 행동과 시간에 따른 상호작용. 실시간 시스템 or 복잡한
- 구조 다이어그램 : 객체, 속성 등
접근제한자 표기법
-
- - : private , 해당 클래스,객체 내에서만
- # : protected, 상속, 동일 패키지 내(default: 동일 패키지 내. 상속x)
- + : public, 어디서든
유스케이스 다이어그램 관계
- 연관관계(association) : 유스케이스와 액터의 상호작용. 실선으로 연결
- 포함관계(include) : 반드시 실행되어야 할 때.
- 확장관계 (exclude) : 선택적으로 실행할 때.
- 일반화관계(generalization) : 유사한 유스케이스 또는 액터를 모아 추상화
UI설계
UI 유형
- CLI(command line interface = CUI, command user Interface) : 키보드 명령어로 컴퓨터 조작
- GUI(graphical user interface) : 마우스를 통해 화면, 아이콘 클릭
- NUI(Natural user interface) : 인간의 자연스러운 움직임 인식
- OUL(organic user interface) : 현실의 모든 것이 입출력장치
- VUI(Voice user interface) : 음성 인식을 기반으로 한 사용자 인터페이스
- ARUI(Augmented Reality user interface) : 증강 현실 기술을 활용
UI설계원칙
- 직관성 : 쉽게 이해하고 사용
- 유효성 : 사용자의 목적을 명확히 달성
- 학습성 : 쉽게 배우고 익힘
- 유연성 : 요구사항을 최대한 수용, 오류 최소화
UI 설계도구
- 와이어프레임 : 기본 구조와 레이아웃 설정, 페이지 간의 관계, 기능 및 흐름에 초점
- 스토리보드 : 서비스의 시나리오 흐름을 시각적으로 나타냄.
- 스토리보드 예시
- 프로토타입 : 실제 서비스와 유사하게 동작하는 모델
- 목업(mock up) : 와이어프레임보다 구체적이며 실제와 유사한 정적 디자인
- 유스케이스
감성공학
- 인간의 감성을 물리적으로 번역하여 구현
- 1류적 접근 : 감각적 디자인, 2류적 접근 : 1류 + 문화적 감성, 3류적 접근 : 2류 + 정량화소프트웨어 아키텍처