3 분 소요

개발환경 구축

개발 도구 분류

  • 빌드 도구

작성한 코드의 빌드 및 배포를 수행하는 도구 (Ant, Maven, Gradle)

  • 구현 도구

코드의 작성과 디버깅, 수정 등과 같이 작업 시 사용되는 도구 (Eclipse, InteliJ, VS)

  • 테스트 도구

코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구 (xUnit, PMD, Sonar)

  • 형상 관리 도구

산출물에 대한 버전관리를 위한 도구 (Git, SVN, CVS)

서버 하드웨어 개발환경

  • 웹 서버

HTTP를 이용한 요청/응답을 처리 (Apache 웹서버, 구글 웹서버)

  • 웹 애플리케이션 서버(WAS)

동적 콘텐츠를 처리하고 제공하기 위해 사용 (Tomcat, Jeus, Resin)

  • 데이터베이스 서버

데이터의 수집, 저장을 위한 용도로 사용 (MySql, Oracle, MS-SQL)

  • 파일 서버: 파일 저장 하드웨어로 물리 저장 장치를 활용한 서버(HDD, SSD)

소프트웨어 개발환경

  • 운영체제

사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어

  • 미들웨어

웹 서버, JVM과 같은 개발 환경의 구성요소로 활용

  • DBMS

데이터의 저장 및 활용을 위해 DBMS를 설치

형상 관리(Configuration Management)

소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동

  • 형상 관리 절차

형상식별(대상정의) → 형상 통제(버전관리) → 형상 감사(무결성) → 형상 기록(보고서)

소프트웨어 형상 관리 도구 유형

  • 공유 폴더 방식

매일 개발이 완료된 파일은 약속된 우치의 공유 폴더에 복사하는 방식 (RCS, SCCS)

  • 클라이언트/서버 방식

중앙에 버전 관리 시스템을 항시 동작시키는 방식 (CVS, SVN)

  • 분산 저장소 방식

로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식 (Git)

소프트웨어 형상 관리 도구별 특징

  • CVS(Concurrent Versions System)

서버와 클라이언트로 구성되어있고, 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 형상 관리 도구

  • SVN(Subversion)

하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구

  • RCS(Revision Control System)

소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일을 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상을 관리하는 도구

  • Bitkeeper

중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 형상 관리 도구

  • Git

속도에 중점을 둔 분산형 버전 관리 시스템, 대형 프로젝트에서 효과적이고 유용함

  • Clear Case

복수 서버, 복수 클라이언트 구조, 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있음

공통 모듈 구현

모듈(Module)

하나의 완전한 기능을 수행할 수 있는 독립된 실체

모듈화(Modularity)

프로그램 개발 시 생산성과 최적화, 관리에 용이하게 기능 단위로 분할하는 기법

  • 모듈화 원리: 정보은닉, 분할과 정복, 데이터 추상화, 모듈 독립성

응집도(Cohesion)

모듈의 독립성을 나타내는 정도로, 모듈 내부 구성요소 간 연관 정도

  • 응집도 유형: 우연적 응집도, 논리적 응집도, 시간적 응집도, 절차적 응집도, 통신적 응집도, 순차적 응집도, 기능적 응집도

결합도(Coupling)

외부 모듈과의 연관도 또는 모듈 간의 상호의존성. 모듈간의 관련성을 측정하는 척도

  • 결합도 유형: 내용 결합도, 공통 결합도, 외부 결합도, 제어 결합도, 스탬프 결합도, 자료 결합도

=> 응집도는 높을수록 좋고, 결합도는 낮을수록 좋다.

공통 모듈 구현 절차: DTO/VO → SQL → DAO → Service → Controller → 화면 구현

  • DTO(Data Transfer Object)

프로세스 사이에서 데이터를 전송하는 객체

  • VO(Value Object)

고정 클래스를 가지는 객체

  • DAO(Data Access Object)

특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체

팬인(Fan-In) 및 팬아웃(Fan-Out)

  • Fan-In

어떤 모듈을 제어하는 모듈의 수 / 모듈 자신을 기준으로 모듈에 들어오면 팬인

  • Fan-Out

어떤 모듈에 의해 제어 되는 모듈의 수 / 모듈 자신을 기준으로 모듈에서 나가면 팬아웃

  • 시스템 복잡도를 최적화하기 위해 팬인은 높게, 팬아웃은 낮게 설계 해야한다.

공통 모듈 테스트

IDE 도구를 활용하여 개별 공통 모듈에 대한 디버깅을 수행

  • 통합 개발 환경(IDE: Intergrated Developmnet Enviroment)

개발에 필요한 다양한 틀을 하나의 인터페이스로 통합 하여 제공하는 환경 (도구: Eclipse, VS, Android Studio, IDEA)

공통 모듈 테이스 종류

  • 화이트박스 테스트

소스 코드를 보면서 테스트 케이스를 다양하게 만들어 테스트

  • 메서드 기반 테스트

공통 모듈의 외부에 공개된 메서드 기반 테스트

  • 화면 기반 테스트

화면단위로 단위모듈을 개발 후에 화면에 직접 데이터를 입력하여 테스트

  • 테스트 드라이버/테스트 스텁 활용 테스트기능을 테스트할 수 있는 화면 또는 하위 모듈이 구현되지 않은 경우
    • 테스트 드라이버(Test Driver): 하위 모듈은 있지만 상위 모듈은 없는 경우 사용
    • 테스트 스텁(Test Stub): 상위 모듈은 있지만 하위 모듈은 없는 경우 사용

Junit

자바 프로그래밍 언어용 단위테스트 도구

배치 프로그램 구현

배치 프로그램(Batch Program)

사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법

배치 프로그램 유형

  • 이벤트 배치

사전에 정의해 둔 조건 충족 시 자동으로 실행

  • 온디맨드 배치

사용자의 명시적 요구가 있을 때마다 실행

  • 정기 배치

정해진 시검에 정기적으로 실행

배치 스케줄러(Batch Scheduler)

일괄 처리(Batch Processing) 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원하는 도구

배치 스케줄러 종류

  • 스프링 배치(Spring Batch)

오픈 소스 프레임워크

  • 쿼츠 스케줄러(Quartz Scheduler)

수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 일괄 처리 작업에 유연성을 제공(오픈 소스 라이브러리)

Corn 표현식

크론 표현식을 통해 배치 수행 시간을 시간 및 주기 등으로 설정

  • 리눅스/유닉스 크론 표현식: 분, 시간, 일, 월, 요일, 연도
  • 쿼츠 크론 표현식: 초, 분, 시간, 일, 월, 요일, 연도

🔔포스팅 공지
개인 공부 기록용 블로그 입니다.
잘못된 부분이 있을 시 메일이나 댓글로 지적해주시면 감사드리겠습니다 :)

댓글남기기