※학습목적으로 정리해놓은 내용입니다. 하단에 출처 표기 |
개발 도구의 분류(발구테형)
구분 | 설명 |
빌드 도구 | - 작성한 코드의 빌드 및 배포를 수행하는 도구 - 각각의 구성요소와 모듈에 대한 의존성 관리를 지원 |
구현 도구 | - 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구 - 프로그램을 개발할 때 가장 많이 사용되는 도구 |
테스트 도구 | - 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구 - 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 가능 |
형상 관리 도구 | - 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구 - 프로젝트 진행 시 필수로 포함되는 도구 |
형상 관리의 절차(식통감기)
절차 | 설명 |
형상 식별 | - 형상관리 대상을 정의 및 식별하는 활동 - 추적성 부여를 위해 ID와 관리번호를 부여 - 변경 관련 이슈 발생 시 ID와 관리번호를 이용하여 추적 |
형상 통제 | - 형상 항목의 버전 관리를 위한 형상통제위원회 운영 - 변경요구 관리, 변경제어, 형상 관리 등 통제 지원 - 베이스라인에 대한 관리 및 형상 통제 수행 가능 |
형상 감사 | - 소프트웨어 베이스라인의 무결성 평가 - 베이스라인 변경 시 요구사항과 일치 여부 검토 |
형상 기록 | - 소프트웨어 형상 및 변경관리에 대한 각종 수행결과를 기록 - 형상결과 보고서 작성 |
소프트웨어 형상 관리 도구 유형(공클분)
형상 관리 도구 유형 | 설명 |
공유 폴더 방식 (RCS, SCCS) |
- 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식 - 담당자 한 명이 매일 공유 폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상 동적 여부 확인 - 정상 독작일 경우 다음날 각 개발자들이 동작 여부 확인 |
클라이언트/서버 방식 (CVS, SVN) |
- 중앙에 버전 관리 시스템을 항시 동작시키는 방식 - 개발자들의 현재 작업 내용과 이전 작업내용 추적에 용이 - 서로 다른 개발자가 같은 파일을 작업했을 때 경고 메시지 출력 |
분산 저장소 방식 (Git 등) |
- 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식 - 중앙의 저장소에서 로컬 파일을 복사(Clone)한 순간 개발자 자신만의 로컬 저장소에 생성 - 개발 완료한 파일을 수정한 다음에 로컬 저장소에 우선적으로 커밋(Commit)한 이후, 다시 원격 저장소에 반영(Push)하는 방식 |
* JDK : 자바 애플리케이션을 구축하기 위한 핵심 플랫폼이다.
* Maven(메이븐) : Java 기반 프로젝트 관리를 목적으로 하는 빌드 도구로 컴파일, 빌드, 패키지, 테스트, 라이브러리 관리 기능이 있다.(pom.xml 활용)
* Gradle(그래들) : 그루비(Groovy)를 기반으로 한 빌드 도구로 Ant와 Maven등 이전 세대 빌드 도구의 단점을 보완하고 개선했다.
* 브랜치(Branch) : 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이다. 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스 코드를 변경할 수 있는 기능이다.
(1) 공통 모듈 구현의 개념
1. 모듈의 개념
- 모듈은 그 자체로 하나의 완전한 기능을 수행할 수 잇는 독립된 실체이다.
- 모듈화를 통해 분리된 시스템의 각 기능들로 서브프로그램, 서브 루틴, 소프트웨어 내의 단위 프로그램, 작업 단위 등과 같은 의미로 사용된다.
3. 모듈화(Modularity)의 개념 및 기법
- 모듈화는 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법이다.
기법 | 설명 |
루틴 (Routine) |
- 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임 |
메인 루틴 (Main Routine) |
- 프로그램의 주요한 부분이며, 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴 - 메인 루틴은 서브 루틴을 호출 |
서브 루틴 (Subroutine) |
- 메인 루틴에 의해 필요할 때마다 호출되는 루틴 |
* 공통 모듈(Common module) : 전체 프로그램의 기능 중 특정 기능을 처리할 수 있
는 실행 코드이다. 자체적으로 컴파일이 가능하고, 다른 프로그램에서 재사용이 가능하다.
응집도 :
모듈의 독립성을 나타내는 정도로, 모듈 내부 구성요소 간 연관 정도이다.
하나의 모듈은 하나의 기능을 수행할수록 응집도가 높다.
응집도의 유형(우논시절 통순기)
유형 | 설명 |
우연적 응집도 (Coincidental Cohesion) |
모듈 내부의 각 구성요소가 연관리 없을 경우의 응집도 |
논리적 응집도 (Logical Cohesion) |
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도 |
시간적 응집도 (Temporal Cohesion) |
연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도 |
절차적 응집도 (Procedural Cohesion) |
모듈이 다수의 관련 기능을 가질 때 모듈안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도 |
통신적 응집도 (Communication Cohesion) |
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도 |
순차적 응집도 (Sequential Cohesion) |
모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도 |
기능적 응집도 (functional Cohesion) |
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도 |
결합도 :
- 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성이다.
- 소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도이다.
결합도의 유형(내공 외제 스자)
유형 | 설명 |
내용 결합도 (Cortent Coupling) |
다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도 |
공통 결합도 (Common Coupling) |
파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도 |
외부 결합도 (Extenal Coupling) |
두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우의 결합도 |
제어 결합도 (Control Coupling) |
단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 저리를 해야 한다는 제어요소가 전달되는 경우의 결합도 |
스탬프 결합도 (Stamp Coupling) |
모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도 |
자료 결합도 (Data Coupling) |
모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도 |
* DAO(Data Access Object) : 특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체로 세부내용 노출업이 데이터를 조작하는 객체이다.
* VO(Value Object) : 간단한 엔티티를 의미하는 작은 객체 가변 클래스인 DTO와 달리 고정 클래스를 가지는 객체이다.
* DTO(Data Transfer Object) : 프로세스 사이에서 데이터를 전송하는 객체로 데이터 저장,회수 외에 다른 기능이 없는 객체이다.
* 서비스(Service) : 사용자의 요청을 처리하는 기능을 제공하기 위한 로직을 구현하고 DAO 클래스를 통해서 DB 연동을 처리하는 기능을 수행하는 클래스이다.
서버 프로그램 세부 구현 프로세스
DTO/VO 구현 - SQL 문 구현 - DAO 구현 - Service 구현 - Controller 구현
배치 프로그램의 유형(이온정)
유형 | 설명 |
이벤트 배치 | 사전에 정의해 둔 조건 충족 시 자동으로 실행 |
온디맨드 배치 | 사용자의 명시적 요구가 있을 때마다 실행 |
정기 배치 | 정해진 시점(주로 야간)에 정기적으로 실행 |
배치 스케줄러의 종류
종류 | 설명 |
스프링 배치 (Spring Batch) |
스프링 프레임워크의 DI, AOP, 서비스 추상화 등 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러 배치 애플리케이션 |
쿼츠 스케줄러 (Quartz Scheduler) |
스프링 프레임워크에 플러그인되어 수행하는 작업(Job)과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러 |
리눅스/유닉스 크론 표현식
분, 시간, 일, 월, 요일, 연도(생략가능)
쿼츠 크론 표현식
초, 분, 시간, 일, 월, 요일, 연도(생략가능)
크론 표현식 특수문자 의미
기호 | 의미 |
* | 모든 수 |
? | 해당 항목을 미사용 |
- | 기간 설정 |
, | 특정 기간 설정 |
/ | 시작시간과 반복간격 설정 |
L | 마지막 기간에 동작 |
W | 가장 가까운 평일에 동작 |
# | 몇 번째 주, 요일 설정 |
크론 표현식 특수문자 의미
0 0 12 * * ? | 매일 12시에 실행 |
0 15 10 * * ? | 매일 오전 10시 15분에 실행 |
0 * 14 * * ? | 오후 14시에서 15시 사이에 매 분마다 실행 |
0 0/5 14,20 * * ? | 매일 14시에 시작하여 14시 55분까지 5분마다 실행, 20시 정각부터 20시 55분까지 5분마다 실행 |
0 0 20 ? * MON-FRI | 매주 월요일과 금요일 사이 20시에 실행 |
0 15 10 15 * ? | 매달 15일 10시 15분에 실행 |
0 15 10 L * ? | 매달 마지막 날 10시 15분에 실행 |
0 15 10 ? * 6L 2020-2021 | 2020년부터 2021년 매달 마지막 토요일 10시 15분에 실행 |
0 15 10 15 * ? | 매달 15일 10시 15분에 실행 |
0 11 11 1 1 ? | 1월 1일 11시 11분마다 실행 |
출처 : 수제비 2021 정보처리기사 실기 Vol.1 - 도서출판 건기원
정보처리기사 실기 - 10.애플리케이션 테스트 관리 (0) | 2022.04.20 |
---|---|
정보처리기사 실기 - 9.소프트웨어 개발 보안 구축 (0) | 2022.04.03 |
정보처리기사 실기 - 7.SQL 응용 (0) | 2022.03.23 |
zap tool (0) | 2022.03.04 |
정보처리기사 실기 - 6.프로그래밍 언어 활용 (0) | 2022.03.03 |