자격증고나리/🥇 정보처리기사

[Day 2] 1과목 소프트웨어 구축

병아리는삐약삐약 2024. 4. 4. 03:00

소프트웨어 아키텍처

소프트웨어 아키텍처 4+1 뷰

  • 논리적 관점 : 설계
  • 구현 관점 : 구현. 컴포넌트다이어그램
  • 프로세스 관점 : 시스템(성능/효율 등). 동적인 측면
  • 배치 관점 : 시스템(시스템 구성) < 시스템 아키텍처. 비기능적 요구사항
  • 유스케이스 관점 : 사용자 기능. 유스케이스 다이어그램

아키텍처 패턴 종류

  1. 계층화 패턴
    • 각 계층이 하위 계층의 기능을 사용하도록 하는 구조
    • OSI7계층, TCP/IP 4계층 등에 사용. 계층간 독립성으로 유지보수와 업그레이드 용이
  2. 클라이언트-서버 패턴
    • 서버가 여러 클라이언트에 서비스를 제공하는 구조
    • 대부분의 웹, dbms에서 사용. 중앙집중식 데이터 관리
  3. 마스터-슬레이브 패턴
    • 여러 슬레이브에 작업을 분산, 처리 결과를 종합하는 구조
    • 클-서 패턴과 비슷하지만 슬레이브는 단순히 요청받은 작업만 수행. 처리속도향상
  4. 파이프-필터 패턴
    • 각 단계의 처리를 수행하고 파이프를 통해 다음 단계로 보내는 구조
    • 각 필터의 독립적인 처리 . 시스템의 확장성과 재사용성이 높다
  5. 브로커 패턴
    • 분산 시스템에서 컴포넌트 간 통신을 중재하는 브로커 컴포넌트를 사용
    • ex) 유튜브 시청 시 각 나라의 영상을 브로커 컴포넌트에서 수신요청
  6. 피어 투 피어 패턴
    • 모든 컴포넌트(피어)가 서버와 클라이언트의 역할을 동시수행
    • 파일 공유 시스템 등, 분산 네트워크 구조(중앙집중식x)
  7. 이벤트-버스 패턴
    • 버스로 연결됨, 메세지를 발행하면 리스너가 이를 구독
    • 알림/메세지 시스템 등. 비동기 통신
  8. 모델-뷰-컨트롤러(MVC)
    • 모델(데이터베이스), 뷰(화면), 컨트롤러(처리)
    • 각 컴포넌트에서는 독립성, 재사용성, 확장성, 웹개발에 널리 사용
  9. 블랙보드 패턴
    • 명확한 해결 전략이 정의되지 않거나 복잡한 문제에서
    • 여러 컴포넌트가 공유하는 중앙저장소(블랙보드)를 통해 협업
  10. 인터프리터 패턴
    • 프로그래밍 언어의 해석과 실행을 위한 컴포넌트 설계에 사용.
    • 참고. 인터프리터 : 한줄씩 번역 / 컴파일러 : 통으로 번역

UML

uml 특징

  • 가시화 언어 : 다이어그램을 통해 시각적으로 표현
  • 명세화 언어 : 표준화된 언어로 요구사항과 기능 명세(정형명세)
  • 구축 언어 : 설계와 구현에 도움됨. 객체지향
  • 문서화 언어 : 표준화된 형태로 문서화

3가지 구성요소

  • 사물 : 구조/행동/그룹/주해(주석)
  • 관계
    1. 일반화관계(generalization) : 상속, 상위 개념. 슈퍼클래스와 서브 클래스 ex) 세탁기/tv/냉장고(s) - 가전제품(S)
    2. 연관 관계(association) : ex)사람 - 휴대폰. 완전 연관. 늘 서로 관련된 관계
    3. 의존 관계(dependency) : ex)사람 - 색연필. 한 클래스가 다른 클래스의 기능을 사용할 때.
    4. 연관관계와의 차이 : 늘 필요하지 x, 한 메서드를 실행하는 동안만 관계 유지(매개변수로)
    5. 실체화 관계(realization) : 인터페이스, 다른 객체가 오퍼레이션을 수행(오버라이딩)
    6. 집합관계 - 집약관계(aggregation) : ex) 불고기 - 간장/다시다/미원, 전체객체가 사라져도 부분객체는 사라지지 않음. has a 관계. 라이프 타임이 독립적
    7. 집합관계 - 합성관계(composition) : ex) 책상 - 다리/나사/상판, 전체 객체가 사라지면 부분 객체도 사라짐. 라이프 타임이 의존적
  • 다이어그램
    1. 구조 다이어그램 : 객체, 속성 등
      1. 클래스 다이어그램 : 클래스들의 관계
      2. 객체 다이어그램 : 객체간의 관계
      3. 배치 다이어그램 : 물리적 배치
      4. 복합체 구조 다이어그램 : 클래스나 컴포넌트의 내부 복합 구조
      5. 패키지 다이어그램 : 클래스와 패키지의 그룹화
    2. 행위 다이어그램 : 시간 흐름, 상태 등
      1. 클래스 다이어그램 : 기능과 사용자의 상호작용, 액터/유스케이스/시스템
      2. 순차 다이어그램 : 객체간의 상호작용을 시간순서에 따라 표현
      3. 커뮤니케이션 다이어그램 : 시간의 흐름보다 객체간의 관계와 통신
      4. 상태 다이어그램 : 객체의 생명주기 동안의 상태를 표현, 내/외부 이벤트 반응
      5. 활동 다이어그램 : 시스템의 프로세스 또는 워크플로우. 비즈니스 프로세스 모델링
      6. 상호작용 다이어그램 : 고수준 워크플로우, 활동 + 순차
      7. 타이밍 다이어그램 : 객체의 행동과 시간에 따른 상호작용. 실시간 시스템 or 복잡한

접근제한자 표기법

    • - : private , 해당 클래스,객체 내에서만
    • # : protected, 상속, 동일 패키지 내(default: 동일 패키지 내. 상속x)
    • + : public, 어디서든

유스케이스 다이어그램 관계

  1. 연관관계(association) : 유스케이스와 액터의 상호작용. 실선으로 연결
  2. 포함관계(include) : 반드시 실행되어야 할 때.
  3. 확장관계 (exclude) : 선택적으로 실행할 때.
  4. 일반화관계(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류 + 정량화소프트웨어 아키텍처