해당 포스팅 시리즈는 학교에서 배운 소프트웨어공학 지식(리팩토링, 디자인 패턴, 테스팅)을
실제 코드로 한 번 적용해보는 과정을 담을 예정입니다.
#안드로이드 리팩토링 태그로 한눈에 보기 쉽게 개제할 예정입니다.
프로젝트 자체의 관점
프로그래밍 언어
오픈소스로 된 프로젝트 중에서 팀원 모두가 다뤄본 언어로 이루어져 있고,
수업시간에 배웠던 JUnit 및 기타 지식을 활용하기 위해서 java로 된 프로젝트를 선정하였습니다.
규모
팀원 5명이 함께 프로젝트를 수행해야 하기 때문에 어느 정도 규모가 있어야 했습니다.
저희는 그 기준을 commit 수로 정하였고, 1000개 이상의 커밋을 가진 프로젝트를 선정하였습니다.
저희가 선정한 프로젝트인 termux의 커밋은
2022년 6월 15일 현재 기준 master 브랜치에 1362개의 commit을 가지고 있습니다.
사용 여부
현재까지도 활발하게 개발되고 있고, 사람들에게도 사용되고 있는 프로젝트이면
더욱 기여할 수 있는 바가 크지 않을까라고 생각하였습니다.
그래서 계속적으로 commit이 되고 있고, fork 및 star의 수가 너무 적지 않은 프로젝트를 선정하였습니다.
star 수는 10k, fork 수는 1k를 기준으로 삼았습니다.
수행 난이도
프로젝트를 수행하기 위해서는 대략적인 코드의 이해가 필요합니다.
그래서 직접 실행해보며 확인하기 편리한 안드로이드 프로젝트를 선정하였습니다.
또한 코드를 훑어봤을 때 어느 정도의 가독성이 있어서 readable 한 프로젝트를 선정하였습니다.
Contribution
컨트리뷰션을 처음 해보는 입장에서는 어떤 방식으로 진행해야 할지 상당히 막막합니다.
하지만 해당 레포에서는 Commit 메시지의 형식 등 컨트리뷰션을 위한 자세한 안내사항이 정리되어 있었습니다.
또한 Contributor도 또한 60여 명으로 폐쇄적인 프로젝트가 아님을 알게 되었고,
그래서 해당 프로젝트를 선정하였습니다.
실제로 진행한 프로젝트의 주소
GitHub - termux/termux-app: Termux - a terminal emulator application for Android OS extendible by variety of packages.
Termux - a terminal emulator application for Android OS extendible by variety of packages. - GitHub - termux/termux-app: Termux - a terminal emulator application for Android OS extendible by variet...
github.com
수행해야 하는 프로젝트의 관점
해당 프로젝트를 정하고 나면, 연달아서 리팩토링, 디자인 패턴 적용, 테스팅을 수행해야 합니다.
따라서 해당 부분 또한 고려해야 했습니다.
아래 부분은 조교님께서 참고하라고 알려주신 부분입니다.
리팩토링
- 수행할 수 있는 리팩토링 종류의 다양성
- 설명한 리팩토링에 대한 Metric 기반의 당위성
ex) PMD / CheckStyle / Findbugs
디자인 패턴
- 기존 프로젝트의 문제점과 패턴 간의 패턴 적절성
- 패턴을 적용했을 때의 이점에 대한 패턴 타당성 : 패턴을 위한 패턴이 되지 않도록 합니다.
(굳이 적용할 필요 없는 패턴을 끼워 맞춰 넣기는 자제하도록 합니다) - 패턴 정확성
- 패턴 다양성 : 아무래도 실무보다는 학습에 가깝기 때문에 다양한 패턴을 써보는 것을 목표로 하였습니다.
테스팅
- 테스트 대상 선정 적절성
- 설계 기법, TC(Test Case) 적절성
- 설계에 따른 구현, 난이도 고려
공통
- 각 팀원 별로 맡아서 진행할 수 있는 프로젝트의 크기 및 복잡도에 대한 적절성
댓글