3. 엔터티 (Entity)


1) 엔터티

- 업무에서 관리해야 하는 데이터 집합. 저장되고 관리되어야 하는 데이터

- 현실세계에서의 객체. 물리적 설계 단계에서는 하나의 릴레이션

- 명사!


2) 엔터티 도출

- 고객의 비즈니스 프로세스에서 관리되어야 하는 정보를 추출하여 도출


3) 엔터티의 특징

 식별자

유일한 식별자가 있어야 함 

 인스턴스 집합

2개 이상의 인스턴스가 있어야 함 

 속성

속성을 반드시 가짐 

관계 

다른 엔터티와 최소 1개 이상 관계 있어야 함 

업무 

업무에서 관리되어야 하는 집합 ,업무프로세스(Business Process)가 그 엔터티를 반드시 이용



4) 엔터티의 종류

- 유형과 무형에 따른 엔터티 종류

 유형 엔터티

 - 물리적 형태 有 / 안정적이며 지속적으로 활용됨

 - 업무에서 도출되며 지속적으로 사용되는 엔터티

 - 고객, 사원 등..

 개념 엔터티

 - 물리적 형태 無

 - 개념적으로 사용되는 엔터티 / 관리해야 할 개념적 정보로 구분이 되는 엔터티

 - 거래소 종목, 코스닥 종목, 상품 등..

 사건 엔터티

 - 비즈니스 프로세스를 실행하면서 생성되는 엔터티

 - 물리적 형태 無 / 업무를 수행함에 따라 발생되는 엔터티. 비교적 발생량이 많으며 각종 통계자료에 이용

 - 주문, 체결, 수수료 청구 등..



- 발생 시점에 따른 엔터티 종류

 기본 엔터티 (Basic Entity)

 - 키 엔터티

 - 그 업무에 원래 존재하는 정보

 - 다른 엔터티로부터 영향을 받지 않고 독립적으로 생성되는 엔터티 / 타 엔터티의 부모 역할

 - 고객, 상품, 부서 등

 중심 엔터티 (Main Entity)

 - 기본 엔터티와 행위 엔터티 간 중간에 위치

 - 기본엔터티로부터 발생되고 있는 행위 엔터티를 생성하는 엔터티

 - 데이터의 양이 많이 발생

 - 계좌, 주문, 취소, 체결 등

 행위 엔터티 (Active Entity)

 - 두 개 이상의 부모엔터티로부터 발생

 - 자주 내용이 바뀌거나 데이터량이 증가 / 상세 설계단계나 프로세스와 상관모델링을 진행하면서 도출

 - 주문 이력, 체결 이력 등..



4. 엔터티 식별자 (Entity Identifier)

- 식별자 : 유일성을 만족하는 속성


1) 주식별자(기본키 Primary key)

- 유일성과 최소성을 만족시키는 키

- 엔터티를 대표할 수 있는 키

- 엔터티의 인스턴스를 유일하게 식별

- 자주 변경되지 않는 속성


* 주식별자의 특징

 유일성

주식별자에 의해 엔터티내에 모든 인스턴스들을 유일하게 구부누함 

 최소성

주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함 

 불변성

주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 

 존재성

주식별자가 지정되면 반드시  



- 키의 종류

 기본키 (Primary key)

 후보키 중에서 엔터티를 대표할 수 있는 키 

 후보키 (Candidate Key)

 유일성과 최소성을 만족하는 키 

 슈퍼키 (Super key)

 유일성은 만족하지만 최소성(not null)은 만족하지 않는 키 

 대체키 (Alternate Key)

 여러 후보키 중에서 기본키를 선정하고 남은  



2) 식별자의 종류

(1) 식별자의 대표성

주식별자 

 - 유일성과 최소성을 만족하면서 엔터티를 대표하는 식별자

 - 다른 엔터티와 참조 관계로 연결 될 수 있음

보조 식별자

 - 유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자 


(2) 생성 여부

내부 식별자 

 - 엔터티 내부에서 스스로 생성되는 식별자 (부서코드, 주문번호, 종목코드 등) 

외부 식별자

 - 다른 엔터티와의 관계로 인해 만들어지는 식별자 (계좌 엔터티에 회원ID 등) 


(3) 속성의 수

 단일 식별자

 - 하나의 속성으로 구성 됨 

 복합 실별자

 - 두 개 이상의 속성으로 구성됨


(4) 대체 여부

 본질 식별자

 - 비즈니스 프로세스에서 만들어지는 식별자 

 인조 식별자

 - 인위적으로 만들어지는 식별자 (원조식별자가 복잡한 구성을 가지고 있어서 인위적으로 만드는 것)


