
팀프로젝트을 시작 할 때
개발 일정 및 리소스 배분
개발목표와 개발범위를 확인한다.
- 클라이언트의 요구사항을 분석한다.
- 프로젝트 시작일과 종료일을 고려해서 개발범위를 조정한다.
작업을 여러개로 나눈다.
- 학사관리시스템을 만들시, 수강신청, 과목조회, 개인정보수정 등.
각 작업들의 예상되는 산출물을 정한다.
- 수강신청 성공시 DB에 학번이 들어가고, 실패시 예외처리.
- 과목조회 성공시 시간순으로 요일별로 출력 되도록 한다.
- 개인정보 수정시 타계정과 중복된 이메일 금지, 특수문자 금지 등.
나눈 작업간의 의존성을 고려하여 우선순위를 정한다.
- 수강신청내역을 구현하려면 로그인 기능이 먼저 구현되어야한다.
각 작업에 예상되는 시간을 추정한다.
- 팀원들 역량에 따라 가능한 각각의 구현시간을 추정한다.
- 디버깅을 고려해서 구현가능한 시간에 추가로 30%를 추가한다.
- 예) A팀원 과목조회 2일, 수강신청 5일, 개인정보 수정 4일.
B팀원 과목조회 1일, 수강신청 3일, 개인정보 수정 2일.
C팀원 과목조회 4일, 수강신청 8일, 개인정보 수정 7일.
- 만약 마감일 초과가 예상되면 개발범위를 클라이언트와 재조정한다.
팀원에게 계획된 작업을 할당한다.
- 예) 4인 기준 수강, 휴복학, 장학, 성적 part로 분할
- 할당이 끝나면 팀원간에 작업량과 예상되는 문제를 최종적으로 서로 확인 및 조율한다.
이슈 트래킹 방법
이슈 트래킹 시스템 “github issues” 사용한다.
- 누구나 별도의 설치나 회원가입없이 git project안에서 접근성이 좋다.
- 버전관리 도구로 선정한 git과 연동되어 높을 효율성이 기대된다.
- 템플릿을 이용해서 가독성을 향상시켜 업무의 효율성이 올라간다.
- 마크업 언어를 사용하기에 사용자가 구성을 변경하기 쉽다.
버그 발생 또는 신규 기능 추가시 “Open”한다.
- Assignees기능으로 필요시 책임자를 지정한다.
- Labels기능으로 이슈의 종류를 구별한다.
- milestone기능으로 비슷한 이슈끼리 그룹화 한다.
이슈가 해결되면 “Close”한다.
- 바로 닫을 수도 있지만, 경우에 따라 comment란에 참고사항을 입력하고 닫을 수도 있다.
이슈가 중복되거나 재현불가, 해결불가능하면 보류 또는 닫는다.
- 만약 닫았던 이슈가 재발한다면 reopen한다.
버전관리 도구 비교
Mercurial
- 파이썬으로 만들어서 리눅스 친화적인 다른 vsc보다 윈도우와 호환이 잘된다.
- 로컬저장소에 commit이 가능해서 push전에 문제 발견시 오프라인으로 버전관리가 가능하다.
SVN
- git이나 mercurial같은 dvcs와 다르게 commit을 하면 바로 온라인 저장소로 저장된다.
- 소규모팀이 항상 네트워크에 접속이 가능하다면 dvcs보다 나을 수 있다.
- 오프라인 상태에서 작업이 제한적이다.
- dvcs보다 충돌이 생길 확률이 높다.
- 잦은 커밋은 revision이 많아져서 로그가 복잡해 질 수 있다.
git
- 가장 대중적인 vcs로 지원하는 툴킷이 많아, 접근성이 쉽다.
- merge시 서버에서 data를 가져와서 로컬로 먼저 병합을 하고 올리는 방식으로 병합문제발생이 감소한다.
- dvcs방식으로 로컬저장소로 작업이 가능하다.
- 온라인 서버에 장애가 발생해도 다른 컴퓨터에서 코드를 복구가 가능하다.
- 리눅스개발팀이 오픈소스를 위해 직접만들 vcs라서 수천명의 개발자가 동시에 프로젝트를 작업하고 관리하는데 특화되어 있다.
- gitHub를 이용해서 개인포트폴리오 관리에 용이하다.
- github라는 강력한 레포지토리 호스팅서비스를 사용 할 수 있다.
- github에 git issues를 지원한다.