문제

가정하자에서 당신의 장기 실행 프로젝트(긴 실행=몇 년)및 예상대로,거기에 몇 가지 일이 일어나고 있다는 걸 알과 새로운 출시하였습니다.될 수 있습니다.Net 프레임워크 브랜드의 새로운 기능(예를들면Linq,엔티티 프레임워크,WPF,WF...),새로운 또는 Visual Studio V. 다음의 좋아하는 제어 라이브러리,새로운 모의 프레임워크 및 더 많은 것들입니다.무엇인가에 대한 지침을 처리한 이러한 기술을 업데이트?당신이 채택을 즉시 또는 당신은 그들을 무시할 때까지 프로젝트의 끝?당신은 서로 다른 지침이 다른 것을(도구,프레임워크 지원의 물건)?

도움이 되었습니까?

해결책

내 경험상, 이러한 결정은 항상 사례별로 이루어집니다. 다음을 포함하여 몇 가지 요소가 고려됩니다.

  1. 새로운 기술은 얼마나 성숙합니까? 조직은 Bleeding Edge 신기술과 함께 일하는 것을 좋아합니까, 아니면 입증 된 도구 및 방법론으로 작업하는 것을 선호합니까?

  2. 당신의 사람들은 어떤 기술 세트를 가지고 있습니까? 그들은 새로운 기술의 사용과 일치합니까, 아니면 더 많은 교육이 필요합니까? 생산성 향상이 속도가 높아지는 데 걸리는 시간보다 중요합니까?

  3. 기존 기술에 어떤 투자가 있습니까? 새로운 기술로 이동하는 데 드는 비용은 얼마입니까? 코드의 재 작업 및 재 작성은 얼마입니까?

  4. 요구 사항은 무엇입니까? 기존 기술로부터 지원됩니까, 아니면 요구 사항을 충족하는 데 새로운 도구가 필요합니까?

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

  6. 기술 문화는 어떻습니까? 조직 공급 업체가 구체적으로 (예 : Microsoft Shop)? 오픈 소스 코드를 사용할 수 있습니까?

  7. 프로젝트의 범위는 무엇입니까? 프레임 워크 및 도구와 같은 기술을 지원하는 데 도움이되는 큰 프로젝트입니까, 아니면 이런 것들에 의해 과도하게 무게를 측정하고 복잡한 작은 프로젝트입니까?

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

  9. 기술이 함께 일하기에 편안합니까? 이해가 된 것 같습니까? 깨끗하고 우아합니까? 다른 사람들이 그것을 좋아하는 것 같습니까? 다른 사람들이 문제가 있습니까?

  10. 이 기술은 이주의 최신 맛입니까? 전장에서 실질적인 결과를 낳는 것이 입증 되었습니까, 아니면 종교 일뿐입니까?

  11. 새로운 기술을 배우고 꼬임을 철저히 배제 해야하는 시간이 얼마나 걸립니까? 혜택이 비용보다 중요합니까?

매우 간단한 예로, 프로젝트가 ORM을 보증하기에 충분히 복잡했기 때문에 가장 최근의 프로젝트를 위해 SQL 링크를 선택했습니다. L2S는 잘 수행하고 가벼우 며, 우리는 Microsoft 상점이며, Entity 프레임 워크는 제 의미입니다. Microsoft가 미래를위한 프레임 워크가 될 것이라고 말했지만 프라임 타임에 대한 준비가되어 있지 않습니다.

다른 팁

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

크고 장기적인 프로젝트에는 종종 거대하고 매우 복잡한 코드베이스가 제공됩니다. 새로운 버전의 라이브러리로의 변경 또는 업그레이드는 매우 미묘하고 예기치 않은 방식으로 버그를 추가 할 수 있습니다.

또한 : 대규모 프로젝트의 경우, 사용 된 도구와 라이브러리는 설계상에서 테스트 및 평가되어야합니다. 쇼 스토퍼 또는 보안 문제를 찾지 않으면 업그레이드하지 않는 것이 가장 좋습니다.

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

나는 다른 요인들을 말할 것입니다.

  1. 지난 4 월, Microsoft는 SQL Server 2000에 대한 Microsoft가 은퇴 한 주류 지원과 같은 소프트웨어가 수명이 끝났다고 말하며, 제품은 다음 릴리스에서 다음 버전의 SQL Server를 사용하여 더 현명하게 사용합니다.
  2. 또 다른 요소는 최신 소프트웨어 릴리스의 새로운 기능이 제품에 가져올 가치가 얼마나 되는가입니다. .NET Framework의 새로운 릴리스에는 제품에 값을 추가하지 않는 것이 있으면 업그레이드 할 강력한 사례가 없습니다.
  3. 예산도 중요한 요소입니다. 이미 소프트웨어 보증과 같은 부분이 아니라면 다음 릴리스로 올라 가기 위해 라이센스를 업그레이드해야한다고 생각합니다.
  4. 팀에 대한 교육도 요인입니다. 최신 릴리스가 제품에 추가되면 팀도 훈련해야합니다.

글쎄, 다른 말도있을 수 있습니다. 이것들은 내 머리 꼭대기에서 벗어난 사람들이었습니다. 도움이되기를 바랍니다.

건배

프레임 워크 별 예제에 대해 이야기하고 있다면, 내가 줄 가장 큰 조언은 시스템과 응용 프로그램을 별도로 유지하는 것입니다. 이것이 내가 Model-View-Controller와 같은 패턴을 좋아하는 이유입니다. 코드를 모듈화하고 앱을 전체적으로 나누지 않고 섹션을 업그레이드 할 수 있음을 의미합니다.

보다 실용적인 수준에서 프레임 워크에 GIT 또는 SVN 리포지토리가있는 경우 Repo의 일반적인 '시스템'디렉토리를 확인하면 때때로 'SVN 업데이트'를 호출하여 최신 및 가장 큰 빌드를 따라 잡을 수 있습니다.

나는 프로젝트가 그렇게 오래 지속되지 않는다고 제안합니다. 몇 달마다 반복되는 작은 조각으로 응용 프로그램을 개발하십시오. 이렇게하면 새로운 기술이 나오면 필요한 변경을 수행하고 업데이트를 구현할 수 있습니다. 오히려 전체 응용 프로그램을 재개발하기로 결정해야합니다. 당신이 말했듯이, 상황이 바뀌면서 전체 응용 프로그램을 개발하려고 시도하는 것은 효과가 없습니다.

으로 또 다른 포스터는 말했다,그것은 확실히 case-by-case basis 것입니다.할 수 있는 업그레이드 할 때 결정된 대부분에 의해 하나 쉽게 그것을 테스트하는 것이 새로운 버전의 시스템입니다.포괄적인 자동화된 테스트 스위트 응용 프로그램에 대해 많은 도움이됩니다.

일반적으로,나를 업데이트하려고 최신 안정 버전의 라이브러리와 그래서 가능한 한 자주기 때문에,유지 보수가 쉽습니다.업데이트하지 않으면,당신은 자신을 찾을 수 있습니다 패치 또는 작동하 주변의 버그의 버전에서는 라이브러리를 사용합니다.업데이트하는 경우 자주,각 업데이트 될 것입니다 더 많은 작업하기 때문에 당신은 더 많은 변화를 다루고,그것은 더 이상 이후 지난 감동 시스템이며,따라서 당신은 기억에 대한 적습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top