반응형
모듈
1. 모듈(Module) 개요
모듈은 모듈화 를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템, 소프트웨어 내 프로그램, 작업 단위 등가 같은 의미
- 단독으로 컴파일 가능하며, 재사용 가능
- 모듈의 기능적 독립성은 소프트웨어를 구성하는 각 모듈의 기능이 서로 독립됨을 의미하는것으로, 모듈이 하나의 기능만 수행, 다른 모듈과 과도한 상호작용 배제
- 독립성이 높을수록 모듈 수정해도 다른 모듈에 영향 없음
- 독립성은 결합도(Coupling)와 응집도(Cohension)에 의해 측정. 독립성 높이려면 결합도는 약하게, 응집도는 강하게
모듈화
시스템의 기능들을 모듈 단위로 분해하는 것
- 루틴(Routine): 기능을 가진명령들의 모임
- 메인 루틴(Main Routine): 프로그램 실행의 큰 줄기가 되는 것
- 서브 루틴(Subroutine): 메인 루틴에 의해 필요시 호출
2.결합도(Coupling)
모듈간에 상호 의존 정도 또는 연관 관계
- 결합도 약할수록 품질이 높고, 강할수록 품질 낮음
- 결합도 강하면 시스템 구현 및 유지보수 어려움
자료 결합도(Data Coupling) | 모듈 간의 인터페이스가 자료 요소로만 구성될 때 |
스탬프(검인) 결합도(Stamp Coupling) | 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때 |
제어 결합도(Control Coupling) | 특정 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용하여 통신하거나 제어요소(Function Code, Switch, Tag, Flag)를 전달하는 결합도 |
외부 결합도(External Coupling) | 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때 |
공통(공유) 결합도(Common Coupling) | 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때 |
내용 결합도(Content Coupling) | 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때 |
3. 응집도(Cohesion)
정보은닉 개념을 확장한 것으로, 모듈이 독립적인 기능으로 정의되어 있는 정도
응집도가 강할수록 품질이 높고, 약할수록 품질 낮음
기능적 응집도(Functional Cohesion) | 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우 |
순차적 응집도(Sequential Cohesion) | 모듈에서 나온 출력 데이터가 다음 활동의 입력 데이터가 되는 경우 |
교환(통신)적 응집도(Communication Cohesion) | 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우 |
절차적 응집도(Procedural Cohesion) | 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 때 |
시간적 응집도(Temporal Cohesion) | 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우 |
논리적 응집도(Logical Cohesion) | 유사한 성격을 갖거나 특정 형태로 분류되는 경우 처리 요소들로 하나의 모듈이 형성되는 경우 |
우연적 응집도(Coincidental Cohesion) | 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우 |
4. 팬인(Fan-In)/ 팬아웃(Fan-Out)
- 팬인은 모듈을 제어(호출)하는 모듈의 수
- 팬아웃은 모듈에 의해 제어(호출)되는 모듈의 수
- 팬인 팬아웃을 분석하여 시스템 복잡도를 알 수 있다
- 팬인이 높다는 것은 재사용 측면에서 잘 설계, 그러나 단일 장애점 발생할 수 있어 중점적인 관리 및 테스트 필요
- 팬아웃 높은 경우 불필요하게 다른 모듈 호출하고 있는지 검토, 단순화 여부 검토 필요
- 시스템 복잡도 최적화 하려면 팬인 높게, 팬아웃 낮게
공통 모듈
1. 공통모듈 개요
여러 프로그램에서 공통적으로 사용할 수 있는 모듈
- 재사용성 확보와 중복 개발 회피를 위해 설계 과정에서 공통 부분을 식별하고 명세 작성
명세 기법 준수 사항
- 정확성
- 명확성
- 완전성
- 일관성: 공통기능들간 충돌 발생 않도록
- 추적성: 출처, 관련 시스템 등 관계 파악할 수 있도록
2. 재사용(Reuse)
비용과 개발 시간 절약 위해 이미 개발된 기능 파악하고 재구성하여 새로운 시스템 또는 기능 개발에 사용하기 적합하도록 최적화
- 누구나 이해하고 사용하기 적합하도록 사용법 공개 해야함
- 재사용 대상은 외부 모듈과의 결합도 낮고, 응집도 높아야함
재사용 규모에 따른 분류
함수와 객체 | 클래스나 메소드 단위의 소스코드 작성 |
컴포넌트 | 컴포넌트 자체에 대한 수정 없이 인터페이스 통해 통신하는 방식으로 재사용 |
애플리케이션 | 공통된 기능들을 제공하는 애플리케이션을 공유하는 방식 |
3. 효과적인 모듈 설계 방안
- 결합도 줄이고 응집도 높여야함
- 모듈 제어 영역 안에서 그 모듈의 영향 영역 유지
- 복잡도와 중복성 줄이고 일관성 유지
- 기능 예측 가능해야하며 지나치게 제한적이어서는 안됨
- 유지보수 용이해야함
- 하나의 입구와 하나의 출구
- 계층적 관계를 정의하는 자료 제시되어야함
출처
자료 참고:
시나공 정보처리기사 필기 2022를 참고하여 작성되었습니다
[1] https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rlarhdn66&logNo=220463191697
반응형
'정보처리기사 > 1과목' 카테고리의 다른 글
[정보처리기사 필기] 디자인패턴(Design Pattern) (0) | 2022.02.08 |
---|---|
[정보처리기사 필기] 코드(Code) (0) | 2022.02.08 |
[정보처리기사 필기] 객체지향(Object-Oriented) (2) | 2022.02.08 |
[정보처리기사 필기] 소프트웨어 아키텍처 (0) | 2022.02.07 |
[정보처리기사 필기] 화면 설계 (0) | 2022.02.07 |
댓글