2010-04-15 4 views
0

나는 소프트웨어 프로젝트를 관리 할 수있는 올바른 방법에 대해 배울 수있는 방법을 찾고 있었고, 나는 다음과 같은 블로그 게시물에 발견했습니다. 나는 어려운 방법으로 언급 된 것들 중 일부를 배웠고, 다른 것들은 의미가 있으며, 아직 다른 것들은 여전히 ​​나에게 불분명하다. 프로젝트 관리 및 번들 종속성을

저자는 프로젝트의 기능과 얼마나 그 기능이 더 나은 용어의 부족에 대한 프로젝트의 'suckiness'에 기여 잔뜩 나열 요약합니다. 특히, http://spot.livejournal.com/308370.html

나는 당신의 프로젝트 종속성을 번들에 대한 저자의 입장을 이해하지 않는다 : 당신은 여기에 전체 기사를 찾을 수 있습니다. 이들은 :

== 묶기 ==

  • 귀하의 소스는

    왜 특히 주어,이 문제가가 [FAIL의 +20 점]에 따라 다른 코드 프로젝트와 함께 제공 포인트 3, 프로젝트 의존성을 프로젝트 요구 사항에 맞도록 수정했기 때문에 코드가 의존성과 함께 배포되어야한다는 점을 더 잘 이해하지 못합니까? 소스 코드가 먼저 번들 코드 비트 [FAIL의 10 점]을 구축없이 구축 할 수없는 경우

  • 이 반드시 제 3 자 libs와에 내장 된 소프트웨어의 경우가 될 필요가 없습니다합니까? 링커가 작동하기 전에 코드에 라이브러리로 컴파일 할 다른 코드가 필요합니까? 당신이 그 다른 번들 코드 비트 [40 FAIL의 포인트]

    이 프로젝트에 필요한 경우를 수정 한 경우

  • 다음 자연스럽게 당신이 번들으니 다음은 당신과 코드를했다. 몇몇 라이브러리의 빌드를 커스터마이징하고 싶다면, WxWidgets을 사용하여, 원하는 라이브러리를 bulid하도록 프로젝트 빌드 스크립트를 편집해야합니다. 따라서 코드를 작성하려는 사람들에게 변경 사항을 게시해야합니다. 따라서 params가 이미 작성된 상위 레벨 make 스크립트를 사용하여 배포하십시오. 또한 (특히 Windows 환경에서) 코드베이스가 특정 버전의 lib (사용자 정의 프로젝트에서도 컴파일해야 함)에 의존하는 경우 사용자에게 코드를 제공하는 것이 더 쉽지 않을 것입니다. 이 경우 사용자가 이미 올바른 버전을 설치하지 않았을 수 있습니까?)

그렇다면이 의견에 어떻게 답할 것이며, 어떤 점을 고려하지 않을 수 있습니까? 저자의 테이크 (또는 제)에 동의 하시겠습니까, 그렇지 않습니까? 왜 그런가요?

설명을 위해 편집.

+0

"왜 이것이 문제입니까 (특히 마지막 점이 있습니까?)" '마지막 요점'은 무엇을 말하는 겁니까? –

+0

질문이 실제로 수정되도록 수정하는 것이 좋습니다. 명확한 주석의 긴 세트는 읽히지 않을 것입니다. 질문을 명확히하고 의견을 삭제하십시오. –

답변

0

귀하의 소스는이에 따라 다른 코드 프로젝트와 함께 제공됩니다. 내 프로젝트 X 또는 X의 이전 릴리스의 비밀 내부 신비에 의존하기 때문에

내 프로젝트는

그러나 프로젝트 X를 필요로하고 내 프로젝트는 X의 사본은 특히 X의 나노를 공개 포함 . 그리고 다른 것.

최신의 그리고 최고의 X를 설치하고 내 프로젝트에서 휴식을 확인하려고합니다. X를 업그레이드하면 프로젝트가 망가 졌으므로 프로젝트를 잊어 버립니다.업데이트 후에 자발적으로 깨지는 것과 싸우지 않을 것입니다. 그들은 더 나은 오픈 소스 구성 요소를 찾을 수 있습니다.

따라서 FAIL 점수.

