본문 바로가기

기반시스템

Subversion(SVN)과 CVS의 비교 Subversion(SVN)과 CVS에 대한 비교라기 보다는 SVN이 CVS와 비교하여 상대적으로 어떤 점이 더 좋은지에 대한 설명입니다. SVN은 CVS를 개발하던 핵심 개발자들이 그동안 CVS가 가지고 있던 문제를 해결하고자 완전히 새로운 아키텍쳐로 새로 만든 제품입니다. 따라서 기존에 CVS를 사용하고 있던 개발자들은 SVN으로 넘어오는 것을 적극 검토해보시기 바랍니다. Subversion(SVN)의 장점 CVS에 비해 엄청나게 빠른 업데이트/브랜칭/태깅 시간. -> 최고로 강력한 장점입니다. 기존에 대형 프로젝트 같은 경우는 CVS를 이용하면 태깅에 수십분이 걸리기도 했습니다. 하지만 SVN은 아무리 규모가 커도 몇초면 끝납니다. 커밋 단위가 파일이 아니라 체인지셋이라는 점입니다. CVS에서라면 .. 더보기
Broken tree 소프트웨어의 빌드가 안 되는 상황을 Broken Tree라고 합니다. 소프트웨어를 개발하는 회사라면 Broken Tree의 발생을 엄격하게 규제해야 합니다. 소스코드관리시스템 안의 소스코드는 항상 빌드가 가능한 상태로 존재해야 합니다. 그리고 언제든지 꺼내서 빌드를 하면 빌드가 되어야 합니다. 개발자들은 버그를 고치거나 새로운 기능을 추가할 때 소스코드관리시스템에서 최신 소스코드를 가져와서 소스코드를 고치고 개발자 테스트를 마친 후 소스코드를 체크인 하는 것만으로 임무가 끝나지 않습니다. 내가 소스코드를 수정하는 사이에 누군가가 다른 소스코드를 수정했을 수도 있으니 꼭 다시 한번 최신 소스코드가 빌드가 되는지 확인을 해야 합니다. 믈론 한두명이 개발한다면 이런 일은 거의 없겠지만, 꽤 큰 규모의 회사나 .. 더보기
소프트웨어 프로젝트에서 빌드를 어떻게 하시나요? 소프트웨어를 개발하고 계신다면 빌드를 어떻게 하고 계시나요? 여기서 제가 말하고 있는 "빌드"는 "공식빌드"입니다. "공식빌드"란 소프트웨어를 개발하는 프로젝트나 절차에서 공식 Output을 만들어 내는 것입니다. "공식빌드"가 아닌 것은 "엔지니어링 빌드"라고 합니다. 이는 개발자가 자신의 작성한 코드를 테스트하기 위해서 비공식적으로 하는 빌드입니다. 그럼 원래 질문으로 돌아가서 "공식빌드"를 어떻게 하고 계십니까? 혹시 IDE(통합개발환경)에서 빌드를 하고 계시나요? Visual Studio나 Eclipse의 IDE를 이용해서 빌드한 결과물이 공식적으로 릴리즈가 되고 있습니까? 그러면 잘못되고 있는 겁니다. "공식빌드"는 IDE에서 이루어지면 안됩니다. "공식빌드"는 빌드 전용 장비에서 커맨드라인 통.. 더보기
소스코드관리시스템을 몇개 사용하고 있나요? 소프트웨어 개발 컨설팅을 하다보면 여러가지 경우를 보지만 그중의 한 예를 소개할까 합니다. 국내의 굴지의 금융회사 중의 한 사례입니다. 회사 내에서 각 팀별로 소스코드관리시스템을 여러 개를 사용하고 있더군요. A팀 Windows 플랫폼의 Application를 개발하니까 Microsoft Visual SourceSafe를 사용하고 B팀 Web 서비스를 개발하고 있었는데, CVS를 사용하더군요. 그리고 C팀은 Unix에서 개발을 하는데, 아무런 소스코드관리시스템을 사용하고 있지 않았고, D팀은 별로 잘 알려져 있지 않은 외국의 상용 제품의 한글화된 버전을 사용하고 있었습니다. 한 회사에 총 4가지 유 형의 소스코드 관리가 존재하는 겁니다. 이런 상황에서는 다음과 같은 부작용이 생깁니다. 개발자들이 다른 부.. 더보기
기반시스템(Infrastructure System)을 사용하고 계신가요? 기반시스템(Infrastructure System)란 용어를 들어보신 적이 있나요? 기반시스템(Infrastructure system)은 소프트웨어를 개발하는데 꼭 필요한 기초 환경입니다. 여러분들도 쓰고 계시는 것이 있을 겁니다. 소스코드를 CVS에 저장하고 버그를 관리하기 위해서 Bugzilla나 Mantis를 사용하고 있다면 바로 그러한 것들이 기반시스템(Infrastructure System)입니다. 이러한 것들은 매우 다양한 분야에서 소프트웨어 개발을 돕고 있습니다. 기반시스템 없이는 생산적으로 소프트웨어 개발할 수 없습니다. 기반시스템은 소스코드를 안전하게 보관해주고, 프로젝트 구성원 간의 의사소통을 원활하게 해주는 등 프로젝트의 모든 활동이 잘 진행되도록 돕습니다. 또, 개발자들을 편하게 해.. 더보기