[정보처리기사 실기] Ⅳ. 서버 프로그램 구현 - 공통 모듈 구현

Ⅳ. 서버 프로그램 구현 - 공통 모듈 구현.


1. 공통 모듈 구현.

공통모듈 구현 개념

모듈(Moudule) 개념
  • 독립된 하나의 소프트웨어 또는 하드웨어 단위.
모듈의 특징
  • 독립성
  • 단독컴파일, 재사용가능
  • 독립성이 높을수록 다른 모듈에 영향도 ↓, 오류 발생시 쉽게 해결 가능.
  • 독립성을 높이려면 모듈결합도 낮게, 응집도 강하게, 모듈크기는 작게 제작.

모듈화
  • 소프트웨어 성능을 향상시키기가 복잡한 시스템의 수정, 재사용, 유지관리 등이 용이하도록 기능단위의 모듈로 분해하는 설계∙구현하는 기법.
  • 모듈화 기법
    • 루틴 : 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령 모임.
    • 메인 루틴 : 프로그램의 주요 부분이며, 전체의 개략적 동작절차를 표시 / 메인루틴은 서브루틴을 호출.
    • 서브 루틴 : 메인 루틴에 의해 필요할때마다 호출.

공통모듈
  • 전체 프로그램 기능 중 특정 기능을 처리 할 수 있는 실행코드.
  • 자체컴파일 가능, 다른 프로그램에서 재사용 가능.

공통모듈 구현의 개념
  • 기능을 분할, 추상화하여 성능 향상을 시키고 유지보수를 효과적으로 하기 위한 공통 컴포넌트 구현기법.


소프트웨어 모듈 응집도

응집도
  • 모듈의 독립성을 나타내는 개념, 모듈내부 구성요소간 연관 정도.
응집도 유형 ( Tip. 우 논 시 절 통 순 기 )
  • 연적 응집도 : 모듈 내부 각 구성요소 연관 없음.
  • 리적 응집도 : 유사한 성격, 특정 현태로 분류.
  • 간적 응집도 : 특정 시간에 처리 되어야 하는 활동들.
  • 차적 응집도 : 모듈안 구성요소들이 기능을 순차적으로 수행.
  • 신적 응집도 : 동일한 입력 ∙ 출력을 사용하여 다른 기능을 수행하는 활동이 모임.
  • 차적 응집도 : 모듈내 한 활동의 출력값을 다른 활동이 사용.
  • 능적 응집도 - 모듈내 모든 기능이 단일 목적으로 수행.

응집도와 품질
 우연적 - 논리적 - 시간적 - 절차적 - 통신적 - 순차적 - 기능적
[ 응집도 낮음(나쁜 품질)    ⟹     응집도 높음(좋은 품질) ] 


소프트웨어 결합도

결합도
  • 외부의 모듈과의 연관도 또는 모듈간 상호 의존성.

결합도 유형 ( Tip. 내 공 외 제 스 자 )
  • 용 결합도 : 다른 모듈의 변수나 기능을 사용.
  • 통 결합도 : 전역변수를 갱신하는 식으로 상호 작용.
  • 부 결합도 : 두개의 모듈이 외부에서 도입된 데이터 포맷, 통신프로토콜, 인터페이스 를 공유.
  • 어 결합도 : 처리할 대상인 값만이 아닌 어떻게 처리할지 제어요소가 전달되는 경우.
  • 탬프 결합도 : 모듈간 인터페이스로, 배열, 객체, 구조 등이 전달.
  • 료 결합도 : 모듈간 인터페이스 파라미터를 통해서만 상호작용.

결합도와 품질
   내 용 - 공 통 - 외 부 - 제 어 - 스탬프 - 자 료
[ 결합도 높음(좋은 품질)   ⟹   결합도 낮음(나쁜 품질) ] 


공통모듈 구현 절차

DTO/VO ⟶ SQL ⟶ DAO ⟶ Service ⟶ Controller ⟶ 화면구현
MVC 패턴
  • 모델(Model) : 비지니스 로직 처리
  • 뷰(View) : 모델컨트롤러가 보여주려는걸 화면에 처리
  • 컨트롤러(Controller) : 뷰에 명령을 보내 화면 요청 결과를 전달.


팬인(Fan-In) & 팬아웃(Fan-Out)
  • 시스템의 복잡도 측정
  • 시스템 복잡도 최적화 : 팬인은 높게 팬아웃은 낮게 설계.
  • 계산법
    • 팬인 : 자신을 기준으로 들어오면 팬인(머리에 붙은 수…)
    • 팬아웃 : 자신을 기준으로 나가면 팬아웃(꼬리에 붙은수…)


2. 공통 모듈 테스트

공통모듈 테스트
  • 화이트 박스 기법 이용
  • JUnit 활용, 테스트 코드 구현
* 화이트 박스 테스트
  로직을 이해하고, 내부 구조와 동작을 검사하는 소프트웨어 테스트 방식.


공통모듈 테스트 종류 ( Tip. 화 메 화 드 스 )
  • 이트박스 테스트 : 응용프로그램 내부 구조와 동작을 검사하는 SW 테스트 방식
  • 서드 기반 테스트 : 외부에 공개된 메서드 가반의 테스트
  • 면 기반 테스트 : 화면에 직접 입력하여 테스트 수행
  • 테스트 라이버 / 테스트
    • 테스트 드라이버 : 하위모듈은 있으나 상위 모듈이 없는경우 수행
    • 테스트 스텁 : 상위모듈은 있지만 하위모듈은 없는경우 수행

JUnit :공통 모듈 테스트 구현에 사용
  • 구현절차
    1. JUnit 생성
    2. JUnit 코드 작성
    3. JUnit 실행
    4. 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 으로 메일 주시면 바로 삭제 조치 하도록 하겠습니다.