Search

Module

[- Disclaimer -] 아래 내용은 정보보안 공부 목적으로 작성된 것이나, 이를 토대로 허가되지 않은 대상에 실습을 진행할 경우 해킹 시도로 간주하여 법적 처벌을 받을 수 있음을 알려 드립니다.
Module
✦ 단독으로 Compile 가능
✦ 재사용 가능
✦ 과도한 상호 작용 배제로 기능적 독립성
✧ 독립성이 높을 수록 결합도는 약하고 응집도는 강하며 Module 크기는 작고 Error 발견 쉬움
Coupling (=결합도)
✦ Module 간 상호 의존/연관 관계 정도
✦ 다양한 결합으로 Module 구성 가능
✧ 낮은 품질일수록 결합도 높음 // 구현 및 유지 보수 어려움
✧ 높은 품질일 경우 결합도 낮음
✦ 결합도 종류
✧ 아래로 갈수록 결합도 높음
✧ Content Coupling (=내용 결합도): Module 내부 제어 가능
✧ Common Coupling (=공통(공유) 결합도: 공유 Data 변경 시 타 Module들에 영향
✧ External Coupling (=외부 결합도): 외부 Module의 변수 참조 가능
✧ Control Coupling (=제어 결합도): 하위 Module이 상위 Module의 Logic을 알고 있어 베끼면 권리 전도 현상 발생
✧ Stamp Coupling (=스탬프(검인) 결합도): 자료 구조 변경 시 타 Module에 영향
✧ Data Coupling (=자료 결합도): 다른 Module에 미영향
Cohesion (=응집도)
✦ Module 간 정보 은닉 정도
✦ 다양한 기준으로 Module 구성 가능
✧ 낮은 품질일수록 응집도 낮음
✧ 높은 품질일수록 응집도 높음
✦ 응집도 종류
✧ 아래로 갈수록 응집도 높음
✧ Coincidental Cohesion (=우연적 응집도): 연관 없는 구성 요소들 간 모임
✧ Logical Cohesion(=논리적 응집도): 특정 형태로 분류 되는 등의 유사 구성 요소들 간 모임
✧ Temporal Cohesion (=시간적 응집도): 특정 시간 내 처리되는 몇 개 기능들을 모아 한 Module로 작성할 경우의 응집도
✧ Procedural Cohesion (=절차적 응집도): Module이 다수의 관련 기능을 가질 때 구성 요소들 간 절차 처리
✧ Communication Cohesion (=교환(통신)적 응집도): 동일한 입/출력으로 서로 다른 기능을 수행하는 구성 요소들 간 모임
✧ Sequential Cohesion (=순차적 응집도): Module 내 하나의 활동으로 나온 출력 Data를 그 다음 활동의 입력 Data를 사용할 경우의 응집도
✧ Functional Cohesion (=기능적 응집도): Module 내 구성 요소들이 단일 문제와 연관되어 수행 시
Fan In/Fan Out
✦ Fan In: 들어오는 Module 제어(호출) 수
✦ Fan Out: 나가는 Module 제어(호출) 수
✦ Fan In을 높게하고 Fan Out을 낮게하여 시스템 복잡도 최적화
✧ Fan In이 높을수록 재사용 설계가 좋으나 단일 장애점 발생 위험 때문에 관리 및 Test하면서 하기
✧ Fan Out이 높을수록 단순화가 안돼 불필요 Module 호출 정도 검토 필요
N-S Chart (=Nassi-Schneiderman Chart)
✦ 논리 기술에 중점을 둔, 도형을 이용한 박스 다이어그램
✦ 연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조 표현
✦ GOTO 및 화살표 금지
✦ 복잡한 조건의 시각화
✦ Code 변환 용이
✦ 읽기 쉽지만 작성 어려움
✦ 임의 제어 전이 불가능
✦ 총체적 구조와 Interface 표현 어려움
✦ 단일 입구 및 단일 출구 표현
공통 Module
✦ 자주 쓰는 계산식, 매번 필요한 사용자 인증 등에 구성될 수 있음
✦ 설계 과정에서 공통 부분 식별 및 명세 작성
✧ Module 재사용성 증가
✧ 중복 개발 회피
✦ 공통 Module 명세 기법 준수 사항
✧ Correctness (=정확성): 필요성 어필
✧ Clarity (=명확성): 중의적 표현 지야
✧ Completeness (=완전성): 모든 것 기술
✧ Consistency (=일관성): 충돌 방지
✧ Traceability (=추적성): 요구 사항 출처, 관련 시스템 등 관계 파악 가능성
Module 재사용 규모
✦ 함수와 객체, Component, Application
효과적 Module 설계 방안
✦ 재사용 대상은 외부 Module과 결합도 낮고, 응집를 높여 Module 독립성 및 재사용성 증가 필요
✦ 가능한 기능 단위로 잘게 쪼개
✧ 그냥 적절한 규모로 쪼개