정보처리기사 필기 준비하며 정리한 내용입니다.
단위 모듈—단위 테스트
📌단위 모듈 구현
단위모듈 : 하나의 모듈. 하나의 일처리 단위!
개념
- 소프트웨어를 기능 단위로 분해하여 구현하는 기법
- 각 모듈이 독립적으로 활용될 수 있게 구현
- 모듈은 크기가 작고 하나의 일만을 수행하도록, 읽기 쉽도록 만들어야
- 모듈은 최대한 작게 만들어야!
장점
- 오류의 파급효과 최소화
- 모듈 재사용으로 개발 및 유지보수가 용이!
효과적인 모듈화
- 결합도를 줄이고 응집도를 높여 모듈의 독립성을 높임! ⭐
- FAN-OUT 최소화, FAN-IN 증가
단위 모듈 설계의 원리 ⭐
- 단계적 분해 : 처음엔 간단히 작성 → 점점 세밀히 작성
- 추상화 : 복잡한 문제 일반화 → 이해하기 쉽도록
- 독립성 : 응집도는 높이고 결합도를 낮춰
- 정보은닉 : 내부 데이터는 외부에 은폐 - 캡슐화와 관련 있다
- 분할과 정복 : 큰 문제를 작게 나눠 하나씩 해결
📌단위 모듈 테스트
개발자가 수행하는 테스트
개념
= 단위 테스트
- 정적테스트를 중점으로 하지만 동적 테스트도 수행한다
- IDE 도구를 활용하여 디버깅한다
- 장점
- 모듈 통합이 더 쉬워진다
방법
- 화이트박스 테스트
- 모듈 내부의 소스 코드 보며
- 메소드(함수) 기반 테스트
- 메소드에 파라미터 값 다양하게 입력하여 원하는 출력값 나오는지 확인
- 화면 기반 테스트
- 화면 단위로 데이터 입력하며 테스트
단위 테스트 자동화 도구
- JUnit : Java 기반의 단위 모듈 테스트 도구
- CppUnit : **C++**용 테스팅 프레임워크
- unittest : Python
- HttpUnit : HTTP 서버와 프로그램 통해 상호작용 할 수 있는 오픈소스 자바 라이브러리
소프트웨어 개발 도구
IDE 도구
Integrated Development Environment
예전엔 각 기능을 하는 도구가 따로 있었다. 그걸 편리하게 통합한 것이 IDE 도구!
CASE 도구의 일종 (소프트웨어를 만들도록 도와주는 도구가 CASE 도구이기 때문에)
- 종류
- JAVA : 이클립스, intelliJ(유료) 등
- Visual Studio : MS 관련된 것
- X Code : Mac 용
협업 도구
- 기능
- 전사관리
- 프로젝트 관리
- 캘린더, 타임라인, 간트차트, 대시보드 등
- 간트차트 : 막대그래프(가로)로 작업 세분화 시킨 것. 타임라인과 비슷
- 자체 드라이브 공간
- 문서 공유
- 커뮤니케이션
- 다국어지원
- 이해관계자들이 다양하기 때문에!
- 타 협업툴 간 연동 지원
- 예를 들어 슬랙과 깃허브가 연동된다
빌드 자동화 도구
- 빌드 테스트 배포를 반자동으로 수행하는 도구
- 라이브러리 버전 자동 동기화 pom.xml
🔻빌드 자동화 프로세스
- 개발자들이 형상관리 서버로 코드를 커밋
- CI서버는 빌드스크립트에서 설명서를 갖고 온다
- 외부의 어느 라이브러리를 가져올지 정한다
- 형상관리 서버에서 소스를 가져온다
- CI 서버는 테스트서버에서 테스트 완료 후 실 서버로 알아서 올린다
🔻빌드 자동화 도구 종류
- Make
- 유닉스
- Ant
- 빌드스크립트에 가깝다. 요즘 잘 안쓴다.
- Maven
- with Jenkins
- 라이브러리 자동 다운! 빌드스크립트 같은 것
- Jenkins
- 서블릿 컨테이너에서 실행된다 = 자바로 만들었다는 뜻
- Gradle
- Groovy를 기반으로 한다
- 안드로이드 앱 개발 환경에서 사용
변경+버전관리→형상 관리
✅변경관리, 버전관리를 포함하는 것이 형상관리!
- 변경관리
- 원초적인 기능
- 변경 상황 관리
- 원초적인 기능
- 버전관리
- 변경된 것에 버전을 두는 것
- 형상관리
- 전체를 포괄
- 프로젝트 진행상황, 빌드, 릴리즈까지 모두 관리 가능!
- 계속 바뀌는 것이 형상 관리 대상!
📌버전 관리
버전관리 도구 유형
- 클라이언트/서버 방식
- 중앙 버전 관리 시스템
- CVS
- 아주 오래되어 불편하다. 요즘엔 쓰지 않는다. 인가된 사용자가 파일에 접근할 수 있다.
- SVN
- CVS의 단점보완
- 원본과의 차이점을 저장한다
- Clear Case
- 유료
- 분산 저장소 방식
- 로컬-원격 두개로 관리
- Git
- 시간차가 0.
- BitKeeper
버전 관리 주요 용어
- Repository : 저장소
- Checkout : Repo에서 로컬로 프로젝트 복사
- Commit : 로컬의 변경된 내용을 Repo에 저장
- Update : Repo에 있는 내용을 로컬에 반영
- Add : 로컬에서 새로운 파일이 추가되었을 때 Repo에 등록
- Trunk : Root 프로젝트
- Branch : Root 프로젝트에서 파생된 프로젝트
- Merge : Branch에서 진행하던 작업을 Root 프로젝트와 합침
- Diff : 파일의 비교
재난 복구 전략 시 성과 지표
RTO : 중단시점부터 복구가동까지의 시간 목표
RPO : 재해 발생 시 데이터 손실 수용 허용 지점
MTD : 장애 시 업무가 정지 상태 허용하는 최대 시간
백업과 복구를 위한 전략
- 풀-이미지 백업 : 전체 다 백업
- 차등 백업 : 누적 백업
- 증분 백업 : 점차적 백업
📌형상 관리
형상 관리 도구 ⭐⭐⭐
- 소프트웨어의 변경 사항을 체계적으로 관리하는 것
- 필요성
- 소스코드를 이전 상태로 되돌릴 경우
- 변경 이력 확인
- 충돌 해결 등
- SVN, Git 등
형상 관리 절차 ⭐⭐⭐
- 형상관리 기법
- 순서 : 형상식별 → 통제 → 감사 → 기록
- 형상식별 ⭐
- 대상 구분, 번호 부여
- 릴리즈 노트까지 포함됨
- 형상통제 ⭐
- 형상에 대한 변경 요청을 감지하여, 현재의 베이스라인에 반영될 수 있도록 통제한다.
- CCB 승인을 통해야 한다
- CCB 형상관리 통제 위원회
- 치프 프로그래머팀과는 다른 개념이다 (이들은 최고 개발자)
- 변경 승인, 확인을 하여 변경 허용-실시를 담당
- CCB 형상관리 통제 위원회
- 절차
- 변경 요청
- 변경 심사 (CCB가)
- 변경 실시 : 변경 대상을 식별하고, Repository에서 산출물 Checkout(=땡겨온다!)
- 변경 확인
- 형상 감사
- 형상 기록/보고