자격증/정보처리기사

[정보처리기사] 모듈(Module)

IT록흐 2021. 10. 7. 15:25
반응형

모듈 ( Module )

 

소프트웨어 내 작업 단위

모듈은 독립성을 가져야 한다.

 

결합도(Coupling)는 약하게 (과도한 상호작용 X)

응집도(Cohesion)는 강하게 (하나의 기능만 수행)

모듈의 크기는 작게

 

- 결합도 (Coupling) (모듈 간 상호작용 정도)

 

자료(Data) 결합도 : 다른 모듈에 호출되어서 받은 인수를 처리 후 결과를 반환

스탬프(검인) 결합도 : 모듈 간 인터페이스의 자료구조를 함께 조회

제어(control) 결합도 : 한 모듈이 다른 모듈의 논리 흐름을 제어

외부(external) 결합도 : 한 모듈이 선언한 데이터를 다른 모듈이 참조

공통(공유)(Common) 결합도 : 공유되는 데이터 영역을 여러 모듈이 사용

내용(Content) 결합도 : 한 모듈이 다른 모듈의 기능과 자료를 직접 참조 및 수정

 

- 응집도(Cohesion) ( 정보은닉의 확장, 내부가 얼마나 서로 관련 있는가)

 

기능적 응집도 : 모든 기능요소가 단일 문제로 연관

순차적 응집도 : 모듈 내 하나의 활동 출력데이터를 다음 활동 입력데이터로 활용

교환(통신)적 응집도 : 동일한 입출력 데이터를 사용 서로 다른 기능을 하는 경우

절차적 응집도 : 다수의 기능이 순차적으로 수행

시간적 응집도 : 특정 시간에 처리되는 기능을 모아 모듈화

논리적 응집도 : 유사한 성격과 형태로 분류되는 처리요소를 모아(기능고려x) 모듈화

우연적 응집도 : 서로 관련없는 것들을 모아 모듈화

 

 

- 시스템 복잡도 계산 ( 팬인(Fan-in)/ 팬아웃(Fan-out) )

 

팬인 : in(안으로) 상위모듈 수 (기존 존재하는 걸 재사용)

팬아웃 : out(밖으로) 하위모듈 수 (여러 모듈에 영향)

 

팬인이 많으면 여러 모듈의 기능을 활용했다는 의미로 재사용 측면에서 설계가 잘 되었다 판다할 수 있음. 그러나 노즐효과와 같이 여러 모듈이 한 모듈로 쏠리기에 한 모듈이 작동을 안하면 전체 시스템이 먹통이 된다.(단일 장애점 발생)

 

팬아웃이 많으면 불필요하게 다른 모듈을 호출하고 있는건 아닌지 검토

시스템 복잡도를 최적화하기 위해서 팬인은 높게, 팬아웃은 낮게 설계

 

 

- N-S 차트 ( Nassi - Schneiderman Chart )

 

논리의 기술에 중점을 두고 도형을 이용해 표현하는 방법 ( 박스 다이어그램 , Chappin Chart )

연속, 선택 및 다중 선택, 반복의 3가지 제어 논리 구조로 표현한다. 

 

 

단위 모듈 ( Unit - Module )

 

한 가지 동작을 수행하는 기능을 모듈로 구현한 것

 

IPC ( Inter-Process Communication )

 

모듈 간 통신 방식 구현을 위한 대표적인 프로그래밍 인터페이스 집합

 

IPC 대표 메소드 5가지

 

- Shared Memory : 공유 가능한 메모리를 구성하여 다수의 프로세스가 통신

- Socket : 네트워크 소켓을 이용하여 네트워크를 경유하는 프로세스간 통신

- Semaphores : 공유 자원에 대한 접근 제어를 통해 통신

- Pipe&named Pipes : 'Pipe'라고 불리는 선입선출 형태로 구성된 메모리를 다수의 프로세스가 공유하여 통신

( Pipe는 한 프로세스가 이용중이면 다른 프로세스는 접근 불가 )

- Message Queueing : 메시지가 발생하면 이를 전달하는 방식으로 통신 

 

단위 모듈 테스트 ( Unit Test )

모듈이 정해진 기능을 정확히 수행하는지 검증

 

테스트 케이스 

소프트웨어가 사용자 요구사항 준수했는지 확인을 위한 테스트 항목의 명세서

 

 

공통모듈

 

여러 프로그램에서 공통적으로 사용할 수 있는 모듈

 

자주 사용되는 계산식, 매번 필요한 사용자 인증 같은 기능

다른 개발자들이 해당 기능을 명확히 이해할 수 있도록 명세 기법을 준수

 

정확성(Correctness) 시스템 구현 시 해당 기능이 필요하다는 것을 알도록 정확히 작성

명확성(Clarity) 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확히 작성

완전성(Completeness) 시스템 구현을 위해 필요한 모든 것을 기술

일관성(Consistency) 공통 기능들 간 상호 충돌이 발생하지 않도록 작성

추적성(Traceability) 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성

 

재사용(Reuse)

 

비용과 개발 시간을 절약하기 위해 이미 개발된 기능들을 파악하고 재구성하여 새로운 시스템 또는 기능 개발에 사용하기 적합하도록 최적화시키는 작업

 

함수와 객체 클래스나 메소드 단위 소스코드 재사요

컴포넌트 자체에 대한 수정없이 인터페이스를 통해 통신하는 재사용 방식

애플리케이션 공통된 기능들을 제공하는 애플리케이션을 공유

 

효과적인 모듈 설계 방안

 

결합도는 줄이고 응집도는 높여서 독립성과 재사용성을 높인다

복잡도와 중복성을 줄이고 일관성을 유지시킨다

모듈의 기능은 예측이 가능해야하면 지나치게 제한적이어서는 안된다.

유지보수가 용이해야 한다.

하나의 입구 하나의 출구를 갖도록 해야한다.

모듈의 크기는 기능과 구조를 이해하기 쉬운 크기로 분해한다.

 

 


 

 

참고자료

 

2021 시나공 정보처리기사 실기

수험생들의 궁금증을 100% 반영시험에 나올만한 내용만 구성시나공 정보처리기사 실기는 NCS 학습 모듈을 가이드 삼아 자세한 설명과 충분한 예제를 더한 후 교재에 수록된 문제나 이론은 하나도

book.naver.com

 

반응형