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
반응형
'자격증 > 정보처리기사' 카테고리의 다른 글
[필기 | 소프트웨어 설계] 디자인 패턴 (0) | 2025.03.18 |
---|---|
[필기 | 소프트웨어 설계] 코드 (2) | 2025.03.14 |
[필기 | 소프트웨어 설계] 객체지향 (0) | 2025.03.12 |
[필기 | 소프트웨어 설계] 객체와 클래스 (0) | 2025.03.12 |
[필기 | 소프트웨어 설계] 패턴 (1) | 2025.03.11 |