소프트웨어를 기능 단위로 분해하여 구현하는 기법
결합도를 줄이고 응집도를 높여 모듈의 독립성을 높임
FAN-OUT 최소화, FAN-IN 증가
화이트박스 테스트
모듈 내부의 소스 코드를 보면서 테스트를 진행
메소드(함수) 기반 테스트
메소드에 파라미터 값을 다양하게 입력하여 원하는 출력값이 나오는지 확인
파라미터 == 동작을 수행하기 위해 값을 전달한다
JUnit - Java 기반의 단위 모듈 테스트 도구
CppUnit - C++용 testing Framework
unittest - Python에 포함된 다양한 테스트를 자동화할 수 있는 기능이 포함되어 있는 표준 라이브러리
HttpUnit - Http서버와 프로그램을 통해 상호작용을 할 수 있는오픈 소스 자바 라이브러리
IDE 도구의 개념(CASE도구)
소프트웨어 개발에 필요한 많은 도구의 기능을 하나의 패키지로 묶은 것
코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어
이클립스, vscode, 인텔리제이, 엑스코드
협업 도구의 개념
여러 사용자가 각기 별개의 작업 환경에서 통합된 하나의 프로젝트를 도잇에 수행할 수 있도록 도와주는 소프트웨어
소프트웨어 생명주기 동안 발생하는 변경사항을 통제하기 위한 관리 방법
소프트웨어 변경사항을 체계적으로 추적하고 통제 하는 것
변경관리
소스의 변경 상황을 관리
문서의 변경 이력과 복원 등의 기능이 제공
버전관리
변경을 관리하기 위한 효과적인 방법
체크인, 체크아웃, 릴리즈, 퍼블리싱의 과정을 버전으로 관리할 수 있다.
형상관리
변경관리와 버전관리가 포함되고, 프로젝트 진행상황, 빌드와 릴리즈까지 모두 관리할 수 있는 통합 시스템 (기획, 디자인, 개발)
형상 식별 -> 형상 통제 -> 형상 감사 -> 형상 기록
CCB(Configuration Control Board)
형상관리 통제 위원회
형상 식별
형상 항목은 단순히 소스파일 뿐만 아니라 산출물, 개발이력, 개발과정에서 작성되는 문서까지 모두 포함
형상 통제
소프트웨어 형상 변경 요청을 검토하고 승인하여 현재의 베이스라인에 반영될 수 있도록 통제
형상 감사
형상 항목의 변경이 계획에 따라 제대로 이뤄졌는지를 검토하고 승인
형상 기록
베이스라인 산출물에 대한 변경과 처리 과정에서의 변경을 모두 기록
변경 요청
변경이 발생할 경우, 미리 정의된 양식을 이용하여 담당자에게 제출
변경 심사
형상 담당자가 CCB의 등급을 결정하고 소집
변경에 대한 승인/기각을 결정
변경 실시
변경 대상을 식별하고 Repository에서 산출물 체크아웃
변경 확인
변경된 내용을 확인한다.