티스토리 뷰

 

[Note]

정보처리기사 실기 요약 정리 공유

04. 서버 프로그램 구현

 


 

01. 개발환경 구축

 

WEB의 3계층 구조

  • WEB-WAS-DB

JVM (Java Virtual Machine)

  • 시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경을 제공하는 소프트웨어.

JDK (Java Development Kit)

  • 자바 애플리케이션을 구축하기 위한 핵심 플랫폼이다.

 

02. 공통 모듈 구현

 

모듈 (Module)

  1. 개념
    • 모듈은 크게 독립된 하나의 소프트웨어 또는 하드웨어 단위를 지칭하는 용어.
    • 모듈화를 통해 분리된 시스템의 각 기능들로 서브프로그램, 서브 루틴, 소프트웨어 내의 단위 프로그램, 작업 단위 등과 같은 의미로 사용된다.
  1. 특징
    • 각각의 모듈은 상대적으로 독립성을 가지고 있다.
    • 모듈 내부에는 그 모듈을 하나로 통합하는 수많은 조합이 존재할 수 있다.
    • 모듈은 단독으로 컴파일할 수 있으며, 재사용할 수 있다.
    • 독립성이 높은 모듈일수록 모듈 수정 시에도 다른 모듈들에는 영향을 거의 미치지 않고, 오류가 발생 시에도 쉽게 해결할 수 있다.
    • 모듈의 독립성은 결합도와 응집도에 의해 측정되며, 독립성을 높이려면 모듈의 결합도는 약하게(낮게), 응집도는 강하게(높게), 모듈의 크기는 작게 만들어야 한다.

 

모듈화 (Modularity)

  • 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법.
  • 모듈을 이용하여 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법
  • 모듈화의 장점 : 개발 편의성, 복잡성 감소, 성능 향상, 유지보수 용이

 

응집도 (Cohesion)

  1. 개념
    • 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도이다.
    • 정보은닉 개념의 확장개념으로, 하나의 모듈은 하나의 기능을 수행하는 것을 의미한다.
  1. 유형 (우논시절 통순기)
    • 우연적 응집도 (응집도 가장 낮음)
    • : 모듈 내부의 각 구성요소가 연관이 없을 경우
    • 논리적 응집도
    • : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
    • 시간적 응집도
    • : 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리하는 경우
    • 절차적 응집도
    • : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우
    • 통신적 응집도
    • : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우
    • 순차적 응집도
    • : 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
    • 기능적 응집도 (응집도 가장 높음)
    • : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우
    ⇒ 응집도가 높을수록 품질도 높다.

 

결합도

  1. 개념
    • 모듈 내부가 아닌 외부의 모듈과 연관도 또는 모듈 간의 상호의존성이다.
    • 소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도다.
  1. 유형 (내공외제 스자)
    • 내용 결합도 (결합도 높음)
    • : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
    • 공통 결합도
    • : 파라미터가 아닌 모듈 밖에서 선언되어 있는 전역 변수를 참조하고, 전역 변수를 갱신하는 식으로 상호작용하는 경우
    • 외부 결합도
    • : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우
    • 제어 결합도
    • : 단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우
    • 스템프 결합도
    • : 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우
    • 자료 결합도 (결합도 낮음)
    • : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우
    ⇒ 결합도가 낮을수록 품질도 높다.

 

DAO (Data Access Object)

  • 특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체로 세부내용 노출 없이 데이터를 조작하는 객체이다.

DTO (Data Transfer Object)

  • 프로세스 사이에서 데이터를 전송하는 객체로 데이터 저장 & 회수 외에 다른 기능이 없는 객체

VO (Value Object)

  • 간단한 엔티티를 의미하는 작은 객체 가변 클래스인 DTO와는 달리 고정 클래스를 가지는 객체이다.

 

MVC 패턴

  • 애플리케이션을 Model, View, Controller의 3가지 역할로 구분한 패턴을 말한다.
  • Model : 어플리케이션이 무엇을 할 것인지를 정의. 내부 비즈니스 로직을 처리하기 위한 역할.
  • View : 화면에 무엇인가를 보여주기 위한 역할. 모델, 컨트롤러가 보여주려고 하는 것들을 화면에 처리.
  • Controller : 모델이 어떻게 처리할지를 알려주는 역할. 뷰에 명령을 보내어 화면 요청 결과를 전달.

 

Fan-In

  1. 개념
    • 어떤 모듈을 제어(호출)하는 모듈의 수
  2. 고려사항
    • 팬인이 높으면 재사용 측면에서 설계가 잘 되었지만, 단일 장애점 발생 가능.
    • 팬인이 높으면 관리 비용 및 테스트 비용이 증가함.

 

Fan-Out

  1. 개념
    • 어떤 모듈에 의해 제어(호출) 되는 모듈의 수
  2. 고려사항
    • 팬아웃이 높을 경우에는 불필요한 모듈 호출 여부 검토 필요
    • 팬아웃이 높을 경우에는 단순화 여부 검토 필요

⇒ 시스템 복잡도를 최적화하기 위해서는 팬인은 높게, 팬아웃은 낮게 설계해야 한다.

 

공통 모듈 테스트의 종류 (화메 화드스)

  1. 화이트박스 테스트
    • 프로그램의 로직을 이해하고, 내부 구조와 동직을 검사하는 소프트웨어 테스트 방식.
    • 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트 방식
    • 소스 코드를 보면서 테스트 케이스를 다양하게 만들어 테스트를 수행
  2. 메서드 기반 테스트
    • 공통 모듈의 외부에 공개된 메서드 기반의 테스트
    • 메서드에 서로 다른 파라미터 값을 호출하면서 다양한 테스트를 수행
  3. 화면 기반 테스트
    • 사용자용 화면이 있는 경우, 각각의 화면 단위로 단위 모듈을 개발 후에 화면에 직접 데이터를 입력하여 테스트를 수행
    • 화면 기반 테스트는 화면과 연계된 서비스, 비즈니스 컴포넌트 및 공통 컴포넌트를 한꺼번에 단위 테스트에 참여
    • 사용자 시나리오에 기반한 공통 모듈 테스트를 할 수 있는 장점이 있음.
  4. 테스트 드라이버 / 테스트 스텁
    • 기능을 테스트할 수 있는 화면 또는 하위 모듈이 구현되지 않은 경우 테스트 드라이버, 테스트 스텁을 통해 테스트를 수행
    • 테스트 드라이버는 하위 모듈은 있지만 상위 모듈은 없는 경우 사용하는 기법이며, 테스트 스텁은 상위 모듈은 있지만 하위 모듈은 없는 경우

 

03. 서버 프로그램 구현

 

Cron 표현식

  • 초분시일월요연
  • : 초 분 시간 일 월 요일 연도(생략가능)
  • 표현식 특수문자 의미/ : 시작 시간과 반복 간격 설정W : 가장 가까운 평일에 동작
  • \# : 몇번째 주, 요일 설정
  • L : 마지막 기간에 동작
  • \* : 모든 수
    ? : 미사용
    \- : 기간 설정 , 특정 기간 설정

 

 

 


틀린 내용이 있거나 문제가 있을시 알려주세요. 같이 공부해요 😊

이 글이 도움이 되셨다면 공감, 댓글 부탁드려요 👍🏻

댓글
«   2024/09   »
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
Total
Today
Yesterday
공지사항
최근에 올라온 글