기본 콘텐츠로 건너뛰기

당신의 회사는 어떤 개발 시스템을 가지고 있습니까? - 이슈관리


이슈 관리 시스템(trac , mantis)에 대해서는 많이들 들어봤을 겁니다.
저도 프로젝트 당시 적용시켜 보았는데 제대로 활용은 하지 못했지만 효과는 있었던것 같았습니다.

고객들로 부터 이슈를 받게되는 경로는 대부분 메일이나 전화인것 같습니다
이처럼 이슈를 통보받게 되면 여러분은 어떻게 처리를 하십니까?
적극 대처하기 위해 바로 해당 부분을 디버깅하시나요?
보통 하나의 이슈를 처리하는데에는 몇시간에서 혹은 몇일이 걸릴수 있습니다
이럴때 전화로 통보받았을 경우는 통보받은 이슈에 대한 기억이 희미해질수가 있습니다
메일로 받았을 경우는 이슈를 처리하는데 몇일이 걸릴 경우 이슈 내용을 확인하기위해 메일을 확인해야하고 또한 하루에도 수십통오는 메일로 중요한 이슈메일은 어느듯 스크롤해서 찾아야하는 처지에 이르게 됩니다.
아~~ 물론 이슈관련  메일 보관함을 따로 만들어두면 되지 않느냐구요?
음... 그래도 되겠네요(하지만 전 그래도 뭔가 찜찜함을 지울수 없습니다)

잠시 생각을 돌려 여러분은 고객이 통보하는 이슈가 얼마나 정확하다고 생각하시나요?
아마도 "이것 누르니까 뭐가 안되는데요 혹은 이렇게하니 프로그램이 죽어요" 이런식이 아닐까요?
아닌가요? 상세한 이슈를 통보해주는 고객을 가졌다면 여러분은 행복한겁니다
누구보다 개발자 여러분이 프로젝트에 관해 잘 알고 있으니 증상에 대한 원인을 빨리 그리고 보다 정확하게 진단할 수 있을 겁니다.
따라서 고객이 통보한 이슈를 다시 재정리할 필요가 있는 겁입니다. 개발자의 관점에서 말이죠
또한 이슈를 고객들로부터 통보 받기도 하지만 개발자 스스로도 프로그램 버그나 기능향상을 찾을 수 있습니다.
머리속의 그러한 내용들이 사라지기 전에 얼른 이슈를 등록하세요.
개발에 몰두하게 되면 여러분의 머리속에 번쩍했던 칼같이 빛나던 생각들이 어느듯 사라지게 되고 나중에서야 그게 뭐였지하고 머리를 쥐어짜게 될겁니다

이슈 관리 시스템을 사용하면 프로젝트에 관한 진행상황을 파악할 수가 있습니다
누가 지금 어떤 이슈를 처리 중이고 어떻게 진행되고 있는지를 말이죠
어떤 이슈를 당장 처리해야하고 어떤 이슈는 뒤로 미루어도 되는지도 파악할 수 있습니다
물론 이슈를 등록할때 우선순위를 정해야만 합니다

프로젝트를 유지보수를 하다보면 느슨해질때가 있습니다
단기 목표를 설정함으로써 프로젝트에 활기를 불러올 수 있습니다
(이슈를 하나 하나씩 제거해나가는 재미가 있습니다.)

여러분은 보스가 진행상황을 물었을때 어떻게 보고를 하시나요
쪼르르 달려가 간단히 말로 하거나 메일로 보고를 하나요?
이슈 관리 시스템을 사용하고 있다면 누구나 이슈 관리 시스템을 사용할 수 있기 때문에 이런 일들은 훨씬 줄어들겁니다
(보스는 누구나 다 프로젝트 진행상황을 알고 싶어합니다)
그리고 일일 보고나 주간 업무 보고에 적극 사용할수 있습니다. 갖다 붙이기로 말이죠
예전 회사에서는 금요일에 주간보고를 했었는데 월요일이나 화요일에 제가 뭘했는지 도무지 기억할 수가 없었습니다

지금껏 이슈관리의 잇점을 이야기했는데요
이슈 관리 시스템을 운용하는게 더 많은 시간이 들지 않을까? 그리고 뭐 이런것까지 필요할까? 생각할지도 모르겠습니다
단언컨데 여러분의 기억력을 믿지마세요.
시간은 지나가게 마련이고 기억력은 여러분을 배신하게 될겁니다(유지보수 계약을 맺은 회사가 지난 1년간 어떤걸 업데이트했는지 알려 달라고 하는 일이 있었습니다 여러분은 1분안에 업데이트 내역을 뽑아 낼수가 있나요?)
왜 많은 개발사들이 이런 시스템을 구축하고있는지 생각을 해봐야합니다
개발자들은 이제 컴파일러 만큼이나 이런 시스템과 친해져야만 합니다
혼자서 진행할수있는 프로젝트는 많지 않고 혹 혼자하더라도 이러한 시스템은 반드시 구축해야만 합니다