1. 데이터 모델링의 이해


1) 데이터 모델링

- 현실세계를 데이터베이스로 표현하기 위해 추상화 -> 고객의 업무 프로세스를 이해 -> 데이터 모델링 표기법을 사용    하여 모델링

- 고객의 업무 프로세스 추상화 -> 소프트웨어를 분석 설계하면서 점점 더 상세해짐

- 고객의 비즈니스 프로세스를 이해, 비즈니스 프로세스 규칙(Business Rule)을 정의


- 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법

- 현실세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정

- 데이터베이스를 구축하기 위한 분석/설계의 과정


2) 데이터 모델링의 특징

추상화 (abstraction)공통적인 특징을 찾고 현실세계를 간략하게 표현
단순화 (simplification)복잡한 문제를 피하고 누구나 쉽게 이해할 수 있도록 표현
명확성 (Clarity)의미적 해석이 모호하지 않고 명확히 해석되며, 한 가지 의미를 가져야 함


3) 데이터 모델링 단계

- 개념적 모델링 -> 논리적 모델링 -> 물리적 모델링

 개념적 모델링

- 고객의 비즈니스 프로세스를 분석하고 업무 전체에 대해서 데이터 모델링 수행

- 업무 측면에 대한 모델링 (기술적 용어 사용 자제)

- 전사적 관점에서 기업의 데이터 모델링

- 추상화 수준이 가장 높은 수준의 모델

- 엔터티(Entity)와 속성(Attribute)도출, 개념적 ERD 작성

 논리적 모델링

- 특정 데이터베이스 모델에 종속

- 식별자 정의하고 관계, 속성 등을 모두 표현함

- 정규화를 통해 데이터 모델의 독립성을 높여 재사용성을 높임

- 개념적 모델링을 논리적 모델링으로 변환하는 작업

 물리적 모델링

- 데이터 베이스 실제 구축 (구축할 데이터베이스 관리 시스템에 테이블, 인덱스 등을 생성)

- 성능, 보안, 가용성 등을 고려하여 데이터베이스 구축


- 데이터 모델링 관점

관점

 코멘트

 데이터

DATA, WHAT

 - 업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지에 대해서 모델링

 - 비즈니스 프로세스에서 사용되는 데이터

 - 구조 분석, 정적 분석

 프로세스

PROCESS, HOW

 - 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야 하는지를 모델링

 - 비즈니스 프로세스에서 수행하는 작업

 - 시나리오 분석, 도메인 분석. 동적 분석

 데이터와 프로세스 상관관점

DATA VS PROCESS

 - 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링

 - 프로세스와 데이터 간의 관계

 - CRUD ( Create, Read, Update, Delete) 분석


4) 데이터 모델링의 유의점

(1) 중복(Duplication)

(2) 비유연성(Inflexibility)

(3) 비일관성(Inconsistency)


5) 데이터 모델링 고려사항

(1) 데이터 모델의 독립성

- 고객의 업무 변화에 능동적으로 대응가능해짐

- 독립성 확보 : 중복된 데이터 제거 => 정규화!


(2) 고객의 요구사항 표현

- 간결하고 명확하게 요구사항 표현


(3) 데이터 품질 확보

- 데이터 표준을 확보 -> 데이터 품질 향상 가능

- 데이터 표준을 정의하고 표준 준수율을 관리하여 데이터베이스 구축


6) 데이터 모델링을 위한 ERD

- 엔터티와 엔터티 간의 관계를 정의하는 모델링 방법


(1) ERD 작성 

 ① 엔터티를 도출하고 그림 (업무에서 관리해야 하는 집합을 도출)

 ② 엔터티를 배치 (중요한 엔터티를 왼쪽 상단에 배치)

 ③ 엔터티 간의 관계를 설정

 ④ 관계명 서술 (엔터티 간의 어떤 행위나 존재가 있는지 표현)

 ⑤ 관계 참여도를 표현 (관계 참여도 : 한 개의 엔터티와 다른 엔터티 간의 참여하는 관계 수)

 ⑥ 관계의 필수 여부 표현 (필수 : 반드시 존재해야 함)


(2) ERD 작성 시 고려사항

- 중요한 엔터티는 가급적 왼쪽 상단에 배치

- 이해하기 쉽고 복잡하지 않은 ERD 작성


2. 3층 스키마(3-Level Schema)

1) 3층 스키마

- 사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술, 이들 간의 관계를 정의한 ANSI 표준

- DB의 독립성을 확보하기 위한 방법

