문제

어떻게 당신이이 일에 대해 매일 구축을 위해 노력하고 zero-defect 습니까?그것은 말은 내가 결코 얻을 집에 갈 때까지 내가 사망의 모든에 새로운드?또는 뜻지 확인하시기 전까지는 완전히,그것을 테스트하는 코드를 효과적으로는 분기한이 훨씬 긴 시간입니까?

나는 소수의 프로그래머를 위한 첫 번째 시간(반대로 작동하는 내 자신에,또 하나의 다른 coder),그래서 난 그냥 레슬링으로 결정을 다음과 같이 처음이다.해야 우리가 채택하는 소프트웨어 개발 프로세스?

도움이 되었습니까?

해결책

예,주시기 바랍 채용 소프트웨어 개발 과정이다.다양한있다,거기에는 나는 하나 이상의 것이 맞는 귀하의 팀이 있습니다.하나라도 없는 완벽하게 일치하는 것보다 훨씬 낫지 않 프로세스에서 모두.

그래서 어떻게 회사를 이동하는 데 대해 매일 구축하고를 위해 노력하 제로 결?우리는 우리의 실행 테스트하기 전에 우리는 확인 우리의 코드입니다.독특한 문제에 대한 우리는 전체의 실행 우리의 테스트 스위트 이상 걸립 72 시간,그래서 우리는 실행되는 제한된 단위의 테스트를 확인하기 전에 코드입니다.에 대한 우리의 야간 구축,우리는 실행하는 테스트는 약 8 시간 동안 실행됩니다.다음 주말에 우리는 실행하는 완전한 테스트습니다.각 단계 잡는 더욱 더 문제가 있지만,90%이상 붙잡으로 5 분 거리에 개발자 검사 및 아마 98%이상으로 야간 검사입니다.이것은 여전히 우리에게 경고 예쁜 일찍 문제가기 전에 그들은 나를 우리의 고객을하고 비용이 많이 해결할 수 있습니다.

다른 팁

단순 : 코드를 확인하지 마십시오 (모두 다 아는) 그것의 버그. 그렇다고 하루에 한 번 체크인한다는 의미는 아닙니다. 다른 개발자가 액세스 할 수 있도록 의미있는 변경 사항이 구현되면 체크인합니다.

우리는 항상 로컬로 통합하고 코드에 대해 테스트를 실행하며 모든 패스가 체크인 할 때 체크인합니다. 일할 때 하루에 약 20-30 회 체크인합니다. 빌드 서버는 변경 사항을 선택하고 시스템에 대해 빌드를 실행합니다. 지속적인 통합 (CI)은 좋은 것입니다. :디

지속적인 통합 - 빌드를 자동화합니다

건축을 성공적으로 시작하고 가능한 한 그렇게 유지하십시오. 팀 환경에서 필수적입니다. 빌드가 깨질 것임을 기억하십시오. 그들은 한 번에 한 번에 매번 부러 질 것으로 예상됩니다. 그것은 당신이 실수로 나쁜 것을 점검했다는 신호이며, 빌드를 다시 녹색으로 만들기 위해하고있는 일을 중지합니다. 빌드가 깨지지 않은 빌드 서버는 경고 표시입니다!

또한 Chadmyers의 답변에 동의합니다. 결정한 것은 자동적이고 자동화되어야합니다. 이런 종류의 작업을 수행하는 도구를 자동화하는 가장 좋은 점은 더 이상 그것에 대해 생각하거나 기억할 필요가 없다는 것입니다. 또는 차드가 말했듯이, 당신은 그것을 멈추지 않습니다. CI 도구를 추천 할 수는 있지만 여기를 살펴보십시오. 자동화 된 빌드 / 자동 배포에 어떤 도구를 사용합니까? 왜요?

CI가 있으면 깨진 빌드 토큰을 도입하여 유머 (및 수치심)를 주입 할 수 있다면 더 높은 품질을 얻을 수 있습니다! http://ferventcoder.com/archive/2008/08/20/continuous-integration-enhancement-boken-build-token.aspx

