-
03 소프트웨어 설계 Section 1. 소프트웨어 설계의 기본 원칙
-
1. 소프트웨어 설계
-
2. 설계 모델링
-
Section 2. 소프트웨어 아키텍처
-
1. 소프트웨어 아키텍처
-
2. 소프트웨어 아키텍처 패턴
-
Section 3. UML
-
1. UML(Unified Modeling Language)
-
2. UML 구성요소
-
04 화면 설계
-
Section 1. UI 설계
-
1. UI (User Interface) 개념
-
2. UI 설계
-
3. 감성공학
-
4. UI 설계 지침
-
Section 2. UI 구현
-
1. 화면 레이아웃 구성
-
2. UI 관련용어
-
05 서버 프로그램 구현
-
Section 1. 개발 환경 구축
-
1. 서버 환경 구축
-
2. 개발 소프트웨어 환경
-
3. IDE(Integrated Development Environment) 도구
-
4. 협업 도구
-
5. 형상 관리 도구
-
6. 버전 관리 도구
-
7. 빌드 도구
-
Section 2. 개발 프레임워크
-
1. 프레임워크의 개념
-
2. 프레임워크의 특징
-
3. 라이브러리(Library)
-
4. API(Application Programming Interface)
-
Section 3. 모듈 구현
-
1. 단위 모듈 구현
-
2. 결합도
-
3. 응집도
-
4. 팬인(Fan-in), 팬아웃(Fan-out)
-
5. 공통 모듈 구현
-
Section 4. 서버 프로그램 구현
-
1. 서버 프로그램 구현
-
2. DBMS 접속기술
-
3. ORM(Object-Relational Mapping) 프레임워크
-
Section 5. 배치 프로그램 구현
-
1. 배치 프로그램
03 소프트웨어 설계 Section 1. 소프트웨어 설계의 기본 원칙
1. 소프트웨어 설계
⑴ 소프트웨어 설계의 개념
- 요구사항 명세서를 참조하여 소프트웨어의 구체적인 설계서를 작성하는 단계
⑵ 소프트웨어 설계의 종류
⑶ 소프트웨어 설계의 원리
■ 분할과 정복(Divide & Conquer)
■ 추상화(Abstraction)
- 추상화 기법
추상화 기법
과정 추상화
데이터 추상화
제어 추상화
설명
자세한 단계를 고려하지 않고 상위 수준에서 수행 흐름만 먼저 설계
데이터 구조를 대표할 수 있는 표현으로 대체하는 것이다.
여러 명령들을 간단한 표현으로 대체하는 것이다.
■ 단계적 분해(Gradual Decomposition)
■ 모듈화(Modulization)
■ 정보은닉(Information Hiding)
2. 설계 모델링
⑴ 설계 모델링 개념
- 소프트웨어를 구성하는 모듈들을 식별하고, 이것들의 연결을 그림으로 표현한 것
⑵ 설계 모델링 유형
■ 구조 모델링
- 소프트웨어를 구성하는 컴포넌트들의 유형, 인터페이스, 내부 설계 구조 및 이들의 연결 구조를 모델링
- UML 정적 다이어그램
■ 행위 모델링
- 소프트웨어의 구성요소들의 기능들이 언제, 어떠한 순서로 기능을 수행해야 작용하는지를 모델링
- UML 동적 다이어그램
⑶ 소프트웨어 설계 절차 및 유형
■ 아키텍처 설계
■ 데이터베이스 설계
■ 서브시스템 설계
■ 컴포넌트 설계
■ 자료구조와 알고리즘 설계
■ 협약에 의한 설계
- 선행 조건, 결과 조건, 불변 조건
Section 2. 소프트웨어 아키텍처
1. 소프트웨어 아키텍처
⑴ 소프트웨어 아키텍처(SoftWare Architecture) 개념
- 소프트웨어의 골격이 되는 기본구조
⑵ 소프트웨어 아키텍처의 특징
- 간략성
- 추상화
- 가시성
- 관점 모형
- 의사소통수단
⑶ 소프트웨어 아키텍처 프레임워크 구성요소
- 아키텍처 명세서 (Architecture Description)
- 이해관계자 (Stakeholder)
- 관심사 (Concerns)
- 관점 (Viewpoint)
- 뷰(View)
⑷ 소프트웨어 아키텍처 4+1 뷰
⑸ 소프트웨어 아키텍처 품질속성
- 정확성 (Correctness)
- 신뢰성 (Reliability)
- 효율성 (Efficiency)
- 무결성 (Integrity)
- 사용 용이성 (Usability)
- 유지보수성 (Maintainability)
- 시험 용이성 (Testability)
- 유연성 (Flexibility)
- 이식성 (Potability)
- 재사용성 (Reusability)
- 상호 운용성 (Interoperability)
⑹ 소프트웨어 아키텍처 평가
관점
유형
가시적 평가
내용
Inspection, Review, Validation & Verification
가시성
비가시적 평가
SAAM, ATAM, CBAM, ARID, ADR
이른 평가
아키텍처 구축과정 중 어느 때나 평가 가능
늦은 평가
기존 시스템의 요구사항에 대한 아키텍처의 적합성을 판단할 때 사용
시점
2. 소프트웨어 아키텍처 패턴
⑵ 소프트웨어 아키텍처 패턴 종류
- 계층화 패턴(Layered pattern)
- 클라이언트-서버 패턴(Client-Server Pattern)
- 마스터-슬레이브 패턴(Master-Slave Pattern)
- 파이프-필터 패턴(Pipe-Filter Pattern)
- 브로커 패턴(Broker Pattern)
- 피어 투 피어 패턴(Peer to Peer Pattern)
- 이벤트-버스 패턴(Event-Bus Pattern)
- 모델-뷰-컨트롤러 패턴(Model-View-Controller Pattern : MVC Pattern)
- 블랙보드 패턴(Blackboard Pattern)
- 인터프리터 패턴(Interpreter Pattern)
Section 3. UML
1. UML(Unified Modeling Language)
⑴ UML 개념
- 프로그램 설계를 표현하기 위해 사용하는 표기법
⑵ UML 특징
- 가시화 언어
- 명세화 언어
- 구축 언어
- 문서화 언어
2. UML 구성요소
⑴ 사물(Things)
- 구조사물
- 행동사물
- 그룹사물
- 주해사물
⑵ 관계(Relationships)
■ 일반화 관계(Generalization)
- 한 클래스가 다른 클래스를 포함하는 상위 개념일 때의 관계
■ 연관관계(Accociation)
- 2개 이상 사물이 서로 관련된 관계
■ 의존관계(Dependency)
- 연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 표시
- 연관 관계와 차이점은 두 클래스의 관계가 한 메서드를 실행하는 동안과 같이 매우 짧은 시간만 유지
■ 실체화 관계 (Realization)
- 인터페이스를 구현받아 추상 메서드를 오버라이딩 하는 것을 의미
■ 집합 관계 - 집약관계 (Aggregation)
- 전체 객체가 사라진다 해도 부분 객체는 사라지지 않음
■ 집합관계 - 합성관계 (Composition)
- 전체 객체가 없어지면 부분 객체도 없어짐
⑶ 다이어그램(Diagram)
■ 구조 다이어그램
- 클래스 다이어그램
- 객체 다이어그램
- 컴포넌트 다이어그램
- 배치 다이어그램
- 복합체 다이어그램
- 패키지 다이어그램
■ 행위 다이어그램
- 유스케이스 다이어그램
- 시퀀스 다이어그램
- 커뮤니케이션 다이어그램
- 상태 다이어그램
- 활동 다이어그램
- 상호작용 다이어그램
- 타이밍 다이어그램
04 화면 설계
Section 1. UI 설계
1. UI (User Interface) 개념
⑴ UI 개념
- 컴퓨터, 웹 사이트, 시스템 등의 정보기기와 사용자가 서로 상호작용을 할 수 있도록 연결해주는 매개체
⑵ UX (User eXperience) 개념
- 사용자가 컴퓨터, 웹 사이트, 시스템 등 정보기기의 UI를 직/간접적으로 이용하여 경험한 모든 것
⑶ UI 유형
- CLI (Command Line Interface)
- GUI (Graphical User Interface)
- AUI (Auditory User Interface)
- NUI (Natural User Interface)
2. UI 설계
⑴ UI 요구사항 구분
① 기능적 요구사항
- 시스템이 제공해야 하는 기능에 대한 요구사항
② 비기능적 요구사항
- 사용성, 효율성, 신뢰성, 유지 보수성, 재사용성 등 품질에 관한 요구사항
⑵ UI 설계 절차
① UI 개발목표 및 범위 수립
② UI 전략 수립
③ 사용자 요구사항 분석
④ UI 상세 설계
⑤ 구현
⑥ 테스트
⑶ UI 설계 원칙
■ 직관성
- 누구나 쉽게 이해하고 사용할 수 있어야 한다.
■ 유효성
- 사용자의 목적을 정확하게 달성해야 한다.
■ 학습성
- 누구나 쉽게 배우고 익힐 수 있어야 한다.
■ 유연성
- 사용자의 요구사항을 최대한 수용하며, 오류를 최소화해야 한다.
⑷ UI 설계 도구
① 와이어프레임(Wireframe)
② 스토리보드
③ 프로토타입
3. 감성공학
⑴ 감성공학의 개념
- 인간의 심상을 구체적인 물리적 설계 요소로 번역하여 이를 실현하는 기술
- 요소화 → 형상화 → 구현 → 생산
⑵ 제품과 관련된 인간의 감성
- 감각적 감성
- 기능적 감성
- 문화적 감성
⑶ 감성공학의 접근 방법
■ 1류 접근 방법
- 인간의 감성을 표현하는 어휘를 이용하여 제품에 대한 이미지를 조사하고, 그 분석을 통해 제품 디자인 요소
연계
■ 2류 접근 방법
- 문화적 감성의 일부를 반영한 개념
■ 3류 접근 방법
- 특정 시제품을 사용하여 감각 척도를 계측하고, 정량화된 값을 환산
4. UI 설계 지침
⑴ 한국 HCI 연구회 설계 지침
■ 가시성의 원칙 (Visibility)
- 소프트웨어의 기능을 노출 시켜 최대한 조작이 쉽도록 한다.
■ 조작 결과 예측의 원칙 (Natural Mapping)
- 사용자가 소프트웨어를 조작하여 작동시킨 결과를 조작 부위만 보고도 예측 가능하게 설계 한다.
■ 일관성의 원칙 (Consistency)
- 소프트웨어의 조작방식에 일관성을 제공하여 사용자가 쉽게 기억하고 빠르게 적응할 수 있게 한다.
■ 단순성의 원칙 (Simplicity)
- 소프트웨어의 기능구조를 단순화시켜 조작에 요구되는 노력을 최소화한다.
■ 지식 배분의 원칙 (Knowledge in World & Head)
- 학습하기 쉽고 기억하기 쉽게 설계해야 한다.
■ 조작오류의 원칙 (Design for Error)
- 사용간 발생한 오류를 쉽게 발견하고 수정 또한 쉽게 이루어져야 한다.
■ 제한사항 선택사용의 원칙 (Constraints)
- 소프트웨어를 조작할 때 선택의 여지를 줄여 조작 방법이 명확하도록 유도한다.
■ 표준화의 원칙 (Standardization)
- 소프트웨어의 기능 구조와 디자인을 한 번 학습한 이후 보다 효과적으로 서비스를 사용할 수 있어야 한다.
■ 행동 유도성의 원칙 (Affordance)
- 사용자가 디자인을 보고 기능 및 조작법을 유추할 수 있도록 해야 한다.
■ 접근성의 원칙 (Accessibility)
- 사용자의 성별, 연령등 다양한 계층의 사용자가 받아드릴 수 있는 사용자인터페이스를 구축해야 한다.
Section 2. UI 구현
1. 화면 레이아웃 구성
⑴ 레이아웃(Layout)의 개념
- 특정 공간에 여러 구성 요소를 보기 좋게 효과적으로 배치하는 작업
⑵ HTML5
① HTML5 개념
- 월드와이드웹(World Wide Web)을 통해 제공되는 정보를 나타낼 목적으로 사용되는 마크업 언어
② 시맨틱 요소
- header
- nav
- section
- article
- aside
- footer
③ INPUT 요소
■ 텍스트 입력 (text, textarea)
- text : 한 줄의 텍스트 입력
- textarea : 여러 줄의 텍스트 입력
■ 비밀번호 입력 (password)
- 입력받은 문자를 별표나 작은 원으로 표시
■ 라디오 버튼(radio)
- 여러 개의 라디오 버튼 옵션 중에서 단 하나만의 값을 선택
■ 체크 박스 (checkbox)
- 여러 개의 체크박스 중에서 여러 개의 옵션 값을 선택
■ 파일 선택 (file)
- 사용자 컴퓨터의 파일을 입력
■ 선택 입력 (select)
- 여러 개의 드롭다운 리스트(drop-down-list) 중에서 한 개의 옵션을 선택
■ 버튼 (button)
- 사용자가 클릭했을 때 작업을 수행
■ 전송 (submit)
- 입력 받은 데이터를 서버로 전송
■ 필드셋 (fieldset)
- 관련된 데이터를 하나로 묶어준다.
⑶ CSS(Cascading Style Sheet)
① CSS 개념
- HTML과 함께 웹을 구성하는 기본 프로그래밍 요소
② CSS 특징
- HTML로 부터 디자인적인 요소를 분리해 정의할 수 있다.
⑷ JavaScript
① JavaScript 개념
- 모질라 재단의 프로토타입 기반의 프로그래밍 언어로, 스크립트 언어에 해당된다.
- 클라이언트 단에서 웹 페이지가 동작하는 것을 담당
② JavaScript 프레임워크
■ React
- 유저 인터페이스를 만드는 데 사용되는 오픈 소스 자바스크립트 라이브러리
- 페이스북에서 개발
- 싱글 페이지 애플리케이션(SPA)이나 모바일 애플리케이션 개발에 사용될 수 있다.
■ Vue.js
- 자바스크립트로 개발된 컴포넌트 구조 기반 프론트엔드 프레임워크
- 고성능의 싱글 페이지 애플리케이션(SPA)을 구축하는데 이용가능하다.
- Evan You에 의해 개발
■ AngularJS
- 자바스크립트 기반의 오픈 소스 프론트엔드 웹 애플리케이션 프레임워크
- 구글에서 개발
■ Ajax(Asynchronous JavaScript and XML)
- 비동기적인 웹 애플리케이션의 제작을 위한 웹 개발 기법
2. UI 관련용어
용어
웹 표준
웹 호환성
웹 접근성
반응형 웹
인포그래픽
(Infographic)
브랜드 아이덴티티(BI)
네비게이션
(Navigation)
설명
월드 와이드 웹의 측면을 서술하고 정의하는 공식 표준이나 다른 기술 규격을 말한다.
이용자의 단말기 (PC, 모바일 기기 등)의 하드웨어 및 소프트웨어 환경이 다른 경우에도
동등한 서비스를 제공할 수 있는 것을 말한다.
장애인과 비장애인 모두가 동등하게 웹 사이트에 접근하여 이용할 수 있도록 보장하는
방식을 말한다.
PC, Mobile 등 다용한 디바이스에서 화면크기에 맞춰 하나의 사이트를 보여준다.
정보(Information)와 그래픽(Graphic)의 합성어로, 복잡한 정보를 쉽고 빠르게 전달하기
위해 정보를 분석, 정리하여 차트, 그래프, 아이콘, 그래픽스, 이미지 등을 활용하여
시각화한 것을 말한다.
사용자에게 전달하고자 하는 특정 브랜드의 가치와 의미를 반영한 심적 표상을 말한다.
하이퍼링크를 따라 웹 공간의 정보를 요청하고 받아오는 웹 브라우징을 의미하며, 웹
사이트를 탐색하기 위한 도구를 뜻하기도 한다.
아코디언(Accordion)
사용자가 원하는 정보만 선택적으로 볼 수 있게 접을 수 있는 내용 패널을 말한다.
플레이스 홀더
사용자가 값을 입력하는 데 참고할 수 있도록, 입력 필드에 제공되는 간략한 텍스트
(Placeholder)
도움말을 말한다.
필터링(Filtering)
입력 폼(Input Form)
입력 필드(Input Field)
썸네일(Thumbnail)
레이블(Label)
대체 텍스트
(Alternative Text)
초점(Focus)
원하지 않는 데이터를 차단하거나, 원하는 데이터만 볼 수 있도록 해주는 기능을 말한다.
다양한 입력 필드로 구성되어, 사용자가 웹 서버로 전송할 정보를 입력 할 수 있는 웹
문서의 일부를 말한다.
사용자가 정보를 입력하거나 선택하는데 이용되는 사용자 인터페이스 요소를 말한다.
커다란 이미지를 축소하여 제공한 이미지를 말한다.
입력폼을 구성하는 다양한 입력 필드를 식별하기 위해 사용하는 명칭을 말한다.
콘텐츠를 대신하기 위해 제공되는 텍스트를 의미한다.
웹 페이지에서 사용자가 선택한 해당 요소에 있을 때, 해당 요소에 Focus가 있다고 한다.
05 서버 프로그램 구현
Section 1. 개발 환경 구축
1. 서버 환경 구축
⑴ 웹 서버 (WEB)
- 클라이언트에게 정적 파일(HTML, CSS, JS, 이미지)을 제공하는 웹서버 어플리케이션이 설치된 하드웨어
- Apache Web Server, IIS, nginx, GWS 등
⑵ 웹 어플리케이션 서버 (WAS)
- 동적인 웹 서비스를 제공하기 위한 미들웨어가 설치된 하드웨어
- Web Logic, Web Spere, Jeus, Tomcat 등
⑶ 데이터베이스 서버 (DBMS)
- 데이터의 저장과 관리를 위한 데이터베이스 소프트웨어가 설치된 하드웨어
- Oracle, MySQL, MS-SQL 등
⑷ 파일서버
- 사용자의 파일을 저장하고, 파일을 공유할 목적으로 구성된 하드웨어
⑸ Load Balancer
- 여러 대의 서버가 존재할 경우 요청을 적절히 분배해주는 역할
- 분배 방식 : Random, Least loaded, Round Robin
⑹ CDN(Content Delivery Network)
- 용량이 큰 컨텐츠 데이터(이미지, 비디오 등)를 빠른 속도로 제공하기 위해 사용자와 가까운 곳에 분산되어 있는 데이터 저장 서버
⑺ 시스템 아키텍처 고려사항
- 확장성 (Scalability)
- 성능 (Performance)
- 응답 시간 (Latency)
- 처리량 (Throughput)
- 접근성 (Availability)
- 일관성 (Consistency)
2. 개발 소프트웨어 환경
⑴ 시스템 소프트웨어
① 운영체제(OS, Operation System)
② JVM(Java Virtual Machine)
③ Web Server
④ WAS(Web Application Server)
⑤ DBMS(Database Management System)
⑵ 개발 소프트웨어
① 요구사항 관리 도구
- 고객의 요구사항을 수집, 분석, 추적을 쉽게 할 수 있도록 지원한다.
② 설계/모델링 도구
- 기능을 논리적으로 표현할 수 있는 통합 모델링 언어(UML) 지원
③ 구현도구
- 소프트웨어 언어를 통해 구현 및 개발을 지원하는 도구
④ 테스트 도구
- 개발된 모듈들에 대하여 요구 사항에 적합하게 구현되어 있는지 테스트를 지원하는 도구
⑤ 형상관리 도구
- 산출물 및 소스코드의 변경 사항을 버전별로 관리하여, 목표 시스템의 품질 향상을 지원하는 도구
- Git, CVS, SVN 등
3. IDE(Integrated Development Environment) 도구
⑴ IDE 도구의 개념
- 소프트웨어 개발에 필요한 많은 도구의 기능을 하나로 묶어 활용하는 소프트웨어
⑵ IDE 도구의 기능
- 텍스트 에디터, 컴파일, 디버거, 배포 등
⑶ IDE 도구 선정시 고려 사항
기준
설명
적정성
- 대상 업무에 적절한 도구 선정
효율성
- 프로그래밍의 효율성 고려
이식성
- 여러 OS에 개발환경 설치 가능
친밀성
- 프로그래머가 익숙한 언어 및 도구
범용성
- 다양한 개발 사례가 존재
4. 협업 도구
⑴ 협업 도구의 개념
- 여러 사용자가 각기 별개의 작업 환경에서 통합된 하나의 프로젝트를 동시에 수행할 수 있도록 도와주는
소프트웨어
⑵ 협업 도구의 기능
- 전사관리 : 전자결재, 조직도 등
- 프로젝트 관리 : 캘린더, 타임라인, 간트차트, 대시보드 등
- 자체 드라이브 공간
- 문서 공유 지원
- 커뮤니케이션
- 다국어지원
- 타 협업툴간 연동 지원
5. 형상 관리 도구
⑴ 형상 관리 도구의 개념
- 소프트웨어 생명주기 동안 발생하는 변경사항을 통제하기 위한 관리 방법
⑵ 형상 관리의 필요성
- 개발 도중 소스코드를 이전 상태로 되돌릴 필요가 있을 경우
- 각 변경점에 대한 이력 확인
- 여러 개발자의 동시 개발에 따른 충돌 해결
- 버그 및 문제점 발생시 추적이 용이
- 기타 산출물의 이력관리도 용이
⑶ 변경 관리/버전 관리/형상 관리
① 변경 관리
- 소스의 변경 상황을 관리
② 버전 관리
- 변경을 관리하기 위한 효과적인 방법
③ 형상 관리
- 변경 관리와 버전 관리가 포함되고, 프로젝트 진행상황, 빌드와 릴리즈까지 모두 관리할 수 있는 통합 시스템
⑷ 형상 관리 절차
■ 형상 식별
- 형상 관리의 시작으로 시스템을 구성하는 요소들 중 형상 관리의 대상들을 구분하고 관리 목록의 번호를
정의하여 부여한다.
■ 형상 통제
- 소프트웨어 형상 변경 요청을 검토하고 승인하여 현재의 베이스라인에 반영될 수 있도록 통제
- 형상통제가 이루어지기 위해서는 형상 통제 위원회(Configuration Control Board, CCB)의 승인을 통한
변경 통제가 이루어져야 한다.
■ 형상 감사
- 형상 항목의 변경이 계획에 따라 제대로 이뤄졌는지를 검토하고 승인
■ 형상 기록/보고
- 프로젝트 팀, 회사, 클라이언트 등에게 소프트웨어 개발 상태에 대한 보고서를 제공
6. 버전 관리 도구
⑴ 소프트웨어 버전 관리 도구 개념
- 동일한 소스 코드에 대한 여러 버전을 관리하는 것
⑵ 소프트웨어 버전 관리 도구 유형
① 공유 폴더 방식 (RCS, SCCS)
- 매일 개발 완료 파일은 약속된 위치의 공유 폴더에 복사
② 클라이언트/서버 방식 (CVS, SVN)
- 중앙에 버전 관리 시스템이 항시 동작
③ 분산 저장소 방식 (Git, Betkeeper)
- 로컬 저장소와 원격저장소 구조
⑶ 버전 관리 도구별 특징
■ CVS
- 오랜 기간 사용된 형상 관리 도구로, 다양한 운영체제를 지원
■ SVN
- CVS의 단점을 보완하기 위해 만들어졌다.
- 최초 1회에 한해 파일 원본을 저장하고, 그 이후에는 실제 파일이 아닌 원본과 차이점을 저장하는 방식
- 언제든지 원하는 시점으로 복구가 가능
■ Git
- 리누스 토발즈가 리눅스 커널의 개발을 위해 만들었다.
- 원격 서버 Git Repository에 push 하지 않은 채 여러 branch 생성이 가능하다.
■ Clear Case
- IBM에서 개발된 유료 버전의 형상 관리 툴
- 서버가 부족할 때 서버를 하나씩 늘려 확장할 수 있다.
■ BitKeeper
- SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 버전관리 도구
■ RCS(Revision Control System)
- 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일을 잠금
하는 방식으로 버전 컨트롤을 수행
⑷ 버전 관리 소프트웨어 사용 방식
⑸ 버전 관리 주요 용어
용어
설명
Repository
저장소
Checkout
Repository에서 로컬로 프로젝트를 복사
Commit
로컬의 변경된 내용을 Repository에 저장
Update
Repository에 있는 내용을 로컬에 반영
Add
로컬에서 새로운 파일이 추가되었을 때 Repository에 등록
Trunk
Root 프로젝트
Branch
Root 프로젝트에서 파생된 프로젝트
Merge
Branch에서 진행하던 작업을 Root 프로젝트와 합침
Diff
파일의 비교
7. 빌드 도구
⑴ 빌드의 개념
- 소스코드 파일들을 컴퓨터에서 실행할 수 있는 소프트웨어로 변환하는 일련의 과정
⑵ 빌드 자동화 도구 특징
- 빌드, 테스트, 배포를 자동으로 수행하는 도구
⑶ 빌드 자동화 프로세스
⑷ 빌드 자동화 도구 종류
■ Make
- 유닉스 계열 운영체제에서 주로 사용되는 프로그램 빌드 도구이다.
■ Ant
- Java 기반의 빌드 도구로 다른 빌드 도구 보다 역사가 오래 되었다.
- 개발자가 원하는 형태로 개발을 할 수 있다는 유연성에 장점이 있다.
- XML 기반의 빌드 스크립트로 개발한다.
- 스크립트의 재사용이 어렵다.
- Remote Repository를 가져올 수 없다.
■ Maven
- 프로젝트에 필요한 모든 Dependency를 리스트 형태로 Maven에게 알려 관리할 수 있도록 돕는 방식이다.
- 필요한 라이브러리를 특정 파일(pom.xml) 에 정의해 놓으면 해당 라이브러리와 관련된 라이브러리까지
네트워크를 통해 자동으로 다운받는다.
- 정해진 라이프사이클에 의하여 작업 수행하며, 전반적인 프로젝트 관리 기능까지 포함한다.
■ Jenkins
- Java 기반의 오픈소스로, 소프트웨어 개발 시 지속적 통합(continuous integration) 서비스를 제공하는 툴
- 서블릿 컨테이너에서 실행되는 서버 기반 도구
- SVN, Git 등 대부분의 형상 관리 도구와 연동이 가능
- 여러 대의 컴퓨터를 이용한 분산 빌드나 테스트가 가능
■ Gradle
- Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구로 안드로이드 앱 개발 환경에서 사용
Section 2. 개발 프레임워크
1. 프레임워크의 개념
- 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록
여러 가지 기능들을 제공해주는 반제품 형태의 소프트웨어
2. 프레임워크의 특징
■ 모듈화 (modularity)
- 프레임워크는 구현을 인터페이스 뒤에 감추는 캡슐화를 통해서 모듈화를 강화
- 설계와 구현의 변경에 따르는 영향을 최소화시킴으로써 쉽게 소프트웨어의 품질을 향상시킴
■ 재사용성 (reusability)
- 프레임워크가 제공하는 인터페이스는 여러 어플리케이션에서 반복적으로 사용할 수 있는 일반적인 컴포넌트를
정의할 수 있게 함으로써 재사용성을 높여준다.
- 소프트웨어의 품질, 성능, 신뢰성, 상호 운용성을 향상시키고, 프로그래머의 생산성을 높여준다.
■ 확장성(extensibility)
- 다형성(polymorphism)을 통해 애플리케이션의 프레임워크의 인터페이스를 확장할 수 있게 한다.
■ 제어의 역흐름(inversion of control)
- 프레임워크가 외부의 이벤트에 대해 애플리케이션이 어떠한 메소드들을 수행해야 하는지 결정
3. 라이브러리(Library)
- 컴퓨터 프로그램에서 빈번하게 사용되는 사전 컴파일된 루틴 또는 리소스(클래스, 템플릿, 설정 데이터 등)를
모아둔 것
4. API(Application Programming Interface)
- 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공한다.
Section 3. 모듈 구현
1. 단위 모듈 구현
⑴ 단위 모듈 구현의 개념
- 소프트웨어를 기능 단위로 분해하여 구현하는 기법
⑵ 효과적인 모듈화
- 결합도를 줄이고 응집도를 높여 모듈의 독립성을 높임
- FAN-OUT 최소화, FAN-IN 증가
⑶ 단위 모듈 설계의 원리
■ 단계적 분해
- 처음엔 간단히 작성하고, 점점 세밀하게 작성
■ 추상화
- 복잡한 문제를 일반화하여, 쉽게 이해할 수 있도록 한다.
■ 독립성
- 모듈은 응집도는 높이고 결합도는 낮춰 독립성을 가져야 한다.
■ 정보은닉
- 모듈 내부의 데이터를 외부에 은폐
■ 분할과 정복
- 큰 문제를 작게 나누어 하나씩 해결
⑷ 단위 모듈 작성 원칙
■ 정확성 (Correctness)
- 해당 기능이 실제 시스템 구현 시 필요한지 여부를 알 수 있도록 정확하게 작성
■ 명확성 (Clarity)
- 해당 기능에 대해 일관되게 이해되고 한 가지로 해석될 수 있도록 작성
■ 완전성 (Completeness)
- 시스템이 구현될 때 필요하고 요구되는 모든 것을 기술
■ 일관성 (Consistency)
- 공통 기능들 간에 상호 충돌이 없도록 작성
■ 추적성 (Traceability)
- 공통 기능에 대한 요구사항 출처와 관련 시스템 등의 유기적 관계에 대한 식별이 가능하도록 작성
2. 결합도
⑴ 결합도(Coupling)의 개념
- 어떤 모듈이 다른 모듈에 의존하는 정도
⑵ 결합도 유형
구분
자료 결합도 (Data Coupling)
스탬프 결합도 (Stamp Coupling)
제어 결합도 (Control Coupling)
외부 결합도 (External Coupling)
공통 결합도 (Common Coupling)
내용 결합도 (Content Coupling)
설명
모듈 간의 인터페이스로 값이 전달되는 경우
모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우
단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우
어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조하는 경우
파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우
다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
3. 응집도
⑴ 응집도(Cohesion)의 개념
- 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도
⑵ 응집도 유형
구분
기능적 응집도 (Functional Cohesion)
순차적 응집도 (Sequential Cohesion)
통신적 응집도 (Communication Cohesion)
절차적 응집도 (Procedural Cohesion)
시간적 응집도 (Temporal Cohesion)
논리적 응집도 (Logical Cohesion)
우연적 응집도 (Coincidental Cohesion)
설명
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우
모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우
모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우
연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
모듈 내부의 각 구성 요소들이 연관이 없을 경우
4. 팬인(Fan-in), 팬아웃(Fan-out)
⑴ 팬인(Fan-in), 팬아웃(Fan-out)의 개념
- 소프트웨어의 구성요소인 모듈을 계층적으로 분석하기 위해 활용
⑵ 팬인/팬아웃 계산법
5. 공통 모듈 구현
⑴ 공통 모듈 구현 순서
공통 모듈 상세 설계 확인
공통 모듈 관리 대장 확인
공통 모듈 담당자 확인
↕
상세 설계서 확인
공통 모듈 기능 확인
→
화면 설계서 등
프로그램 설계서 확인
참조 문서 확인
↕
공통 모듈 상세 문서와 매핑된 공통 모듈 구현
공통 모듈 구현
DTO/VO
구현
→
SQL문
구현
→
DAO
구현
→
Service
구현
→
Controller
필요시
구현
화면 구현
⑵ 공통 모듈 구현요소
구현 요소
DTO (Data Transfer Object)
VO (Value Object)
DAO (Data Access Object)
설명
- 프로세스 사이에서 데이터를 전송하는 객체
- Getter, Setter 메서드만 포함한다.
- 도메인에서 속성들을 묶어서 특정 값을 나타내는 객체
- DTO와 동일한 개념이나 차이점은 ReadOnly 속성 객체이다
- 실질적으로 DB에 접근하는 객체
- DataBase에 접근하기 위한 로직 & 비지니스 로직을 분리하기 위해 사용
Service
- DAO 클래스를 호출하는 객체
Controller
- 비즈니스 로직을 수행하는 객체
⑶ Annotation
- 사전적으로는 "주석"이라는 의미를 가지고 있다.
- 자바코드에 주석처럼 달아 특수한 의미를 부여한다.
- 컴파일 또는 런타임에 해석된다.
Section 4. 서버 프로그램 구현
1. 서버 프로그램 구현
⑴ 업무 프로세스
- 개인이나 조직이 한 개 이상의 자원 입력을 통해 가치 있는 산출물을 제공하는 활동
⑵ MVC 모델의 계층
① 프리젠테이션 계층(Presentation Layer)
- 사용자 인터페이스
- 사용자가 선택할 수 있는 기능 및 부가정보를 전달할 양식을 표현한다.
- JSP 와 JSTL 태그 라이브러리를 결합하는 방식(JAVA의 경우)
② 제어 계층(Control Layer)
- 프리젠테이션 계층과 비즈니스 로직 계층을 분리하기 위한 컨트롤러를 제공
- 어떤 요청이 들어왔을 때 어떤 로직이 처리해야 하는지를 결정한다.
③ 비즈니스 로직 계층(Business Logic Layer)
- 핵심 업무를 어떻게 처리하는지에 대한 방법을 구현 하는 계층
- 핵심 업무 로직의 구현과 그에 관련된 데이터의 적합성 검증, 트랜잭션 처리 등을 담당한다.
④ 퍼시스턴스 계층(Persistence Layer)
- 데이터 처리를 담당하는 계층
- 데이터의 생성/수정/삭제/선택(검색)과 같은 CRUD 연산을 수행한다.
⑤ 도메인 모델 계층(Domain Model Layer)
- 각 계층 사이에 전달되는 실질적인 비즈니스 객체
- 데이터 전송 객체(DTO) 형태로 개발자가 직접 제작해서 데이터를 넘기게 된다.
2. DBMS 접속기술
⑴ DBMS 접속기술의 개념
- 프로그램에서 DB에 접근하여 DML을 사용 가능하게 하는 기술
⑵ DBMS 접속기술 종류
① 소켓통신
- 응용프로그램과 DBMS가 주고 받는 통신
② Vender API
- DBMS 사에서 공개한 API를 이용해 DBMS와 통신
③ JDBC(Java DataBase Connectivity)
- Java 에서 DB에 접속하고 SQL문을 수행할 때 사용되는 표준 API
④ ODBC(Open DataBase Connectivity)
- 데이터베이스에 접근하기 위한 표준 규격
- 개발언어에 관계없이 사용할 수 있다.
3. ORM(Object-Relational Mapping) 프레임워크
⑴ ORM 프레임워크의 개념
- 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것
⑵ 매핑 기술 비교
■ SQL Mapper
- SQL을 명시하여 단순히 필드를 매핑 시키는 것이 목적
- SQL 의존적인 방법
- 종류 : iBatis, Mybatis, jdbc Templetes 등
■ OR Mapping (=ORM)
- 객체를 통해 간접적으로 데이터베이스를 다룬다.
- ORM을 이용하면 SQL Query 가 아닌 직관적인 코드로 데이터를 조작할 수 있다.
- 종류 : JPA(Java Persistent API),Hibernate
Section 5. 배치 프로그램 구현
1. 배치 프로그램
⑴ 배치의 개념
- 데이터를 일괄적으로 모아서 처리하는 대량의 작업을 처리
⑵ 배치 프로그램의 필수 요소
- 대용량 데이터
- 자동화
- 견고함
- 안정성
- 성능
⑶ 스케줄 관리 종류
① 크론탭 (crontab)
- UNIX, LINUX 계열에서 사용
■ 크론탭 형식
분
시
일 월
요일
명령어
Ÿ 항목의 범위
필드
의미
범위
첫 번째
분
0 ~ 59
두 번째
시
0 ~ 23
세 번째
일
1 ~ 31
네 번째
월
1 ~ 12
다섯 번째
요일
여섯 번째
명령어
0 ~ 6 (0:일요일, 1:월요일)
실행할 명령
Ÿ 허용 특수문자
특수문자
설명
*
모든 값 (매시, 매일, 매주)
?
특정 값이 아닌 어떤 값이든 상관 없음
-
범위를 지정할 때 (12-14 : 12시부터 14시)
,
여러 값을 지정할 때 (12, 14 : 12시, 14시)
/
증분값, 즉 초기값과 증가치 설정 (*/20 : 매 20분 마다)
Ÿ 설정 예
형식
*
30
*
*
4
*
*
*/30
30
*
0
명령
0
*
*
*
1
*
*
10-30 4 *
0,10,20 *
설명
*
명령
* 명령
*
명령
매분 실행
매주 일요일 4시 30분 실행
매일 오전 4시 10분부터 30분까지 매분 실행
매일 매시간 0분, 10분, 20분 실행
*
*
명령
매 30분 마다 실행
1,6
*
명령
1월과 6월, 1일, 0시 30분에 실행
② Spring Batch
Ÿ 백엔드의 배치처리 기능을 구현하는데 사용하는 프레임워크
③ Quartz Job Scheduler
Ÿ 표준 자바 프로그램으로 만들어진 작업을 지정된 일정에 따라 실행시키는데 사용하는 Java 패키지
'information processing' 카테고리의 다른 글
1챕터 마지막 (0) | 2022.07.05 |
---|---|
인터페이스 구현 (0) | 2022.07.05 |
2. 프로젝트 계획 및 분석 (0) | 2022.07.05 |
1. 소프트웨어 구축 (0) | 2022.07.05 |
1-25. 애플리케이션 통합 테스트 (0) | 2022.06.29 |
03 소프트웨어 설계 Section 1. 소프트웨어 설계의 기본 원칙
1. 소프트웨어 설계
⑴ 소프트웨어 설계의 개념
- 요구사항 명세서를 참조하여 소프트웨어의 구체적인 설계서를 작성하는 단계
⑵ 소프트웨어 설계의 종류
⑶ 소프트웨어 설계의 원리
■ 분할과 정복(Divide & Conquer)
■ 추상화(Abstraction)
- 추상화 기법
추상화 기법
과정 추상화
데이터 추상화
제어 추상화
설명
자세한 단계를 고려하지 않고 상위 수준에서 수행 흐름만 먼저 설계
데이터 구조를 대표할 수 있는 표현으로 대체하는 것이다.
여러 명령들을 간단한 표현으로 대체하는 것이다.
■ 단계적 분해(Gradual Decomposition)
■ 모듈화(Modulization)
■ 정보은닉(Information Hiding)
2. 설계 모델링
⑴ 설계 모델링 개념
- 소프트웨어를 구성하는 모듈들을 식별하고, 이것들의 연결을 그림으로 표현한 것
⑵ 설계 모델링 유형
■ 구조 모델링
- 소프트웨어를 구성하는 컴포넌트들의 유형, 인터페이스, 내부 설계 구조 및 이들의 연결 구조를 모델링
- UML 정적 다이어그램
■ 행위 모델링
- 소프트웨어의 구성요소들의 기능들이 언제, 어떠한 순서로 기능을 수행해야 작용하는지를 모델링
- UML 동적 다이어그램
⑶ 소프트웨어 설계 절차 및 유형
■ 아키텍처 설계
■ 데이터베이스 설계
■ 서브시스템 설계
■ 컴포넌트 설계
■ 자료구조와 알고리즘 설계
■ 협약에 의한 설계
- 선행 조건, 결과 조건, 불변 조건
Section 2. 소프트웨어 아키텍처
1. 소프트웨어 아키텍처
⑴ 소프트웨어 아키텍처(SoftWare Architecture) 개념
- 소프트웨어의 골격이 되는 기본구조
⑵ 소프트웨어 아키텍처의 특징
- 간략성
- 추상화
- 가시성
- 관점 모형
- 의사소통수단
⑶ 소프트웨어 아키텍처 프레임워크 구성요소
- 아키텍처 명세서 (Architecture Description)
- 이해관계자 (Stakeholder)
- 관심사 (Concerns)
- 관점 (Viewpoint)
- 뷰(View)
⑷ 소프트웨어 아키텍처 4+1 뷰
⑸ 소프트웨어 아키텍처 품질속성
- 정확성 (Correctness)
- 신뢰성 (Reliability)
- 효율성 (Efficiency)
- 무결성 (Integrity)
- 사용 용이성 (Usability)
- 유지보수성 (Maintainability)
- 시험 용이성 (Testability)
- 유연성 (Flexibility)
- 이식성 (Potability)
- 재사용성 (Reusability)
- 상호 운용성 (Interoperability)
⑹ 소프트웨어 아키텍처 평가
관점
유형
가시적 평가
내용
Inspection, Review, Validation & Verification
가시성
비가시적 평가
SAAM, ATAM, CBAM, ARID, ADR
이른 평가
아키텍처 구축과정 중 어느 때나 평가 가능
늦은 평가
기존 시스템의 요구사항에 대한 아키텍처의 적합성을 판단할 때 사용
시점
2. 소프트웨어 아키텍처 패턴
⑵ 소프트웨어 아키텍처 패턴 종류
- 계층화 패턴(Layered pattern)
- 클라이언트-서버 패턴(Client-Server Pattern)
- 마스터-슬레이브 패턴(Master-Slave Pattern)
- 파이프-필터 패턴(Pipe-Filter Pattern)
- 브로커 패턴(Broker Pattern)
- 피어 투 피어 패턴(Peer to Peer Pattern)
- 이벤트-버스 패턴(Event-Bus Pattern)
- 모델-뷰-컨트롤러 패턴(Model-View-Controller Pattern : MVC Pattern)
- 블랙보드 패턴(Blackboard Pattern)
- 인터프리터 패턴(Interpreter Pattern)
Section 3. UML
1. UML(Unified Modeling Language)
⑴ UML 개념
- 프로그램 설계를 표현하기 위해 사용하는 표기법
⑵ UML 특징
- 가시화 언어
- 명세화 언어
- 구축 언어
- 문서화 언어
2. UML 구성요소
⑴ 사물(Things)
- 구조사물
- 행동사물
- 그룹사물
- 주해사물
⑵ 관계(Relationships)
■ 일반화 관계(Generalization)
- 한 클래스가 다른 클래스를 포함하는 상위 개념일 때의 관계
■ 연관관계(Accociation)
- 2개 이상 사물이 서로 관련된 관계
■ 의존관계(Dependency)
- 연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 표시
- 연관 관계와 차이점은 두 클래스의 관계가 한 메서드를 실행하는 동안과 같이 매우 짧은 시간만 유지
■ 실체화 관계 (Realization)
- 인터페이스를 구현받아 추상 메서드를 오버라이딩 하는 것을 의미
■ 집합 관계 - 집약관계 (Aggregation)
- 전체 객체가 사라진다 해도 부분 객체는 사라지지 않음
■ 집합관계 - 합성관계 (Composition)
- 전체 객체가 없어지면 부분 객체도 없어짐
⑶ 다이어그램(Diagram)
■ 구조 다이어그램
- 클래스 다이어그램
- 객체 다이어그램
- 컴포넌트 다이어그램
- 배치 다이어그램
- 복합체 다이어그램
- 패키지 다이어그램
■ 행위 다이어그램
- 유스케이스 다이어그램
- 시퀀스 다이어그램
- 커뮤니케이션 다이어그램
- 상태 다이어그램
- 활동 다이어그램
- 상호작용 다이어그램
- 타이밍 다이어그램
04 화면 설계
Section 1. UI 설계
1. UI (User Interface) 개념
⑴ UI 개념
- 컴퓨터, 웹 사이트, 시스템 등의 정보기기와 사용자가 서로 상호작용을 할 수 있도록 연결해주는 매개체
⑵ UX (User eXperience) 개념
- 사용자가 컴퓨터, 웹 사이트, 시스템 등 정보기기의 UI를 직/간접적으로 이용하여 경험한 모든 것
⑶ UI 유형
- CLI (Command Line Interface)
- GUI (Graphical User Interface)
- AUI (Auditory User Interface)
- NUI (Natural User Interface)
2. UI 설계
⑴ UI 요구사항 구분
① 기능적 요구사항
- 시스템이 제공해야 하는 기능에 대한 요구사항
② 비기능적 요구사항
- 사용성, 효율성, 신뢰성, 유지 보수성, 재사용성 등 품질에 관한 요구사항
⑵ UI 설계 절차
① UI 개발목표 및 범위 수립
② UI 전략 수립
③ 사용자 요구사항 분석
④ UI 상세 설계
⑤ 구현
⑥ 테스트
⑶ UI 설계 원칙
■ 직관성
- 누구나 쉽게 이해하고 사용할 수 있어야 한다.
■ 유효성
- 사용자의 목적을 정확하게 달성해야 한다.
■ 학습성
- 누구나 쉽게 배우고 익힐 수 있어야 한다.
■ 유연성
- 사용자의 요구사항을 최대한 수용하며, 오류를 최소화해야 한다.
⑷ UI 설계 도구
① 와이어프레임(Wireframe)
② 스토리보드
③ 프로토타입
3. 감성공학
⑴ 감성공학의 개념
- 인간의 심상을 구체적인 물리적 설계 요소로 번역하여 이를 실현하는 기술
- 요소화 → 형상화 → 구현 → 생산
⑵ 제품과 관련된 인간의 감성
- 감각적 감성
- 기능적 감성
- 문화적 감성
⑶ 감성공학의 접근 방법
■ 1류 접근 방법
- 인간의 감성을 표현하는 어휘를 이용하여 제품에 대한 이미지를 조사하고, 그 분석을 통해 제품 디자인 요소
연계
■ 2류 접근 방법
- 문화적 감성의 일부를 반영한 개념
■ 3류 접근 방법
- 특정 시제품을 사용하여 감각 척도를 계측하고, 정량화된 값을 환산
4. UI 설계 지침
⑴ 한국 HCI 연구회 설계 지침
■ 가시성의 원칙 (Visibility)
- 소프트웨어의 기능을 노출 시켜 최대한 조작이 쉽도록 한다.
■ 조작 결과 예측의 원칙 (Natural Mapping)
- 사용자가 소프트웨어를 조작하여 작동시킨 결과를 조작 부위만 보고도 예측 가능하게 설계 한다.
■ 일관성의 원칙 (Consistency)
- 소프트웨어의 조작방식에 일관성을 제공하여 사용자가 쉽게 기억하고 빠르게 적응할 수 있게 한다.
■ 단순성의 원칙 (Simplicity)
- 소프트웨어의 기능구조를 단순화시켜 조작에 요구되는 노력을 최소화한다.
■ 지식 배분의 원칙 (Knowledge in World & Head)
- 학습하기 쉽고 기억하기 쉽게 설계해야 한다.
■ 조작오류의 원칙 (Design for Error)
- 사용간 발생한 오류를 쉽게 발견하고 수정 또한 쉽게 이루어져야 한다.
■ 제한사항 선택사용의 원칙 (Constraints)
- 소프트웨어를 조작할 때 선택의 여지를 줄여 조작 방법이 명확하도록 유도한다.
■ 표준화의 원칙 (Standardization)
- 소프트웨어의 기능 구조와 디자인을 한 번 학습한 이후 보다 효과적으로 서비스를 사용할 수 있어야 한다.
■ 행동 유도성의 원칙 (Affordance)
- 사용자가 디자인을 보고 기능 및 조작법을 유추할 수 있도록 해야 한다.
■ 접근성의 원칙 (Accessibility)
- 사용자의 성별, 연령등 다양한 계층의 사용자가 받아드릴 수 있는 사용자인터페이스를 구축해야 한다.
Section 2. UI 구현
1. 화면 레이아웃 구성
⑴ 레이아웃(Layout)의 개념
- 특정 공간에 여러 구성 요소를 보기 좋게 효과적으로 배치하는 작업
⑵ HTML5
① HTML5 개념
- 월드와이드웹(World Wide Web)을 통해 제공되는 정보를 나타낼 목적으로 사용되는 마크업 언어
② 시맨틱 요소
- header
- nav
- section
- article
- aside
- footer
③ INPUT 요소
■ 텍스트 입력 (text, textarea)
- text : 한 줄의 텍스트 입력
- textarea : 여러 줄의 텍스트 입력
■ 비밀번호 입력 (password)
- 입력받은 문자를 별표나 작은 원으로 표시
■ 라디오 버튼(radio)
- 여러 개의 라디오 버튼 옵션 중에서 단 하나만의 값을 선택
■ 체크 박스 (checkbox)
- 여러 개의 체크박스 중에서 여러 개의 옵션 값을 선택
■ 파일 선택 (file)
- 사용자 컴퓨터의 파일을 입력
■ 선택 입력 (select)
- 여러 개의 드롭다운 리스트(drop-down-list) 중에서 한 개의 옵션을 선택
■ 버튼 (button)
- 사용자가 클릭했을 때 작업을 수행
■ 전송 (submit)
- 입력 받은 데이터를 서버로 전송
■ 필드셋 (fieldset)
- 관련된 데이터를 하나로 묶어준다.
⑶ CSS(Cascading Style Sheet)
① CSS 개념
- HTML과 함께 웹을 구성하는 기본 프로그래밍 요소
② CSS 특징
- HTML로 부터 디자인적인 요소를 분리해 정의할 수 있다.
⑷ JavaScript
① JavaScript 개념
- 모질라 재단의 프로토타입 기반의 프로그래밍 언어로, 스크립트 언어에 해당된다.
- 클라이언트 단에서 웹 페이지가 동작하는 것을 담당
② JavaScript 프레임워크
■ React
- 유저 인터페이스를 만드는 데 사용되는 오픈 소스 자바스크립트 라이브러리
- 페이스북에서 개발
- 싱글 페이지 애플리케이션(SPA)이나 모바일 애플리케이션 개발에 사용될 수 있다.
■ Vue.js
- 자바스크립트로 개발된 컴포넌트 구조 기반 프론트엔드 프레임워크
- 고성능의 싱글 페이지 애플리케이션(SPA)을 구축하는데 이용가능하다.
- Evan You에 의해 개발
■ AngularJS
- 자바스크립트 기반의 오픈 소스 프론트엔드 웹 애플리케이션 프레임워크
- 구글에서 개발
■ Ajax(Asynchronous JavaScript and XML)
- 비동기적인 웹 애플리케이션의 제작을 위한 웹 개발 기법
2. UI 관련용어
용어
웹 표준
웹 호환성
웹 접근성
반응형 웹
인포그래픽
(Infographic)
브랜드 아이덴티티(BI)
네비게이션
(Navigation)
설명
월드 와이드 웹의 측면을 서술하고 정의하는 공식 표준이나 다른 기술 규격을 말한다.
이용자의 단말기 (PC, 모바일 기기 등)의 하드웨어 및 소프트웨어 환경이 다른 경우에도
동등한 서비스를 제공할 수 있는 것을 말한다.
장애인과 비장애인 모두가 동등하게 웹 사이트에 접근하여 이용할 수 있도록 보장하는
방식을 말한다.
PC, Mobile 등 다용한 디바이스에서 화면크기에 맞춰 하나의 사이트를 보여준다.
정보(Information)와 그래픽(Graphic)의 합성어로, 복잡한 정보를 쉽고 빠르게 전달하기
위해 정보를 분석, 정리하여 차트, 그래프, 아이콘, 그래픽스, 이미지 등을 활용하여
시각화한 것을 말한다.
사용자에게 전달하고자 하는 특정 브랜드의 가치와 의미를 반영한 심적 표상을 말한다.
하이퍼링크를 따라 웹 공간의 정보를 요청하고 받아오는 웹 브라우징을 의미하며, 웹
사이트를 탐색하기 위한 도구를 뜻하기도 한다.
아코디언(Accordion)
사용자가 원하는 정보만 선택적으로 볼 수 있게 접을 수 있는 내용 패널을 말한다.
플레이스 홀더
사용자가 값을 입력하는 데 참고할 수 있도록, 입력 필드에 제공되는 간략한 텍스트
(Placeholder)
도움말을 말한다.
필터링(Filtering)
입력 폼(Input Form)
입력 필드(Input Field)
썸네일(Thumbnail)
레이블(Label)
대체 텍스트
(Alternative Text)
초점(Focus)
원하지 않는 데이터를 차단하거나, 원하는 데이터만 볼 수 있도록 해주는 기능을 말한다.
다양한 입력 필드로 구성되어, 사용자가 웹 서버로 전송할 정보를 입력 할 수 있는 웹
문서의 일부를 말한다.
사용자가 정보를 입력하거나 선택하는데 이용되는 사용자 인터페이스 요소를 말한다.
커다란 이미지를 축소하여 제공한 이미지를 말한다.
입력폼을 구성하는 다양한 입력 필드를 식별하기 위해 사용하는 명칭을 말한다.
콘텐츠를 대신하기 위해 제공되는 텍스트를 의미한다.
웹 페이지에서 사용자가 선택한 해당 요소에 있을 때, 해당 요소에 Focus가 있다고 한다.
05 서버 프로그램 구현
Section 1. 개발 환경 구축
1. 서버 환경 구축
⑴ 웹 서버 (WEB)
- 클라이언트에게 정적 파일(HTML, CSS, JS, 이미지)을 제공하는 웹서버 어플리케이션이 설치된 하드웨어
- Apache Web Server, IIS, nginx, GWS 등
⑵ 웹 어플리케이션 서버 (WAS)
- 동적인 웹 서비스를 제공하기 위한 미들웨어가 설치된 하드웨어
- Web Logic, Web Spere, Jeus, Tomcat 등
⑶ 데이터베이스 서버 (DBMS)
- 데이터의 저장과 관리를 위한 데이터베이스 소프트웨어가 설치된 하드웨어
- Oracle, MySQL, MS-SQL 등
⑷ 파일서버
- 사용자의 파일을 저장하고, 파일을 공유할 목적으로 구성된 하드웨어
⑸ Load Balancer
- 여러 대의 서버가 존재할 경우 요청을 적절히 분배해주는 역할
- 분배 방식 : Random, Least loaded, Round Robin
⑹ CDN(Content Delivery Network)
- 용량이 큰 컨텐츠 데이터(이미지, 비디오 등)를 빠른 속도로 제공하기 위해 사용자와 가까운 곳에 분산되어 있는 데이터 저장 서버
⑺ 시스템 아키텍처 고려사항
- 확장성 (Scalability)
- 성능 (Performance)
- 응답 시간 (Latency)
- 처리량 (Throughput)
- 접근성 (Availability)
- 일관성 (Consistency)
2. 개발 소프트웨어 환경
⑴ 시스템 소프트웨어
① 운영체제(OS, Operation System)
② JVM(Java Virtual Machine)
③ Web Server
④ WAS(Web Application Server)
⑤ DBMS(Database Management System)
⑵ 개발 소프트웨어
① 요구사항 관리 도구
- 고객의 요구사항을 수집, 분석, 추적을 쉽게 할 수 있도록 지원한다.
② 설계/모델링 도구
- 기능을 논리적으로 표현할 수 있는 통합 모델링 언어(UML) 지원
③ 구현도구
- 소프트웨어 언어를 통해 구현 및 개발을 지원하는 도구
④ 테스트 도구
- 개발된 모듈들에 대하여 요구 사항에 적합하게 구현되어 있는지 테스트를 지원하는 도구
⑤ 형상관리 도구
- 산출물 및 소스코드의 변경 사항을 버전별로 관리하여, 목표 시스템의 품질 향상을 지원하는 도구
- Git, CVS, SVN 등
3. IDE(Integrated Development Environment) 도구
⑴ IDE 도구의 개념
- 소프트웨어 개발에 필요한 많은 도구의 기능을 하나로 묶어 활용하는 소프트웨어
⑵ IDE 도구의 기능
- 텍스트 에디터, 컴파일, 디버거, 배포 등
⑶ IDE 도구 선정시 고려 사항
기준
설명
적정성
- 대상 업무에 적절한 도구 선정
효율성
- 프로그래밍의 효율성 고려
이식성
- 여러 OS에 개발환경 설치 가능
친밀성
- 프로그래머가 익숙한 언어 및 도구
범용성
- 다양한 개발 사례가 존재
4. 협업 도구
⑴ 협업 도구의 개념
- 여러 사용자가 각기 별개의 작업 환경에서 통합된 하나의 프로젝트를 동시에 수행할 수 있도록 도와주는
소프트웨어
⑵ 협업 도구의 기능
- 전사관리 : 전자결재, 조직도 등
- 프로젝트 관리 : 캘린더, 타임라인, 간트차트, 대시보드 등
- 자체 드라이브 공간
- 문서 공유 지원
- 커뮤니케이션
- 다국어지원
- 타 협업툴간 연동 지원
5. 형상 관리 도구
⑴ 형상 관리 도구의 개념
- 소프트웨어 생명주기 동안 발생하는 변경사항을 통제하기 위한 관리 방법
⑵ 형상 관리의 필요성
- 개발 도중 소스코드를 이전 상태로 되돌릴 필요가 있을 경우
- 각 변경점에 대한 이력 확인
- 여러 개발자의 동시 개발에 따른 충돌 해결
- 버그 및 문제점 발생시 추적이 용이
- 기타 산출물의 이력관리도 용이
⑶ 변경 관리/버전 관리/형상 관리
① 변경 관리
- 소스의 변경 상황을 관리
② 버전 관리
- 변경을 관리하기 위한 효과적인 방법
③ 형상 관리
- 변경 관리와 버전 관리가 포함되고, 프로젝트 진행상황, 빌드와 릴리즈까지 모두 관리할 수 있는 통합 시스템
⑷ 형상 관리 절차
■ 형상 식별
- 형상 관리의 시작으로 시스템을 구성하는 요소들 중 형상 관리의 대상들을 구분하고 관리 목록의 번호를
정의하여 부여한다.
■ 형상 통제
- 소프트웨어 형상 변경 요청을 검토하고 승인하여 현재의 베이스라인에 반영될 수 있도록 통제
- 형상통제가 이루어지기 위해서는 형상 통제 위원회(Configuration Control Board, CCB)의 승인을 통한
변경 통제가 이루어져야 한다.
■ 형상 감사
- 형상 항목의 변경이 계획에 따라 제대로 이뤄졌는지를 검토하고 승인
■ 형상 기록/보고
- 프로젝트 팀, 회사, 클라이언트 등에게 소프트웨어 개발 상태에 대한 보고서를 제공
6. 버전 관리 도구
⑴ 소프트웨어 버전 관리 도구 개념
- 동일한 소스 코드에 대한 여러 버전을 관리하는 것
⑵ 소프트웨어 버전 관리 도구 유형
① 공유 폴더 방식 (RCS, SCCS)
- 매일 개발 완료 파일은 약속된 위치의 공유 폴더에 복사
② 클라이언트/서버 방식 (CVS, SVN)
- 중앙에 버전 관리 시스템이 항시 동작
③ 분산 저장소 방식 (Git, Betkeeper)
- 로컬 저장소와 원격저장소 구조
⑶ 버전 관리 도구별 특징
■ CVS
- 오랜 기간 사용된 형상 관리 도구로, 다양한 운영체제를 지원
■ SVN
- CVS의 단점을 보완하기 위해 만들어졌다.
- 최초 1회에 한해 파일 원본을 저장하고, 그 이후에는 실제 파일이 아닌 원본과 차이점을 저장하는 방식
- 언제든지 원하는 시점으로 복구가 가능
■ Git
- 리누스 토발즈가 리눅스 커널의 개발을 위해 만들었다.
- 원격 서버 Git Repository에 push 하지 않은 채 여러 branch 생성이 가능하다.
■ Clear Case
- IBM에서 개발된 유료 버전의 형상 관리 툴
- 서버가 부족할 때 서버를 하나씩 늘려 확장할 수 있다.
■ BitKeeper
- SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 버전관리 도구
■ RCS(Revision Control System)
- 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일을 잠금
하는 방식으로 버전 컨트롤을 수행
⑷ 버전 관리 소프트웨어 사용 방식
⑸ 버전 관리 주요 용어
용어
설명
Repository
저장소
Checkout
Repository에서 로컬로 프로젝트를 복사
Commit
로컬의 변경된 내용을 Repository에 저장
Update
Repository에 있는 내용을 로컬에 반영
Add
로컬에서 새로운 파일이 추가되었을 때 Repository에 등록
Trunk
Root 프로젝트
Branch
Root 프로젝트에서 파생된 프로젝트
Merge
Branch에서 진행하던 작업을 Root 프로젝트와 합침
Diff
파일의 비교
7. 빌드 도구
⑴ 빌드의 개념
- 소스코드 파일들을 컴퓨터에서 실행할 수 있는 소프트웨어로 변환하는 일련의 과정
⑵ 빌드 자동화 도구 특징
- 빌드, 테스트, 배포를 자동으로 수행하는 도구
⑶ 빌드 자동화 프로세스
⑷ 빌드 자동화 도구 종류
■ Make
- 유닉스 계열 운영체제에서 주로 사용되는 프로그램 빌드 도구이다.
■ Ant
- Java 기반의 빌드 도구로 다른 빌드 도구 보다 역사가 오래 되었다.
- 개발자가 원하는 형태로 개발을 할 수 있다는 유연성에 장점이 있다.
- XML 기반의 빌드 스크립트로 개발한다.
- 스크립트의 재사용이 어렵다.
- Remote Repository를 가져올 수 없다.
■ Maven
- 프로젝트에 필요한 모든 Dependency를 리스트 형태로 Maven에게 알려 관리할 수 있도록 돕는 방식이다.
- 필요한 라이브러리를 특정 파일(pom.xml) 에 정의해 놓으면 해당 라이브러리와 관련된 라이브러리까지
네트워크를 통해 자동으로 다운받는다.
- 정해진 라이프사이클에 의하여 작업 수행하며, 전반적인 프로젝트 관리 기능까지 포함한다.
■ Jenkins
- Java 기반의 오픈소스로, 소프트웨어 개발 시 지속적 통합(continuous integration) 서비스를 제공하는 툴
- 서블릿 컨테이너에서 실행되는 서버 기반 도구
- SVN, Git 등 대부분의 형상 관리 도구와 연동이 가능
- 여러 대의 컴퓨터를 이용한 분산 빌드나 테스트가 가능
■ Gradle
- Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구로 안드로이드 앱 개발 환경에서 사용
Section 2. 개발 프레임워크
1. 프레임워크의 개념
- 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록
여러 가지 기능들을 제공해주는 반제품 형태의 소프트웨어
2. 프레임워크의 특징
■ 모듈화 (modularity)
- 프레임워크는 구현을 인터페이스 뒤에 감추는 캡슐화를 통해서 모듈화를 강화
- 설계와 구현의 변경에 따르는 영향을 최소화시킴으로써 쉽게 소프트웨어의 품질을 향상시킴
■ 재사용성 (reusability)
- 프레임워크가 제공하는 인터페이스는 여러 어플리케이션에서 반복적으로 사용할 수 있는 일반적인 컴포넌트를
정의할 수 있게 함으로써 재사용성을 높여준다.
- 소프트웨어의 품질, 성능, 신뢰성, 상호 운용성을 향상시키고, 프로그래머의 생산성을 높여준다.
■ 확장성(extensibility)
- 다형성(polymorphism)을 통해 애플리케이션의 프레임워크의 인터페이스를 확장할 수 있게 한다.
■ 제어의 역흐름(inversion of control)
- 프레임워크가 외부의 이벤트에 대해 애플리케이션이 어떠한 메소드들을 수행해야 하는지 결정
3. 라이브러리(Library)
- 컴퓨터 프로그램에서 빈번하게 사용되는 사전 컴파일된 루틴 또는 리소스(클래스, 템플릿, 설정 데이터 등)를
모아둔 것
4. API(Application Programming Interface)
- 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공한다.
Section 3. 모듈 구현
1. 단위 모듈 구현
⑴ 단위 모듈 구현의 개념
- 소프트웨어를 기능 단위로 분해하여 구현하는 기법
⑵ 효과적인 모듈화
- 결합도를 줄이고 응집도를 높여 모듈의 독립성을 높임
- FAN-OUT 최소화, FAN-IN 증가
⑶ 단위 모듈 설계의 원리
■ 단계적 분해
- 처음엔 간단히 작성하고, 점점 세밀하게 작성
■ 추상화
- 복잡한 문제를 일반화하여, 쉽게 이해할 수 있도록 한다.
■ 독립성
- 모듈은 응집도는 높이고 결합도는 낮춰 독립성을 가져야 한다.
■ 정보은닉
- 모듈 내부의 데이터를 외부에 은폐
■ 분할과 정복
- 큰 문제를 작게 나누어 하나씩 해결
⑷ 단위 모듈 작성 원칙
■ 정확성 (Correctness)
- 해당 기능이 실제 시스템 구현 시 필요한지 여부를 알 수 있도록 정확하게 작성
■ 명확성 (Clarity)
- 해당 기능에 대해 일관되게 이해되고 한 가지로 해석될 수 있도록 작성
■ 완전성 (Completeness)
- 시스템이 구현될 때 필요하고 요구되는 모든 것을 기술
■ 일관성 (Consistency)
- 공통 기능들 간에 상호 충돌이 없도록 작성
■ 추적성 (Traceability)
- 공통 기능에 대한 요구사항 출처와 관련 시스템 등의 유기적 관계에 대한 식별이 가능하도록 작성
2. 결합도
⑴ 결합도(Coupling)의 개념
- 어떤 모듈이 다른 모듈에 의존하는 정도
⑵ 결합도 유형
구분
자료 결합도 (Data Coupling)
스탬프 결합도 (Stamp Coupling)
제어 결합도 (Control Coupling)
외부 결합도 (External Coupling)
공통 결합도 (Common Coupling)
내용 결합도 (Content Coupling)
설명
모듈 간의 인터페이스로 값이 전달되는 경우
모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우
단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우
어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조하는 경우
파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우
다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
3. 응집도
⑴ 응집도(Cohesion)의 개념
- 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도
⑵ 응집도 유형
구분
기능적 응집도 (Functional Cohesion)
순차적 응집도 (Sequential Cohesion)
통신적 응집도 (Communication Cohesion)
절차적 응집도 (Procedural Cohesion)
시간적 응집도 (Temporal Cohesion)
논리적 응집도 (Logical Cohesion)
우연적 응집도 (Coincidental Cohesion)
설명
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우
모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우
모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우
연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
모듈 내부의 각 구성 요소들이 연관이 없을 경우
4. 팬인(Fan-in), 팬아웃(Fan-out)
⑴ 팬인(Fan-in), 팬아웃(Fan-out)의 개념
- 소프트웨어의 구성요소인 모듈을 계층적으로 분석하기 위해 활용
⑵ 팬인/팬아웃 계산법
5. 공통 모듈 구현
⑴ 공통 모듈 구현 순서
공통 모듈 상세 설계 확인
공통 모듈 관리 대장 확인
공통 모듈 담당자 확인
↕
상세 설계서 확인
공통 모듈 기능 확인
→
화면 설계서 등
프로그램 설계서 확인
참조 문서 확인
↕
공통 모듈 상세 문서와 매핑된 공통 모듈 구현
공통 모듈 구현
DTO/VO
구현
→
SQL문
구현
→
DAO
구현
→
Service
구현
→
Controller
필요시
구현
화면 구현
⑵ 공통 모듈 구현요소
구현 요소
DTO (Data Transfer Object)
VO (Value Object)
DAO (Data Access Object)
설명
- 프로세스 사이에서 데이터를 전송하는 객체
- Getter, Setter 메서드만 포함한다.
- 도메인에서 속성들을 묶어서 특정 값을 나타내는 객체
- DTO와 동일한 개념이나 차이점은 ReadOnly 속성 객체이다
- 실질적으로 DB에 접근하는 객체
- DataBase에 접근하기 위한 로직 & 비지니스 로직을 분리하기 위해 사용
Service
- DAO 클래스를 호출하는 객체
Controller
- 비즈니스 로직을 수행하는 객체
⑶ Annotation
- 사전적으로는 "주석"이라는 의미를 가지고 있다.
- 자바코드에 주석처럼 달아 특수한 의미를 부여한다.
- 컴파일 또는 런타임에 해석된다.
Section 4. 서버 프로그램 구현
1. 서버 프로그램 구현
⑴ 업무 프로세스
- 개인이나 조직이 한 개 이상의 자원 입력을 통해 가치 있는 산출물을 제공하는 활동
⑵ MVC 모델의 계층
① 프리젠테이션 계층(Presentation Layer)
- 사용자 인터페이스
- 사용자가 선택할 수 있는 기능 및 부가정보를 전달할 양식을 표현한다.
- JSP 와 JSTL 태그 라이브러리를 결합하는 방식(JAVA의 경우)
② 제어 계층(Control Layer)
- 프리젠테이션 계층과 비즈니스 로직 계층을 분리하기 위한 컨트롤러를 제공
- 어떤 요청이 들어왔을 때 어떤 로직이 처리해야 하는지를 결정한다.
③ 비즈니스 로직 계층(Business Logic Layer)
- 핵심 업무를 어떻게 처리하는지에 대한 방법을 구현 하는 계층
- 핵심 업무 로직의 구현과 그에 관련된 데이터의 적합성 검증, 트랜잭션 처리 등을 담당한다.
④ 퍼시스턴스 계층(Persistence Layer)
- 데이터 처리를 담당하는 계층
- 데이터의 생성/수정/삭제/선택(검색)과 같은 CRUD 연산을 수행한다.
⑤ 도메인 모델 계층(Domain Model Layer)
- 각 계층 사이에 전달되는 실질적인 비즈니스 객체
- 데이터 전송 객체(DTO) 형태로 개발자가 직접 제작해서 데이터를 넘기게 된다.
2. DBMS 접속기술
⑴ DBMS 접속기술의 개념
- 프로그램에서 DB에 접근하여 DML을 사용 가능하게 하는 기술
⑵ DBMS 접속기술 종류
① 소켓통신
- 응용프로그램과 DBMS가 주고 받는 통신
② Vender API
- DBMS 사에서 공개한 API를 이용해 DBMS와 통신
③ JDBC(Java DataBase Connectivity)
- Java 에서 DB에 접속하고 SQL문을 수행할 때 사용되는 표준 API
④ ODBC(Open DataBase Connectivity)
- 데이터베이스에 접근하기 위한 표준 규격
- 개발언어에 관계없이 사용할 수 있다.
3. ORM(Object-Relational Mapping) 프레임워크
⑴ ORM 프레임워크의 개념
- 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것
⑵ 매핑 기술 비교
■ SQL Mapper
- SQL을 명시하여 단순히 필드를 매핑 시키는 것이 목적
- SQL 의존적인 방법
- 종류 : iBatis, Mybatis, jdbc Templetes 등
■ OR Mapping (=ORM)
- 객체를 통해 간접적으로 데이터베이스를 다룬다.
- ORM을 이용하면 SQL Query 가 아닌 직관적인 코드로 데이터를 조작할 수 있다.
- 종류 : JPA(Java Persistent API),Hibernate
Section 5. 배치 프로그램 구현
1. 배치 프로그램
⑴ 배치의 개념
- 데이터를 일괄적으로 모아서 처리하는 대량의 작업을 처리
⑵ 배치 프로그램의 필수 요소
- 대용량 데이터
- 자동화
- 견고함
- 안정성
- 성능
⑶ 스케줄 관리 종류
① 크론탭 (crontab)
- UNIX, LINUX 계열에서 사용
■ 크론탭 형식
분
시
일 월
요일
명령어
Ÿ 항목의 범위
필드
의미
범위
첫 번째
분
0 ~ 59
두 번째
시
0 ~ 23
세 번째
일
1 ~ 31
네 번째
월
1 ~ 12
다섯 번째
요일
여섯 번째
명령어
0 ~ 6 (0:일요일, 1:월요일)
실행할 명령
Ÿ 허용 특수문자
특수문자
설명
*
모든 값 (매시, 매일, 매주)
?
특정 값이 아닌 어떤 값이든 상관 없음
-
범위를 지정할 때 (12-14 : 12시부터 14시)
,
여러 값을 지정할 때 (12, 14 : 12시, 14시)
/
증분값, 즉 초기값과 증가치 설정 (*/20 : 매 20분 마다)
Ÿ 설정 예
형식
*
30
*
*
4
*
*
*/30
30
*
0
명령
0
*
*
*
1
*
*
10-30 4 *
0,10,20 *
설명
*
명령
* 명령
*
명령
매분 실행
매주 일요일 4시 30분 실행
매일 오전 4시 10분부터 30분까지 매분 실행
매일 매시간 0분, 10분, 20분 실행
*
*
명령
매 30분 마다 실행
1,6
*
명령
1월과 6월, 1일, 0시 30분에 실행
② Spring Batch
Ÿ 백엔드의 배치처리 기능을 구현하는데 사용하는 프레임워크
③ Quartz Job Scheduler
Ÿ 표준 자바 프로그램으로 만들어진 작업을 지정된 일정에 따라 실행시키는데 사용하는 Java 패키지
'information processing' 카테고리의 다른 글
1챕터 마지막 (0) | 2022.07.05 |
---|---|
인터페이스 구현 (0) | 2022.07.05 |
2. 프로젝트 계획 및 분석 (0) | 2022.07.05 |
1. 소프트웨어 구축 (0) | 2022.07.05 |
1-25. 애플리케이션 통합 테스트 (0) | 2022.06.29 |