사용자 인터페이스(User Interface, UI)

 

UI란, 사용자와 시스템 간 상호작용이 원활히 이뤄지도록 도와주는 장치나 소프트웨어.

 

  • 분야
    • 물리적 제어
    • 콘텐츠의 상세적 표현과 전체적 구성
    • 기능
  • 특징
    • 사용자 만족도에 가장 큰 영향을 미침
    • 작업 시간을 단축, 업무에 대한 이해도 높여줌
    • 최소한 노력으로 원하는 결과
    • 수행 결과 오류 줄임
    • 작업 기능에 대한 구체적 방법 제시
    • 정보 제공자 - 공급자 간 매개 역할
    • 소프트웨어 아키텍처를 숙지해야 함.
  • 구분
    • CLI(Command Line Interface) : 명령과 출력이 텍스트형태로 이뤄짐
    • GUI(Graphical User Interface) : 아이콘이나 메뉴를 마우스로 선택해 작업을 수행하는 그래픽 환경 인터페이스
    • NUI(Natural User Interface) : 사용자의 말이나 행동으로 기기를 조작하는 인터페이스
  • 기본 원칙
    • 직관성 : 누구나 쉽게 이해하고 사용
    • 유효성 : 목적을 정확하고 완벽하게 달성해야 함
    • 학습성 : 누구나 쉽게 배우고 익혀야 함
    • 유연성 : 사용자 요구사항을 최대한 수용하고 실수를 최소화해야 함.
  • 설계 지침
    • 사용자 중심 : 사용자가 쉽게 이해하고 편리하게 사용할 수 있는 환경을 제공, 실사용자에 대한 이해가 바탕이 되어야 함.
    • 일관성 : 조작 방법 등을 일관성있게 제공하여 사용자가 쉽게 기억하고 습득할 수 있게 설계해야 함.
    • 조작 방법을 단순화시켜 인지적 부담을 감소시켜야 함.
    • 결과 예측 가능 : 작동시킬 기능만 보고도 결과를 예측할 수 있게 설계해야 함
    • 가시성 : 주요 기능을 메인에 노출시켜 조작을 쉽게 설계해야 함.
    • 표준화 : 기능 구조와 디자인을 표준화해 한 번 학습한 이후 쉽게 사용할 수 있도록 설계해야 함.
    • 접근성 : 다양한 계층이 남녀노소 설계해야 함.
    • 명확성 : 사용자가 개념적으로 쉽게 인지하게 설계해야 함.
    • 오류 발생 해결 : 오류가 발생하면 사용자가 쉽게 인지하게 설계해야 함.
  • UI 설계 도구
    • 와이어프레임
      • 개략적 레이아웃이나 UI 요소 등에 대한 뼈대를 설계하는 것
    • 목업
      • 와이어프레임보다 좀 더 실제 화면과 유사하게 만든 정적 모형
    • 스토리보드
      • 와이어프레임 + 콘텐츠에 대한 설명, 페이지 간 이동 흐름 등
    • 프로토타입
      • 와이어프레임이나 스토리보드 등 인터랙션을 적용
    • 유스케이스
      • 사용자 측면 요구사항. 

UI 표준 및 지침

 

UI 표준 : 전체 시스템에 포함된 모든 UI에 공통적으로 적용될 내용

UI 지침 : UI 개발 과정에서 꼭 지켜야 할 공통의 조건

 

  • 웹의 3요소
    • 웹 표준 (Web Standards) : 웹에서 사용되는 규칙 또는 기술
    • 웹 접근성 (Web Accessibility) : 누구나 어떤 환경에서도 웹 사이트에 제공하는 모든 정보를 접근해 이용할 수 있도록 보장하는 것
    • 웹 호환성 (Cross Browsing) : 하드웨어나 소프트웨어 등이 다른 환경에서도 모든 이용자에게 동등한 서비스를 제공
  • UI 스타일 가이드
    • 구동 환경 정의
      • 프레임 세트 : 화면을 Top, Left, Contents 등 영역으로 프레임을 구분해 적용
    • 레이아웃 정의
      • 화면 구조 정의, 각 영역 메뉴 구성. Top, Left, Contents, Footer가 있음.
    • 네비게이션 정의
      • 네비게이션 메뉴 타입을 선택해 적용
    • 기능 정의
      • 시스템에 적용할 업무 과정에서 일어나는 모든 활동(프로세스 모델링 정의)이나 필요한 데이터 간 관계(데이터 모델 정의)를 논리적 모델로 상세화
    • 구성 요소 정리
      • 화면에 표시할 그리드(테이블 형식으로 쉽게 데이터 표시)나 버튼(기능 / 검색 / 그리드 관련 / 기타) 정의

UI 요구사항 확인

 

  1. 목표 정의
    • 사용자들 대상 인터뷰 진행. 사용자들의 의견이 수렴된 비즈니스 요구사항 정의
  2. 활동 사항 정의
    • 조사한 요구사항을 토대로 앞으로 해야 할 활동 사항 정의
  3. UI 요구사항 작성
    1. 요구사항 요소 확인
      • 데이터 요구
      • 기능 요구
      • 제품 / 서비스 품질
      • 제약 사항
    2. 정황 시나리오 작성
      • 사용자의 요구사항을 도출하기 위해 작성하는 것. 사용자 관점 시나리오.
    3. 요구사항 작성

