덩치 큰 프로그램을 장기간에 걸쳐 계발 할 경우 소스프로그램의

yuni의 이미지

지속적으로 프로젝트를 할 경우 프로그램 관리는 어떻게 하시나요?
질문이 조금 모호 합니다만, 이런 경우에는 어떻게 하시는지요.
프로그램을 지속적으로 계발을 하는 경우 어제 다른고 오늘 다르고 그리고
좀 지나서 생각해보면 잘 못 짠 것이라 다시 돌아가야 되는데 어디서 다시
시작 해야 할지 막막해 지고. 프로그램 내에 설명문 달다가도 여기에
달다가 다시 다른 곳에 적다가 2년 쯤 지나니까 엉망이 되는군요. 작은
서브 프로그램들도 조각내서 짜는 것도 나중에는 서브 프로그램들의
아우성에 통제 불능이고 기억도 점점 흐려지고... 이런 경험들 없으신지요.

덩치 큰 프로그램을 효과적으로 지속적으로 관리해 나가는 비법들 좀
나누어 주십시요.

낙엽의 이미지

yuni wrote:
지속적으로 프로젝트를 할 경우 프로그램 관리는 어떻게 하시나요?
질문이 조금 모호 합니다만, 이런 경우에는 어떻게 하시는지요.
프로그램을 지속적으로 계발을 하는 경우 어제 다른고 오늘 다르고 그리고
좀 지나서 생각해보면 잘 못 짠 것이라 다시 돌아가야 되는데 어디서 다시
시작 해야 할지 막막해 지고. 프로그램 내에 설명문 달다가도 여기에
달다가 다시 다른 곳에 적다가 2년 쯤 지나니까 엉망이 되는군요. 작은
서브 프로그램들도 조각내서 짜는 것도 나중에는 서브 프로그램들의
아우성에 통제 불능이고 기억도 점점 흐려지고... 이런 경험들 없으신지요.

덩치 큰 프로그램을 효과적으로 지속적으로 관리해 나가는 비법들 좀
나누어 주십시요.

그런 프로젝트에서는 저의 경우 처음 설계서 부터 세부화 해가야 할 모듈에 대해 정확한 분할을 하려고 노력합니다. 나중에 이런저런것이 더 덧붙어도 지저분 해지지 않으려면 각 모듈들 마다 각각의 속성이나 특징을 가지고 있어야 하고 그렇게 되면 추후에 새로 작성되어 붙는 모듈이 있더라도 특징이나 속성에 맞춰서 그쪽 모듈에 얹습니다.
2년동안의 프로젝트는 해본적이 없어서 잘 모르겠지만, 위의 방법은 6개월의 저로써는 꽤 장시간의 프로젝트에 도입했던 방식입니다.

monpetit의 이미지

CVS나 Subversion 같은 버전 관리 시스템을 추천합니다.
본인의 기억력을 믿지 못하는 저같은 사람뿐만 아니라 아주 비상한 머리의 소유자라 해도 장기간의 프로젝트라면 당연히 이력 관리를 해야 할 겁니다.
제 경우는 프로그램도 프로그램이지만 꼭 워드프로세서로 형식을 넣어야 되는 문서가 아니라면 그냥 텍스트 문서로 만들고 버전 관리를 합니다.

purewell의 이미지

저 같은 경우 디렉토리 설계를 알맞게 한 뒤에,
CVS로 관리하죠.

CVS 추천합니다.

_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz

fender의 이미지

앞의 분들 말씀대로 어떤 형식이든 버전관리 프로그램을 사용하는 것은 필수입니다. 또한 자동화된 빌드환경(continuous build)나 자동화된 단위테스트를 사용하는 것도 좋은 방법입니다.

그 밖에는 코딩 컨벤션이나 예외처리 방식 등의 표준을 미리 정해두는 것이 매우 중요하고, 가능하면 필요 기능 중 이미 검증된 라이브러리가 있는 경우 신규 개발을 피하고 해당 라이브러리를 사용해 불필요하게 코드가 커지는 것을 막고, 내부 적으로도 동일한 기능을 하는 부분은 공통 모듈로 분리해서 관리해야 합니다.

참고로 자바의 경우 Maven(http://maven.apache.org)와 같은 프로젝트 관리 및 빌드 도구를 사용할 경우 모듈화된 프로젝트 관리에 도움이 될 수 있습니다. 서로 상호 의존성을 가지고 있는 Jakarta 하위 프로젝트들이 관리되는 방식을 보시면 도움이 될 수 있습니다. 그 밖에 Checkstyle과 같은 툴을 이용해서 코딩 컨벤션과 best practice를 강제할 수도 있습니다.

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...