자동화 된 빌드에 좋은 도구를 사용하십시오

.NET 토지 이용 Nant 또는 MSBuild 스크립트의 대부분의 사람들은 나중에 CI 서버에 연결할 수있는 자동화 된 빌드를 갖습니다. 당신이 방금 시작한다면, 나의 제안은 사용하는 것입니다 어퍼컷, Nant를 사용하는 것은 미친 듯이 사용하기 쉬운 빌드 프레임 워크입니다. 다음은 더 깊은 설명과 함께 두 번째 링크입니다. 어퍼컷.

적극적인 개발을위한 지점 대 트렁크

트렁크를 릴리스를 위해서만 열어 두지 않으면 분기 할 필요가 없습니다 (이는 다른 사람들이 당신과 같은 지점에서 일하고 있음을 의미합니다). 그러나 나는 트렁크와 능동 개발 지점에 CI를 가질 것입니다.

소프트웨어 개발 프로세스

또한 소프트웨어 개발 프로세스에 대한 질문에 답하기 위해 대답은 예입니다. 그러나 급격한 변화가 필요하지 않으면 아무것도 서두르지 마십시오. 마이그레이션하려는 프로세스를 선택하고 천천히 프로세스 채택을 시작하십시오. 평가, 평가, 평가. 특정 프로세스가 귀하의 그룹에 대해 작동하지 않는 경우, 무언가 잘못하고 있는지 또는 제거 해야하는지 알아 내십시오. 그리고 그렇게합니다. 어떤 과정이든 당신을 위해 일 해야하는 과정이 필요하지 않거나 효과가 없습니다.

그것은 훨씬 작은 커밋을 의미합니다. 작업 개정판을 자주 저지할수록 자신의 작업 사본이 덜 깨진 경우가 많습니다. 반복적 인 발전이 당신과 함께 시작됩니다.

조기 통합, 자주 통합, 빠르게 통합됩니다. '일일 빌드'대신 누군가가 자주 커밋하고 커밋 할 때마다 (적어도 하루에 한 번, 바람직하게는 2 이상) 건축하십시오.

중요 : 낮은 결함에는 빠른 피드백이 필요합니다. 빌드가 몇 분 또는 한 시간 이상 걸리면 결국 빌드를 미워하고, 피하는 법을 배우고, 가능한 한 적게 실행하는지 등을 배우게됩니다. 가치는 가치가없고 결함 수가 빠르게 떨어질 것입니다. 급격히 시작하십시오.

빌드를 빠르게 실행하기 위해 시간을 투자하십시오. 느린 물건이 있으면 왜 느린 지 알아 내고 제거하십시오. 당신이 할 수 없다면, 적어도 계단식 빌드를 설정하여 나머지 빌드가 빠르게 진행되도록하고 (<2-5 분 생각), 장기 실행 물건은 즉시 따라 가서 원하는만큼 오래 걸릴 수 있습니다 (시도하더라도 10m 아래로 유지하려면).

충분히 말할 수 없습니다 : 변화에 대한 빠른 피드백주기는 매우 중요합니다!

요령은 가능한 한 자주 체크인하는 것입니다. 몇 가지 테스트를 통과하고 잘 확인하십시오! 단일 버그를 수정하고 확인하십시오! 가능한 작은 증분을 찾아서 확인하십시오! 이것은 실제로 관련이있는 체크인 댓글을 작성하는 것이 실제로 가능하고 우호적이라는 이점이 추가되므로 좋은 보너스입니다.

물론 가능한 한 종종 최선의 선택이되므로 야간보다 더 자주 구축하는 CI 환경이 있어야합니다.

아, 만약 그것을 기억하십시오 절대 휴식, 그럼 당신은 잘못하고 있습니다. (즉, 당신은 지나치게 보수적이며, 지금 약간의 파손이 있고, 당신이 그것을 추진하고 있음을 보여주기 위해 간다.)

모든 결함이 사라질 때까지 집에 가지 않으면 집에 가지 않을 것입니다.