번들 코드 비트를 처음 작성하지 않고 소스 코드를 작성할 수없는 경우.

내 프로젝트는 X에 대한 API에 의존하지 않고, API를 우회하여 X의 특정 부분에 깊숙이 연결되어 있습니다.

프로젝트가 X에 대한 API에 의존했다면 - C 또는 C++ 같은 일부 언어의 경우 프로젝트가 바이너리가 아닌 C 또는 C++ 헤더만으로 컴파일 될 수 있습니다.

자바의 경우 이진수가 아닌 독립 헤더가 없으므로이 경우는 그렇지 않습니다. 그리고 동적 인 언어 (파이썬과 같은)의 경우에는 기술적 인 의미가 없습니다.

그러나 자바와 파이썬조차 인터페이스를 구현과 분리하는 방법이 있습니다. 구현 (인터페이스가 아님)에 의존한다면, 여전히 동일한 필수 문제가 발생했습니다.

내 프로젝트가 C 또는 C++ 바이너리에 의존하고 순서가 맞지 않거나 광산을 재구성하지 않고 다른 구성 요소를 업그레이드하면 상황이 심각하게 잘못 될 수 있습니다. 그들은 이상 함, 파손, "불안정"을 볼 수 있습니다. 내 제품이 고장난 것 같습니다. 그들은 그것을 디버그하지 않을 것이다. 끝났어. 그들은 더 안정된 것을 발견 할 것입니다.

따라서 FAIL 점수.

다른 번들 코드 비트를 수정 한 경우 나는 X를 수정

  1. 그것이 X.

  2. 의 한 부분으로 인정 받기 수정되지 않은 X에서 작동하도록 내 프로그램을 수정하는 경우

나는 두 가지 선택이

내 프로젝트가 수정 된 X에 의존하는 경우 아무도 X를 간단하고 정확하며 독립적으로 설치할 수 없습니다. 그들은 X를 업그레이드 할 수 없습니다, 그들은 아마 내가 본질적 따라서

X.

을 수정하여 불가능 자신의 일을했습니다

X와 버그 수정 또는 보안 패치를 적용 할 수 없습니다 X를 유지할 수없는 FAIL 점수.

그런 다음 코드를 작성하려는 사람들에게 변경 사항을 게시해야합니다.

사실, 그들은 저를 싫어할 것입니다. 그들은 X에 대한 신비한 변화에 대해 알고 싶지 않습니다. 그들은 규칙에 따라 X를 만들고 규칙에 따라 물건을 만들어야합니다. 그들은 미스테리 업데이트 패치 키트가 올바르게 적용되었는지 읽고, 생각하고, 확신하고 싶지 않습니다.

주위를 둘러 보지 않고 경쟁 패키지를 다운로드합니다. 실패.

당신의 코드베이스는 정말 초라한의 그 (당신은 또한 사용자 정의 프로젝트에 컴파일 할 필요가 있음)

lib 디렉토리의 특정 버전에 의존하는 경우

. 만약 내가 커스텀 컴파일을하는 버전에 의존한다면, 그들은 내 패키지를보고 다 끝냈다. 그들이 고투하기 전에 그들은 버전에 특정한 내적 신비와 커스텀 컴파일없이 무언가를 발견 할 것입니다. 실패.

+0

내 생각에 되돌아 보았을 때, 나는 내 프로젝트의 관점에서 본래의 링크에있는 질문에 답하고있었습니다. 지금까지는 내 회사의 사람들이 관리하고있는 것입니다. 주어진 사실과 우리가 (패키지 관리자가없는) 윈도우에서 작업한다는 사실을 감안할 때, 커스텀 메이크 스크립트와 함께 의존성을 함께 번들했다. 프로젝트를위한 기본 빌드 스크립트에 묶어서 하나의 버튼을 만들었지 만 어쩌면 올바른 방법이 아닙니다. 통찰력에 감사드립니다. 이제 게시물이 더 의미가 있습니다! – Joshua

+0

분리 된 별도의 수단입니다. 만약 당신이 그들을 분리 할 수 ​​없다면, 당신은 당신이하고있는 것을 다시 생각해야합니다. –

관련 문제