이제는 주먹구구식 개발과는 안녕을 고할때가 되었습니다

댓글

이 블로그의 인기 게시물

80040154 오류로 인해 CLSID가 {xxxx-...}인 구성 요소의 COM 클래스 팩터리를 검색하지 못했습니다.

원문보기 .NET 으로 만든 응용프로그램에서 com 객체를 호출한 경우 Windows7 64bit 에서 제목과 같은 에러가 발생했다. Win32 COM 과 .NET 프로그램간의 호환성 때문에 생긴 문제였다. 원인은 .NET 실행시 JIT 컴파일러에 의해 최적화된 기계어로 변환되기 때문.. Win32 COM은 컴파일시.. Win32 COM에 맞춰 빌드 속성에서 하위버전으로 맞춰 컴파일을 다시하는 방법도 있지만 메인 프로젝트가 .NET이라면 참조되는 모든 프로젝트를 다 바꿔야할 노릇.. 또 다른 방법은 COM+를 이용하여 독립적으로 만드는 것이다. 분리시키는 방법은 아래 주소해서 확인할 수 있다. http://support.microsoft.com/kb/281335 나의 경우는 Win32 COM DLL을 64비트 .NET 프로그램에서 참조하니 COM 객체를 제대로 호출하지 못하였습니다. 그래서 .NET 프로그램의 Target Machine을 x86으로 설정하니 제대로 COM 객체를 호출하였습니다.

[Pyinstaller] 실행 파일 관리자 권한 획득하기

고객사에서 일부 사용자에게서 프로그램 오류가 발생한다며 아래와 같이 에러 캡처를 보내왔습니다. 프로그램에서 로그를 남기기 위해 로그 파일을 생성하는데 권한의 문제로 로그 파일을 생성하지 못해 프로그램 오류가 발생한 것 같습니다. 처음에는 Python 코드에서 관리자 권한을 요청하는 코드를 넣으려고 했는데, 실제로 Stackoverflow를 찾아보면 이런 내용이 나옵니다. 프로그램이 관리자 권한으로 실행되지 않았다면 관리자 권한으로 다시 프로그램을 실행시키는 코드입니다. import os import sys import win32com.shell.shell as shell ASADMIN = 'asadmin' if sys.argv[-1] != ASADMIN: script = os.path.abspath(sys.argv[0]) params = ' '.join([script] + sys.argv[1:] + [ASADMIN]) shell.ShellExecuteEx(lpVerb='runas', lpFile=sys.executable, lpParameters=params) sys.exit(0) 하지만 개인적으로 이런 방식은 마음에 들지 않았고 조금 더 찾아보니 Pyinstaller로 exe 파일을 만들 때 옵션을 설정하여 관리자 권한을 요청하도록 할 수 있다고 합니다. --uac-admin을 옵션에 추가하면 프로그램 실행 시 관리자 권한을 요청할 수 있습니다. pyinstaller.exe --uac-admin sample.py 하지만 안타깝게도 이 방식은 원하는 대로 동작하지 않았습니다. 마지막으로 manifest 파일을 이용하여 시도해보았습니다. spec 파일을 이용하여 pyinstaller로 빌드하면 <실행 파일 이름>.manifest 라는 파일이 생성됩니다. 파일에서 아랫부분을 찾아볼 수 있습니다. <security> <re

초간단 프로그램 락 걸기

프로그램에 락을 걸 일이 생겨났다. 하드웨어 락을 걸면 쉬울텐데 그 정도는 아니고 프로그램의 실행 날짜를 제한 해 달라고 한다. 그래서 파일(license.lic)을 가지고 락을 걸리고 결정을 했다. 요구 사항은 아래와 같다. 1. license.lic 파일이 없으면 프로그램을 실행 할수 없게 한다. 2. 지정한 날짜를 넘어서는 프로그램을 실행 할수 없게 한다. 3. 사용자가 시스템 날짜를 되돌렸을때 인식하여 프로그램을 실행 할수 없게 한다. 음.... 1.번 문제는 사용자가 프로그램을 실행하기 위해서 license.lic 파일을 받아야만 한다. license.lic 파일에는 최근 실행 날짜/종료날짜 이런식으로 적도록 한다.(물론 내용은 암호화 한다.) 최근 실행날짜는 프로그램이 실행때마다 업데이트 하도록 하고 시스템 날짜와 비교하여 시스템 날짜가 최근 실행 날짜보다 이전의 날짜면 시스템 날짜를 되돌렸다고 인식하도록 한다.(3.번 문제 해결) 시스템 날짜와 종료 날짜를 비교하여 시스템 날짜가 종료 날짜를 넘으면 프로그램을 실행 할수 없도록 한다.(2.번 문제 해결)