1. 개발환경 구축
개발환경 구축
개발도구의 분류
빌드 도구 + 구현 도구 + 테스트 도구 + 형상 관리 도구
테빌구형
=데빌구의 형
소프트웨어 개발 환경
- 운영체제: 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
- 미들웨어: 컴퓨터 간의 연결을 쉽고 안전하게 하도록 하는 소프트웨어
- DBMS: 사용자와 DB사이에서 DB를 관리해주는 소프트웨어
형상 관리
- 공유 폴더 방식: 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
- 클라이언트/서버 방식: 중앙에 버전 관리 시스템을 항시 동작시키는 방식
- 분산 저장소 방식: **로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식
공클분
2. 공통 모듈 구현
공통 모듈 구현
공통 모듈 구현의 개념
- 모듈의 개념: 모듈은 그 자체로 완전한 기능을 수행할 수 있는 독립된 실체
소프트웨어 모듈 응집도
- 응집도(Cohesion) 개념
응집도는 모듈의 독립성을 나타내는 정도로, 모듈 내부 구성요소 간 연관 정도이다.
- 응집도 유형
우연적(coincidental) 응집도: 모듈 내부의 각 요소가 연관이 없을 경우
논리적(Logical) 응집도: 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
시간적(Temporal) 응집도: 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
절차적(Procedure) 응집도: 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
통신적(Communication) 응집도: 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
순차적(Sequntial) 응집도: 모듈 내에서 한 활동으로 부터 나온 출력값이 다음 활동의 입력 데이터로 사용될 경우
기능적(Funcional) 응집도(good): 모듈 내부의 모든 기능들이 단일한 목적을 위해 수행되는 응집도
우논시절통순기
소프트웨어 모듈 결합도
- 결합도(Coupling)의 개념
모듈 내부가 아닌 외부의 모듈간의 연관도 또는 모듈 간의 상호의존성
- 결합도의 유형
자료(Data) 결합도(good): 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 결합도
스탬프(Stamp) 결합도: 배열과 객체 등의 자료구조 등이 전달되는 결합도
제어(Control) 결합도: 논리적인 흐름을 제어하기 위해 제어 요소가 전달되는 결합도
외부(Extrenal) 결합도: 외부에서 선언한 변수를 참조할 떄 결합도
공통(Common) 결합도: 파라미터가 아닌 모듈 밖에 선언되어 있는 전역변수로 상호작용하는 결합도
내용(Content) 결합도: 다른 모듈 내부에 존재하는 변수, 기능을 직접 참조하는 경우의 결합도
자스제외공내
MVC 패턴
Model + View + Controller
팬인/팬아웃
시스템 복잡도를 최적화하기 위해서는 팬인은 높게, 팬아웃은 낮게 설계해야 한다.
공통 모듈 테스트
공통 모듈 테스트의 종류
- 화이트박스 테스트
- 소스 코드의 흐름, 조건문, 루프 및 기타 내부로직 확인
- 개발자에 의해 수행
- 메서드 기반 테스트
- 개별 메서드를 독립적으로 테스트하는 단위 테스트의 일환
- 각 메서드에 대해 입력을 설정하고, 예상 결과가 나오는지 확인
- 화면 기반 테스트'
- 사용자 인터페이스(UI)를 테스트
- 사용자가 화면을 통해 상호작용하는 모든 요소(버튼, 메뉴, 폼 등)을 테스트
- UI가 올바르게 기능하고 사용자의 경험을 저해하지 않도록 보장하는게 목표
- 테스트 드라이버/테스트 스텁
테스트 드라이버: 하위모듈은 있지만, 상위 모듈이 없을 때 사용-> 하위 모듈 테스트(하드)
테스트 스텁: 상위 모듈은 있지만, 하위 모듈이 없을 떄 사용-> 상위 모듈 테스트
배치 프로그램 구현
배치 프로그램 구현
배피 프로그램의 종류
이벤트 배치 + 온디맨드 배치 + 정기 배치
이온정
배치 스케줄러의 개념
일괄 처리를 위해 주기적으로 발생하는 일을 지원하는 도구
배치 스케줄러의 종류
- 스프링 배치: 대용량 처리를 제공하는 스케줄러 배치 애플리케이션
- 쿼츠 스케줄러: 스프링 프레임워크에 플러그인 되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러