UI 프로토타입 제작 및 검토

 

  • 장점
    • 사용자 설득, 이해가 쉬움
    • 혼선 예방. 개발 시간 단축
    • 사전 오류 발견
  • 단점
    • 사용자 모든 요구사항을 반영하기 위한 프로토타입 개선 및 보완 작업 때문에 작업 시간 증가, 필요 이상 자원 소모 가능성
    • 중요한 작업이 생략될 수도 있음
  • 종류
    • 페이퍼 프로토타입
    • 디지털 프로토타입
  • 개발 단계
    • 사용자 요구사항 분석
    • 프로토타입 작성. 핵심 기능 중심 개발
    • 요구사항을 잘 수행하는 지 확인
    • 프로토타입 기반 수정과 합의

UI 흐름 설계

 

  1. 기능 작성
    • 기능적 / 비기능적 요구사항 정리
  2. 입력 요소 확인
    • 화면에 표현되어야 할 기능 확인 후 화면에 입력할 요소 확인
    • 기능 확인 - 입력 요소 확인 - 화면 확인 - 화면 간 흐름 확인
  3. 유스케이스 설계
    • UI 요구사항 기반 UI 유스케이스 설계
  4. 기능 및 양식 확인
    • 텍스트 박스, 콤보 박스, 라디오 박스, 체크 박스 확인 및 규칙 정의

UI 상세 설계

 

  1. 요구사항 확인
    • UI 상세 설계를 위한 요구사항 최종 확인
  2. UI 설계서 표지 및 개정 이력 작성
    • 표지엔 시스템이나 프로젝트명 포함해 작성
    • UI 설계서가 수정될 때마다 버전으로 0.1씩 높임. 초안 버전은 1.0
  3. UI 구조 설계
    • UI 요구사항과 UI 프로토타입에 기초해 UI 구조 설계
  4. 메뉴 구조 설계
    • 사이트 맵 구조를 통해 사용자 기반 메뉴 구조 설계
      1. 사이트에 표시할 콘텐츠를 한 눈에 알아 볼 수 있게 메뉴별 구분한 사이트 맵 구조 설계
      2. 작성한 사이트 맵 상세 내용을 표 형태로 작성
      3. 사용자 요구 프로세스들에 대해 작업 진행 순서에 맞춰 프로세스 정의서 작성
  5. 화면 설계
    • UI 프로토타입과 UI 프로세스 참고해 필요한 화면을 페이지별로 설계

 

'그 외 공부 > 정처기-실기(완)' 카테고리의 다른 글

8장 SQL 응용  (0) 2021.07.06
7장 어플리케이션 테스트 관리  (0) 2021.07.05
5장 서버 프로그램 구현  (0) 2021.06.29
4장 통합 구현  (0) 2021.06.27
3장 데이터 입*출력 구현  (0) 2021.06.27

개발 환경 구축

 

개발 환경 구축이란? 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것

 

  • 하드웨어 환경
    • 클라이언트 : 사용자와의 인터페이스 역할
      • PC, 스마트폰
    • 서버 : 클라이언트와 통신해 서비스 제공
      • 웹 서버(Web Server) : 클라이언트로부터 직접 요청을 받아 처리하는 서버. 저용량 정적 파일(ex)html, css) 제공
        • 기능
          • HTTP/HTTPS 지원 : 브라우저로부터 요청을 받아 응답할 때 사용하는 프로토콜
          • 통신 기록(Communication Log) : 처리한 요청들을 로그 파일로 기록
          • 정적 파일 관리(Managing Static Files) : HTML, CSS, 이미지 등 정적 파일들을 저장하고 관리
          • 대역폭 제한(Bandwidth Throtting) : 네트워크 트래픽 포화 방지하기 위한 응답 속도 제한
          • 가상 호스팅 : 하나의 서버로 여러 개 도메인 이름 연결
          • 인증(Authentication) : 사용자가 합법적 사용자인지 확인
      • 웹 어플리케이션 서버(WAS; Web Application Server) : 사용자에게 동적 서비스(사용자의 입력에 따라 다른 결과를 보여주는 서비스)를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행하거나, 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버 사이 인터페이스 역할을 수행하는 서버
      • 데이터베이스 서버 : 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버
      • 파일 서버 : 데이터베이스에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버
  • 소프트웨어 환경
    • 시스템 소프트웨어 : 클라이언트와 서버 운영을 위함
      • 운영체제, 웹 서버 및 WAS 운용을 위한 서버 프로그램, DBMS
    • 개발 소프트웨어 : 개발에 사용
      • 요구사항 관리 도구 : 요구사항 수집과 분석, 추적 등을 편리하게 도와주는 소프트웨어
        • JIRA, IBM DOORS, inteGREAT, Reqtify, Trello 등
      • 설계 / 모델링 도구 : UML(통합 모델링 언어)을 지원하며 개발의 전 과정에서 설계 및 모델링을 도와주는 소프트웨어 
        • DB Designer, PlantUML, ArgoUML 등
      • 구현 도구 : 개발 언어를 통해 어플리케이션 실제 구현을 지원하는 소프트웨어
        • Eclipse, IntelliJ IDEA, Visual Studio, Netbeans, Node.js 등
        • 적정성, 효율성, 이식성, 친밀성, 범용성
      • 빌드 도구 : 구현 도구를 통해 작성된 소스 빌드 및 배포, 라이브러리 관리를 지원하는 소프트웨어
        • Ant, Gradle, Maven, Jenkins 등
      • 테스트 도구 : 모듈들이 요구사항에 적합하게 구현됐는지 테스트하는 소프트웨어
        • CppUnit, JUnit, HttpUnit, NUnit, SpringTest 등
      • 형상 관리 도구 : 산출물들을 버전별로 관리해 품질 향상을 지원하는 소프트웨어
        • GIT, CVS, Subversion, Mercurial 등

모듈(Module)

 

모듈이란? 모듈화를 통해 분리된 시스템의 각 기능들이다. 서브루틴, 서브 시스템, 소프트웨어 내 프로그램, 작업 단위 등과 같은 의미로 사용된다.

