[정보처리기사] 실기 8단원 '서버 프로그램 구현' 정리
형상 통제
: 형상 항목의 버전 관리를 위해서 변경 여부와 변경 활동을 통제하는 활동
개발 도구 분류 (빌구테형)
빌드 도구 | - 작성한 코드의 빌드 및 배포를 수행하는 도구 - 각각의 구성요소와 모듈에 대한 의존성 관리를 지원 |
구현 도구 | - 코드의 작성과 디버깅, 수정 등과 같은 작업과 구현소프트웨어가 어떤프로그래밍 언어로 개발되는지 선택 - 프로그램을 개발할 때 가장 많이 사용되는 도구 |
테스트 도구 | - 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구 - 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 기능 |
형상 관리 도구 | - 개발자들이 작성한 코드의 리소스 등 산출물에 대한 버전 관리를 위한도구 - 프로젝트 진행 시 필수로 포함되는 도구 ex) Svn, Git |
서버 하드웨어 개발환경
웹 서버 | - HTTP를 이용한 요청/응답을 처리 - 웹 상의 정적 콘텐츠(CSS, JS, image)를 처리 ex) Apache 웹 서버, IIS 웹 서버, Google Web Server, Nginx |
웹 애플리케이션 서버 (WAS) | - 동적 콘텐츠(Servlet, JSP)를 처리하기 제공하기 위해 사용 ex) Tomcat, Weblogic, Jeus, Resin |
데이터베이스 서버 | - 데이터 수집, 저장을 위한 용도로 사용 - 연계되는 주요 DBMS로 MySql, Oracle, MS-SQL, DB2 |
파일 서버 | - 물리 저장장치를 활용한 서버 - 대용량 HDD, SDD 등의 장치가 존재 |
클라이언트 하드웨어 개발환경
클라이언트 프로그램 | - 설치를 통해 사용자와 커뮤니케이션하는 프로그램 ex) Visual Basic, Delphi |
웹 브라우저 | - 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션 - 웹 사이트 |
모바일 앱 | - 모바일 디바이스에 설치되어 활용되는 애플리케이션 - App Store, Android market에서 다운 가능 |
모바일 웹 | - 웹 브라우저와 동일한 형태로 모바일상 웹 브라우저를 통해 서비스를 제공 - 모바일에 최적화되어 제공되는 웹사이트가 해당 |
소프트웨어 개발환경
운영체제 | - 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어 |
미들웨어 | - 웹 서비스는 WEB, WAS 서버를 설치하여 사용자 요구사항에 적합한서비스 제공 - 자바 기반 환경에서 JVM을 설치하여 컨테이너로의 기능을 주로 이용 |
DBMS | - 데이터의 저장 및 활용을 위해 DBMS를 설치 |
응집도 ((낮음 : 나쁜 품질) -> 우논시절 통순기 -> (높음 : 좋은 품질))
- 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도
- 정보은닉 개념의 확장개념으로, 하나의 모듈은 하나의 기능을 수행하는 것을 의미
우연적 응집도 (Coincidental) |
각 구성요소가 연관이 없을 경우 |
논리적 응집도 (Logical) |
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서처리 |
시간적 응집도 (Temporal) |
특정 시간에 처리되어야 하는 활동들 |
절차적 응집도 (Precedural) |
기능을 순차적으로 수행할 경우의 응집도 |
통신적 응집도 (Communication) |
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동 |
순차적 응집도 (Sequential) |
모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우 |
기능적 응집도 (Functional) |
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우 |
결합도 ((높음 : 낮은 품질) -> 내공 외제 스자 -> (낮음 : 높은 품질))
내용 결합도 (Content) |
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우 - 직접적으로 다른 모듈의 내용 참조 |
공통 결합도 (Common) |
- 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신 |
외부 결합도 (External) |
- 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우 |
제어 결합도 (Control) |
- 다른 모듈의 내부 논리 조직을 제어하기 위한 목적 - 권리 전도 현상이 발생 |
스탬프 결합도 (Stamp) |
- 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우 - 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도 |
자료 결합도 (Data) |
- 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우 - 한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않는다. |
공통 모듈 테스트
- 공통 모듈 테스트를 위해 통합 개발환경 또는 IDE(Integrated Development Environment) 도구를 활용하여 개별 공통 모듈에 대한 디버깅(Debugging)을 수행
- 공통 모듈 태스트는 화이트박스 기법을 활용
- 대표적인 단위 테스트 도구인 jUnit을 활용하여 테스트 코드를 구현
모듈
: 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체
형상 관리
: 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
형상 관리의 절차 (식통감기)
형상 식별 | - 형상 관리 대상을 정의 및 식별하는 활동 - 추적성 부여를 위해 ID와 관리번호를 부여 - 변경 관련 이슈 발생 시 ID와 관리번호를 이용해 추적 |
형상 통제 | - 형상 항목의 버전 관리를 위한 형상통제위원회 운영 - 변경요구 관리, 변경제어 - 베이스라인에 대한 관리 |
형상 감사 | - 소프트웨어 베이스라인의 무결성 평가 - 베이스라인 변경 시 요구사항과 일치 여부 검토 |
형상 기록 | - 소프트웨어 향상 및 변경관리에 대한 각종 수행결과를 기록 - 형상결과 보고서 작성 |
베이스 라인
: 개발과정의 각 단계별 산출물을 검토, 평가, 조정, 처리 등의 변화를 통제하는 시점의 기준
추상화(Abstraction)
: 공통의 속성이나 기능을 묶어 이름을 붙이는 것으로, 객체 지향적 관점에서는 클래스를 정의하는 것이 추상화
모듈화
: 소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리를 용이하게 하여 프로그램을 효율적으로 관리할 수 있도록 시스템을 분해하고 추상화 하는 기법
테스트 스텁(Stub) 또는 스텁
- 다른 프로그래밍 기능을 대리하는 코드
- 기존 코드를 흉내 내거나, 아직 개발되지 않은 코드를 임시로 대치하는 역할을 수행
- 모듈 및 모든 하위 컴포넌트를 대신하는 더미 모듈
MVC 패턴
: 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 패턴
모델 (Model) |
- 애플리케이션이 무엇을 할 것인지를 정의 - 내부 비즈니스 로직을 처리하기 위한 역할 |
뷰 (View) |
- 화면에 무엇인가를 보여주기 위한 역할 - 모델, 컨트롤러가 보여주려고 하는 것들을 화면에 처리 |
컨트롤러 (Controller) |
- 모델이 어떻게 처리할지를 알려주는 역할 - 뷰에 명령을 보내어 화면 요청 결과를 전달 |
배치 프로그램
: 사용자와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄처리하는 프로그램
DAO (Data Access Object) |
특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체로 세부내용 노출 없이 데이터 조작 |
DTO (Data Transfer Object) |
프로세스 사이에서 데이터를 전송하는 객체로 데이터 저장 / 회수 외에 다른 기능 없음 |
VO (Value Object) |
간단한 엔티티를 의미하는 작은 객체 가변 클래스인 DTO와 달리 고정 클래스를 가짐 |
배치 스케줄러
스프링 배치 (Spring Batch) |
스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러 배치 애플리케이션 |
쿼츠 스케줄러 (Quartz Scheduler) |
스프링 프레임워크에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러 |