DevBlackCat
정보처리기사 필수 학습: 모듈 구현 완전정복!! 본문
728x90
모듈구현
단위모듈구현의 개념
- 기능별로 구현하는 방식 (계산기에서 + , - * ,/ 기능 개발)
- 각 모듈은 독립적으로 기능하며 하나의 작업만 수행
- 가독성,구현,용이성을 제공
효과적인 모듈화
- 결합도 감소 , 응집도 증가로 독립성강화
- FAN-OUT은 최소 FAN-IN은 증가 ( FAN-IN : 다른부서가 우리팀을 존나게 필요로함 , FAN-OUT : 우리팀이 다른팀없인 일을 못함)
- FAN-IN: 하나의 모듈이 얼마나 많은 다른 모듈로부터 호출을 받는지를 나타냅니다.
- FAN-OUT: 하나의 모듈이 얼마나 많은 다른 모듈을 호출하는지를 나타냅니다.
- 인터페이스의 복잡성 및 중복성 감소 , 일관성 증가
이전에 했지만 다시 알아야할 사항 !! (응집도 ,결합도)
응집도 개념 ★★ ( Cohesion )
- 모듈내부에서 구성요소간 밀접한 관계를 맺고있는정도
- 응집도가 높을수록 필요한 요소들로 구성되어 있다.
분류 | 설명 |
기능적 응집도 (Functional Cohesion) (제일 높음) | 모듈내부의 모든 기능이 단일 목적으로 수행 |
순차적 응집도 (Sequential Cohesion) | 모듈내에서 한활동으로 나온 출력값을 다른활동이 사용 |
통신적 응집도 (Communicational Cohesion) | 동일한 입력과 출력을 사용해서 다른기능을 수행하는 활동이 모여있는경우 |
절차적 응집도 (Procedural Cohesion) | 모듈이 다수 기능을 가질떄 모듈 구성요소들이 순차적으로 처리되는 경우 |
시간적 응집도 (Temporal Cohesion) | 특정 시간에 처리되어야 하는 활동을을 한모듈에서 처리하는 경우 |
논리적 응집도 (Logical Cohesion) | 유사한 성격이나 특정형태로 분류된 경우 |
우연적 응집도 (Coincidental Cohesion) | 연관이 없을 경우 |
우리 놀(논)던시절 통통한순대 기가 막혔지
우연적응집도 < 논리적응집도<시간적응집도<절차적응집도<통신적음식접<순차적 응집도<기능적 응집도
결합도(Coupling )
- 모듈과 모듈간 관련성/의존성
- 관련이 적어야 독립성이 높아 모듈간 영향이 줄어든다
분류 | 설명 |
자료결합도 (Data Coupling) (가장 낮음) |
모듈 간의 인터페이스로 값이 전달되는 경우 |
스탬프 결합도 (Stamp Coupling) | 모듈간의 인터페이스로 배열이나 오브젝트 등이 전달되는 경우 |
제어 결합도 (Control Coupling) | 단순 처리할 대상인 값만 전달하는 게 아니라 어떻게 처리해야 한다는 제어요소가 전달되는 경우 |
외부 결합도 (External Coupling) | 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조하는 경우 |
공통 결합도 (Common Coupling) | 파라미터가 아닌 모듈 밖에서 선언되어 있는 전역변수를 참조하고 전역변수를 갱신하는 식으로 상호작용 (두모듈이 동일한 전역데이터를 접근한다면 공통겹합) |
내용 결합도 (Content Coupling) (제일높음) |
다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우 (함수끼리 엮여 있음) (하나의 모듈이 직접적으로 다른모듈을 참조) |
자료=데이터
데스형 제외저래 공유랑 내가 닮았대
자료(데이터)결합도<스탭프결합도<제어결합도<외부결합도<공통 결합도<내용 결합도
단위모델 구현
단위 모듈 설계의 원리
원리 | 설명 |
단계적 분해 | 단순한 형태로 시작하여 점진적으로 상세화 |
추상화 | 복잡한 문제를 간단하고 일반적인 형태로 변환 |
독립성 | 높은 응집도와 낮은 결합도로 모듈의 독립성 강화 |
정보 은닉 | 모듈 내부 데이터 및 로직의 외부로부터의 보호 |
분할과 정복 | 큰 문제를 작은 부분으로 나누어 해결 |
단위 모듈 테스트
- 모듈이 정상작동 하는지 확인하는 과정
- 코드의 정적 분석과 모듈의 동적실행을 통한 테스트 포함
방법 | 설명 |
화이트박스 테스트 | 코드를 직접 확인하면서 내부 로직의 올바름을 검증 |
메서드(함수) 기반 테스트 | 다양한 입력값을 통해 메서드의 출력이 예상과 일치하는지 확인 |
화면 기반 테스트 | 사용자 인터페이스를 통한 입력과 상호작용을 검증 |
단위 테스트 자동화 도구
도구 | 설명 |
JUnit | Java를 위한 단위 테스트 프레임워크 |
CppUnit | C++ 언어를 위한 단위 테스트 프레임워크 |
Unittest | Python의 표준 라이브러리 중 하나로, 자동화된 테스트를 지원 |
HttpUnit | HTTP 서버와의 상호작용을 테스트할 수 있는 자바 라이브러리 |
728x90
'정보처리기사 > 소프트웨어 개발' 카테고리의 다른 글
정보처리기사: 소프트웨어 패키징 완전정복!! (0) | 2024.10.28 |
---|---|
정보처리기사:통합구현 관리 완전 정복!! (0) | 2024.10.25 |
정보처리기사 필수 학습: 쿼리 성능 측정과 소스코드 인스펙션 완전정복!! (0) | 2024.10.24 |
정보처리기사 필수 학습: 프로시저와 ORM 완전 정복!! (0) | 2024.10.24 |
정보처리기사 필수 학습: 자료 구조- 비선형구조 완전 정복! (0) | 2024.10.22 |