결합도는 약하게 응집도는 강하게 모듈의 크기는 작게 만들어야 한다.

 

  • 결합도(Coupling)
    • 모듈 간 상호 의존하는 정도 또는 두 모듈 사이 연관 관계를 의미한다.
    • 종류
      • 자료 결합도(Data) : 모듈 간 인터페이스가 자료 요소로만 구성될 때 결합도이다. 모듈 간의 내용을 전혀 알 필요가 없는 상태로, 한 모듈의 내용을 변경해도 다른 모듈에는 전혀 영향을 미치지 않는다.
      • 스탬프 결합도(Stamp) : 모듈 간 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도이다. 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도이며, 포맷이나 구조의 변화는 그것을 조회하는 모든 모듈 및 변화되는 필드를 실제로 조회하지 않는 모듈에까지 영향을 미치게 된다.
      • 제어 결합도(Control) : 어떤 모듈이 다른 모듈 내부의 논리적 흐름을 제어하기 위해 제어 신호를 이용해 통신하거나 제어 요소를 전달하는 결합도이다. 하위 모듈에서 상위 모듈로 제어 신호가 이동해 하위 모듈이 상위 모듈에게 처리 명령을 내리는 권리 전도현상이 발생하게 된다.
      • 외부 결합도(External) : 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도이다. 참조되는 데이터 범위를 각 모듈에서 제한할 수 있다.
      • 공통 결합도(Common) : 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도이다. 공통 데이터 영역을 조금만 변경해도 이를 사용하는 모든 모듈에 영향을 미쳐 모듈의 독립성을 약하게 만든다.
      • 내용 결합도(Content) : 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도이다. 한 모듈에서 다른 모듈의 내부로 제어가 이동하는 경우에도 내용 결합도에 해당한다.
  • 응집도 (Cohesion)
    • 정보 은닉 개념을 확장한 것으로, 명령어나 호출문 등 모듈이 독립적인 기능으로 정의되어 있는 정도를 의미한다.
      • 기능적 응집도(Functional) : 모듈 내부 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우 응집도
      • 순차적 응집도(Sequential) : 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우 응집도
      • 교환적 응집도(Communication) : 동일한 입*출력을 사용해 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우 응집도
      • 절차적 응집도(Porcedural) : 모듈이 다수 관련 기능을 가질 때 모듈 안 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
      • 시간적 응집도 (Temporal) : 특정 시간에 처리되는 몇 개 기능을 모아 하나의 모듈로 작성할 경우 응집도
      • 논리적 응집도 (Logical) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우 응집도
      • 우연적 응집도 (Coincidental) : 모듈 내부 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우 응집도

팬인 / 팬아웃

 

팬인이란 모듈을 제어(호출)하는 모듈 수

팬아웃은 모듈에 의해 제어(호출)되는 모듈 수

 

시스템의 복잡도를 최적화하려면 팬인은 높게, 팬아웃은 낮게 설계해야 한다.


공통 모듈

 

공통 모듈이란 여러 프로그램에서 공통적으로 사용할 수 있는 모듈을 의미한다.

 

  • 공통 모듈을 구현할 때 명세 기법
    • 정확성(Correctness) : 시스템 구현 시 해당 기능이 필요하다는 것을 정확히 작성
    • 명확성(Clarity) : 해당 기능을 명확히 이해할 수 있도록 작성
    • 완전성(Completeness) : 시스템 구현을 위해 필요한 모든 것 기술
    • 일관성(Consistency) : 공통 기능들 간 상호 충돌이 발생하지 않도록 작성
    • 추적성(Traceability) : 기능에 대한 요구사항 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성

재사용

 

재사용이란 비용과 개발 시간 절약을 위해 이미 개발된 기능을 파악하고 재구성해 새로운 시스템 또는 기능 개발에 사용하기 적합하도록 최적화 시키는 작업을 말한다.


DBMS 접속

 

DBMS 접속은 사용자가 데이터를 사용하기 위해 응용 시스템을 이용해 DBMS에 접근하는 것을 의미한다.

 

  • DBMS 접근 순서
    • 인터넷을 통해 구동되는 웹 응용 프로그램은 웹 응용 시스템(웹 서버 + WAS)을 통해 DBMS에 접근한다. 
  • DBMS 접속 기술 : DBMS에 접근하기 위해 사용하는 API 또는 API의 사용을 편리하게 해주는 프레임워크를 의미0
    • JDBC(Java DataBase Connectivity)
      • Java 언어로 다양한 종류의 데이터베이스에 접속하고 SQL 문을 수행할 때 사용되는 표준 API이다. 
      • 접속하려는 DBMS에 대한 드라이버가 필요하다.
    • ODBC(Open DataBase Connectivity)
      • 데이터벵시ㅡ에 접근하기 위한 표준 개방형 API. 개발 언어에 관계 없이 이용 가능.
      • 마이크로소프트에서 출시했다.
      • DBMS의 종류를 몰라도 알아서 드라이버를 설치해준다.
    • MyBatis
      • JDBC 코드를 단순화해 사용할 수 있는 SQL Mapping 기반 오픈 소스 프레임워크이다.
      • SQL 거의 그대로 사용할 수 있다.
  • 동적 SQL
    • SQL 구문을 다양한 조건에 따라 동적으로 변경해 처리할 수 있는 SQL 처리 방식.
    • 응용 프로그램을 실행시킨 후 입력란에 SQL을 직접 입력해 결과를 확인할 수 있는 것.
    • ex) Select 문장에서 조회되는 컬럼명이나  테이블, 조건절에서의 컬럼명등이 상황에 따라 변할 때 사용

서버 개발

 

