[정처기]서버 프로그램 구현(1)

Inung_92·2023년 7월 10일
1

정처기

목록 보기
5/7
post-thumbnail

개발환경 구축

⚡️ 개발환경 구축의 개념

📖개발도구 및 서버 선정과 개발에 사용되는 도구 등을 확인

⚡️ 개발 도구의 분류

📖구현도구 / 테스트 도구 / 형상관리 도구 / 빌드 도구

  • 구현 도구 : Eclipse / Intellij / Spring Tool Suite 등
  • 테스트 도구 : xUnit / PMD / Findbugs / Cppcheck 등
  • 형상관리 도구 : CVS / Subvision / Git
  • 빌드 도구 : Ant / Gradle / Maven

⚡️ 개발환경 구성요소

🖥️ 하드웨어 개발환경

  • 서버 하드웨어 개발환경 : 웹 서버 / 웹 애플리케이션 서버 / 데이터베이스 서버 / 파일 서버
    • 웹 서버 : HTTP 이용 / 정적 콘텐츠 처리 / WEB_WAS_DB의 3계층 구조
    • 웹 애플리케이션 서버 : 동적 콘텐츠 처리 / Tomcat, Weblogic, Jeus 등
    • 데이터베이스 서버
    • 파일서버 : 물리 저장 장치를 활용 / HDD, SSD 등
  • 클라이언트 하드웨어 개발환경 : UI 제공 / 프로그램 / 웹 브라우저 / 모바일 앱 등

🖥️ 소프트웨어 개발환경

운영체제 / 미들웨어 / DBMS

  • 운영체제 : Windows / Linux / Unix
  • 미들웨어 : Weblogic / Tomcat / Jeus 등
  • DBMS : Oracle / Mysql / postgreSql 등

🖥️ 형상관리

  • 형상관리의 개념 : 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리
  • 형상관리 목적 : 가시성 / 추적성 / 무결성 등 품질 보증 보장
  • 형상관리의 절차 : 식별 / 통제 / 감사 / 기록
    • 형상식별 : 정의 및 식별 / ID 관리번호 부여 / ID 관리번호 이용 추적
    • 형상통제 : 형상통제위원회 운영 / 변경요구 관리 / 베이스라인에 대한 관리
    • 형상감사 : 베이스라인의 무결성 평가 및 변경 시 요구사항 일치 여부 검토
    • 형상기록 : 각종 수행결과 기록 / 보고서 작성
  • 소프트웨어 형상 관리 도구 유형
    • 공유폴더 방식(RCS, SCCS)
    • 클라이언트/서버 방식(CVS, SVN)
    • 분산 저장소 방식(Git)
      -소프트웨어 형상 관리 도구별 특징
    • CVS : 동시에 범용적인 운영체제로 접근 가능
    • SVN : 하나의 서버에서 소스를 유용하게 관리 / 소스 중복 등 여러 문제 해결
    • Git : 속도에 중점 / 커밋과 푸시 동작
    • RCS : 소스 파일의 수정을 한 사람만으로 제한 / 파일 잠금 방식
    • Bitkeeper : SVN과 비슷 / 대규모 프로젝트에서 빠름
    • Clear Case : 복수 서버, 복수 클라이언트 구조

공통 모듈 구현

⚡️ 재사용

🖥️ 재사용의 개념

📖개발 시간 및 비용 절감을 위해 검증된 기능을 파악 및 재구성하여 시스템에 응용하기 위한 최적화

🖥️ 재사용의 종류

📖재공학 / 재개발

  • 재공학 : 기존 소프트웨어의 기능을 개선시키거나 새로운 소프트웨어로 재활용
  • 재개발 : 완전히 새로운 소프트웨어를 개발하거나 기존 시스템에 새로운 기능을 추가

🖥️ 재사용 규모에 따른 분류

함수와 객체 / 컴포넌트 / 애플리케이션

⚡️ 공통 모듈 구현의 개념

🖥️ 모듈의 개념

📖하나의 완전한 기능을 수행 할 수 있는 독립된 실체

🖥️ 모듈의 특징

  • 상대적으로 독립성을 가짐
  • 모듈 내부에는 수많은 조합 존재
  • 단독으로 컴파일 및 재사용 가능
  • 모듈 수정 시 다른 모듈에 미치는 영향이 거의 없으며 오류 해결 용이
  • 결합도 약하게 / 응집도 강하게 / 모듈의 규모는 작게

