정규화(Normalization)
이상현상을 해결하기 위해 애트리뷰트 간의 종속관계를 분석하여 여러 개의 릴레이션으로 분해하는 과정.
중복성을 최소화, 가역적
이상현상(Anomaly)
릴레이션 조작 시 데이터들이 불필요하게 중보되어 예기치 않게 발생하는 곤란한 현상.
삽입이상(Insertion Anomaly)
원하지 않는 정보를 강제 삽입해야 하는 경우와 불필요한 데이터가 함께 삽입되는 경우
삭제이상(Deletion Anomaly)
튜플을 삭제함으로써 유지되어야 하는 정보까지도 연쇄삭제되는 정보의 손실
갱신이상(Update Anomaly)
중복된 튜플 중에서 일부의 속성만 갱신시킴으로써 정보의 모순성이 발생.
함수적 종속(FD : Function Dependency)
X의 값이 Y의 값을 함수적으로 결정한다면 Y가 X에 함수적으로 종속된 것. X -> Y
제 1정규형(1NF)
릴레이션에 속한 모든 도메인이 원자값
제 2정규형(2NF)
제 1정규형을 만족하고, 기본키가 아닌 속성은 모두 기본키의 완전 함수 종속
제 3정규형(3NF)
제 2정규형을 만족하고, 키본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 아닐 때
제 보이스/코드 정규형(BCNF)
릴레이션의 모든 결정자가 후보키.
반정규화
정규화되어 있는 릴레이션을 정규화 이전 상태로 만드는 것
절차 : 반정규화 대상 조사 -> 다른 방법 유도 검토 -> 반정규화 적용
SQL(Structured Query Language, 구조적질의어) : IBM에서 개발
특징
관계대수와 관계해석을 기초로 한 질의 언어.
대화식 언어뿐 아니라 응용프로그램에 삽입되어 사용.
비절차적 언어
종류
데이터정의어(DDL, Data Definition Language) Create, Drop, Alter
데이터조작어(DML, Data Manipulation Language) Select, Insert,
Update, Delete
데이터제어어(DCL, Data Control Language) Grant, Revoke
트랜잭션제어어(TCL, Transaction Control Language) Commit, Rollback
PL/SQL : 서버에서 절차적인 처리를 위해 표준 SQL을 확장한 절차적 언어.
저장프로시저(Stored Procedure)
특정 작업을 수행 가능한 이름이 있는 PL/SQL블록으로, 매개변수를 받을 수 있고
반복적으로 사용할 수 있는 객체이다.
보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL 블록을 DB에
저장하기 위해 생성한다.
트리거(Trigger)
Insert, Update, Delete문이 수행될 때 묵시적으로 수행되는 프로시저로
테이블과는 별도로 데이터베이스에 저장.
옵티마이저(Optimizer)
가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의
핵심엔진.
SQL소스코드 인스펙션
순서 : Planning - Overview - Preparation - Meeting
(계획) (사전교육) (사전검토) (회의)
- Re-Work,Re-Inspection - Following
(수정) (후속조치)
통합구현
사용자들의 요구사항에 맞게 중계시스템과 송/수신 시스템 간의
관계를 적절히 구현하는 것.
사용자의 요구사항을 해결하고 새로운 서비스 창출을 위해 단위
기능을 하는 모듈간의 연계와 통합이다.
송신시스템
운영데이터베이스에서 연계데이터를 식별 및 추출하여 인터페이스
테이블(파일)로 생성하여 송신하는 시스템.
송신모듈은 전송하고자 하는 데이터를 생성하여 필요에 따라 변환
후 송신한다. 송신모듈, 모니터링
수신시스템
수신한 테이블을 수신 시스템의 운영 데이터베이스나 환경에 맞게
변환하여 처리에 활용할 수 있도록 하는 시스템.
수신모듈, 모니터링.
중계시스템
송신 시스템과 수신시스템을 연계해 주는 서버나 시스템. 변환, 매핑.
연계데이터
송/수신되는 데이터로 의미를 갖는 속성, 길이, 타입 등을 포함.
네트워크
송신시스템-수신시스템, 송신시스템-중계시스템, 중계시스템-수신시스템을
연결해주는 통신망.
연계 요구사항 분석
통합구현을 위해 연계 시스템 아키텍처를 설계하고 연계데이터를 정의하기 위해서
사용자 요구사항 분석은 중요한 작업.
도구 및 기법 : 사용자인터뷰, 체크리스트, 설문조사, 델파이기법, 연계솔루션
비교분석.
단위 모듈 구현
1.공통모듈
각각의 서브시스템에서 공통으로 사용되는 모듈들을 하나로 묶어 놓은
소프트웨어 라이브러리.(재사용 가능)
2.단위모듈
여러 가지 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현한 것
3.모듈화
하나의 큰 작업을 각 기능에 따라 실제로 개발할 수 있는 작은 단위로
나누는 것.(결합도, 응집도)
연계매커니즘
데이터를 생성하여 전송하는 송신 시스템과 수신하여 운영DB에 반영하는 수신시스템으로 구성.
직접연계방식
중간 매개체없음. 연계 및 구현이 단순하고, 개발비용과 기간이 적게 소요.
연계 처리 성능이 좋고, 결합도가 높으며 시스템 변경에 민감.
보안을 위한 암/복호화 처리와 비즈니스 로직 적용 등이 불가능.
연계기술
DB Link
수신시스템DB에 송신시스템에서 접근 가능한 DB Link객체를 생성후,
송신시스템에서 DB Link명으로 직접 참조하여 연계
DB Connection Pool(WAS)
수신시스템 WAS에서 송신시스템 DB로 연결되는 Connection Pool을 생성.
JDBC
수신시스템의 배치 또는 온라인프로그램에서 JDBC드라이버를 이용하여
송신시스템의 DB와 연결.
화면링크
웹 애플리케이션 화면에서 Hyper Link를 이용.
API/Open API
송신 시스템의 DB와 연결하여 데이터를 제공하는 인터페이스 프로그램.
간접연계방식
연계 솔루션과 같이 중간 매개체를 이용하여 연계하는 방식.
서로 상이한 네트워크, 프로토콜 등 다양한 환경을 연계 및 통합가능.
시스템 변경시에도 장애나 오류 없이 서비스 가능. 암/복호화, 비즈니스 로직 적용 용이.
성능이 저하될 수 있으며, 매커니즘이 복잡
연계기술
연계솔루션(EAI)
Web Service(ESB)
소켓(Socket)
소켓을 생성하여 포트를 할당하고, 클라이언트의 요청을 연결하여 통신
연계매커니즘의 구성.
연계데이터 생성 및 추출 ->
코드 매핑 및 데이터 변환 ->
인터페이스 테이블 또는 파일 생성 ->
연계데이터를 데이터베이스의 테이블 또는 파일형식으로 생성
로그기록 ->
연계서버 또는 송신어댑터 ->
전송 ->
연계서버 또는 수신어댑터 ->
운영DB에 연계 데이터 반영
ESB방식
중앙집중식을 지향하는 아키텍처이며, 인터페이스를 제공하는 솔루션.
애플리케이션보다는 서비스 중심의 통합을 지향하는 아키텍처
Web Service
네트워크에 분산되어 있는 정보를 서비스 형태로 개방하여 표준화된 방식으로
공유하는 기술.
서비스 지향 아키텍처(SOA)개념을 실현하는 기술
SOAP : HTTP, HTTPS, SMTP 등을 사용하여 XML기반의 메시지를 네트워크상에서
교환하는 프로토콜.
WSDL : 웹서비스에 대한 상세 정보를 기술한 파일로 XML형식으로 구현
UDDI : 웹 서비스에 대한 정보인 WSDL의 등록과 검색을 위한 저장소로 공개적으로
접근, 검색이 가능한 레지스트리.
IDE(통합 개발 환경, Integrated Development Environment)
공통된 개발자 툴을 하나의 그래픽 사용자 인터페이스로 결합하는 애플리케이션을 구축하기
위한 소프트웨어.
소프트웨어 형상관리(SCM, Software Configuration Management)
소프트웨어에 대한 변경을 철저히 관리하기 위해 개발된 일련의 활동.(전체 소프트웨어
프로세스에 적용되는 보호활동)
형상관리 항목(SCI, Software Configuration Item) : 요구 분석서, 설계서, 프로그램,
사용자 지침서
베이스라인(BaseLine)
정식으로 검토되고 합의된 명세서나 제품으로 앞으로의 개발을 위한 바탕 역활
형상식별(Identification) ->
소프트웨어 형상의 모든 항목에 대해 의미있고 항구적인 명명을 보증
형상통제(Control) ->
식별된 SCI의 변경 요구를 검토하고 승인하여 현재의 베이스라인에 적절히 반영될 수
있도록 통제
형상감사(Auditing) ->
변경이 적절하게 시행되었는지 객관적인 검증과 확인 과정을 거쳐 새로운 형상의 무결성을
확보
형상보고(Status Accounting)
식,통,감 기능의 수행 결과를 기록하고 데이터베이스에 의해 관리를 하며 이에 대한
보고서를 작성하는 활동.
형상관리도구
구성요소
저장소(Repository)
체크인(Check-in) : 저장소에 해당 파일을 반영
체크아웃(Check-out) : 프로그램을 수행하기 위해 저장소에서 소스 및 버전 관리
파일들을 받아 온다.
커밋(Commit) : 저장소에 업로드 후 최종적으로 업데이트 되었을 때 형상관리 서버에서
반영하도록 하는 기능.
동기화(Update)
체크아웃을 하더라도 다른 사람이 커밋을 하면 로컬 소스 코드가 달라지는데
이때 update로 저장소에 있는 최신 버전의 소스를 가져옴.
종류
CVS
개발 과정에서 사용하는 파일들의 변경 내역을 관리
하나의 파일에 대한 동시 작업 가능
다양한 운영체제 지원
SVN
Subversion
CVS의 단점을 보완한 방식
GIT
분산형 버전 관리 시스템
개발자가 중앙 서버에 접속하지 않아도 코딩 가능
어떤 코드를 누가 수정했는지 기록 및 추적이 가능.
소프트웨어 역공학
추상추출 활동으로, 문서화가 안된 구프로그램을 평가하여 소스코드로부터 수행 처리의 명세,
사용자인터페이스,
프로그램 자료구조와 데이터베이스를 추출
역공학 프로세스
처리 역공학(Process) ->
절차적 추상, 처리설명서 작성.
데이터 역공학(Data) ->
데이터 구조와 데이터베이스 스키마 역공학
사용자 인터페이스 역공학(User Interface)
인터페이스 구조와 행위모델 추출.
디자인패턴
UML이 전체 설계도면을 설계한다면 디자인패턴은 설계방법을 제시.
디자인 문제에 대한 기존의 시스템에 적용되어 검증된 해법의 재사용성을 높여 쉽게 적용할 수
있도록 하는 방법론
재사용성과 모듈성을 극대화.
생성패턴(객체 인스턴스 생성)
빌더(Builder) : 부분 생성을 통한 전체 객체 생성
프로토타입(Prototype) : 프로토타입을 먼저 생성하고, 인스턴스를 복제하여 사용
싱글턴(Singleton) : 특정 클래스의 인스턴스가 오직 하나임을 보장하고, 이 인스턴스에
대한 접근방법을 제공
팩토리메소드(Factory Method) : 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고,
하위클래스에서 인스턴스를 생성.
추상팩토리(Abstract Factory) : 클라이언트에서 구상 클래스를 지정하지 않으면서도 일군의
객체를 생성할 수 있게 해줌.
구조패턴(객체를 조직화시키는 일반적인 방식)
어댑터(Adapter) : 객체를 감싸서 다른 인터페이스를 제공
브리지(Bridge) : 인터페이스와 구현의 명확한 분리
컴포지트(Composite) : 클라이언트에서 객체 컬렉션과 개별 객체를 똑같이 다룰 수 있도록 해줌.
데코레이터(Decorator) : 객체를 감싸서 새로운 행동을 제공
퍼케이드(Facade) : 일련의 클래스에 대해 간단한 인터페페이스를 제공
플라이웨이트(Flyweight) : 작응 객체들의 공유
프록시(Proxy) : 객체를 감싸서 그 객체에 대한 접근성을 제어
행위패턴
비지터(Visitor) : 작업 종류의 효율적 추가/변경
이터레이터(Iterator) : 컬렉션이 어떤 식으로 구현되었는지 드러내지 않으면서도 컬렉션
내에 있는 모든 객체에 대해 반복 작업을 처리할 수 있게 해줌.
메멘토(Memento) : 객체의 이전 상태 복원 또는 보관
옵저버(Observer) : 상태가 변경되면 다른 객체들한테 연락을 돌릴 수 있게 해줌
스트레이티지(Strategy) : 교환 가능한 행동을 캡슐화하고 위임을 통해서 어떤 행동을
사용할지 결정.