서버 개발은 웹 어플리케이션 로직을 구현할 서버 프로그램을 제작해 웹 어플리케이션 서버(WAS)에 탑재하는 것을 의미. 이는 웹 서버로부터 받은 요청을 처리해 결과를 반환하는 역할을 수행한다.

 

  • 서버 개발 프레임워크
    • Spring
      • JAVA 기반 프레임워크. 전자정부 표준 프레임워크 기반 기술로 사용
    • Node.js
      • JavaScript 기반으로 만들어진 프레임워크. 비동기 입*출력 처리와 이벤트 위주 높은 처리 성능을 가져 실시간으로 입*출력이 빈번한 어플에 적합
    • Django
      • Python 기반 프레임워크. 컴포넌트 재사용과 플러그인화를 강조해 신속한 개발이 가능하도록 지원
    • Codeigniter
      • PHP 기반 프레임워크. 인터페이스가 간편해 서버 자원을 적게 사용.
    • Ruby on Rails
      • Ruby 기반 프레임워크. 테스트를 위한 웹 서버 지원. 데이터베이스 작업 단순화, 자동화시켜 개발 코드의 길이가 짧아 신속 개발 가능
  • 서버 개발 과정(순서는 개발자 임의로 변경 가능. 소프트웨어 개발 보안 가이드 참고)
    • DTO(Data Transfer Object)/VO(Value Object) 구현
      • 데이터 교환을 위해 사용할 객체를 만드는 과정. 변수와 데이터를 저장하고 반환하는 메소드만 구현.
      • DTO는 데이터 교환을 위해 생성되는 객체. VO는 DTO와 동일하나 읽기만 가능. 변경 불가능.
    • SQL 구현
      • 데이터 삽입, 변경, 삭제 등의 작업을 수행할 SQL문 생성 과정.
      • 소스 코드 내 직접 입력하거나 별도 XML 파일로 저장해 관리.
    • DAO(Data Access Object)
      • 데이터베이스에 접근하고, SQL을 활용해 데이터를 실제로 조작하는 코드 구현 과정. 실제 SQL문이 작동하는 곳.
    • Service 구현
      • 사용자 요청에 응답하기 위한 로직 구현 과정
    • Controller 구현
      • 사용자 요청에 적절한 서비스를 호출해(위에서 구현한 Service 중 사용자 요청에 해당하는 Service) 그 결과를 사용자에게 반환하는 코드 구현
  • 서버 각 구성 요소 진행 과정

배치 프로그램(Batch Program)

 

