2009-05-23 3 views
2

오래 실행중인 프로젝트 (장기 실행 = 수년)의 한가운데에 있다고 가정하고 예상대로 새로운 출시가있을 것입니다. 새로운 기능 (예 : Linq, Entity Framework, WPF, WF ...), 새로운 Visual Studio 또는 원하는 컨트롤 라이브러리의 다음 항목, 새로운 모의 프레임 워크 및 기타 많은 기능이 포함 된 새로운 .NET Framework가있을 수 있습니다 . 이러한 기술 업데이트를 처리하기위한 지침은 무엇입니까? 프로젝트를 마칠 때까지 즉시 채택합니까 아니면 무시합니까? 다른 것들 (도구, 프레임 워크, 지원 물건)에 대한 다른 지침이 있습니까?장기 실행 프로젝트에서 기술 업데이트를 어떻게 처리합니까?

답변

4

내 경험에 비추어 볼 때, 이러한 결정은 항상 사례별로 이루어집니다. 다음과 같은 여러 요소가 고려됩니다.

  1. 신기술은 얼마나 성숙합니까? 조직은 최첨단 신기술 개발에 앞장서 는가? 아니면 검증 된 도구 및 방법론으로 작업하는 것을 선호합니까?

  2. 사람들이 갖고있는 기술 세트는 무엇입니까? 새로운 기술의 사용과 일관성이 있습니까, 아니면 더 많은 교육이 필요합니까? 향상된 생산성은 속도를 높이는 데 걸리는 시간보다 중요할까요?

  3. 기존 기술에 어떤 투자가 있습니까? 새로운 기술로 옮겨가는 데 드는 비용은 얼마입니까? 얼마나 많은 재 작업과 코드 재 작성이 필요합니까?

  4. 요구 사항은 무엇입니까? 기존의 기술로 지원 되는가 아니면 요구 사항을 충족시키는 데 필요한 새로운 도구입니까?

  5. 성능 기대치는 무엇입니까? 새로운 기술이 이전 기술로는 충족시킬 수없는 성능 향상을 제공합니까?

  6. 기술 문화는 어떻습니까? 조직 공급 업체 고유 (예 : Microsoft 샵)입니까? 오픈 소스 코드를 사용할 수 있습니까?

  7. 프로젝트의 범위는 무엇입니까? 이 프로젝트는 프레임 워크 및 도구와 같은 기술 지원에서 이익을 얻을 수있는 대규모 프로젝트입니까, 아니면 이러한 것들로 인해 과중한 부담이되는 작은 프로젝트입니까?

  8. 새로운 기술은 어떻게 지원됩니까? 공급 업체가 훌륭한 문서를 가지고 있습니까? 문제가 있으면 얘기 할 수있는 사람이 있습니까?또는 지원 계약없이 문제를 해결하는 방법을 알고있는 사람들이있는 조직입니까?

  9. 기술이 사용하기에 편리합니까? 이해가가는 것 같습니까? 그것은 깨끗하고 우아합니까? 다른 사람들이 좋아할 것 같습니까? 다른 사람들이 문제가 있습니까?

  10. 기술이 이번주의 최신 맛입니까? 전장에서 확실한 결과를 산출 한 것이 입증 되었습니까? 아니면 단지 종교입니까?

  11. 새로운 기술을 배우고 꼬임을 제거하는 데 얼마나 시간이 필요합니까? 이익이 비용보다 중요한가? 이 프로젝트는 ORM을 보증 할만큼 복잡하기 때문에 아주 간단한 예를 들어

, 나는 나의 가장 최근의 프로젝트에 대한 SQL로 링크를 선택, L2S 잘 수행하고 가볍고, 우리는 마이크로 소프트 상점, 그리고 그것을 엔티티 프레임 워크가 황금 시간대에 준비가되어 있지 않다는 내 감각이 있습니다. (마이크로 소프트가 미래를위한 기본 틀이 될 것이라고 말하고 있지만). 나는 다른 요인에 피치 말할 것

+1

+1 좋은 답변입니다. – ralphtheninja

0

