본문 바로가기

분류 전체보기

소프트웨어 프로젝트에서 빌드를 어떻게 하시나요? 소프트웨어를 개발하고 계신다면 빌드를 어떻게 하고 계시나요? 여기서 제가 말하고 있는 "빌드"는 "공식빌드"입니다. "공식빌드"란 소프트웨어를 개발하는 프로젝트나 절차에서 공식 Output을 만들어 내는 것입니다. "공식빌드"가 아닌 것은 "엔지니어링 빌드"라고 합니다. 이는 개발자가 자신의 작성한 코드를 테스트하기 위해서 비공식적으로 하는 빌드입니다. 그럼 원래 질문으로 돌아가서 "공식빌드"를 어떻게 하고 계십니까? 혹시 IDE(통합개발환경)에서 빌드를 하고 계시나요? Visual Studio나 Eclipse의 IDE를 이용해서 빌드한 결과물이 공식적으로 릴리즈가 되고 있습니까? 그러면 잘못되고 있는 겁니다. "공식빌드"는 IDE에서 이루어지면 안됩니다. "공식빌드"는 빌드 전용 장비에서 커맨드라인 통.. 더보기
안다는 것과 모른 다는 것 사람들은 어떤 지식에 대해서 아래 3가지의 모습을 보이는 것 같습니다. 1. 모르는 것을 안다고 생각하는 것 2. 아는 것을 안다고 생각하는 것 3. 모르는 것은 모른다고 생각하는 것 여기서 모르는 것을 모른다고 생각할 수 있는 자세야 말로 엔지니어에게 꼭 필요하지만, 의외로 모른 것을 안다고 착각하거나 아주 조금만 아는 것을 전체를 안다고 생각하거나 자신이 아닌 범위가 전체인줄 아는 경우가 많습니다. 자신이 모르는 것이 무엇인지 아는 사람이 가장 많이 아는 사람이라고 생각합니다. 하지만 자신이 모르는 것을 정확하게 알고 인정하는 것은 대단히 어려운 일인것 같습니다. 모르는 것을 안다고 생각하는 사람들은 사고를 많이 치고, 모르는 것을 모른다고 생각하는 사람에게는 지속적인 발전이 있다고 생각합니다. 더보기
소스코드관리시스템을 몇개 사용하고 있나요? 소프트웨어 개발 컨설팅을 하다보면 여러가지 경우를 보지만 그중의 한 예를 소개할까 합니다. 국내의 굴지의 금융회사 중의 한 사례입니다. 회사 내에서 각 팀별로 소스코드관리시스템을 여러 개를 사용하고 있더군요. A팀 Windows 플랫폼의 Application를 개발하니까 Microsoft Visual SourceSafe를 사용하고 B팀 Web 서비스를 개발하고 있었는데, CVS를 사용하더군요. 그리고 C팀은 Unix에서 개발을 하는데, 아무런 소스코드관리시스템을 사용하고 있지 않았고, D팀은 별로 잘 알려져 있지 않은 외국의 상용 제품의 한글화된 버전을 사용하고 있었습니다. 한 회사에 총 4가지 유 형의 소스코드 관리가 존재하는 겁니다. 이런 상황에서는 다음과 같은 부작용이 생깁니다. 개발자들이 다른 부.. 더보기
인증을 꼭 받아야 하나요? 처음 글을 올리면서 인사드립니다.^^/ 이렇게 글을 쓸 수 있도록 팀블로그로 지면을 만들어주셔서 감사합니다. '인증'이라는 주제만으로는 큰 의미 혹은 필요성 없었겠지만 이렇게 '소프트웨어 개발' 이라는 주제와 함께 지식과 경험을 나눈다면 그것은 시너지 효과처럼 좋은 결과를 만들어 내리라는 확신에 잘 쓰지 못하는 글을 시작하게 되었습니다. 왜냐하면 어자피 인증이라는 것은 "잘" 개발된 소프트웨어를 정말로 "잘" 개발했는지를 평가하고 인증을 하는 것이기 때문입니다. 이러한 주제로 얼마나 많이 이야기하고 또 깊이 들어갈지는 지금으로서는 가늠하기가 어렵습니다. 글을 읽어 보시는데로 어떠한 것도 좋으니 피드백해주시고 가이드해주시면 더욱 열심히 글을 포스팅하겠습니다. 특별이 여기에서는 많은 '인증' 중에서도 'C.. 더보기
기반시스템(Infrastructure System)을 사용하고 계신가요? 기반시스템(Infrastructure System)란 용어를 들어보신 적이 있나요? 기반시스템(Infrastructure system)은 소프트웨어를 개발하는데 꼭 필요한 기초 환경입니다. 여러분들도 쓰고 계시는 것이 있을 겁니다. 소스코드를 CVS에 저장하고 버그를 관리하기 위해서 Bugzilla나 Mantis를 사용하고 있다면 바로 그러한 것들이 기반시스템(Infrastructure System)입니다. 이러한 것들은 매우 다양한 분야에서 소프트웨어 개발을 돕고 있습니다. 기반시스템 없이는 생산적으로 소프트웨어 개발할 수 없습니다. 기반시스템은 소스코드를 안전하게 보관해주고, 프로젝트 구성원 간의 의사소통을 원활하게 해주는 등 프로젝트의 모든 활동이 잘 진행되도록 돕습니다. 또, 개발자들을 편하게 해.. 더보기
개발자 폭행사건을 바라보는 심경 아래 소개된 개발자 폭행사건을 보고 나름대로 생각을 해봅니다. 우리나라 소프트웨어 업계에 만연해 있는 갑과 을의 왜곡된 구도에 대해서 생각해 보지 않을 수 없습니다. 특히 소프트웨어에 있어서는 갑이 을에게 뭐든지 시킬 수 있고, 뭐든지 바꿔달라고 할 수 있고, 어제라도 마음대로 부릴 수 있다는 인식이 깔려 있는 것 같습니다. 이러한 인식을 깨기 위해서는 법적인 보완, 소프트웨어 개발에 대한 인식 변화, 성숙한 소프트웨어 개발 문화 등이 필요할 것입니다. 우리의 소프트웨어 계약을 보면 정말로 모호하고 일방적인 경우가 정말 많습니다. 외국의 예를 보면 소프트웨어 개발 프로젝트는 분석과 설계/구현이 분리가 되어서 개발 계약시는 분석이 완료된 정확한 스펙을 가지고 개발 계약을 하게 되고, 장애해결이나 유지보수는.. 더보기
프로젝트 산출물을 프로젝트 종료 후에 만들고 있나요?  프로젝트가 끝난 후에 산출물을 만드는 일은 SI회사나 용역으로 일을 하고 있는 회사에서 종종 보게 됩니다. 또, 자사 Solution이나 Product를 만드는 회사에서도 이런 일들이 벌어지곤 하죠. 이런 회사에서 그렇게밖에 할 수 없는 이유에 대해서 다음과 같이 말을 하곤 합니다. 우린 프로젝트 일정이 너무 짧아서 프로젝트 기간에는 산출물을 만들 시간이 없어요. 어차피 산출물은 프로젝트에 별 도움이 안돼요. 우리도 시간만 충분히 있으면 산출물을 잘 만들 수 있어요. 고객이 나중에 요구사항을 바꾸기 때문에 산출물을 잘 만들어 놓아도 또 바꿔야 해요. 코드만 바꾸기도 벅찬데 언제 산출물을 바꿔요. 산출물이란 프로젝트가 끝나고 더 이상 바뀔게 없을 때 한꺼번에 만드는 것이 제일 효율적이예요. 문서를 너무.. 더보기
소프트웨어 회사의 개발 역량 평가표 아래 평가표는 소프트웨어 개발 회사나 개발팀이 얼마나 역량을 갖추고 있는지 평가하는 표입니다. 아래 각 문항에서 "예"(1점)에 해당하면 Checkbox를 체크하시면 됩니다. 1.전사적으로 소스코드관리시스템을 딱 하나만 사용하고 있다. 2.모든 소스코드 및 개발문서는 소스코드관리시스템에 저장되어 있다. 3.각 마일스톤마다 Baseline을 설정하고 있다. 4.소스코드관리시스템에 체크인 시 메시지를 작성하는 규칙을 가지고 있고, 모든 개발자가 이를 지키고 있다. 5.모든 소스코드는 리뷰를 하고 있다. 6.자동으로 일일빌드를 하고 있다. 7.전사적으로 버그관리시스템을 딱 하나만 사용하고 있다. 8.모든 버그를 버그관리시스템에 등록하고 있으며 다른 곳에 별도로 관리하지 않는다. 9.모든 직원이 버그관리시스템에.. 더보기
책소개 - 소프트웨어개발의모든것(All of Software Project) 이번에 집필한 책입니다. 소프트웨어 개발의 전반에 대한 기초에 대해서 다루고 있습니다. 코딩을 어떻게 하느냐하는 내용이 아니고 소프트웨어 회사라면 당연히 갖춰야 할 기반시스템, 조직, 프로세스 등에 대해서 현실적이고 체계적으로 정리를 했습니다. 책을 쓰면서 가장 어려운 점은 가능하면 많은 소프트웨어 개발자들이 볼 수 있도록 난이도를 조정하는 것이었습니다. 어차피 책이라는 것이 모든 사람의 눈에 맞출 수는 없으니까요. 그리고 너무 자세한 내용을 기술하지 않은 이유는 그러기에는 수천페이지도 모자를 수 있고, Detail한 내용은 또 많은 경로를 통해서 얻을 수도 있고 일부는 스스로 공부를 하거나 훈련을 해야하는 것이라고 생각했습니다. 그래서 소프트웨어 개발 및 프로젝트를 전체적으로 볼 수 있는 책으로 구성을.. 더보기
소프트웨어 개발 컨설팅 나는 한글과컴퓨터에서 처음 소프트웨어 개발을 시작했고, 안철수연구소를 거쳐서 현재는 소프트웨어 개발 컨설턴트로 일을 하고있습니다. 누군가에게 나 자신을 소개할 때 "소프트웨어 개발 컨설턴트" 또는 "소프트웨어 엔지니어링 컨설턴트"라고 하면 무슨일을 하는지 잘 모르는 경우가 많습니다. 흔히 소프트웨어 엔지니어(개발자)와 헷갈리기도 하고 솔루션 컨설턴트나 Oracle 컨설턴트를 떠울리기도 하죠. 내가 하고 있는 일은 소프트웨어를 개발하고 있는 회사와 만나서 회사나 개발팀이 가지고 있는 문제점들을 해결하고 좀더 효율적으로 소프트웨어를 개발할 수 있도록 도와주는 것입니다. 개발의 기초라고 할 수 있는 시스템들을 갖추는 것을 도와주고 교육도 시키고, 회사의 개발 프로세스도 정립을 시키고, 소프트웨어 개발에 필요한.. 더보기