배치 프로그램이란 사용자와 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것을 의미

 

  • 수행되는 주기에 따른 배치 프로그램
    • 정기 배치 : 정해진 기간에 정기적 수행
    • 이벤트성 배치 : 특정 조건이 충족될 때만 수행
    • On-Demand 배치 : 사용자 요청 시 수행
  • 배치 프로그램 필수 요소
    • 대용량 데이터 : 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리가 가능해야 함.
    • 자동화 : 심각한 오류가 발생하는 상황 제외, 사용자 개입 없이 수행되어야 함.
    • 견고성 : 잘못된 데이터나 데이터 중복 등 상황으로 중단되는 일 없이 수행해야 함
    • 안전성 / 신뢰성 : 오류가 발생하면 오류 발생 위치, 시간 등을 추적 가능해야 함
    • 성능 : 다른 응용 프로그램 수행 방해하면 안되고, 지정된 시간 내 처리 완료되어야 함.
  • 배치 스케쥴러(Batch Scheduler / Job Scheduler)
    • 일괄 처리(Batch Processing0 작업이 설정된 주기에 맞춰 자동으로 수행하도록 지원해주는 도구
    • 종류
      • Spring Batch
        • 스프링 프레임워크 특성을 그대로 가져와 스프링이 갖고 있는 다양한 기능 모두 사용 가능
          • DB나 파일 데이터 교환하는데 필요한 컴포넌트 제공
          • 로그 관리, 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작 등 다양한 기능 제공 
        • 구성 요소
          • Job : 수행 작업 정의
          • Job Launcher : 실행 인터페이스
          • Step : Job 처리 위한 제어 정보
          • Job Repository : Step 제어 정보 포함 작업 실행을 위한 모든 정보 저장
      • Quartz
        • 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄처리를 위한 다양한 기능을 제공하는 오픈소스 프레임워크
        • 수행할 작업(Job)과 수행 시간을 관리하는 요소(Trigger)들을 분리해 일괄 처리 작업에 유연성 제공
        • 구성 요소
          • Scheduler : 실행 환경 관리
          • Job : 수행 작업 정의
          • JobDetail : Job 상세 정보
          • Trigger : Job 실행 스케줄 정의
      • Cron
        • 리눅스 스케줄러 도구. crontab 명렁어를 통해 작업 예약.
        • 편집기에서 [분][시][일][월][요일]을 기준으로 수행 명령어 지정
        • 옵션
          • -e  : 편집기 호출. 작업 추가 및 수정
          • -l : 작업 목록 출력
          • -r : 작업 삭제
        • 작업 예약 형식
          • [분][시][일][월][요일][명령어]
          • * 입력 시 매 시기마다 수행
            • * * * * * /root/hello.sh -> 매월 매일 매시 매분마다 /root/hello.sh 실행하라.
          • 시기 우측에 /[단위] 입력하면 시기를 단위로 나눈 나머지가 0일 때마다 수행
            • * * * */3 * /root/hello.sh -> 매월 매시 매분 3일마다 /root/hello.sh 실행하라.
          • [시작 시기]-[종료 시기]를 통해 특정 구간에만 반복해 명령어 실행
            • * 18-23 * * * /root/hello.sh -> 매월 매일 오후 6시부터 11시 사이 매분마다 /root/hello.sh 실행하라.
          • [시기1], [시기2], [시기3], ... 을 통해 특정 시기에 명령 실행 가능
            •  15,30,45 * * * * /root/hello.sh -> 매월 매일 매시 15분, 30분, 45분에 /root/hello.sh을 실행하라.

'그 외 공부 > 정처기-실기(완)' 카테고리의 다른 글

7장 어플리케이션 테스트 관리  (0) 2021.07.05
6장 화면 설계  (0) 2021.07.02
4장 통합 구현  (0) 2021.06.27
3장 데이터 입*출력 구현  (0) 2021.06.27
2장 요구사항 확인  (0) 2021.06.26

컨볼루션 신경망 사례 연구

 

영상 분류(image classification)

 

  • ImageNet
    • 약 2만 2천여 부류에 대해 데이터를 수집해 이를 공개하며 image classfication을 발전시키는데 크게 기여한 데이터셋
  • ILSVRC 대회(CVPR 학술대회 개최)
    • 1000가지 부류에 대해 분류, 검출, 위치 지정 문제 : 1순위와 5순위 오류 성능 대결
    • 우승
      • AlexNet(2012) -> Clarifi 팀 (2013) -> GooLeNet&VGGNet(2014) -> ResNet(2015) -> SENet(2017)
    • 우승한 모델은 코드와 학습된 가중치를 공개함으로써 널리 사용되는 표준 신경망이 됨

(이 모든 것의 이전에는 LeNet이 있었다... LeNet을 기초로 알고 있자!)


AlexNet

 

  • 구조
    • 컨볼루션층 5개와 완전 연결(Fully Connected(FC)) 층 3개
      • 8개 층에 290400 - 186624 - 64896 - 43264 - 4096 - 4096 - 1000개 노드 배치
    • 컨볼루션층은 200만개, FC층은 6500만개 가량 매개변수
      • FC층에 30배 많은 매개변수 -> 향후 FC층의 매개변수를 줄이는 방향으로 발전
    • 당시 GPU 메모리 크기 제한으로 GPU#1(색과 관련없는 특징 추출), GPU#2(색과 관련된 특징 추출)로 분할해 학습 수행
      • 3번째 컨볼루션 층은 두 대 GPU 결과를 함께 사용 (inter-GPU connections)
      • 컨볼루션 층 큰 보폭으로 다운 샘플링
  • 학습 성공 요인
    • 외적 요인
      • 대규모 사진 데이터
      • GPU 사용 병렬 처리
    • 내적 요인
      • 활성함수 ReLU 사용
      • 지역 반응 정규화(local response normalization)(같은 위치에 있는 것끼리 normalize하는.. 너무 튀지 않게 주변값하고 맞춰준다.) 기법 적용 (지금은 사용 x)
        • 인간 신경망 측면 억제 모방(중요한 거에만 집중할 수 있게... ex)우리가 집중하고 있지 않은 영역은 뿌옇게 보이는 것), ReLU 활성화 규제
        • 1번째, 3번째 최대 풀링 전 적용
      • 과잉적합을 방지하는 여러 규제 기법 적용
        • 데이터 확대 (잘라내기, 반전으로 2048배 확대)
        • 드롭아웃 (완전연결층에서 사용)
          • 완전연결은 파라미터값이 과도하게 많아져 overfitting 문제가 발생할 가능성이 커진다. 이를 해결하고자 드롭아웃을 사용. 드롭아웃을 적용하게 되면 연결되는 데이터를 살려 특징들이 세분화되어 가중치에 녹아들게 된다. 즉, 특징들을 몰리게끔 만들어주어 안의 가중치들이 의미있는 것만 활성화되어 의미있게 학습이 되게 된다.
      • 테스트 단계에서 앙상블 적용 (여러 모델을 묶어서 통합해 수렴적 결과를 보는 방식)
        • 입력된 영상을 잘라내기와 반전을 통해 증가. 증가된 영상들의 예측 평균으로 최종 인식
        • 2~3%만큼 오류율 감소 효과

VGGNet

 

  • 핵심 아이디어
    • 3*3의 작은 커널 사용
      • 작은 커널의 이점
        • GoogLeNet의 인셉션 모듈처럼 이후 깊은 신경망 구조에 영향
        • 큰 크기의 커널은 여러 개 작은 크기 커널로 분해될 수 있다.
          • 매개변수의 수는 줄며 신경망은 깊어짐
          • ex) 5*5 커널을 3*3 커널로 분해해 구현 가능. (stride 2)
          • ex) n*n커널은 1*n 커널과 n*1 커널로 분해 가능. n이 클수록 매개변수 수는 줄어드는 효과가 큼.
      • 1*1 커널
        • VGG에서 적용 실험을 했지만 최종 선택은 하지 않음 (GoogLeNet에서 사용)
        • 차원 통합
          • feature map 통합
        • 차원 축소 효과
          • feature를 적게 쓰면 차원을 축소시킬 수 있음
    • 신경망을 더욱 깊게 만듦(신경망의 깊이가 어떤 영향을 주는지 확인)
    • 컨볼루션층 8~16개를 두어 AlexNet의 5개에 비해 2~3배 깊어짐. 
    • ->깊은 신경망의 효율성을 확인해 준 모델

GoogLeNet

 