- 장점 : 데이터 복잡도 증가, 데이터 중복 제거, 사용자 요구사항 변경에 따른 대응력 향상, 관리 및 유지보수 비용 절감

- VIew : 3단계 계층으로 분리한 각 계층을 부르는 다른 이름


- 3층 스키마의 독립성

 논리적 독립성

 저장구조가 변경되어도 응용 프로그램 및 개념 스키마에 영향이 없음

 물리적 독립성

 데이터베이스 논리적 구조가 변경되어도 응용 프로그램에 변화 없음


2) 3층 스키마 구조

 외부 스키마

(External Schema)

 - 사용자 관점. 업무상 관련이 있는 데이터 접근

 - 관련 DB의 VIEW 표시

 - 응용 프로그램이 접근하는 데이터베이스 정의

 개념 스키마

(Conceptual Schema)

 - 설계자 관점. 사용자 전체 집단의 데이터베이스 구조

 - 전체 DB 내의 규칙, 구조 표현

 - 통합 데이터베이스 구조

내부 스키마

(Internal Schema) 

 - 개발자 관점. DB의 물리적 저장 구조

 - 데이터 저장 구조, 레코드 구조, 필드 정의. 인덱스 등 의미


3. 좋은 데이터 모델의 요소

완전성(Completeness)

 업무에서 필요로 하는 모든 데이터가 데이터 모델에 정의되어 있어야 함

 중복배제(Non-Redundancy)

 하나의 데이터베이스 내에 동일한 사실은 반드시 한 번만 기록하여야 함 

 업무규칙(Business Rules)

 데이터 모델링 과정에서 도출되고 규명되는 수많은 업무규칙(Business Rules)을 데이터 모델에 표현하고 이를 해당 데이터 모델을 활용하는 모든 사용자가 공유할 수 있도록 제공하는 것

 데이터 재사용(Data Reusability) 데이터의 재사용성을 향상시키고자 한다면 데이터의 통합성과 독립성에 대해서 충분히 고려
 의사소통(Communication) 많은 업무 규칙들을 해당 정보시스템을 운용, 관리하는 많은 관련자들이 설계자가 정의한 업무 규칙들을 동일한 의미로 받아들이고 정보시스템을 활용할 수 있게 하는 역할
 통합성(Integration) 가장 바람직한 데이터 구조의 형태는 동일한 데이터는 조직의 전체에서 한번 만 정의되고 이를 여러 다른 영역에서 참조, 활용하는 것


mybatis.jar
mybatis-spring.jar
commons-dbcp.jar
spring-jdbc.jar

 

파일 추가

 

1. mybatis.jar 파일 추가

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.3</version>
</dependency>

 

2. mybatis-spring.jar 파일 추가

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.3</version>
</dependency>

004. 아키텍처 스타일

- 아키텍쳐 스타일 : 신뢰 있는 기관에서 검증된 보편적인 설계 방법의 양식들

- 아키텍쳐 모델 : 아키텍처 스타일에 있는 여러 설계 방식들. = 애플리케이션 개발 모델

 

1) IEEE 1471

- ANSI/IEEE1471- 2000의약자

아키텍쳐가 표현해야 하는 요소와 내용들, 이들 간의 관계를 규정하는 국제 표준

- 특징

표준화

아키텍쳐 관련 용어와 개념들을 통일함

중립성

모델링 언어와 방법론 제시하지 않고 독립적인 메타모델 제공함

유연성

표현을 위한 요소들과 관계의 일반화. 규모에 상관 없이 시스템 구축에 적용 가능

의사소통

이해당사자 간의 의사소통 지원, 다양한 관점에서 표현함

- 구성요소

Architectual Descriltion : 시스템 구축 시 아키텍처가 기록되는 방법

stakeholder : 소프트웨어 시스템 개발에 관련된 모든 이해 당사자

concern : Stakeholder들의 의견과 목표. 시스템의 성능 유지보수보안 분배 등

view : 관점. 전체 시스템을 표현하거나 묘사하는 방법

viewpoint : view 구성하기 위한 규칙을 정의하는 패턴. 하나 이상의 viewpointad가 사용

 

2) 저장소 구조

- 중앙자료구조와 독립된 컴포넌트로 구성된 아키텍처

큰 데이터 이동 및 공유에 적합. 컴포넌트 간 통신은 이뤄지지 않음

장점

단점

대량의 데이터 저장에 효과적

컴포넌트의 추가 삭제가 편리

중앙 집중화를 통해 데이터 관리가 용이하고 보안적 측면이 뛰어남

저장소에 오류 발생시 시스템 전체에 문제 발생

데이터 분산이 어려움

