서버 프로그램 구현

작성일

형상관리 도구

형상 통제

  • 형상 항목의 버전 관리를 위해서 변경 여부와 변경 활동을 통제하는 활동

빌드 도구

  • 작성한 코드의 빌드 및 배포를 수행하는 도구
  • 각각의 구성요소와 모듈에 대한 의존성 관리를 지원

구현 도구

  • 코드의 작성과 디버깅, 수정 등과 같은 작업과 구현소프트웨어가 어떤 프로그래밍 언어로 개발되는지 선택
  • 프로그램을 개발할 때 가장 많이 사용되는 도구

테스트 도구

  • 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
  • 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 가능
  • 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구
  • 프로젝트 진행 시 필수로 포함되는 도구

형상 관리 도구

  • 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위해 사용되는 도구

웹 서버

  • 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대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 배치 애플리케이션

쿼츠 스케줄러

  • 스프링 프레임워크에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러