https://norman3.github.io/papers/docs/google_inception.html

 

  • 핵심 아이디어
    • 인셉션 모듈(Inception module) 9개 결합
      • 수용장의 다양한 특징을 추출화기 위해 NIN(Network In Network)의 구조를 확장해 복수의 병렬적 컨볼루션 층을 가짐.
        • NIN 구조
          • 기존 컨볼루션 연산을 MLPConv 연산으로 대체
            • 커널 대신 비선형 함수를 활성함수로 포함하는 MLP를 사용해 특징 추출이 유리
          • 신경망의 미소 신경망(micro neural entwork)가 주어진 수용장 특징을 추상화 시도
          • 전역 평균 풀링(global average pooling) 사용
            • MLPConv가 부류 수만큼 특징 맵을 생성하면, 특징 맵 각각을 평균해 출력 노드에 입력
              • ->매개변수 감소
            • 각각 해당하는 feature map이 해당하는 class에 직접적으로 연결되는 특징들이 몰리게끔 학습이 될 것이다.
      • 마이크로 네트워크로 MLPConv대신 네 종류 컨볼루션 연산 사용 -> 다양한 특징 추출
        • 1*1 컨볼루션 사용해 차원 축소(dimension reduction) (그림 (b)의 Inception module with dimension reductions 참고)
          • 매개변수 수 (특정 맵 수) 줄임 + 깊은 신경망
        • 3*3, 5*5 같은 다양한 크기 컨볼루션을 통해 다양한 특징 추출
      • 매개변수가 있는 층 22개, 없는 층(풀링) 5개로 총 27개 층
      • 완전 연결층은 1개에 불과
        • 백만 개 매개변수를 가지며, VGGNet의 1%에 불과
    • 보조 분류기(auxiliary classifier)
      • 원 분류기 오류 역전파 결과와 보조 분류기 오류 역전파 결과를 결합해 경사 소멸 문제 완화
      • 학습할 때 도우미 역할, 추론할 때 제거

ResNet (신경망의 깊이를 깊게 만드는데 도움을 준 신경망)

 

CS231n

 

  • 잔류(잔차) 학습(Residual learning)이라는 개념을 이용해 성능 저하를 피하며 층 수 대폭 늘림 (얕은 신경망을 조금씩 학습해나가는 구조가 residual block)
    • 지름길 연결된 x(자기 자신)를 더한 F(x) + x에 τ를 적용. F(x)는 잔류.
      • 이전의 모델들은  H(x)(그림 참고)를 얻기 위한 학습이었다면, ResNet은 F(x) = H(x)-x 즉, 나머지를 학습하기 위한 모델이다. F(x)가 0이 되는 방향으로 학습.
      • y = τ(F(x) + x)
      • 지름길을 두는 이유
        • 깊은 신경망도 최적화가 가능
          • 단순한 학습 관점의 변화를 통한 신경망 구조 변화
            • 단순 구조 변경 매개변수 수 영향 없음
            • 덧셈 연산만 하여 전체 연산량 증가도 미비
        • 깊어진 신경망으로 인해 정확도 개선 가능
        • 경사 소멸 문제 해결
          • 자기 자신에 대해서 변화량이 얼마만큼 있는지만 학습하게 해주면 gradient가 사라지는 문제가 없을 것. 
  • VGGNet과 공통점
    • 3*3커널 사용
  • 차이점
    • 잔류 학습 사용
    • 전역 평균 풀링 사용 (FC층 제거)
    • 배치 정규화 적용 (드롭아웃 적용 불필요)

생성 모델

 

모델 학습 단계가 할 일 예측 단계가 할 일 지도 여부
분별 모델 P(y|x) 추정 f:x → y 지도
생성 모델 P(x)
P(x|y),
P(x, y) 추정
f: 씨앗 → x 또는
f: 씨앗, y → x,
f: 씨앗 → x, y
비지도

 

  • 실제 상황에서 생성 모델
    • 현실에 내재한 데이터 발생 분포 P_data(x) -> 알아낼 수 없다.
    • P_data(x)를 모방하는 모델 확률 P_model(x; Θ)
      • P_model(x; Θ)를 명시적으로 추정하는 것도 어렵다
      • 현대 기계 학습은 주로 딥러닝 모델을 사용해 확률 분포를 암시적으로 표현
        • GAN(generative adversarial network), VAE(variational autoencoder), RBM
  • 생성 모델 분류

https://christineai.blog/taxonomy/


GAN

 

  • 생성기(generator) G와 분별기(discriminator) D의 대립구도
    • G는 가짜 샘플 생성 (위조지폐범)
    • D는 가짜/진짜 구별 (경찰) (서로 적대적인 신경망)
  • GAN 목표는 위조지폐범 승리 (G가 만들어내는 샘플을 D가 구별못하는 수준까지 학습)

 

'AI > KDT 인공지능' 카테고리의 다른 글

[07/20] Spark  (0) 2021.07.20
[07/19] 12주차 강의 개요  (0) 2021.07.19
[06/24] 심층학습 기초  (0) 2021.06.24
[06/23] 다층 퍼셉트론  (0) 2021.06.23
[06/22] 라이브 세션  (0) 2021.06.22

연계 요구사항 분석

 

통합 구현이란 송*수신 모듈과 중계 모듈 간의 연계를 구현하는 것.

 

  • 통합 구현 구성 요소
    • 송신 시스템과 모듈
      • 데이터를 생성 및 변환하여 전송하는 시스템
      • 송신 모듈 : 전송 데이터를 생성하고 필요에 따라 전송 데이터 변환
      • 모니터링 기능 : 전송 데이터 생성부터 송신까지 과정과 송신 상태 등 확인
    • 수신 시스템과 모듈
      • 수신 받은 데이터를 정제 및 변환
      • 송신 모듈 : 수신 데이터를 정제하고 어플리케이션이나 DB 테이블에 적합한 데이터로 변환
      • 모니터링 기능 : 수신 모듈과 연계 데이터 수신 상태, 오류 처리, 데이터 변형 등 확인
    • 중계 시스템
      • 내*외부 시스템 간 또는 내부 시스템 간 연계 시 사용되는 아키텍처
      • 중계 모듈 : 송신 데이터의 오류 처리, 수신 시스템에 맞는 데이터 형식으로 변환 등을 수행
    • 연계 데이터
      • 송*수신 시스템 간 송*수신되는 데이터
    • 네트워크
      • 송신, 수신, 중계 시스템을 연결해주는 통신망
      • 유선, 무선, 인터넷 서비스 업체의 공중망 또는 사설망과 송*수신 규약을 위한 프로토콜(서로 다른 기기들 간 데이터 교환을 원활히 수행할 수 있도록 표준화시켜 놓은 통신 규약) 포함