이것에 대한 나의 생각은 일일 빌드가 특정 시간에 자동화되어야한다는 것입니다. 이 작업 전에 체크인되지 않은 코드가 구축되지 않으며 2 일 동안 누군가의 체크인이없는 경우, 빌드 시스템은 경고 신호이므로 기술 리드에 알리고 기술 리드를 알립니다.

아마도 더 실용적인 접근법 중 하나는 트렁크에 결함이없는 것과 모든 개발에 대한 분기를 갖는 것입니다. 그런 다음 트렁크와 가지 모두에 매일 빌드를 갖는 것이 가능하지만 Dev 분기에는 제로 결함이 적용되지 않습니다.

지점이 빌드를 깨뜨리는 데 여전히 어느 정도의 낙인이있을 수 있지만, 트렁크를 깨는 것보다 문제가 적습니다.

답을 살펴보면 아무도 시험 중심 개발을 언급 한 사람이 없다는 것에 놀랐습니다. 목표가 제로 결절이라면 시작하기 가장 좋은 곳입니다.

그 후에는 쌍 프로그램을 강력히 추천합니다.

마지막으로 Cruisecontrol과 같은 도구는 유용하지만 Jim Shore가 말했듯이 지속적인 통합은 도구가 아닌 태도입니다. 핵심 코드를 유지하는 것은 그룹의 약속입니다.

알려진 버그가 코드에있는 경우 제로 결절-스트레이트에 대해 : 집에 갈 수 있습니다. 또한 새로운 기능이 구현되기 전에 결함을 수정해야합니다.

이는 팀 전체에 적용되지 않아야하지만 개발자에게 버그가 할당 된 경우이 버그는이 개발자가 만들어야하는 새로운 기능보다 우선 순위가 있습니다.

하는 것에 따라 구축,는 접근 방식을 채택의 결함되지 않은 허용하지 않을 수도 있습니다.나 개인적인 의견은 그것이 거의 경우,적,입니다.

전체 포인트 결함의 관리 시스템은 정확히-을 관리할 수 있도록 결함이 있습니다.는 경우에 결함은 보지 하나 그때 확실히,당신은 아마 없을 확인하고 싶다,하지만 무언가가 있다면 미성년자 또는 edge 경우 다음 그것을 할 수 있습을 확인에 그것으로 알려진 결함을 만큼 당신을 추적하고있다.

수 있도록 결함이 존재할 수 있습에 초점 더 중요한 것들-예를 들어만 있는 경우에는 제한된 시간에 출시 시간이 없을 수 있습니다 모든 것을 해결하기 위해뿐만 아니라 모든 기능에는 경우,그래서 그의 선택 사이에 고정 십자 경우 사소한 버그,또는 조각을 만들어 가치의 기능을 추가하는 그는 실용적인 선택이 될 수 있습하는 선박으로 알려져 있습니다.

난 말하지 않는 결함이 나쁜 아이디어에서 사실 우리는 노력에 대한 이해의 각 릴리스 사이클 그러나 같은 많은 것을에서 소프트웨어 개발,실용주의 정상적으로 작품을 더 나은 현실 세계에서 보다는 교.

나는 CI 인수에서 @feverentCoder와 함께 갈 것입니다. CI는 당신의 친구입니다.

분기/트렁크 포인트는 누구나 항상 트렁크, 나뭇가지ES는 스파이크와 POC를위한 것입니다. 꼬리표 모든 릴리스

프로세스에 관해서는 일반적으로 찾는 것이 유리합니다. 관행 그것은 당신과 관련이 있고 그 주위에 마이크로 프로세스를 구축합니다. 또한 생산성을 향상시키는 관행/프로세스 만 사용하십시오. 마지막으로, 용기를 내십시오. 1 주일 또는 2 주 동안 연습을 시도하여 그것이 당신과 함께 작동하는지 확인하십시오. 그렇지 않으면 버리십시오. 당신은 방금 한 가지 방법을 배웠습니다 ~ 아니다 전구를 만들기 위해!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top