모듈화 – 시스템 기능들을 모듈 단위로 나눈다.
추상화 – 개념을 설계한 후 구체화시켜 나간다.
단계적 분해 – 상위 -> 하위 개념을 구체화시키는 분할 기법이다.
정보 은닉 – 정보가 감춰져 다른 모듈이 접근, 변경 못한다.
상위 설계 vs 하위 설계
아키텍처, 전체적 구조 vs 모듈 설계, 내부 구조
구조 DB 인터페이스 vs 컴포넌트, 자료구조, 알고리즘
협약 (Contract)에 의한 설계
컴포넌트
레이어 패턴
클라이언트 – 서버 패턴
파이프 – 필터 패턴
모델 – 뷰 –컨트롤러 패턴 (MVC)
마스터- 슬레이브 패턴
브로커 패턴
피어-투-피어 패턴
연관성
is member of – 연관화 : 상호 관련있는 객체 2개
in instance of – 분류화 : 동일한 특성의 객체들 모음
is part of – 집단화 : 묶여 상위 객체를 구성
is a –일반화 , 특수화 : 나머지
객체지향 분석의 방법론
럼바우 방법 – 분석 활동을 객동기 모델로 나눠 수행한다.
부치 방법 – 미시적(Micro), 거시적(Macro) 두 프로세스 다 사용한다.
Jacobson – 유스케이스를 사용한다.
Coad와 Yourdon – ER 다이어그램을 사용한다.
럼바우 방법
객체 모델링 – 시스템에서 요구되는 객체를 찾아 관계를 규정해 객체 다이어그램으로 표시한다.
동적 모델링 – 상태 다이어그램을 이용해 동적인 행위를 표현한다.
기능 모델링 – 자료 흐름도(DFD)를 사용해 자료 흐름을 중심으로 표현한다.
객체지향 설계 원칙
단일 책임 원칙
-객체는 단 하나의 책임만 가진다.
개방-폐쇄 원칙
-기존 코드 변경없이 기능을 추가할 수 있어야 한다.
리스코프 치환 원칙
-자식 클래스는 부모 클래스 기능 수행 가능해야한다.
인터페이스 분리 원칙
-사용하지 않는 인터페이스와 관계X, 영향 없어야 한다.
의존 역전 원칙
-의존 관계 시 추상성 높은 애부터 의존 관계를 형성한다.
내공강 스자약
내용 결합도, 공통 결합도, 외부 결합도, 제어 결합도, 스탬프 결합도, 자료 결합도
<--- 강함 약함 --->
내용 결합도 – 한 모듈이 다른 모듈의 기능을 직접 참조한다.
공통 결합도 – 공통 데이터 영역을 사용할 때.
외부 결합도 – 외부 모듈에서 참조할 때.
제어 결합도 – 논리적 흐름 제어를 위해 제어 신호나 요소를 전달할 때.
스탬프 결합도 – 모듈 간 인터페이스, 배열 등 자료구조가 전달한다.
자료 결합도 – 자료 요소로만 구성될 때.
기순강 논우약
기능적, 순차적, 교환적, 절차적, 시간적, 논리적, 우연적
<--- 강함 약함 --->
기능적 응집도 – 모든 기능요소들이 단일 문제와 연관.
순차적 응집도 – 출력 데이터를 그 다음 활동의 입력 데이터로 사용
교환적 응집도 – 패스
절차적 응집도 – 순차적으로 수행할 경우. 절차 -> 순차!!
시간적 응집도 – 특정 시간에 처리되는 기능을 모은다.
논리적 응집도 – 유사한 성격의 요소들로 모듈이 형성.
우연적 응집도 – 관련이 없음
팬 인
팬 아웃
N-S 차트
논리의 기술이 중점, 도형을 이용해 표현하는 방법이다.
박스 다이어그램을 사용.
공통 모듈 명세 기법
정확성 – 해당 기능이 필요하나는 것을 명시한다.
명확성 – 중의적으로 해석되지 않게 명확하게.
완전성 – 구현을 위해 필요한 모든 것을 기술한다.
일관성 – 기능 간 상호충돌 되지 않게한다
추적성 – 요구사항의 출처, 관계등 파악할 수 있게한다.
재사용 (Reuse)
재사용 규모 분류
함수와 객체 – 클래스나 메서드 단위의 소스 코드를 재사용.
컴포넌트 – 컴포넌트 수정 없이 인터페이스를 통해 통신.
애플리케이션 – 공통 기능을 공유하는 방식으로 재사용.
코드의 종류
순차 코드
블록 코드
10진 코드
그룹 분류 코드
연상 코드
표의 숫자 코드
생성 패턴
- 추상 팩토리(abstract Fac) : 객체들의 그룹으로 생성 -> 추상적으로 표현
- 빌더 : 인스턴스를 건축 하듯이 조합해 객체를 생성
- 팩토리 메소드(Fac method) : 상위 클래스는 인터페이스만 실제 생성은 서브 클래스가 (분
할작업) -프로토타입 : 원본 객체를 복제하는 방법으로 객체를 생성- 싱글톤(Singleton) : 객체를 생성하면 어디서든 참조가능, But 동시는 안됨
구조 패턴
- 어댑터 : 인터페이스를 변환시켜줌
- 브리지 : 구현부에서 추상층 분리. 독립적 확장 가능
- 컴포지트 : 구분없이 다룸
- 데코레이터 : 능동적 기능 확장 가능
행위 패턴
- 책임 연쇄 : 연쇄작용
- 커맨드 : 요청에 필요한 정보를 저장 or 로그에 남기는 패턴
- 메멘토(Memento) : 특정 시점에서의 객체 내부 상태를 객체화
- 옵서버(Observer) : 변화된 상태를 전달
- 상태(State) : 객체의 상태에 따라 동작을 다르게 처리해야 할 때 사용(상태에 따라 치료방
법이 다름)- 방문자(Visitor) : 데이터 구조에서 처리 기능을 분리 후 별도의 클래스에 구성.
- 반복자(Iterator) : 반복이 잦음
- 중재자(Mediator) : 상호작용을 캡슐화
- 인터프리터(Interpreter) : 문법표현 정의 패턴
대용량 데이터 – 대량의 데이터를 가져올 때
자동화 – 사용자의 개입 없이 수행
견고성 – 중복, 오류 등에 중단되면 안됨
안정성/신뢰성 – 오류 발생 시 추적 가능 해야함
성능 – 지정된 시간 내 처리가 완료되어야 함
배치 스케줄러