모듈화 통해 분리된 시스템의 각 기능
서브루틴, 서브시스템, 작업단위 등과 같은 의미로 사용
모듈간 상호의존 정도 또는 두 모듈 사이의 연관관계
결합도의 정도; 밑으로 갈수록 결합도가 강함 (내공외제스자)
✓ 자료 결합도: 모듈간 인터페이스가 자료 요소로만 구성될때의 결합도, 수정돼도 다른모듈 영향 X이므로 가장 바람직한 결합도
✓ 스탬프 결합도: 배열이나 레코드등 자료구조 전달될때
✓ 제어 결합도: 제어요소 전달하는 결합도, 하위모듈이 상위모듈에 처리명령 내리는 권리 전도현상 발생
✓ 외부 결합도
✓ 공통 결합도: 공통데이터영역을 여러모듈이 사용할때의 결합도, 공통데이터영역 변경시 이를 사용하는 모든 모듈에 영향
✓ 내용 결합도: 다른모듈의 내부기능 및 자료 직접 참조하거나 수정할때의 결합도
모듈의 내부 요소들이 서로 관련되어 있는 정도
응집도의 정도; 밑으로 갈수록 응집도 약함 (기순교절시논우)
✓ 기능적 응집도: 모듈안의 모든 기능이 단일문제와 연관되어 수행
✓ 순차적 응집도: Sequential Cohesion, 활동후 출력 -> 다음활동 입력
✓ 교환적 응집도: 동일한 입출력으로 여러기능 수행
✓ 절차적 응집도: Procedural Cohesion, 순차+교환
✓ 시간적 응집도: 특정시간에 처리되는 기능 모아 하나의 모듈로
✓ 논리적 응집도: 유사성격, 특정형태 분류해 하나의 모듈로
✓ 우연적 응집도: 관련없는 기능들 하나의 모듈로
팬인: 어떤 모듈을 제어(호출)하는 모듈의 수
팬아웃: 어떤 모듈에 의해 제어(호출)되는 모듈의 수
✓ 팬인이 높다 -> 재사용이 용이하다 but 단일 장애점 발생할 수 있음
✓ 팬아웃이 높다 -> 불필요하게 다른 모듈 호출하고 있는지 검토, 단순화 가능 여부 확인
팬인 높게, 팬아웃 낮게 -> 시스템 복잡도 최적화
N-S 차트: 논리 기술에 중점 둔 표현방법, 도형이용 (박스다이어그램)
- 연속, 선택및 다중선택, 반복 등의 제어논리구조 표현
- GOTO 나 화살표 사용 X
- 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는데 적합
여러 프로그램에서 공통적으로 사용할 수 있는 모듈
명세기법
✓ 정확성
✓ 명확성: 중의적 해석 없도록 명확하게 작성
✓ 완전성
✓ 일관성
✓ 추적성
누구나 이해 가능, 사용법 공개
외부모듈과 결합도는 낮고 응집도 높으면 재사용 가능
규모에 따른 분류
- 함수와 객체: 클래스나 메소드 단위의 코드 재사용
- 컴포넌트: 수정 없이, 인터페이스 통해 통신
✓ 컴포넌트; 하나 이상의 클래스로 작성되는 실행코드 기반의 모듈- 애플리케이션: 공통기능 제공하는 앱 공유
주요 기능
이름만으로 개체의 용도와 적용범위 알 수 있도록 코드 부여하는 방식
👉🏻 아키텍처패턴 vs 디자인패턴
- 아키텍처패턴은 디자인패턴보다 상위수준의 셜계
- 아키텍처: 전체시스템 구조 설계 위한 참조모델
- 디자인패턴: 서브시스템에 속하는 컴포넌트 및 그 관계 설계 위한 참조모델
생성 패턴 종류
- 추상 팩토리: 클래스보단 인터페이스 통해 서로 연관, 의존하는 객체의 그룹으로 생성해 추상적으로 표현, 연관 서브 클래스 묶어 한번에 교체 가능
- 빌더: 세부 인스턴스 조합하여 객체 생성, 동일 객체 생성해도 다른결과 출력가능
- 팩토리 메소드: 상위클래스에서 인터페이스만 정의, 실제 객체 생성은 서브클래스가 담당
- 프로토타입: 원본객체 복제해 객체 생성
- 싱글톤: 하나의 객체-> 어디서든 참조가능 but 여럿이 동시에 참조불가, 불필요한 메모리낭비 최소화
클래스, 객체 등 조합하여 더 큰 구조로 만들 수 있게 해줌
구조 패턴 종류
- 어댑터: 클래스 이용의 호환성을 맞춰줌
- 브리지: 기능-구현 두 개의 별도 클래스로 구현하여 서로가 독립적으로 확장
- 컴포지트: 복합객체, 단일객체 구분없이 다룸
- 데코레이터: 객체간 결합 통해 능동적 기능확장
- 퍼싸드
- 플라이웨이트
- 프록시
클래스, 객체가 상호작용 또는 책임분배 방법 정의하는 패턴
행위 패턴 종류 (11가지)
- 책임 연쇄: 고리(체인) 따라 책임이 넘어감
- 커맨드: 요청을 객체의 형태로 캡슐화, 요청에 필요한 정보 저장 및 로그 남김. 요청에 사용되는 각종 명령어를 추상-구체로 나눠 단순화
- 인터프리터
- 반복자: 접근 잦은 객체에 동일 인터페이스 사용하게 함
- 중재자: 수많은 객체의 복잡한 상호작용을 객체로 캡슐화, 객체 의존성 줄여 결합도 감소, 객체 간 통제와 지시의 역할 수행
- 메멘토: 특정 시점에서의 객체 내부 상태 객체화, 이후 요청에 따라 그 특정 시점으로 돌릴 수 있음 (ctrlz)
- 옵서버: 상속된 다른 객체에게 객체의 변화상태 전달
- 상태(State): 객체 상태에 따라 동일 동작 다르게 처리할 때 사용하는 패턴
- 전략: 동일계열 알고리즘 개별적 캡슐화하여 상호교환가능하도록 정의
- 템플릿 메소드
- 방문자: 처리기능 분리하여 별도클래스 구성, 각 클래스 방문하여 처리기능 수행
참고 도서 📚
2022 시나공 정보처리기사 필기