3) MVC(model/ View/ Controrl Architectue) 구조

- 상호작용 어플리케이션을 모델, , 컨트롤러의 세개의 컴포넌트로 구분하는 아키텍쳐

유저 인터페이스와 비즈니스 로직들을 서로 분리하여 개발하는 방법

- 구성요소

모델

- 어플리케이션의 핵심 기능 포함

- 상태 변화 시 컨트롤러와 뷰에 전달함

- 정보 표시 관리

- 결과물 생성을 위해 모델로부터 정보를 수집함

컨트롤러

- 사용자로부터 입력 받아 모델과 뷰에 명령 전달

- 모델에 명령을 전달해 상태를 변경하고, 뷰에 명령을 보내 표시 방법을 변경

장점

단점

- 동일한 모델에 대해 다양한 뷰 제공

- 효율적인 모듈화 가능

모델과 뷰의 구분 - > 사용자 인터페이스에 대한 요구 사항을 적용시키는 데 용이

- 간단한 애플리케이션에 적용하기에는 복잡

모델이 자주 변경되는 경우 업데이트 요청이 많아 뷰의 갱신이 따라가지 못함

 

4) 클라이언트/ 서버 구조

- 클라이언트와 서버로 나뉘는 아키텍쳐

하나의 서버 : 다수의 클라이언트 - > 일대다 관계

서버는 하나의 중앙 서버 또는 분산된 여러 서버 존재 가능

- 구성

클라이언트 : 사용자로부터 입력을 받아 서버에 요청을 전달

서버 : 수신된 요청을 수행하고, 데이터의 일관성을 유지

- 특징

새로운 서버의 추가 및 업그레이드가 용이

데이터가 서버에 집중 - > 데이터 관리가 용이, 보안적 측면 뛰어남

- 서버에 네트워크 트래픽과 데이터가 집중 - > 처리비용 급증 가능성 있음

 

5) 계층 구조

- 계층적으로 조직화가 가능한 애플리케이션에 적합한 아키텍쳐

- 각 계층이 특정 측면만을 전문적으로 다루기 때문에 응집력 있는 설계가 가능.

설계를 더욱 쉽게 이해할 수 있게 함 (OSI 7계층)

- 상위계층은 하위계층의 서비스 제공자 / 하위계층은 상위계층의 클라이언트

- 복잡한 문제를 점진적이고 순차적으로 분할하여 구현

인접 계층 사이에서만 요청과 응답 이루어짐. 변경 사항을 적용할 때에도 두 개의 인접 계층에만 영향을 미쳐 원활한 변경 가능

- 특정계층만을 교체해 시스템을 개선하는 것이 가능하나, 동작이 변경 될 경우 단계별 재작업이 필요

- 구축 시 레이어의 적절한 개수나 규모를 결정하는 것에 어려움

 

6) 파이프 필터 구조

- 데이터의 흐름을 점진적으로 처리하는 시스템을 위한 아키텍처

프로세싱을 위한 시스템이 각 필터에 캡슐화

데이터는 인접 필터 사이의 파이프를 통해 전달

- 각 필터들은 상호 독립적. 자신 앞의 필터나 뒤에 있는 필터에 대한 정보를 알 수 없음

- 모든 데이터의 처리순서 : 파이프 구조와 각각의 필터를 통해 조정가능한 이벤트에 의해 통제됨

장점

단점

몇 개의 필터들을 간단히 조합하여 입 출력 행위 이해 가능

새로운 필터를 기존의 구조에 추가하거나 통합하는 것이 가능

각 필터의 독립적인 구조로 인해 재사용성 높음

각 필터들의 독립적 수행이 가능해 동시 수행으로 효율 증진

응답성이나 데드락과 같은 특수한 분석들 지원

상태 정보를 공유하는 데 유연하지 못함

각 필터 간 공통된 특성이 적어 각 필터가 전송받은 데이터를 다시 파싱해야 하는 경우가 발생할 수도 있음

 

 

 

003. 객체지향 기법의 생명 주기

 

1) 객체지향 기법의 생명 주기

- 개발 전 과정에 걸쳐 동일한 방법론과 표현 기법이 적용됨

- 분석, 설계, 구현 단계 사이의 전환이 쉬움 - > 각 과정이 명확하게 순차적으로 이루어지지는 않음

- 계획 및 분석 - > 설계 - > 구현 - > 테스트 및 검증

 

2) 객체지향 분석 (OOA)

- 사용자의 요구사항 분석하여 요구된 문제와 관련된 모든 클래스, 이와 관련된 속성과 연산, 그 관계 등을 정의하여 모   델링

- 비즈니스(업무)를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어 분석

