2009-02-09 2 views
7

모든 소프트웨어 프로젝트에는 많은 프로그래머 시간 밖에 없으므로 이전 버전과의 역 호환이 가능하도록 얼마나 많은 돈을 쓰고 있습니까? 실제로 고려해야 할 몇 가지 점이 있습니다 :프로젝트가 이전 버전과의 호환성을 위해 소비해야하는 시간과 노력은 얼마나됩니까?

  • 소프트웨어의 수명이 결정에 영향을 줍니까? 프로그램이 최신 버전 일 때 이전 버전과의 호환성에 더 적은 시간을 투자합니까?
  • 결정 사항은 설치된 사본이있는 클라이언트 수만을 기준으로합니까?
  • 향후 변경을 지원하는 코드 및 파일 형식을 생성하기 위해 적극적으로 노력합니까?
  • v1.0을 개발할 때 v2.0이 v1.0과 쉽게 호환되도록 만들기 위해 노력합니까? ("예약 된"필드는 그대로 예를 들어 있습니다.)
  • "아니오, 더 이상 지원하지 않을 것입니다"라는 기능을 어떻게 결정합니까?

답변

9

클라이언트 기반은 많은 이전 버전과의 호환성 문제를 지원해야하는지 여부를 결정하는 핵심 요소입니다.

는 기본적으로, 당신은 당신이 구현해야 다른 비 기능적 요구 사항 같은 것을 평가해야합니다, 당신은 신중하게 "backward compatibility" feature에 포함을 지정해야합니다

  • API 호환성을. 즉, 라이브러리의 후속 버전은 이전 버전과 동일한 API를 제공하므로 이전 버전에 대해 작성된 프로그램은 새 버전으로 계속 컴파일 및 실행될 수 있습니다. 실제로 동일한 기능을 유지하는 것 외에도 이러한 기능은 이전 버전에서 수행 한 새 버전에서 동일한 기능을 수행한다는 것을 의미합니다.
  • 응용 프로그램 바이너리 인터페이스 또는 ABI 호환성. 즉, 라이브러리를 컴파일 할 때 생성 된 2 진 오브젝트 Z 드 레벨에서 이전 버전과의 호환성이 유지됩니다.
    일반적으로 API와 ABI 호환성에는 약간의 중복이 있지만 중요한 차이점이 있습니다.ABI 호환성을 유지하려면 프로그램에서 동일한 기호를 모두 내보내도록해야합니다.
    이것은 이전 버전에 링크 된 프로그램이 새 버전으로 계속 실행될 수 있도록 모든 기능과 전역 적으로 액세스 가능한 객체가 있어야 함을 의미합니다.
    API 호환성을 깨고 ABI 호환성을 유지하는 것이 가능합니다.. C 코드에서는 C 파일에 심볼을 남기고 공용 헤더에서 심볼을 제거하므로 심볼에 액세스하려는 새 코드는 컴파일되지 않지만 이전 버전에 대해 사용자가 컴파일 한 이전 코드는 계속 실행됩니다.
  • 클라이언트 - 서버 프로토콜 호환성. 즉, 이전 버전에서 제공되는 네트워크 프로토콜 버전을 사용하는 클라이언트는 새로운 서버를 사용할 때 계속 작동하며 최신 클라이언트 프로그램은 이전 서버와 계속 작동합니다.
  • 데이터 형식 호환성. 최신 버전의 코드는 이전 버전에서 작성된 데이터 파일로 작업 할 수 있어야하며 그 반대의 경우도 마찬가지입니다. 이상적으로는 데이터 형식에 대한 일부 호환성을 구축 할 수 있어야합니다. 파일 처리 루틴이 인식 할 수없는 필드를 무시하고 보존 할 수있는 경우 새 기능은 이전 버전을 손상시키지 않는 방식으로 데이터 형식을 수정할 수 있습니다. 이는 사용자가 프로그램의 새 버전을 설치할 때 매우 화가 나서 갑자기 이전 데이터에 액세스 할 수 없기 때문에 가장 중요한 종류의 호환성 중 하나입니다. 당신이 당신의 고객 기반의 자연과 이전 기준 (이전 버전과의 호환성의 특성)를 결합 할 경우

