정보처리기사 정리
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) 결합도 | 모듈 간의 인터페이스가 자료 요소로만 구성 |
응집도는 높을수록, 결합도는 낮을수록 좋음.