[정처기 실기] 8. 서버 프로그램 구현

선뀰·2024년 6월 14일
0

1. 개발환경 구축

1) 개발환경 도구 분류

  • 빌드 도구 : 작성한 코드의 빌드 및 배포를 수행하는 도구/의존성 관리
  • 구현 도구 : 디버깅, 코드 작성, 수정 지원
  • 테스트 도구 : 코드의 테스트, 품질을 높이기 위해, 계획 수행
  • 형상 도구 : 산출물의 버전관리 코드와 리소스

2) 하드웨어 개발환경

  • 웹서버 : HTTP 요청/응답처리, 정적콘텐츠 처리, WEB-WAS-DB계층
  • 웹 애플리케이션 서버 : 동적 콘텐츠(Servlet, JSP)를 처리하기 위해 사용한다.
    Tomcat, Weblogic, Jeus, Resin 등 존재
  • 데이터 베이스 서버 : DBMS, Mysql, Oracle
  • 파일 서버 : 파일 저장 하드웨어로 물리저장 장치를 활용한 서버이다.
    대용량 HDD, SSD 장치가 있다.

3) 소프트웨어 개발환경

  • 운영체제 : Windows, Unix, Linux (편리하고 유용하게 사용하기위한 소프트웨어)
  • 미들웨어 : Weblogic, Websphere, Jeus, Tomcat (컴퓨터와 컴퓨터간 연결을 쉽고 안전하게)
  • DBMS : Oracle, MySql, MS-SQL (데베 저장 및 활용)

2. 형상 관리 (식통감기)

모든 항목의 변경 사항을 관리하기 위한 활동이다. 형상관리대상 파악 베이스라인 지정, 형상관리

  • 식별 : 대상을 정의 및 식별, ID와 관리번호
  • 통제 : 변경요구 관리, 변경 제어, 형상관리 등 통제 지원
  • 감사 : 소프트웨어 베이스라인 무결성 평가, 요구사항 일치여부 검토
  • 기록 : 각종 수행결과 기록

1) 형상관리 도구 유형

  • 공유폴더 방식(RCS, SCCS) : 개발이 완료된 파일은 약속된 위치의 공유폴더에 복사하는 방식
    정상 동작 여부 확인
  • 클라이언트/서버 방식(CVS, SVN) : 중앙에 버전 관리 시스템을 항시 동작 시키는 방식 이전 작업 내용 추적이 용이하다.
  • 분산저장소 방식 (Git 등) : 로컬, 원격 저장소로 분리되어 분산 저장하는 방식 커밋, 원격 저장소에 반영된다.

2) 소프트웨어 형상관리 도구별 특징

  • CVS : 서버-클라이언트 / 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 형상관리도구
  • SVN : 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구 및 저장소이다. (클라이언트 / 서버 방식)
  • RCS : 수정한사람 제한 다수의 사람이 파일의 수정을 동시에 할 수 없도록 잠금방식으로 형상관리
  • Bitkeeper : SVN과 비슷한 중앙통제 방식. 대규모프로젝트 빠른 속도를 내도록 개발된 형상관리 도구
  • Git : 분산저장
  • Clear Case : 복수 서버, 복스 클라이언트 구조, 서버가 부족할때 필요한 서버를 하나씩 추가하여 확장성을 높인다.

3. 공통 모듈 구현

1) 재사용

목표시스템의 개발 시간 및 비용 절감을 위해 검증된 기능 파악 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용하는 것이다.

  • 재공학 : 기존 소프트웨어를 버리지 않고 기능을 개선한다.
  • 재개발 : 기존 시스템을 참조해서 새로운 시스템을 개발

2) 모듈

하나의 완전한 기능을 수행 할 수 있는 독립된 실체 프로그램 작업 단위 독립성, 재사용이 가능하다.

  • 모듈화 : 재사용 가능 -> 모듈로 분해 하는 설계 및 구현 유지관리가 용이하도록 한다.
  • 루틴 : 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임(명령코드)
  • 메인루틴 : 주요부분 -> 서브루틴 호출한다.
  • 서브루틴 : 메인에 의해 필요할 때마다 호출되는 루틴

3) 소프트웨어 모듈 응집도

- 응집도 : 모듈의 독립성을 나타내는 정도이다. 모듈 내부 구성요소 간 연관정도
응집도가 높을수록 품질이 좋다.

  1. 우연적 응집도 : 모듈내부 각 구성요소가 연관이 없을 경우의 응집도
  2. 논리적 응집도 : 유사한 성격을 갖거나 한 모듈에서 처리되는 경우의 응집도
  3. 시간적 응집도 : 연관된 기능이라기 보다 특정 시간에 처리되어야 하는 활동을 한 모듈에서 처리할 경우
  4. 절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우
  5. 통신적 응집도 : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동이 모여 있을 경우
  6. 순차적 응집도 : 한 활동으로 부터 나온 출력 값을 다른 활동이 사용할 경우의 응집도
  7. 기능적 응집도 : 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우

4) 소프트웨어 모듈 결합도

- 결합도의 개념
모듈 내부가 아닌 외부의 모듈과 연관도 또는 모듈 간 상호의존성이다.
소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도이다.
결합도가 높을수록 품질이 좋다.
내용>공통>외부>제어>스탬프>자료

- 결합도의 유형
내용, 공통, 외부, 제어, 스탬프, 자료 결합도 순으로 결합도가 낮아진다.

  1. 내용 결합도 : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
    하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있다.
  2. 공통 결합도 : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도, 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
  3. 외부 결합도 : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 디바이스 인터페이스를 공유할 경우의 결합도
  4. 제어 결합도 :
  5. 스탬프 결합도 : 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
    두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도이다.
  6. 자료 결합도 : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도이다. 한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않는 상태로 가장 바람직한 결합도이다.

5) 공통 모듈 테스트

화이트박스 기법을 활용한다.

- 공통 모듈 테스트 종류

  1. jUnit : 자바 프로그래밍 언어용 단위 테스트 도구 JAVA단위 테스트 프레임워크이다.
  2. CppUnit : 자바의 jUnit을 C++로 구현한 단위 테스트 도구이다.
  3. HttpUnit : 웹 브라우저 없이 웹사이트 테스트를 수행하는 단위 테스트 도구

3. 배치 프로그램 구현

1) 배치 프로그램 유형

  • 이벤트 배치 : 사전에 정의해 둔 조건 충족 시 자동으로 실행
  • 온디맨드 배치 : 사용자의 명시적 요구가 있을 때마다 실행한다.
  • 정기 배치 : 정해진 시점(주로 야간)에 정기적으로 실행
profile
공부 기록

0개의 댓글