Ⅳ. 서버 프로그램 구현 - 공통 모듈 구현.
1. 공통 모듈 구현.
공통모듈 구현 개념
모듈(Moudule) 개념
- 독립된 하나의 소프트웨어 또는 하드웨어 단위.
모듈의 특징
- 독립성
- 단독컴파일, 재사용가능
- 독립성이 높을수록 다른 모듈에 영향도 ↓, 오류 발생시 쉽게 해결 가능.
- 독립성을 높이려면 모듈결합도 낮게, 응집도 강하게, 모듈크기는 작게 제작.
모듈화
- 소프트웨어 성능을 향상시키기가 복잡한 시스템의 수정, 재사용, 유지관리 등이 용이하도록 기능단위의 모듈로 분해하는 설계∙구현하는 기법.
- 모듈화 기법
- 루틴 : 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령 모임.
- 메인 루틴 : 프로그램의 주요 부분이며, 전체의 개략적 동작절차를 표시 / 메인루틴은 서브루틴을 호출.
- 서브 루틴 : 메인 루틴에 의해 필요할때마다 호출.
공통모듈
- 전체 프로그램 기능 중 특정 기능을 처리 할 수 있는 실행코드.
- 자체컴파일 가능, 다른 프로그램에서 재사용 가능.
공통모듈 구현의 개념
- 기능을 분할, 추상화하여 성능 향상을 시키고 유지보수를 효과적으로 하기 위한 공통 컴포넌트 구현기법.
소프트웨어 모듈 응집도
응집도
- 모듈의 독립성을 나타내는 개념, 모듈내부 구성요소간 연관 정도.
응집도 유형 ( Tip. 우 논 시 절 통 순 기 )
- 우연적 응집도 : 모듈 내부 각 구성요소 연관 없음.
- 논리적 응집도 : 유사한 성격, 특정 현태로 분류.
- 시간적 응집도 : 특정 시간에 처리 되어야 하는 활동들.
- 절차적 응집도 : 모듈안 구성요소들이 기능을 순차적으로 수행.
- 통신적 응집도 : 동일한 입력 ∙ 출력을 사용하여 다른 기능을 수행하는 활동이 모임.
- 순차적 응집도 : 모듈내 한 활동의 출력값을 다른 활동이 사용.
- 기능적 응집도 - 모듈내 모든 기능이 단일 목적으로 수행.
응집도와 품질
우연적 - 논리적 - 시간적 - 절차적 - 통신적 - 순차적 - 기능적 [ 응집도 낮음(나쁜 품질) ⟹ 응집도 높음(좋은 품질) ]
소프트웨어 결합도
결합도
- 외부의 모듈과의 연관도 또는 모듈간 상호 의존성.
결합도 유형 ( Tip. 내 공 외 제 스 자 )
- 내용 결합도 : 다른 모듈의 변수나 기능을 사용.
- 공통 결합도 : 전역변수를 갱신하는 식으로 상호 작용.
- 외부 결합도 : 두개의 모듈이 외부에서 도입된 데이터 포맷, 통신프로토콜, 인터페이스 를 공유.
- 제어 결합도 : 처리할 대상인 값만이 아닌 어떻게 처리할지 제어요소가 전달되는 경우.
- 스탬프 결합도 : 모듈간 인터페이스로, 배열, 객체, 구조 등이 전달.
- 자료 결합도 : 모듈간 인터페이스 파라미터를 통해서만 상호작용.
결합도와 품질
내 용 - 공 통 - 외 부 - 제 어 - 스탬프 - 자 료 [ 결합도 높음(좋은 품질) ⟹ 결합도 낮음(나쁜 품질) ]
공통모듈 구현 절차
DTO/VO ⟶ SQL ⟶ DAO ⟶ Service ⟶ Controller ⟶ 화면구현
MVC 패턴
- 모델(Model) : 비지니스 로직 처리
- 뷰(View) : 모델컨트롤러가 보여주려는걸 화면에 처리
- 컨트롤러(Controller) : 뷰에 명령을 보내 화면 요청 결과를 전달.
팬인(Fan-In) & 팬아웃(Fan-Out)
- 시스템의 복잡도 측정
- 시스템 복잡도 최적화 : 팬인은 높게 팬아웃은 낮게 설계.
- 계산법
- 팬인 : 자신을 기준으로 들어오면 팬인(머리에 붙은 수…)
- 팬아웃 : 자신을 기준으로 나가면 팬아웃(꼬리에 붙은수…)
2. 공통 모듈 테스트
공통모듈 테스트
- 화이트 박스 기법 이용
- JUnit 활용, 테스트 코드 구현
* 화이트 박스 테스트 로직을 이해하고, 내부 구조와 동작을 검사하는 소프트웨어 테스트 방식.
공통모듈 테스트 종류 ( Tip. 화 메 화 드 스 )
- 화이트박스 테스트 : 응용프로그램 내부 구조와 동작을 검사하는 SW 테스트 방식
- 메서드 기반 테스트 : 외부에 공개된 메서드 가반의 테스트
- 화면 기반 테스트 : 화면에 직접 입력하여 테스트 수행
- 테스트 드라이버 / 테스트 스텁
- 테스트 드라이버 : 하위모듈은 있으나 상위 모듈이 없는경우 수행
- 테스트 스텁 : 상위모듈은 있지만 하위모듈은 없는경우 수행
JUnit :공통 모듈 테스트 구현에 사용
- 구현절차
- JUnit 생성
- JUnit 코드 작성
- JUnit 실행
- JUnit 결과 확인
- JUnit 어노테이션
- @Test : 테스트 메소드 선언
- @Before : 테스트 메소드(@Test) 실행 전 실행
- @After : 테스트 메소드(@Test) 실행 후 실행
- @BeforeClass : 테스트 메소드(@Test)보다 먼저 딱 한번 실행
- @AfterClass : 단위 테스트 맨 마지막에 수행되어야 할 경우 지정
- @Ignore : 테스트에서 제외할 메서드 선언
- Assert 메서드
- assertEquals(a, b); : 객체 a와 b가 일치함을 확인
- assertEquals(a, b, c); : 객체 a와 b가 일치함을 확인 (a:예상값, b:결과값, c:오차범위)
- assertSame(a, b); : 객체 a와 b가 같은 객체임을 확인
- assertTrue(a); : 조건 a가 참인지 여부를 확인
- assertNotNull(a); : 객체 a가 null이 아님을 확인
- assertArrayEquals(a, b) : 배열 a와 b가 일치함을 확인
- 정보처리기사 필기 합격 후 실기대비 정리 및 책없이 간단히 보기위해 작성하였습니다.
- 2020년 수제비 정보처리기사 책 기반으로 정리 하였습니다.
- 저작권 관련 문제가 있다면 hojunbbaek@gmail.com 으로 메일 주시면 바로 삭제 조치 하도록 하겠습니다.
[정보처리기사 실기] Ⅳ. 서버 프로그램 구현 - 공통 모듈 구현. (feat.수제비)