실제로 이러한 프로세스에는 많은 회사가있는만큼 많은 변형이 있습니다. 의미 : 모든 회사에는 다른 회사와 약간 다른 규칙이 있지만 대부분의 장소에서 일반적으로 사용되는 몇 가지 일반적인 모범 사례가 있습니다.
항상 유용한 모범 사례
- 프로젝트의 모든 소스 코드와이를 빌드하는 데 필요한 모든 것은 버전 제어 (소스 제어라고도 함 )하에 있습니다. 누구나 클릭 한 번으로 전체 프로젝트를 빌드 할 수 있어야합니다.
또한 불필요한 파일 (오브젝트 파일 또는 컴파일 된 바이너리)은 매우 쉽게 재생성 될 수 있고 저장소의 공간을 낭비 할 수 있으므로 저장소에 추가 해서는 안됩니다 .
- 모든 개발자는 하루에 몇 번 버전 제어를 업데이트 하고 커밋 해야합니다. 대부분 작업을 완료하면 작업하고 테스트하여 사소한 버그가 포함되어 있지 않음을 알 수 있습니다.
- 다시 말하지만 누구나 클릭 한 번으로 프로젝트를 빌드 할 수 있어야합니다. 이것은 중요하며 누구나 쉽게 테스트 할 수 있습니다. 프로그래머가 아닌 사람 (예 : 상사)도 그렇게 할 수 있다면 큰 이점이 있습니다. (팀이 작업중인 내용을 정확히 볼 수 있다는 느낌을줍니다.)
- 모든 개발자 는 추가하는 새로운 기능 또는 버그 수정을 저장소에 커밋 하기 전에 테스트해야 합니다.
- 정기적으로 (미리 결정된 간격으로) 리포지토리에서 자체 업데이트 하고 전체 프로젝트의 모든 것을 빌드하려고 시도하는 서버를 설정합니다 . 실패하면 문제를 디버깅하는 데 도움이되도록 버전 제어에 대한 최신 커밋과 함께 팀에 이메일을 보냅니다 (어떤 커밋이 빌드에 실패했는지).
이 방식을 지속적 통합 이라고 하며 빌드를 야간 빌드 라고도 합니다 . (이것은 개발자가 자신의 컴퓨터에서 코드를 빌드하고 테스트하지 않아야 함을 의미하지 않습니다. 위에서 언급했듯이 그렇게해야합니다.)
- 분명히 모든 사람 이 프로젝트의 기본 디자인 / 아키텍처에 익숙해야하므로 필요한 것이 있으면 팀의 다른 구성원이 바퀴를 다시 만들 필요가 없습니다. 재사용 가능한 코드를 작성하는 것은 좋은 일입니다.
- 팀 구성원간에 일종의 의사 소통 이 필요합니다. 모두는 다른 사람들이하고있는 일을 최소한 조금이라도 알고 있어야합니다. 많을수록 좋습니다. 이것이 SCRUM 팀에서 일일 스탠드 업 이 유용한 이유 입니다.
- 단위 테스트 는 코드의 기본 기능을 자동으로 테스트하는 매우 좋은 방법입니다.
- 버그 추적 소프트웨어 (라고도 시간 추적 소프트웨어는 ) 다른 팀 구성원이가 어떤 작업을 어떤 버그를 추적하는 아주 좋은 방법이다. 테스트에도 좋습니다. 프로젝트의 알파 / 베타 테스터는 이러한 방식으로 개발 팀과 통신 할 수 있습니다.
이 간단한 것들은 프로젝트가 통제를 벗어나지 않고 모든 사람이 동일한 버전의 코드로 작업하도록 보장합니다. 연속 통합 프로세스는 상황이 심각하게 악화 될 때 도움이됩니다.
또한 사람들이 기본 저장소에 빌드하지 않는 항목을 커밋하는 것을 방지합니다.
구현하는 데 며칠이 걸리는 새 기능을 포함하고 다른 사람이 프로젝트를 빌드 (및 테스트)하는 것을 차단하려면 버전 제어 의 분기 기능을 사용하십시오.
충분하지 않은 경우 해당 프로젝트에서 가능한 경우 자동화 된 테스트를 수행하도록 설정할 수 있습니다.
좀 더 생각
위 목록은 언뜻보기에 매우 무거울 수 있습니다. 필요 에 따라 수행하는 것이 좋습니다 . 버전 제어 및 버그 추적기로 시작한 다음 나중에 필요할 경우 지속적 통합 서버를 설정합니다. (대규모 프로젝트라면 곧 필요할 것입니다.) 가장 중요한 부분에 대한 단위 테스트 작성을 시작합니다. 충분하지 않다면 더 많이 쓰십시오.
유용한 링크 :
지속적인 통합 , 일일 빌드는 친구입니다 , 버전 관리 , 단위 테스트
예 :
버전 제어를 위해 요즘에는 개인 프로젝트에 Git 을 사용하는 경향이 있습니다. Subversion 도 인기가 있으며, 예를 들어 Windows 서버를 사용하는 경우 VisualSVN 을 설정하기가 매우 쉽습니다. 클라이언트의 경우 TortoiseSVN 은 많은 사람들에게 가장 잘 작동합니다. 다음은 Git과 SVN의 비교입니다.
버그 추적 소프트웨어의 경우 Jira 와 Bugzilla 가 매우 유명합니다. 이전 직장 에서도 Mantis 를 사용 했습니다.
지속적인 통합 소프트웨어의 경우 Teamcity 가 있습니다 ( CruiseControl 및 .NET 대응 소프트웨어 도 주목할 만합니다).
"프로젝트의 주요 디자인은 누가 결정합니까?"라는 질문에 답하십시오.
물론 그것은 리드 개발자가 될 것입니다.
회사에서 리드 개발자는 프로젝트의 재무 / 마케팅 담당자와 대화하는 사람으로, 회사의 재무 능력, 계획된 기능, 사용자의 요구 사항 및 사용 가능한 시간에 따라 아키텍처를 결정합니다.
이것은 복잡한 작업이며 일반적으로 한 명 이상의 사람이 관여합니다. 때때로 팀 구성원은 전체 프로젝트 또는 특정 부분의 디자인에 대해 참여하거나 브레인 스토밍하도록 요청받습니다.