연계 요구사항 분석 : 통합 구현을 위해 사용자 요구사항을 분석하고 연계 데이터를 식별 및 표준화하여 연계 데이터 정의하는 것

 

  • 분석 절차
    • 시스템 구성도, 응용 애플리케이션 구성 등을 통해 송*수신 시스템의 하드웨어 및 소프트웨어 구성, 네트워크 현황 확인
    • 송*수신 시스템과 연결할 데이터와 관련된 테이블 정의서, 코드 정의 등 문서 확인
    • 확인된 시스템 구성과 데이터 현황 정보 등을 기반으로 체크리스트 작성
    • 앞서 나온 문서들, 현황들을 사용자, 시스템 관리자 등과 공유하고 인터뷰, 설문조사 진행
    • 인터뷰나 설문조사를 통해 확인된 결과를 기반으로 요구사항 분석서 작성

연계 데이터 식별 및 표준화

 

  • 절차
    1. 연계 범위 및 항목정의
    2. 연계 코드 변환 및 매핑
    3. 연계 데이터 식별자와 변경 구분 추가
    4. 연계 데이터 표현 방법 정의
    5. 연계 정의서 및 명세서 작성

연계 메커니즘 정의

 

연계 메커니즘

 

  • 직접 연계 방식
    • 중간 매개체 없이 송*수신 시스템이 직접 연계하는 방식
      • 장점
        • 연계 및 통합 구현이 단순하고 용이
        • 중간 매게 없이 직접 연계되어 데이터 연계 처리 성능이 뛰어남
        • 개발 비용이 저렴
        • 개발 기간이 짧음
      • 단점
        • 송*수신 시스템 간 결합도가 높아 시스템 변경 시 오류 발생 가능성
        • 보안을 위한 암호화, 복호화 처리와 비즈니스 로직으 ㄹ적용하기 어려움
        • 연계 및 통합이 가능한 시스템 환경이 제한적.
      • 종류
        • DB Link : DB에서 제공하는 DB Link 객체를 이용하는 방식
        • API(Application programming Interface) / Open API : 데이터를 송신 시스템의 DB에서 읽어와 제공하는 어플리케이션 프로그램이 인터페이스
        • DB Connection : 수신 시스템의 WAS(웹 어플리케이션 서버)에서 송신 시스템 DB로 연결해주는 방식
        • JDBC : Java에서 DB에 접근해 데이터를 삽입, 삭제, 수정, 조회할 수 있도록 Java와 DB를 연결해주는 방식
  • 간접 연계 방식
    • 송*수신 사이 중간 매개체를 두어 연계하는 방식
    • 장점
      • 다양한 환경의 연계 및 통합 가능
      • 송*수신 시스템 간 인터페이스가 변경돼도 오류 없이 서비스 가능
      • 보안 품질 보장과 비즈니스 처리를 위한 로직 쉽게 반영 가능
    • 단점
      • 연계 메커니즘과 아키텍처가 복잡함
      • 중간 매개체로 인해 성능이 저하될 수 있음
      • 개발 및 적용 기간이 비교적 길다.
    • 종류
      • 연계 솔루션 : EAI(송*수신 처리 및 진행 현황을 모니터링하고 통제하는 시스템) 서버와 송 수신 시스템에 설치되는 클라이언트를 이용하는 방식
      • ESB : 어플리케이션 간 표준 기반 인터페이스를 제공하는 방식
      • Socket : 서버는 통신을 위한 소켓을 생성해 포트를 할당하고 클라이언트 통신 요청 시 클라이언트와 연결해 통신하는 네트워크 기술
      • Web Service : WSDL(웹 서비스와 관련된 서식이나 프로토콜 등을 표준적 방법으로 기술하고 게시하기 위한 언어), UDDI(인터넷에서 전 세계 비즈니스 업체 목록에 자신의 목록을 등록하기 위한 XML 기반 규격), SOAP(웹 서비스를 실제로 이용하기 위한 객체 간 통신 규약) 프로토콜을 이용해 연계하는 방식

연계 데이터 보안 적용

 

암*복호화 적용 대상 = '개인 정보 보호법'에 근거한 개인 정보

ex) 주민등록번호, 운전면허번호, 장애인관리번호, 은행계좌번호, 신용카드번호

 

암호화 알고리즘 : 해시를 사용하는 단방향 암호화 방식, 개인키 및 공개키로 분류되는 양방향 암호화 방식

SEED, ARIA, DES, AES, RSA 등이 있음

 

  • 암*복호화 적용 절차
    • 암호화 적용 대상, 암호화 알고리즘, 암호화 키(개인키/공개키) 선정
    • 암호화 적용 대상 컬럼 데이터 길이 변경
    • 암호화 알고리즘 라이브러리 확보 및 설치
    • 연계 응용 프로그램에서 암*복호화 처리 수행

