Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- DreamHack
- 자격증
- 기록
- 보안용어
- 복습
- 정리
- 리눅스마스터2급
- webhacking
- 보안
- Review
- Security
- 공부
- 위험관리
- wargame
- keyword
- IT
- 케이쉴드주니어
- 자격증공부
- 취약점진단
- it자격증
- 리눅스
- 워게임
- Linux
- Shell
- 웹해킹
- 클라우드
- study
- reivew
- 드림핵
- 정보처리기사
Archives
- Today
- Total
IT Memory Note
[정보처리기사] 서버 프로그램 구현 : 모듈 구현 본문
1️⃣ 모듈 구현
☆☆
(1) 재사용(Reuse)
1. 재사용의 개념
- 목표 시스템의 개발 시간 및 비용 절감을 위하여 검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업
- 이미 개발되어 그 기능, 성능 및 품질을 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용하는 기법
2. 재사용의 종류
구분 | 설명 |
재공학 (ReEngineering) |
• 기존 소프트웨어를 버리지 않고 기능을 개선시키거나 기능을 새로운 소프트웨어로 재활용하는 소프트웨어 재사용 기법 • 재공학의 장점으로는 위험부담 감소, 비용 절감, 개발 기간 단축, 시스템 명세의 오류 억제가 있음 |
재개발 (ReDevelopment) |
기존 시스템 내용을 참조하여 완전히 새로운 시스템을 개발, 기존 시스템에 기능을 변경/새로운 기능을 추가하는 기법 |
(3) 모듈 구현(Module)
1. 모듈의 구현
- 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체
- 모듈화를 통해 분리도니 시스템의 각 기능들로 서브 프로그램, 서브루틴, 소프트웨어 내의 단위 프로그램, 작업 단위 등과 같은 의미로 사용됨
2. 모듈의 특징
- 독립성이 높은 모듈일수록 모듈 수정 시에도 다른 모듈들에는 영향을 거의 미치지 않고, 오류 발생 시에도 쉽게 해결할 수 있음
- 모듈의 독립성은 결합도와 응집도에 의해 측정되며, 독립성을 높이려면 모듈의 결합도는 약하게(낮게), 응집도는 강하게(높게), 모듈의 크기는 작게 만들어야 함
3. 모듈화(Modularization)의 개념
- 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법
4. 모듈화 기법
기법 | 설명 |
루틴(Routine) | 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임 |
메인 루틴(Main Routine) | • 프로그램의 주요한 부분이며, 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴 • 메인 루틴은 서브 루틴을 호출 |
서브루틴(Subroutine) | 메인 루틴에 의해 필요할 때마다 호출되는 루틴 |
(3) 소프트웨어 모듈 응집도
1. 응집도(Cohesion)의 개념
- 모듈의 독립성을 나타내는 정도로, 모듈 내부 구성요소 간 연관 정도
- 하나의 모듈은 하나의 기능을 수행할수록 응집도가 높음
2. 응집도의 유형
유형 | 설명 |
기능적 응집도 (Functional Cohesion) |
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도 |
순차적 응집도 (Sequential Cohesion) |
모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도 |
통신적 응집도 (Communication Cohesion) |
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도 |
절차적 응집도 (Procedural Cohesion) |
모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도 |
시간적 응집도 (Temporal Cohesion) |
연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도 |
논리적 응집도 (Logical Cohesion) |
유사한 성격을 갖거나 특정 형태로 분류되는 처리요소들이 한 모듈에서 처리되는 경우의 응집도 |
우연적 응집도 (Coincidental Cohesion) |
모듈 내부의 각 구성요소가 연관이 없을 경우의 응집도 |
※ 통신적 응집도는 교환적 응집도라고도 부름
- 응집도가 높아질수록 품질이 좋아짐(기능 > 순차 > 통신(교환) > 절차 > 시간 > 논리 > 우연)
(4) 소프트웨어 모듈 결합도
1. 결합도(Coupling)의 개념
- 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성
- 소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도
2. 결합도의 유형
유형 | 설명 |
자료 결합도 (Data coupling) |
• 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우의 결합도 • 한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않는 상태로 가장 바람직한 결합도 |
스탬프 결합도 (Stamp Coupling) |
• 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도 • 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도이며, 자료 구조의 어떠한 변화는 모든 모듈에 영향을 미치게 됨 |
제어 결합도 (Control Coupling) |
• 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도 • 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생하는 결합도 |
외부 결합도 (External Coupling) |
• 2개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 디바이스 인터페이스를 공유할 경우의 결합도 • 외부 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도 |
공통 결합도 (Common Coupling) |
• 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도 • 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도 |
내용 결합도 (Content Coupling) |
• 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도 • 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있는 경우의 결합도 |
- 결합도가 낮을수록 품질이 좋아짐(자료 > 스탬프 > 제어 > 외부 > 공통 > 내용)
(5) 팬인(Fan-In) 및 팬아웃(Fan-Out)
1. 팬인 및 팬아웃의 개념
- 소프트웨어의 구성요소인 모듈을 계층적으로 분석하기 위해서 팬인(Fan-In), 팬아웃(Fan-Out)을 활용함
- 팬인과 팬아웃 분석을 통하여 시스템의 복잡도를 측정할 수 있음
구분 | 팬인(Fan-In) | 팬아웃(Fan-Out) |
개념 | 어떤 모듈을 제어(호출)하는 모듈의 수 | 어떤 모듈에 의해 제어(호출)되는 모듈의 수 |
모듈 숫자 계산 | 모듈 자신을 기준으로 모듈에 들어오면 팬인(In) | 모듈 자신을 기준으로 모듈에서 나가면 팬아웃(Out) |
고려사항 | • 팬인이 높으면 재사용 측면에서 설계가 잘 되었지만, 단일 장애점 발생 가능 • 팬인이 높으면 관리 비용 및 테스트 비용 증가 |
팬아웃이 높을 경우는 불필요한 모듈 호출 여부 검토 필요하고, 단순화 여부 검토가 필요함 |
- 시스템 복잡도를 최적화하기 위해서는 팬인을 높게, 팬아웃은 낮게 설계해야 함
2. 팬인(Fan-In) 및 팬아웃(Fan-Out)의 계산 방법
팬인(Fan-In) | • 모듈 자신을 기준으로 모듈에 들어오면 팬인(In) • A : 0, B/C/D/E/G/H/I : 1, F/H : 2 |
팬아웃(Fan-Out) | • 모듈 자신을 기준으로 모듈에서 나가면 팬아웃(Out) • A : 3, B/C : 2, D/E/F/G : 1, H/I/J : 0 |
2️⃣ 모듈 테스트
☆
(1) 모듈 테스트의 개요
- 모듈 테스트를 위해 IDE(Integrated Development Environment) 도구를 활용하여 개별 공통 모듈에 대한 디버깅을 수행함
- 화이트박스 기법을 활용함
- 대표적인 단위 테스트 도구인 xUnit을 활용하여 테스트 코드를 구현함
※ 화이트박스(Whitebox) 기법 : 프로그램의 로직을 이해하고, 내부 구조와 동작을 검사하는 소프트웨어 테스트 방식
(2) 모듈 테스트의 종류
- xUnit은 자바(jUnit), C++(cppUnit), .Net(nUnit) 등 다양한 언어를 지원하는 단위 테스트 프레임워크
- 소프트웨어의 함수나 클래스 같은 서로 다른 구성 원소(단위)를 테스트할 수 있게 해주는 도구
종류 | 설명 |
jUnit | • 자바 프로그래밍 언어용 단위 테스트 도구 • 자바 코드에 주석을 달아 특별한 의미를 부여한 어노테이션(Annotation, '@' 기호)을 활용 |
CppUnit | 자바의 jUnit을 C++로 구현한 단위 테스트 도구 |
HttpUnit | 웹 브라우저 없이 웹 사이트 테스트를 수행하는 단위 테스트 도구 |
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 설계(1) (1) | 2024.08.27 |
---|---|
[정보처리기사] 서버 프로그램 구현 : 배치 프로그램 구현 (0) | 2024.08.21 |
[정보처리기사] 서버 프로그램 구현 : 개발환경 구축 (0) | 2024.08.21 |
[정보처리기사] SQL 응용 : 응용 SQL (0) | 2024.08.21 |
[정보처리기사] SQL 응용 : 데이터베이스 기본(4) (0) | 2024.08.21 |