정보처리기사 정리

4 서버 프로그램 구현

blackmilktea 2024. 4. 17. 19:48

1. 개발환경 구축

개발 도구 분류

  • 빌드 도구: 작성한 코드의 빌드 및 배포(Ant, Maven, Gradle)
  • 구현 도구: 코드의 작성과 디버깅, 수정(Eclipse, InteliJ, VS)
  • 테스트 도구: 코드의 기능 검증, 전체적인 품질 향상(xUnit, PMD, Sonar)
  • 형상 관리 도구: 산출물에 대한 버전 관리(Git, SVN, CVS)

서버 하드웨어 개발환경

  • 웹 서버: HTTP를 이용한 요청, 응답 처리(Apache 웹 서버, Google 웹 서버)
  • 웹 애플리케이션(WAS): 동적 컨텐츠를 처리하고 제공(Tomcat, Jeus, Resin)
  • DB 서버: 데이터 수집, 저장(MySql, Oracle, MS-SQL)
  • 파일 서버: 파일 저장 하드웨어, 물리 저장 장치를 활용한 서버(HDD, SSD)

소프트웨어 개발 환경

  • 운영체제: 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
  • 미들웨어: 웹 서버, JVM(자바가상머신)과 같은 개발 환경의 구성요소로 활용
  • DBMS: 데이터의 저장 및 활용을 위해 DBMS를 설치

형상 관리(Configuration Management)

소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동

  • 형상 관리 절차: 식별(대상정의) -> 통제(버전관리) -> 감사(무결성) -> 기록(보고서)

소프트웨어 형상 관리 도구 유형

  • 공유 폴더 방식: 약속된 위치의 공유 폴더에 복사(RCS, SCCS)
  • 클라이언트/서버 방식: 중앙에 버전 관리 시스템을 항시 동작(CVS, SVN)
  • 분산 저장소 방식: 로컬 저장소와 원격 저장소로 분리해 분산 저장(Git)

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

  • CVS(Concurrent Versions System): 서버와 클라이언트로 구성, 다수의 인원이 동시에 범용적인 운영체제로 접근 가능
  • SVM(Subversion): 하나의 서버에서 소스를 쉽고 유용하게 관리
  • RCS(Revision Control System): 소스 파일의 수정을 한 사람으로 제한, 다수의 사람이 파일 수정을 동시에 할 수 없도록 파일 잠금 방식
  • Bitkeeper: 중앙 통제 방식, 대규모 프로젝트에서 빠른 속도를 내도록 개발됨.
  • Git: 속도에 중점을 둔 분산형 버전 관리 시스템, 대형 프로젝트에서 효과적이고 유용
  • Clear Case: 복수 서버, 복수 클라이언트 구조, 필요한 서버를 하나씩 추가해 확장성을 기할 수 있음

2. 공통 모듈 구현

모듈(Module)

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

모듈화(Modularity)

프로그램 개발 시 생산성과 최적화, 관리에 용이하게 기능 단위로 분할하는 기법

원리: 정보은닉, 분할과 정복, 데이터 추상화, 모듈 독립성

◆ 응집도(Cohesion)

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

우논시절통순기 - 낮음 -> 높음, 응집도는 높을수록 좋음

기능적(Functional) 응집도 모듈 내부의 모든 기능 요소가 단일 문제와 연관
순차적(Sequential) 응집도 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활통의 입력 데이터로 사용
통신/교환적(Communication) 응집도 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행
절차적(Procedural) 응집도 모듈 안의 구성 요소들이 기능을 순차적으로 수행
시간적(Temporal) 응집도 특정 시간에 처리되는 몇 개의 기능을 모은 하나의 모듈
논리적(Logical) 응집도 유사한 성격, 특정한 형태로 분류되는 처리 요소들을 하나의 모듈로 형성
우연적(Coincidental) 응집도 모듈 내부의 각 구성 요소들이 서로 관련 없는 구성

◆ 결합도(Coupling)

외부 모듈과의 연관도 또는 모듈 간의 상호 의존성, 관련성을 측정하는 척도

내공공외스데 - 높음 -> 낮음, 결합도는 낮을수록 좋음.

내용(Content) 결합도 한 모듈이 다른 모듈의 내부 기능 및 자료를 직접 참조하거나 수정
공통/공유(Common) 결합도 공유되는 공통 데이터 영역을 여러 모듈이 사용
외부(External) 결합도 어떤 모듈에서 선언한 데이터(변수)를 외부에서 참조
제어(Control) 결합도 - 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어
- 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 하위 모듈이 상위 모듈에게 처리 명령을 내리는 권리 전도 현상이 발생
스탬프/검인(Stamp) 결합도 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달
데이터/자료(Data) 결합도 모듈 간의 인터페이스가 자료 요소로만 구성

응집도는 높을수록, 결합도는 낮을수록 좋음.