, 당신은을 결정할 수 있습니다 :

  • 를 고객 기업의 필요에 내부 경우 2.0은 중요한 기능을 손상시킬 수 있습니다. 클라이언트가 외부에있는 경우

  • , 2.0 여전히 문제를 일으킬 수 있지만 클라이언트는 모든 세계 경우 이미이 SO question about java에 했나요 당신은 극단적에 provide migration guide

  • 해야 할 수도 있습니다 , 당신은 오래된 것들을 비난하지 않고 새로운 기능을 제공하게 될지도 모릅니다! 심지어 preserving BUGS of your old products도 클라이언트의 응용 프로그램이 이러한 버그에 달려 있기 때문에 !!


  • 소프트웨어의 나이는 당신의 결정에 영향을 미칩니 까? 프로그램이 최신 버전 일 때 이전 버전과의 호환성에 더 적은 시간을 투자합니까?
    저는 이것이 이미 배포 된 것과 관련이 있다고 생각합니다. 최근 프로그램은 20 년 전후의 호환성 요구보다 적은 호환성 요구를 처리해야합니다.

  • 결정 사항은 설치된 사본이있는 클라이언트 수만을 기준으로합니까?
    비즈니스 사례를 기반으로해야합니다. 이전 버전과의 호환성이 없어서 필요한 경우 마이그레이션이 새로운 기능으로 인해 효과적으로 "판매"될 수 있습니까?

  • 향후 변경을 지원하는 코드 및 파일 형식을 만들기 위해 적극적으로 노력합니까?
    "미래의 변화"를 예측하는 것은 매우 생산적 일 수 있으며 YAGNI (당신은 필요 없을 것입니다)에 신속하게 경계를 설정할 수 있습니다. 좋은 마이그레이션 도구 세트가 훨씬 더 효과적 일 수 있습니다.

  • v1.0을 개발할 때 v2.0이 v1.0과 쉽게 호환되도록 만들기 위해 노력합니까? "예약 된"필드는 예입니다.
    응용 프로그램의 경우, 아니요. A Parallel Run은 "기능적"이전 버전과의 호환성을 보장하기위한 방법입니다. 그러나 이것이 보편적 인 해결책은 아닙니다.

  • "아니요, 더 이상 지원하지 않을 것입니다"라고 어떻게 결정합니까?
    내부 응용 프로그램의 경우에도 결정 프로세스는 외부에서 배포 된 프로세스와 매우 다를 수 있습니다. 기능이 비즈니스에 대한 부가 가치를 가져 오지 않는 경우, 내부 "일관성"작업은 모든 다른 내부 애플리케이션과 함께 마이그레이션 비용을 확인하도록 설정됩니다 (즉, "이 기능을 더 이상 사용하지 않음"). 동일한 작업은 조직 외부의 클라이언트와 훨씬 더 어렵습니다.

1

소프트웨어의 이전 버전과의 호환성에 대한 필자의 의견 :

1) 이미 많은 클라이언트에 의해 널리 사용되는 제품, 그럼 내가이 제품의 새 버전은 여전히 ​​"같은를 사용하고 있는지 확인 할의 경우 기본 코드 "(개발중인 응용 프로그램의 기본 기능을 구현하는 코드). 새로운 기능은이 코드 기반에 포함 시키거나 가능한 한이 응용 프로그램의 실행 환경에서 약간의 변경만으로이 코드 기반 위에 구축해야합니다. 기존 사용자가 기존 설치에서 많은 변경을 수행하는 것을 원하지는 않습니다. 따라서 새로운 기능을 지원하는 것과 클라이언트의 기존 설정 및 사용 프로세스를 조율하는 것 사이의 절충점입니다.

2.) 새 제품에서는 가능한 경우 v1.0이 출시되기 전에도 해당 응용 프로그램의 가능한 모든 기능을 처음부터 식별하십시오. v1.0에서 제공 할 기능을 확인하십시오. 그리고 어떤 것들은 이후 릴리스를 위해 보관 될 것입니다. 가능하다면 설계, 코드 구현, 향후 버전의 기능을 수용 할 수 있도록 응용 프로그램의 출력을 마무리하는 동안 이러한 "나중의 시간 기능"을 염두에 두십시오. 예 : 데이터 구조에 추가 요소/비트 필드를 남겨 둡니다.

-AD.

1

많이 있습니다. 충실한 고객 한 분 한 분을 화나게하고 싶지 않으면!

2

시스템이 일상적으로 많이 사용될수록 더 집중해야합니다.

시스템이 고객의 핵심 프로세스에 깊숙이 포함될수록 더 집중해야합니다.

시스템에 경쟁자가 많을수록 집중해야합니다.

이전 버전을 사용하는 사용자가 많을수록 집중해야합니다.

소프트웨어가 비즈니스에 미치는 영향이 크면 클수록 이전 버전과의 호환성에 중점을 두어야한다는 점에서 시스템에 대한 클라이언트의 복잡성과 깊이가 높아집니다.

매력적인 가격 책정 등을 통해 새로운 버전을 만들 수없는 경우 모든 사람을 강요하는 위험을 고려해 볼 가치가 있습니다.

Vista 나 Office 2007과 비슷합니다. 그 중 하나는 Apple을 돕는 데 큰 도움이되었습니다.

0

내 경험으로는 비교적 적은 (100 - 5000) 명의 사용자가있는 복잡한 수축 랩 시스템이 있습니다.
마케팅 부서는 종종 라이프 사이클 비용을 완전히 인식하지 않고도 이전 버전과의 호환성에 대한 태도를 취해야합니다. 예를 들어, 현재 사용자 기반에 대한 시스템의 버그를 유지 관리하는 비용 절감은 시스템 수명 기간 동안 새 사용자의 지원 비용으로 쉽게 비 교될 수 있습니다.

관련 문제