본문 바로가기

자격증/정보처리기사

[필기 | 소프트웨어 설계] 모듈

728x90
반응형
📖 참고
2025 시나공 기출문제집 정보처리기사 필기 요약 pdf
2025년도 정보처리기사 시험일정
📂 정보처리기사 필기 1과목 소프트웨어 설계
01. [필기 | 소프트웨어 설계] 소프트웨어 생명 주기 모형
02. [필기 | 소프트웨어 설계] 스크럼과 XP
03. [필기 | 소프트웨어 설계] 현행 시스템 파악 / 데이터베이스 관리 시스템(DBMS) / 웹 에플리케이션 서버(AWS)
04. [필기 | 소프트웨어 설계] 요구사항 정의
05. [필기 | 소프트웨어 설계] 요구사항 분석
06. [필기 | 소프트웨어 설계] UML(Unified Modeling Language)
07. [필기 | 소프트웨어 설계] 사용자 인터페이스(UI)
08. [필기 | 소프트웨어 설계] 품질 요구사항
09. [필기 | 소프트웨어 설계] 소프트웨어 아키텍처 설계
10. [필기 | 소프트웨어 설계] 패턴
11. [필기 | 소프트웨어 설계] 객체와 클래스
12. [필기 | 소프트웨어 설계] 객체지향
13. [필기 | 소프트웨어 설계] 모듈
14. [필기 | 소프트웨어 설계] 코드
15. [필기 | 소프트웨어 설계] 디자인 패턴
16. [필기 | 소프트웨어 설계] 시스템 연계

 


✏️ 결합도(Coupling)

결합도는 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미

  • 다양한 결합으로 모듈을 구성할 수 있으나, 결합도가 약할수록 품질이 높고, 강할수록 품질이 낮음
  • 결합도가 강하면 시스템 구현 및 유지보수 작업이 어려움

결합도의 종류

자료 결합도
(Data Coupling)
모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
스탬프(검인) 결합도
(Stamp Coupling)
모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달 될 때의 결합도
제어 결합도
(Control Coupling)
어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용하여 틍신하거나 제어 요소(Function Code, Switch, Tag, Flag)를 전달하는 결합도
외부 결합도
(External Coupling)
어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도
공통(공유) 결합도
(Common Coupling)
공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
내용 결합도
(Content Coupling)
한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도

✏️ 응집도(Cohesion)

응집도는 정보 은닉 개념을 확장한 것으로, 명령어나 호출문 등 모듈 내부 요소들의 서로 관련되어 있는 정도를 의미함

  • 즉, 모듈이 독립적인 기능으로 정의되어 있는 정도
  • 다양한 기준으로 모듈을 구성할 수 있으나, 응집도가 강할수록 품질이 높고, 약할수록 품질이 낮음

응집도의 종류

기능적 응집도
(Functional Cohesion)
모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
순차적 응집도
(Sequential Cohesion)
모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
교환(통신)적 응집도
(Communication Cohesion)
동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도
절차적 응집도
(Procedural Cohesion)
모듈이 다수의 관련 기능을 가질 때, 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
시간적 응집도
(Temporal Cohesion)
특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
논리적 응집도
(Logical Cohesion)
유사한 성격을 갖거나, 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
우연적 응집도
(Coincidental Cohesion)
모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도

✏️ 팬인(Fan-In) / 팬아웃(Fan-Out)

  • 팬인 : 어떤 모듈을 제어(호출)하는 모듈의 수
  • 팬아웃 : 어떤 모듈에 의해 제어(호출)되는 모듈의 수

ex. 

시스템 구조도 예시

모듈 팬인(Fan-In) 팬아웃(Fan-Out)
A 0 3
B 1 2
C 1 1
D 1 2
E 1 1
F 2 1
G 1 1
H 2 0
I 2 0

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

논리의 기술에 중점을 둔 도형을 이용한 표현 방법으로, 박스 다이어그램, Chapin Chart라고도 함

  • 연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조를 표현함
  • GOTO나, 화살표를 사용하지 않음
  • 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는데 적합함
  • 선택과 반복 구조를 시각적으로 표현
  • 이해하기 쉽고, 코드 변환이 용이함
  • 읽기는 쉽지만, 작성하기가 어려우며, 임의로 제어를 전이하는 것이 불가능함
  • 총체적인 구조 표현과 인터페이스를 나타개이 어려움
  • 단일 입구와 단일 출구로 표현됨 

✏️ 공통 모듈의 개요

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

  • 자주 사용되는 계산식이나 매번 필요한 사용자 인증과 같은 기능들이 공통 모듈로 구성될 수 있음
  • 모듈의 재사용성 확보와 중복 개발 회피를 위해 설계 과정에서 공통 부분을 식별하고, 명세를 작성할 필요가 있음
  • 공통 모듈을 구현할 때는 다른 개발자들이 해당 기능을 명확히 이해할 수 있도록 명세 기법을 준수해야함

명세 기법

정확성 (Correctness) 시스템 구현 시, 해당 기능이 필요하다는 것을 알 수 있도록 정확히 작성함
명확성 (Clarity) 해당 기능을 이해할 때, 중의적으로 해석되지 않도록 명확하게 작성함
완전성 (Completeness) 시스템 구현을 위해 필요한 모든 것을 기술함
일관성 (Consistency) 공통 기능들 간 상호 충돌이 발생하지 않도록 작성함
추적성 (Traceability) 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악 할 수 있도록 작성

✏️ 재사용(Reuse)

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

  • 재사용을 위해서는 누구나 이해할 수 있고, 사용이 가능하도록 사용법을 공개해야 함
  • 재사용되는 대상은 외부 모듈과의 결합도는 낮고, 응집도는 높아야

재사용 규모에 따른 분류

함수와 객체 클래스나 메소드 단위의 소스 코드를 재사용함
컴포넌트 - 독립적인 업무 또는 기능을 수행하는 실행 코드 기반으로 작성된 모듈
- 컴포넌트 자체에 대한 수정 없이 인터페이스를 통해 통신하는 방식으로 재사용
애플리케이션 공통된 기능들을 제공하는 애플리케이션을 공유하는 방식으로 재사용

✏️ 효과적인 모듈 설계 방안

  • 결합도는 줄이고, 응집도는 높임 >> 모듈의 독립성과 재사용성 증가시킴
  • 모듈의 제어 영역 안에서 그 모듈으리 영향 영역을 유지시킴
  • 복잡도와 중복성을 줄이고, 일관성을 유지시킴
  • 모듈의 기능은 예측이 가능해야하며, 지나치게 제한적이면 안됨
  • 유지보수가 용이해야 함
  • 모듈 크기는 시스템의 전반적인 기능과 구조를 이해하기 쉬운 크기로 분해
  • 효과적인 제어를 위해 모듈 간의 계층적 관계를 정의하는 자료가 제시되어야 함

 

728x90
반응형