나는 그 프로젝트가 그렇게 오래 지속되지 않는다고 제안 할 것이다. 두 달마다 반복되는 작은 조각으로 응용 프로그램을 개발하십시오. 그런 식으로 새로운 기술이 나오면 전체 애플리케이션을 재개발하기로 결정할 때 필요한 변경과 업데이트를 구현할 수 있습니다. 당신이 말했듯이, 모든 것이 변화함에 따라 전체 어플리케이션을 개발하려고 시도하는 것은 효과가 없습니다.

+0

"장기간 프로젝트"는 "제품"을 의미하는 것으로 이해했습니다. 예를 들어 제품은 10 년 동안 (많은 릴리스로) 발전 할 수 있습니다. – ChrisW

3

당신이 시작한 것을 고수하십시오.

크고 장시간 진행되는 프로젝트에는 종종 거대하고 매우 복잡한 코드 기반이 함께 제공됩니다. 라이브러리의 새 버전을 변경하거나 업그레이드하면 매우 미묘하고 예상치 못한 방식으로 버그가 추가 될 수 있습니다.

큰 프로젝트의 경우 사용 된 도구와 라이브러리는 디자인 단계에서 테스트 및 평가되어 있어야합니다. 쇼 스토퍼 나 보안 문제가없는 한 업그레이드하지 않는 것이 가장 좋습니다.

항상 기억하십시오. 스트림 중간에 말을 바꾸지 마십시오. :-)

1

, 같은 -

  1. 는 지난 4 월, 마이크로 소프트는 SQL Server 2000의 메인 스트림 지원을 은퇴 소프트웨어, 예를 들어, 수명이 거의 다 말, 당신의 제품은 다음을 사용합니다 다음 릴리스에서 다음 버전의 SQL Server를 사용하는 것이 현명합니다.
  2. 또 다른 요인은 최신 소프트웨어 릴리스의 새로운 기능이 제품에 얼마나 많은 가치를 부여 할 것인가입니다. .NET Framework의 새로운 릴리스에는 제품에 어떤 가치도 추가하지 않는 무언가가있을 수 있습니다. 그렇다면 업그레이드 할 수있는 확실한 사례는 없습니다.
  3. 예산도 중요한 요소입니다. 이미 소프트웨어 보증과 같은 부분에 속하지 않는 한 다음 릴리스로 업그레이드하기 위해 라이센스를 업그레이드해야한다고 생각합니다.
  4. 팀 교육도 하나의 요소입니다. 최신 버전이 제품에 추가되면 팀도 교육해야합니다.

글쎄, 다른 요인들도있을 수 있습니다. 이들은 내 머리 꼭대기에서 벗어난 것들이었다. 나는 그것이 도움이되기를 바랍니다. 당신이 프레임 워크 구체적인 예에 ​​대해서 이야기하는 경우

환호

1

, 나는 당신을주지 조언의 가장 큰 부분은 시스템과 응용 프로그램을 별도의 유지입니다. 이것이 Model-View-Controller와 같은 패턴을 좋아하는 이유입니다. 코드를 모듈화하여 앱 전체를 손상시키지 않으면 서 섹션을 업그레이드 할 수 있습니다.

프레임 워크에 힘내 또는 SVN 저장소가있는 경우 repo에서 일반적인 '시스템'디렉토리를 체크 아웃하고 'svn update'를 호출하여 가끔씩 최신 빌드를 유지할 수 있습니다.

0

다른 포스터가 말했듯이, 그것은 확실히 사안별로 다를 바가 없습니다. 업그레이드 할 수있는시기와 시스템의 새 버전을 테스트하는 것이 얼마나 어렵거나 쉬운 지에 따라 대부분 결정됩니다. 응용 프로그램에 대한 포괄적 인 자동화 된 테스트 스위트가 있으면이 작업에 많은 도움이됩니다.

일반적으로 가능한 한 자주 라이브러리의 최신 안정 릴리스로 업데이트하려고합니다. 이는 유지 관리가 더 쉽기 때문입니다. 업데이트하지 않으면 사용중인 라이브러리 버전의 버그를 패치하거나 해결할 수 있습니다.업데이트 빈도를 줄이면 더 많은 변경 사항을 처리하고 시스템을 마지막으로 변경 한 이후로 시간이 오래 걸리므로 각 업데이트가 더 효과적 일 수 있습니다.

관련 문제