[8과목] 개발환경 구축
개발도구의 분류 - (두음 암기법 : 빌구테형)
빌드 도구 – 작성한 코드의 빌드 및 배포를 수행하는 도구
구현 도구 – 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구
테스트 도구 – 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
형상 관리 도구 – 개발자들의 작성한 코드와 리소스 등 산출문에 대한 버전 관리를 위한 도구
서버 하드웨어 개발환경
웹 서버 – HTTP를 이용한 요청/응답을 처리
웹 어플리케이션 서버(WAS) – 동적 컨텐츠(Servlet, JSP)를 처리하기 위해 사용
데이터베이스 서버 – 데이터 수집, 저장을 위한 용도로 사용
파일 서버 – 파일 저장 하드웨어로 물리 저장장치를 활용한 서버
클라이언트 하드웨어 개발환경
클라이언트 프로그램 – 설치를 통해 사용자와 커뮤니케이션하는 프로그램
웹 브라우저 – 웹 서비스의 형태로 서버에서 웹 어플리케이션을 응답 시 브라우를 통해 사용자와 커뮤니케이션
모바일 앱 – 모바일 디바이스에 설치되어 활용되는 어플리케이션
모바일 웹 – 웹 브라우저와 동일한 형태로 모바일상 웹 브라우저를 통해 서비스 제공
소프트웨어 개발환경
운영체제 – 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
미들웨어 – 컴퓨터와 컴퓨터 간의 연결을 쉽고 안전하게 할 수 있도록 해주고 이에 대한 관리를 도와주는 소프트웨어, 자바 기반 환경에서 JVM을 설치하여 컨테이너로의 기능 주로 이용
DMBS – 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성, 데이터베이스 관리
형상 관리 목적 – 프로젝트 생명주기 동안 제품의 무결성과 변경에 대한 추적성 확보
형상관리 절차 - (두음 암기법 : 식통감기)
형상 식별 – 형상 관리 대상을 정의 및 식별하는 활동
형상 통제 – 변경요구 관리, 변경제어, 형상관리 등 통제 지원
형상 감사 – 소프트웨어 베이스라인의 무결성 평가
형상 기록 – 소프트웨어 형상 및 변경관리에 대한 각종 수행결과를 기록
*베이스라인 : 개발 과정의 각 단계의 산출물을 검토, 평가, 조정, 처리 등의 변화를 통제하는 시점의 기준
소프트웨어 형상 관리 도구 유형
공유 폴더 방식 (RCS, SCCS) - 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
클라이언트/서버 방식 (CVS, SVN) – 중앙에 버전 관리 시스템을 항시 동작시키는 방식
분산 저장소 방식 (Git 등) – 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식
소프트웨어 형상 관리 도구별 특징
CVS (Concurrent Versions System) – 서버와 클라이언트로 구성, 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 형상관리 도구
SVN – 하나의 서버에 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구
RCS (Revision Control System) – 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 이 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상을 관리하는 도구
Bitkeeper – SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 형상관리 도구
Git – 속도에 중점을 둔 분산형 버전 관리 시스템이며, 대형 프로젝트에서 효과적이고 유용
Clear Case – 복수 서버 , 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 확장
모둘 (Module) – 하나의 완전한 기능을 수행할 수 있는 독립된 실체
*.추상화 (Abstraction) : 공통의 속성이나 기능을 묶어 이름을 붙이는 것을 의미
응집도(Cohesion) - 모듈의 독립성을 나타내는 정도
우연적 (Coincidental) 응집도 : 모듈 내부의 각 구성요소가 연관이 없을 경우
논리적 (Logical) 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
시간적 (Temporal) 응집도 :특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
절차적 (Procedural) 응집도 :모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우
통신적 (Communication) 응집도 :동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있는 경우
순차적 (Sequential) 응집도 :모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
기능적 (Functional) 응집도 :모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우
※응집도 높은 순서대로 : 기순통절시 논우
응집도는 높을수록 품질이 좋다.
결합도 (Coupling) – 모듈과의 연관도 또는 모듈 간의 상호의존성
내용(Content) 결합도 : 다른 모듈 내부에 변수나 기능을 다른 모듈에서 사용하는 경우
공통 (Common) 결합도 : 파라미터가 아닌 모듈 밖에서 선언되어 있는 전역 변수를 참조하고 전역변수를 갱신하는 식으로 상호 작용하는 경우
외부 (External) 결합도 : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우
제어(Control) 결합도 : 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우
스탬프 (Stamp) 결합도 : 모듈 간의 인터페이스로 배열이나 객체, 구조 등 전달되는 경우
자료 (Data) 결합도 : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우
※결합도 높은 순서대로 : 내공외 제스자
결합도 낮을수록 품질이 좋다.
공통 모듈 테스트는 화이트박스 기법을 활용하며 대표적 단위 테스트 도구인 xUnit을 활용한다.
jUnit - 자바 프로그래밍 언어용 단위 테스트 도구
CppUnit - 자바의 jUnit을 C++로 구현한 단위 테스트 도구
HttpUnit - 웹 브라우저 없이 웹사이트 테스트를 수행하는 단위 테스트 도구
DAO (Data Access Object)
– 특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체로 세부내용 노출 없이 데이터를 조직하는 객체
VO (Value Object)
– 간단한 엔티티를 의미하는 작은 객체 가변 클래스인 DTO와 달리 고정 클래스를 가지는 객체
DTO (Data Transfer Object)
– 프로세스 사이에서 데이터를 전송하는 객체로 데이터 저장,회수 외 다른 기능이 없는 객체
서비스 (Service)
– 사용자의 요청을 처리하는 기능을 제공하기 위한 로직을 구현하고 DAO 클래스를 통해서 DB연동을 처리하는 기능을 수행하는 클래스
MVC 패턴
Model – 애플리케이션이 무엇을 할 것인지를 정의, 내부 비즈니스 로직을 처리하기 위한 역할
View – 화면에 무엇인가 보여주기 위한 역할
Controller – 모델이 어떻게 처리할지를 알려주는 역할
FAN-IN – 어떤 모듈을 제어하는 모듈의 수
FAN-OUT – 어떤 모듈에 의해 제어되는 모듈의 수
METHOD
– 매서드는 클래스에서 정의된 여러 종류의 변수들을 사용하여 정해진 기능들을 실행할 수 있어도록 코드들을 선언한 것으로 다른 곳에서 인자를 주어 호출할 수 도 있고, 정해진 자료형을 반환할 수 있다.
배치 프로그램
– 상호 작용 없이 일련의 작업들을 작업단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법
유형
이벤트 배치 – 사전에 정의해 둔 조건을 충족 시 자동으로 실행
온드맨드 배치 – 사용자의 명시적 요구가 있을 때마다 실행
정기 배치 – 정해진 시점(주로 야간)에 정기적으로 실행
배치 스케줄러
– 일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
배치 스케줄러 종류
스프링 배치
– 스프링 프레임워크의 DI, AOP, 서비스 추상화 등 스프링 프레임워크에 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러 배치 어플리케이션
쿼츠 스케줄러
– 스프링 프레임워크에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러