자격증/정보처리기사 필기

[정보처리기사 필기] SW 설계 : 공통 모듈 설계 - 모듈(Module)

Yuco 2023. 1. 14. 12:51
정보처리기사 필기 1과목 - 소프트웨어 설계 : 공통 모듈 설계

 

[1] 공통 모듈(Module)  

1. 모듈

- 전체 프로그램의 기능 중 특정 부분의 기능을 처리할 수 있는 단위 실행 코드

- 자체적으로 컴파일 가능하며, 다른 프로그램에서 재사용 가능

 

* 모듈화 : 소프트웨어를 각 기능별로 분할하는 것

 

2. 공통 모듈

- 날짜 처리를 위한 유틸리티 모듈 등 여러 기능 및 프로그램에서 공통적으로 사용할 수 있는 모듈을 의미

 

[2] 모듈의 재사용

- 개발 시간 및 비용 절감을 위하여 이미 검증된 기능을 파악하고 재구성하여, 시스템에 응용하기 위해 적합하게 최적화 시키는 작업 

- 공통 모듈의 재사용을 위해서는 외부 모듈과의 연관성(결합도)은 적어야 하며, 자체적인 완성도(응집도)는 높아야 함

 

* 재사용 규모에 따른 분류 ⭐

 

분류 내용
함수와 객체 재사용 - 클래스나 메소드 단위로 사용하며, 소스 코드 등을 재사용
컴포넌트 재사용 - 컴포넌트 단위로 재사용하며, 컴포넌트 자체는 수정하지 않고 인터페이스를 통해 통신
애플리케이션 재사용 - 공통된 업무가 기능을 제공하도록 구현된 애플리케이션을 공유하여 재사용

 

[3] 공통 모듈 명세 기법 

 

정확성 | 명확성 | 완전성 | 일관성 | 추적성

 

1. 정확성 (Correctness) : 해당 기능이 실제 시스템 구현 시 필요한지 여부를 알 수 있도록 정확하하게 작성

2. 명확성 (Clarity) : 해당 기능에 대해 일관되게 이해되고 한 가지로 해석될 수 있도록 작성

3. 완전성 (Completeness) : 시스템이 구현될 때 필요하고 요구되는  모든 것을 기술

4. 일관성 (Consistency) : 공통 기능들 간에 상호 충돌이 없도록 작성

5. 추적성 (Traceability) : 공통 기능에 대한 요구사항 출처와 관련 시스템 등의 유기적 관계에 대한 식별이 가능하도록 작성

 

[4] 공통 모듈 설계

1. 모듈화(Modularity) 

- 시스템 기능들을 모듈 단위로 나눠 소프트웨어의 성능 및 재사용성을 향상 시키는 것

- 프로그램이 효율적으로 관리될 수 있도록 시스템을 분해하고 추상화함으로써 소프트웨어 제품의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리를 용이하게 하는 기법을 의미

 

2. 모듈화 필요성 

- 모듈의 크기가 너무 작아서 모듈 개수가 많아지면 모듈 간의 통합 비용이 많이 듦

- 모듈의 크기가 너무 크면 모듈 간의 통합 비용이 상대적으로 줄어드는 대신 모듈 하나를 개발하는 데 드는 비용이 커짐

 

[5] 모듈의 독립성 측정 지표 (응집도, 결합도)

 

1. 응집도 

- 응집도는 모듈 내부에서 구성 요소 간에 밀접한 관계를 맺고 있는 정도로 평가됨 (모듈의 내부 요소들이 서로 관련되어 있는 정도)

- 응집도가 높을수록 필요한 요소들로 구성되어 있고 낮을수록 관련이 적은 요소들로 구성되어 있음

 

* 응집도의 유형 및 설명

 

구분 설명
기능적 응집도
(Functional Cohesion)
-  모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우
순차적 응집도
(Sequential Cohesion)
-  모듈 내에서 한 활동으로부터 나온 출력 값을 다른 활동이 사용할 경우
통신적(교환적) 응집도
(Communicaion Cohesion)
-  동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동이 모여있을 경우
절차적 응집도
(Procedual Cohesion)
-  모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우
시간적 응집도
(Temporal Cohesion)
-  연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
논리적 응집도
(Logical Cohesion) 
-  유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
우연적 응집도
(Coincidental Cohesion)
-  모듈 내부의 각 구성 요소들이 연관이 없을 경우

 

* 응집도와 품질

- 다양한 기준으로 모듈을 구성할 수 있으나, 품질 측면에서 기능성 응집도가 가장 품질이 높고, 우연적 응집도가 가장 낮음

 

* 응집도 낮음(나쁜 품질) ▶ 응집도 높음(좋은 품질)

우연적 응집도 논리적 응집도 시간적 응집도 절차적 응집도 통신적 응집도 순차적 응집도 기능적 응집도

 

2. 결합도

모듈과 모듈 간에 어느 정도 관련성이 있는지를 나타내며, 관련이 적으ㄹ수록 독립성이 높아 모듈 간 영향이 적어지게 됨

 

* 결합도의 유형 및 설명

 

구분 설명
자료 결합도
(Data Coupling)
-  모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우

-  어떤 모듈이 다른 모듈을 호출하면서 매개 변수(파라미터)나 인수로 데이터를 넘겨주고, 호출 받은 모듈은 받은 데이터에 대한 처리 결과를 다시 돌려주는 결합도
스탬프 결합도
(Stamp Coupling)
-  모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우 (자료구조가 전달)
제어 결합도
(Control Coupling)
-  단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우
외부 결합도
(External Coupling)
-  어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도
공통 결합도
(Common Coupling)
-  파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우

-  공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합
내용 결합도
(Content Coupling)
다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우

 

* 결합도와 품질

- 다양한 결합으로 모듈을 구성할 수 있으나 품질 측면에서 자료 결합도가 가장 품질이 높고, 내용 결합도가 가장 낮음

 

* 결합도 높음(낮은 품질) 결합도 낮음(좋은 품질) 

내용 결합도 ▶ 공통 결합도 ▶ 외부 결합도 ▶ 제어 결합도 ▶ 스탬프 결합도 ▶ 자료 결합도