🖥️ 모듈화의 개념 및 기법

📖기능 단위의 모듈로 분해하는 설계 및 구현 기법

  • 루틴 : 특정 동작을 수행하는 기능을 가진 명령들의 모임
  • 메인루틴 : 전체의 개략적인 동작 절차를 표시
  • 서브루틴 : 메인 루틴에 의해 호출

🖥️ 공통 모듈 구현의 개념

📖추상화하여 성능을 향상시키고 유지보수성 높이기 위한 공통 컴포넌트 구현 기법

⚡️ 소프트웨어 모듈 응집도

🖥️ 응집도의 개념(높게)

📖모듈의 독립성을 나타내는 정도로 구성요소 간 연관정도

🖥️ 응집도의 유형

📖우연적 / 논리적 / 시간적 / 절차적 / 통신적 / 순차적 / 기술적 응집도

  • 우연적(Coincidental) : 구성요소 간 연관이 없을 경우
  • 논리적(Logical) : 유사한 성격 / 특정 형태로 분류
  • 시간적(Iemporal) : 특정 시간에 처리되어야 하는 활동
  • 절차적(Procedural) : 다수의 관련 기능을 가질 때 순차적으로 수행
  • 통신적(Communitacion) : 동일한 입력과 출력 사용
  • 순차적(Sequential) : 출력값을 다른 활동이 사용
  • 기술적(Functional) : 모든 기능이 단일한 목적

⚡️ 소프트웨어 모듈 결합도

🖥️ 결합도의 개념(낮게)

📖외부의 모듈과의 연관도 또는 상호의존성 정도

🖥️ 결합도의 유형

📖내용 / 공통 / 외부 / 제어 / 스탬프 / 자료 결합도

  • 내용(Content) : 변수나 기능을 다른 모듈에서 사용하거나 참조 할 때
  • 공통(Common) : 전역변수를 참조 및 갱신 / 공통 데이터 영역
  • 외부(External) : 외부 데이터 포맷, 통신 프로토콜, 디바이스 인터페이스 공유
  • 제어(Control) : 내부 논리 조직을 제어하기 위해 제어신호 이용
  • 스탬프(Stamp) : 배열이나 객체, 구조 등 전달
  • 자료(Data) : 파라미터를 통해서만 모듈 간 상호작용

⚡️ 공통 모듈 구현 대상

📖화면모듈 / 서비스 컴포넌트 / 비즈니스 트랜잭션 컴포넌트 등

⚡️ 팬인(Fan-In) 및 팬아웃(Fan-Out)

🖥️ 개념

📖모듈을 계층적으로 분석하기 위한 개념

  • 팬인 : 제어하는 모듈의 수 / 모듈 자신 기준 들어오면 Fan-In
  • 팬아웃 : 제어되는 모듈의 수 / 모듈 자신 기준 나가면 Fan-Out

공통 모듈 테스트

⚡️ 공통 모듈 테스트 개념

📖IDE 도구 활용 디버깅 수행 및 화이트박스 테스트 활용

⚡️ 공통 모듈 테스트 종류

📖jUnit / CppUnit / HttpUnit

  • jUnit : Java 단위 테스트 프레임워크
  • CppUnit : C++로 구현한 단위 테스트 도구
  • HttpUnit : 웹사이트 테스트 수행을 위한 단위 테스트 도구

배치 프로그램

⚡️ 배치 프로그램의 개념

📖사용자와 상호 작용 없이 정기적으로 반복 수행 또는 정해진 규칙에 따라 일괄 처리

⚡️배치 프로그램의 유형

📖온디맨드 배치 / 이벤트 배치 / 정기 배치

  • 온디맨드 배치 : 사용자의 명시적 요구
  • 이벤트 배치 : 특정 조건 충족 시
  • 정기 배치 : 정해진 시점

⚡️ 배치 스케줄러

🖥️ 배치 스케줄러의 개념

📖일괄 처리를 지원하는 도구

🖥️ 배치 스케줄러의 종류

📖스프링 배치 / 쿼츠 스케줄러

  • 스프링 배치 : DI, AOP, 추상화 등 3대 요소를 모두 사용하는 대용량 처리 애플리케이션
  • 쿼츠 스케줄러 : 작업과 실행 스케줄을 정의하는 등 유연성을 제공하는 오픈소스 스케줄러

Cron 표현식 : 교재 참고

profile
서핑하는 개발자🏄🏽

0개의 댓글