연계 모듈 구현 환경

 

  • EAI(Enterprise Aplication Intergration)
    • 송*수신 처리 및 진행 현황을 모니터링하고 통제하는 시스템
    • 구축 유형
      • Point-to-Point
        • 가장 기본적 어플 통합 방식. 어플을 1:1로 연결. 변경 및 재사용이 어려움 
      • Hub & Spoke
        • 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식. 확장 및 유지 보수 용이. 허브 장애 발생 시 시스템 전체에 영향을 미친다.
      • Message Bus(ESB)
        • 어플 사이 미들웨어를 두어 처리하는 방식. 확장성이 뛰어나며 대용량 처리가 가능
      • Hybrid
        • Hub&Spoke와 Message Bus의 혼합 방식. 필요한 경우 한 가지 방식으로 EAI 구현 가능. 데이터 병목 현상을 최소화할 수 있음.
  • ESB(Enterprise Service Bus)
    • 어플리케이션 간 연계, 데이터 변환, 웹 서비스 지원 등 표준 기반 인터페이스를 제공하는 솔루션
    • 어플리케이션 통합 측면에서 EAI와 유사하지만 어플리케이션보다는 서비스 중심 통합 지향
    • 특정 서비스에 국한되지 않고 범용적으로 사용하기 위해 어플리케이션과 결합도를 약하게 유지
    • 관리 및 보안 유지가 쉽고, 높은 수준의 품질 지원 가능
  • 웹 서비스
    • 네트워크 정보를 표준화된 서비스 형태로 만들어 공유하는 기술. 서비스 지향 아키텍처(SOA) 개념을 실현하는 대표적 기술
    • 구성
      • SOAP(Simple Object Access Protocol) : HTTP, HTTPS, SMTP 등을 활용해 XML 기반 메시지를 네트워크 상 교환하는 프로토콜
      • UDDI(Universal Description, Discovery and Intergration) : WSDL을 등록해 서비스 제공자를 검색하고 접근하는데 사용
      • WSDL(Web Services Description Language) : 웹 서비스명, 서비스 제공 위치, 프로토콜 등 웹 서비스에 대한 상세 정보를 XML 형식으로 구현

XML(eXtensible Markup Language)

 

XML은 웹 브라우저 간 HTML 문법이 호환되지 않는 문제와 SGML(멀티미디어 전자문서들을 다른 기종 시스템들과 정보 손실 없이 효율적으로 전송, 저장 및 자동 처리하기 위한 언어)의 복잡함을 해결하기 위해 개발된 다목적 마크업 언어.

 

구성

<?xml version="1.0" encoding="euc-kr" standalone="yes"?> <!-- XML 문서임을 알리는 문단 standalone은 외부 문서 참조 여부. no가 참조한다는 것-->
<student school="기사대학교">
    <member>
        <name>이철수</name>
        <year>2</year>
        <major>건축</major>
    </member>
    <member>
        <name>박유리</name>
        <year>3</year>
        <major>통계</major>
    </member>
</student>

 


SOAP(Simple Object Access Protocol)

 

컴퓨터 네트워크 상 HTTP/HTTPS, SMTP 등을 이용해 XML을 교환하기 위한 통신 규약

최근엔 무거운 SOAP 대신 RESTful 프로토콜을 이용하기도 함.

 

송신 시스템

<?xml version="1.0"?>
<plus:Envelope <!-- XML 문서를 SOAP 메시지로 정의하는 것. 메시지에 대한 요소와 접근방법 정의 -->
xmlns:plus="http://www.w3.org/2003/05/soap-envelope" 
plus:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
    <plus:Body> <!-- 실제 SOAP 메시지 -->
        <m:CalAdd xmlns:m="http://gilbut.co.kr/soaptest">
            <m:FirstNum>10</m:FirstNum>
            <m:SecondNum>20</m:SecondNum>
        </m:CalAdd>
    </plus:Body>
</plus:Envelope>

<!-- SOAP 메시지에 포함되는 웹 서비스를 정의하는 Header 요소는 생략되었다. -->

수신 시스템

<?xml version="1.0"?>
<plus:Envelope
xmlns:plus="http://www.w3.org/2003/05/soap-envelope" 
plus:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
    <plus:Body>
        <m:CalAddResponse xmlns:m="http://gilbut.co.kr/soaptest">
            <m:AddResult>30</m:AddResult>
        </m:CalAddResponse>
    </plus:Body>
</plus:Envelope>

WSDL(Web Services Description Language)

 

웹 서비스 관련 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 게시하기 위한 언어

 

구조

  1. <description>
  2.     <types>
  3.         자료형 정의
  4.     </types>
  5.     <message>
  6.         인수와 리턴값 정의
  7.     </message>
  8.     <portType> 또는 <interface>
  9.         <operation>
  10.             메소드 정의
  11.         </operation>
  12.     </portType> 또는 </interface>
  13.     <binding>
  14.         통신 방법 정의
  15.     </binding>
  16.     <service>
  17.         <port> 또는 <endpoint>
  18.             웹 서비스 URL
  19.         </port> 또는 </endpoint>
  20.     </service>
  21. </description>

연계 테스트

 

구축된 연께 시스템과 연계 시스템의 구성 요소가 정상적으로 동작하는지 확인하는 활동

 

  • 연계 테스트 진행 순서
    • 연계 테스트 케이스 작성
    • 연계 테스트 환경 구축
    • 연계 테스트 수행
    • 연계 테스트 수행 결과 검증

 

'그 외 공부 > 정처기-실기(완)' 카테고리의 다른 글

6장 화면 설계  (0) 2021.07.02
5장 서버 프로그램 구현  (0) 2021.06.29
3장 데이터 입*출력 구현  (0) 2021.06.27
2장 요구사항 확인  (0) 2021.06.26
1장 프로그래밍 언어 활용  (0) 2021.06.14

+ Recent posts