서버 프로그램 구현
작성일
형상관리 도구
형상 통제
- 형상 항목의 버전 관리를 위해서 변경 여부와 변경 활동을 통제하는 활동
빌드 도구
- 작성한 코드의 빌드 및 배포를 수행하는 도구
- 각각의 구성요소와 모듈에 대한 의존성 관리를 지원
구현 도구
- 코드의 작성과 디버깅, 수정 등과 같은 작업과 구현소프트웨어가 어떤 프로그래밍 언어로 개발되는지 선택
- 프로그램을 개발할 때 가장 많이 사용되는 도구
테스트 도구
- 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
- 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 가능
- 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구
- 프로젝트 진행 시 필수로 포함되는 도구
형상 관리 도구
- 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위해 사용되는 도구
웹 서버
- HTTP를 이용한 요청/응답을 처리
- 웹 상의 정적 콘텐츠(CSS, JS, Image)를 처리
- 주요 제품으로 Apache 웹 서버, IIS 웹 서버, GWS, Nginx 등 존재
웹 애플리케이션 서버
- 동적 콘텐츠(Servlet, JSP)를 처리하기 제공하기 위해 사용
- 주요 제품으로 Tomcat, Weblogic, Jeus, Resin 등 존재
데이터베이스 서버
- 데이터의 수집, 저장을 위한 용도로 사용
- 연계되는 주요 DBMS로 MySql, Orcale, MS-SQL, DB2 등 존재
파일 서버
- 물리 저장장치를 활용한 서버
- 대용량 HDD, SDD 등의 장치가 존재
클라이언트 프로그램
- 설치를 통해 사용자와 커뮤니케이션하는 프로그램
- VS, C#, Delphi 등으로 개발되어 사용
웹 브라우저
- 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션
- 일반적인 형태의 웹 사이트가 해당
모바일 앱
- 모바일 디바이스에 설치되어 활용되는 애플리케이션
- App Sotre, Android Market 등을 통해 다운로드 가능
모바일 웹
- 웹 브라우저와 동일한 형태로 모바일상 웹 브라우저를 통해 서비스 제공
- 모바일에 최적화되어 제공되는 웹사이트가 해당
웹 애플리케이션 서버(WAS)
- 동적 컨텐츠(Servlet, JSP)를 처리하기 제공하기 위해 사용
- 주요 제품으로 Tomcat, Weblogic, Jeus, Resin 등 존재
운영체제
- 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
- 프로젝트의 성격에 따른 운영체제 사용
미들웨어
- 웹 서비스는 WEB, WAS 서버를 설치하여 사용자 요구사항에 적합한 서비스 제공
- 자바 기반 환경에서 JVM을 설치하여 컨테이너로의 기능을 주로 이용
DBMS
- 데이터의 저장 및 활용을 위해 DBMS를 설치
- 사용자의 요청에 따라 DBMS 제품을 선택
결합도
- 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 묘둘 간의 상호의존성
응집도
- 모듈의 독립성을 나타내는 정도로, 모듈 내부 구성요소 간 연관 정도
우연적 응집도
- 모듈 내부의 각 구성요소들이 연관이 없을 경우
논리적 응집도
- 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
시간적 응집도
- 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
절차적 응집도
- 모듈이 다수의 관련 기능을 가질 때 모듈안의 구성요소들이 그 기능을 순차적으로 수행할 경우
통신적 응집도
- 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우
순차적 응집도
- 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
기능적 응집도
- 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우
내용 결합도
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
공통 결합도
- 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우
외부 결합도
- 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유하는 경우
제어 결합도
- 단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우
스탬프 결합도
- 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우
자료 결합도
- 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우
Model
- 애플리케이션이 무엇을 할 것인지를 정의
- 내부 비즈니스 로직을 처리하기 위한 역할
Controller
- Model이 어떻게 처리할지를 알려주는 역할
- View에 명령을 보내어 화면 요청 결과를 전달
View
- 화면에 무엇인가를 보여주기 위한 역할
- Model, Controller가 보여주려고 하는 것들을 화면에 처리
화이트박스
- 응용 프로그램의 내부구조와 동작을 검사하는 소프트웨어 테스트 방식
루틴
- 소프트웨어에서 특정 동작을 수행하는 일련의 코드로서 기능을 가진 명령들의 모임
백엔드
- 사용자와 만나지 않고 프론트엔드와 연동하여 핵심 로직을 처리하는 영역
- DB나 인터페이스 등을 통해 시스템 구성 실체에 접근
프론트엔드
- 사용자의 화면에 나타나는 웹 화면 영역
- 웹 페이지를 그리는 기술 활용
Mybatis
- 객체지향 언어인 자바의 관계형 DB 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임워크
DAO
- 특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체로 세부내용 노출 없이 데이터 조작
DTO
- 프로세스 사이에서 데이터를 전송하는 객체로 데이터 저장, 회수 외에 다른 기능 없음
VO
- 간단한 엔티티를 의미하는 작은 객체 가변 클래스인 DTO와 달리 고정 클래스를 가짐
배치 프로그램
- 사용자와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법
스프링 배치
- 스프링 프레임워크의 DI, AOP, 서비스 추상화 등 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러
쿼츠 스케줄러
- 스프링 프레임워크에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러
빌드 도구
- 작성한 코드의 빌드 및 배포를 수행하는 도구
- 각각의 구성요소와 모듈에 대한 의존성 관리를 지원
구현 도구
- 코드의 작성과 디버깅, 수정 등과 같은 작업과 구현 소프트웨어가 어떤 프로그래밍 언어로 개발되는지 선택
- 프로그램을 개발할 때 가장 많이 사용되는 도구
테스트 도구
- 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
- 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 가능
형상 관리 도구
- 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구
- 프로젝트 진행 시 필수로 포함되는 도구
모듈
- 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체
웹 서버
- HTTP를 이용한 요청/응답을 처리
- 웹상의 정적 콘텐츠를 처리
- 주요 제품으로 Apache, IIS, Google, Web Server, Nginx 등 존재
웹 애플리케이션 서버
- 동적 콘텐츠를 처리하고 제공하기 위해 사용
- 주요 제품으로 Tomcat, Weblogic, Jeus, Resin 등 존재
데이터베이스 서버
- 데이터의 수집, 저장을 위한 용도로 사용
- 연계되는 주요 DBMS로 MySql, Oracle, MS-SQL, DB2 등 존재
파일 서버
- 파일 저장 하드웨어로 물리 저장장치를 활용한 서버
- 대용량 HDD, SDD 등의 장치가 존재
클라이언트 프로그램
- 설치를 통해 사용자와 커뮤니케이션하는 프로그램
- Visual Basic, C#, Delphi 등으로 개발되어 사용
웹 브라우저
- 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션
- 일반적인 형태의 웹 사이트가 해당
모바일 앱
- 모바일 디바이스에 설치되어 활용되는 애플리케이션
- 앱 스토어, 안드로이드 마켓 등을 통해 다운로드 가능
모바일 웹
- 웹 브라우저와 동일한 형태로 모바일상 웹 브라우저를 통해 서비스를 제공
- 모바일에 최적화되어 제공되는 웹 사이트가 해당
미들웨어
- 컴퓨터와 컴퓨터 간의 연결을 쉽고 안전하게 할 수 있도록 해주고 이에 대한 관리를 도와주는 소프트웨어
- 자바 기간 환경에서 JVM을 설치하여 컨테이너로의 기능을 주로 이용
소프트웨어 형상 관리
- 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
형상 식별
- 형상 관리 대상을 정의 및 식별하는 활동
- 추적성 부여를 위해 ID와 관리번호를 부여
- 변경 관련 이슈 발생 시 ID와 관리번호를 이용하여 추적
형상 통제
- 형상 항목의 버전 관리를 위한 형상통제위원회운영
- 변경요구 관리, 변경제어
- 베이스라인에 대한 관리
형상 감사
- 소프트웨어 베이스라인의 무결성 평가
- 베이스라인 변경 시 요구사항과 일치 여부 검토
형상 기록
- 소프트웨어 항상 및 변경관리에 대한 각종 수행결과를 기록
- 형상결과 보고서 작성
소프트웨어 형상 관리 베이스라인
- 개발 과정의 각 단계의 산출물을 검토, 평가, 조정, 처리 등 변화를 통제하는 시점의 기준
추상화
- 추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려내는 기법
응집도
- 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도이다.
- 정보은닉 개념의 확장개념으로, 하나의 모듈은 하나의 기능을 수행하는 것을 의미한다.
모듈화
- 소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리를 용이하게 하여 프로그램을 효율적으로 관리할 수 있도록 시스템을 분해하고 추상화하는 기법
스텁
- 다른 프로그래밍 기능을 대리하는 코드
- 기존 코드를 흉내 내거나, 아직 개발되지 않은 코드를 임시로 대치하는 역할을 수행
- 모듈 및 모든 하위 컴포넌트를 대신하는 더미모듈이다.
MVC 패턴
- 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 패턴
Mybatis
- 객체지향 언어인 자바의 관계형 DB 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임워크이다.
DAO
- 특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체로 세부내용 노출 없이 데이터 조작
DTO
- 프로세스 사이에서 데이터를 전송하는 객체로 데이터 저장, 회수 외에 다른 기능 없음
VO
- 간단한 엔티티를 의미하는 작은 객체 가변 클래스인 DTO와 달리 고정 클래스를 가짐
JVM
- 자바 바이트 코드를 실행할 수 있는 주체로 CPU나 운영체제 종류와 무관하게 동작하는 것을 보장하는 가상머신
배치 프로그램
- 사용자와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 저해진 규칙에 따라 일괄처리하는 프로그램
스프링 배치
- 스프링 프레임워크의 DI, AOP, 서비스 추상화 등 스프링프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 배치 애플리케이션
쿼츠 스케줄러
- 스프링 프레임워크에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러