- 문제를 모형화

- 주요 목적 : 객체- 클래스로부터 인스턴스화하는 것, 클래스를 식별하는 것

- 럼바우, 부치, 제이콥슨, 코드와 유르던, 윕스- 브록

 

3) 객체지향 설계 (OOD)

- OOA로 생성한 여러 가지 분석 모델을 설계 모델로 변환하는 작업.

  시스템 설계와 객체설계 수행

- 사용자 중심, 대화식 프로그램 개발에 적합

- 설계 중요 이슈 : 시스템 구성하는 객체와 속성, 연산을 인식하는 것

- 추상화, 정보 은닉, 기능 독립성, 모듈화, 상속성을 바탕으로 한 설계 개념 모듈화!!

- 문제정의 - > 요구 명세화 - > 객체 연산자 정의 - > 객체 인터페이스 결정 - > 객체 구현

 

4) 객체지향 구현

- OOD에서 생성된 설계 모뎅과 명세서를 근거로 코딩

- 순차적 || 동시적 구현 가등

- 객체지향 프로그래밍 OOP

  모듈 단위(객체)를 중심으로 개발

  객체를 단위로 현실 세계에 가까운 방식으로 프로그래밍

  유지보수가 쉽고 재사용 가능한 프로그램 개발 가능

  선 개발된 프로그램 이용해 확장된 프로그램 개발 가능

객체 기반 언어

Ada, Actor와 같이 객체의 개념만을 지원하는 언어

클래스 기반 언어

clu와 같이 객체와 클래스의 개념 지원하는 언어

객체 지향성 언어

객체, 클래스, 상속의 개념 모두 지원, simula smaltalk c++ objective c java

 

5) 객체지향 테스트

- 클래스 테스트 : 구조적 기법에서의 단위 테스트와 같은 개념

가작 작은 단위, 즉 캡슐화된 클래스나 객체를 검사

- 통합 테스트 : 객체를 몇 개 결합하여 하나의 시스템으로 완성시키는 과정에서의 검사

스레드 기반 테스트 & 사용 기반 테스트

- 스레드 기반(Thread- Based) 테스트

시스템에 대한 하나의 입력이나 이벤트에 응답하는 데 요구되는 클래스를 통합하는 것

각각의 스레드가 통합되고 개별적으로 테스트 됨

- 사용 기반(Use_Based) 테스트

독립 클래스를 테스트한 후 독립 클래스를 사용하는 다음 계층의 종속 클래스를 테스트

- 확인 테스트

사용자 요구사항에 대한 만족 여부 검사

- 시스템 테스트

모든 요소들이 적합하게 통합되고 올바른 기능을 수행하는지 검사

002. 객체지향 기법의 기본 원칙 / 캡슐화, 정보 은닉, 추상성, 상속성, 다형성

 

1) 캡슐화

- 데이터와 데이터를 처리하는 함수를 하나로 묶는 것

- 캡슐화 된 객체의 세부 내용이 외부에 은폐(정보 은닉)되어, 변경 발생 시 파급효과 적음

- 재사용 용이

- 인터페이스가 단순해지고 객체 간 결합도 낮아짐

 

2) 정보 은닉

- 다른 객체에게 자신의 정보를 숨기고 자신만의 연산을 통해 접근을 허용하는 것

- 각 객체의 수정이 다른 객체에게 주는 영향을 최소화하는 기술

- 외부 객체가 직접 접근하여 사용하거나 변경하지 못해, 유지보수와 소프트웨어 확장 시 오류 최소화

 

3) 추상화

- 불필요한 부분을 생략, 객체 속성 중 가장 중요한 것에 중점 두어 개략하는 것. "모델화"

- 완전한 시스템 구축 전 그 시스템과 유사한 모델을 만들어 테스트 가능

- 최소의 비용으로 실제상황에 대처 가능. 시스템 구조를 가시적으로 볼 수 있음

 

4) 상속성

- 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것

- 하위 클래스는 속성과 연산의 재정의 없이 상위클래스의 속성과 연산을 그대로 사용 가능

+ 새로운 속성과 연산 첨가하여 사용 가능

- 상위클래스 속성과 연산을 하위클래스가 공유할 수 있기 때문에 소프트웨어 재사용 증대

- 다중 상속성 : 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산 상속받는 것

 

5) 다형성

메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력

같은 타입이지만 실행결과가 다양한 객체를 대입할 수 있는 성질

- 객체를 부품화 시킬 수 있음

- 객체들은 동일한 메소드명을 사용하며 같은 의미의 응답을 함

하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들은 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는 것

+ Recent posts