2000 년대의 소프트웨어 솔루션, 전체를 패치하거나 다시 만들어야합니까?


9

특정 회사가 현재 사용하고있는 시스템과이 시스템으로 수행 할 작업에 대해 논의하기 위해 보냈습니다.

이 회사는 다양한 카톤 디스플레이를 제조합니다. 이 시스템은 고객, 주문 및 가격을 추적하기 위해 개발되었습니다. 시스템이 생성 된 이후로 많은 일이 일어 났으며 관리자가 설명한대로 " 잠금 "과 " 문제가있는 " 시스템은 이제 "동적 아님"과 "불안정한"으로 번역됩니다.

시스템에 관한 정보

  • 2000 년경에 개발되었습니다
  • 상당히 작은 시스템, 2-5 명의 사용자, 6 개의 양식, 평균 수량의 데이터가있는 ~ 8 개의 테이블
  • 초기 Visual Basic을 기반으로하여 끌어서 놓기 디자인으로 만든 양식 인터페이스는 기본적으로 메뉴와 일부 형식의 창입니다
  • MSSQL 데이터베이스 (SQL2005 서버)를 사용하여 데이터 및 ODBC 드라이버를 쿼리에 저장하고,이 시스템 이전에 Excel에서 데이터를 마이그레이션했으며, Excel을 사용하기 전에 수작업으로 종이를 처리, 계산 및 작성했습니다.
  • 사용자는 Microsoft XP 환경 이상에서 작업

그들의 주요 문제는 가격을 조정하고 계산할 수없고, 새로운 카톤 유형 등을 더 이상 정확하게 추가 할 수 없다는 것입니다. 더 이상 서버의 데이터를 건드릴 수 없기 때문입니다.

가능한 3 가지 해결책을 제안했습니다.

  1. 현재 시스템 패치 시도
  2. 새로운 인터페이스를 새로 만듭니다 (유사한 환경, VB.net 또는 VB 기반)
  3. 작은 시스템이므로 Excel 솔루션으로 다시 가져옵니다.

더 많은 옵션이있을 수 있지만 이것들은 내가 생각할 수있는 것입니다.

내 질문은

  • 무엇을 추천해야하며 왜 그런가요?
  • 이러한 대안의 장단점은 무엇입니까?
  • 다른 (아마도 더 나은) 대안이 있습니까?

3
데이터베이스 스키마를 문서화 할 때까지 현재 시스템이 얼마나 심각하게 손상되었는지 판별 할 수 없습니다.

@ ThorbjørnRavnAndersen 사실입니다. 나는 데이터베이스를 들여다 보았다. 그것이 만들어진 시대부터 판단해서, 나는 그것이 정말로 정말로 설계되었고 응급 처치 또는 수술이 필요 하다고 가정 할 것 입니다.
ShadowScripter 11

1
누가 원래 시스템을 작성했는지 알고 있습니까? 사내 노력 이었습니까 아니면 계약을 맺었습니까?
maple_shaft

7
하지마 클라이언트에게 데이터베이스의 상태가 다양한 옵션의 비용에 중요하며 선택한 옵션에 관계없이 수행되어야한다고 알립니다. 처음부터 다시 작성하더라도 데이터 포팅을 원할 가능성이 높습니다.

4
개발자는 기본값을 "처음부터 다시 작성"하고 필요할 때만 리팩토링하는 것을 선호합니다. 차라리 "단계적으로 리팩터링"하고 필요할 때만 다시 작성하도록 기본 설정하고 싶습니다.
quant_dev

답변:


5

6 가지 형식 만 있는 것은보다 현대적인 프레임 워크에서 쉽게 재구성 있어야 합니다. 수십 개의 클래스 및 데이터베이스 테이블과 함께 약 200 개의 양식을 가진 VB6 프로젝트를 마이그레이션하는 작업을했습니다. 당신이 지저분하지만 외모가 속이는 것을보고있는 것처럼 들리지 않습니다.

코드, 데이터베이스 및 비즈니스 요구 사항을 분석하여 기존 코드 기반을 다시 작성하거나 리팩터링하는 것이 가장 좋은지 여부를 분석해야합니다. 당신이 말한 것을 감안할 때, 나는 다시 쓰기를 기대합니다. 그러나 현재 보이지 않는 숨겨진 어려움이있을 수 있습니다.


작은 크기를 감안할 때 동의합니다. 한 눈에 너무 복잡해 보이지는 않습니다. 답변에서 판단하면 재 작성이 가장 적합 해 보입니다. 최종 결정을 내리기 전에 자세히 살펴 보겠습니다. 충고 감사합니다! :)
ShadowScripter

@ShadowScripter VB보다 더 나은 언어로 작성하는 것을 살펴 보겠습니다. 오픈 소스 라자루스 프로젝트를 확인하십시오 .
스펜서 Rathbun

5

지금까지 대부분의 답변이 약간 다릅니다.

현재 시스템 패치 시도

나는 적어도 현재 시스템을 클라이언트에게 사용법을 설명 할만큼 충분히 배울 것입니다. 나는 현재 시스템의 결함을 설명하고 부정적인 단어를 피하고 알려진 모든 버그가 수정 된 경우에도 할 수없는 일을 말하려고합니다.

새로운 인터페이스를 새로 만듭니다 (유사한 환경, VB.net 또는 VB 기반)

당신은 그들의 현재 설정으로 할 수있는 모든 것을 배운 후. 현재 시스템에 대한 우려를 해결할 수 있다면 옵션을 제공하십시오. 현재 시스템에는 아무런 문제가 없습니다. 물론 유일한 문제는 Visual Basic 6 지원이 5 년 안에 없을 수 있다는 것입니다.

또 다른 관심사는 데이터베이스와 통신하는 방법입니다. Microsoft는 데이터베이스 제품 (Access, MSSQL)과 통신하는 오래된 방법 중 일부를 천천히 제거하므로 해당 제품과 상호 작용하는 방식에 따라 향후 Windows 9 및 Windows 10에서 솔루션을 사용할 수 있는지 여부가 결정됩니다.

이 답변은 전적으로 애플리케이션 자체에 대한 소스가 있다는 사실에 달려 있습니다. 그들이 소스를 가지고 있지 않다면, 그들의 관심사를 해결하고, 현재 주요 버그를 수정하거나, 실제로 사용할 수있는 도구로 만들기가 어려울 것입니다.

Visual Basic 6 응용 프로그램에 "잘못된"것이 있다고 생각하지 않습니다. 사실, 향후 버전에 대한 지원은 알려져 있지 않습니다. 오늘날에도 Windows 7 및 64 비트 운영 체제에서는 지원하기가 점점 더 어려워지고 있습니다. 이것이 적절한 64 비트 지원으로 현대 언어로 다시 작성하는 것이 좋은 생각 인 주된 이유입니다.

해당 시점에 소스가없는 경우 재 작성은 실제로 유일한 솔루션입니다.


" Microsoft is slowly getting rid of some of the older ways to communicate..."에 대한 참조를 인용 해 주 시겠습니까? 그것에 대해 더 자세히 읽고 싶습니다.
ShadowScripter

@ShadowScripter-프로세스가 32 비트 프로세스가 아닌 경우 레거시 Access 데이터베이스 파일에 액세스하기위한 Microsoft.Jet.OLEDB.4.0 Provider는 지원되지 않습니다. WinRT는 이러한 Microsoft 제품에 대한 연결 방식을 변경할 수도 있습니다. 미래의 변경 사항에 대해 읽은 부분을 잊어 버렸습니다 .MSSQL 2012 이후 Microsoft는 특정 연결 방식 만 지원한다는 것을 알고 있습니다. 이것은 물론 Windows에 내장 된 제공 업체 및 개발 오퍼링과 관련하여
Ramhound

1

시스템이 비교적 작은 경우 인터페이스를 다시 작성하는 것이 좋습니다. 장점은-

  1. 안정성 향상 (잘 수행한다고 가정)
  2. 유지 보수성 향상
  3. 최신 인터페이스

가장 큰 단점은 기존 코드를 해킹하는 것보다 여전히 비용이 많이 든다는 것입니다.


인터페이스를 다시 작성하는 것도 내가 기대했던 것입니다. 그리고 솔직히 말해서, 나는 오늘날의 표준으로 판단 할 때 이전 인터페이스로 어디에서 시작할지 잘 모르겠습니다.
ShadowScripter

1

또한 다시 쓰는 경향이 있지만 현재 기능과 손상되었거나 누락되었거나 부적합한 기능을 완전히 이해하고 100 % 확신해야합니다. 후자의 두 가지는 가격 조정 및 계산을 언급 한대로 중요합니다. 이 기능을 추가 한 결과를 완전히 이해하고 있습니까?

한때 "웹 사이트"로 작업 한 적이 있었지만 실제로는 1990 년대 후반부터 사용자 지정 액세스 기반 CRM 스타일 도구를 가져 와서 현대적인 웹 기반 세계로 가져 왔습니다. 원래 개발자는 오랫동안 사라졌고 데이터베이스는 빈번하게 수정되어 원본 문서가 오래되어 시스템 작동 방식을 실제로 이해하지 못했습니다. 그러나 그들은 그것을 사용하는 방법을 알고있었습니다. 이 프로젝트 예산의 80 %가 세 가지로 진행되었습니다.

  • 수집 요구 사항
  • 현재 시스템 이해
  • 소프트웨어 사용 방법에 대한 의미있는 데이터베이스 스키마 제공

이 프로젝트는 재정적으로 성공하지 못했습니다!


나는 당신이 말하는 것을 듣습니다. 최종 결정을 내리기 전에 현재의 실패, 기능 및 목적을 완전히 인식해야합니다. 총이 타 오르고 비명을 지르고있는 것 All right, let's do this. LEEEEEEEROOOOOOOY...같아요! : P
ShadowScripter 2016 년

0

또 다른 옵션은 전체 내용을 다시 작성하고 기존 앱을 해킹하는 것 사이의 타협 일 수 있습니다.

처음부터 만들어진 새로운 응용 프로그램에서 새로운 기능을 제공하십시오.

이것은 잠재적으로 더 쉬울 수 있으며 전체 재 작성만큼 비용이 들지 않습니다.

이 작업이 완료되고 데이터를 추가 / 업데이트 할 수 있다는 것이 만족 스러우면 새로운 앱에서 기존 기능을 대체 할 수있는 2 단계가 열립니다.

이것은 더 맛좋은 접근법 일 수 있습니다.


1
나는 그것이 좋은 생각이라고 생각하지만, 2 단계가 결코 일어나지 않으면 다른 새로운 응용 프로그램에 의존하는 오래된 별도의 응용 프로그램으로 끝나고 두 응용 프로그램으로 남겨두고 문제를 두 배로 늘릴 것입니다.
ShadowScripter

0

재 작성은 종종 예산이 소진되는 경향이 있습니다.

그러나 응용 프로그램을위한 최신 스켈레톤을 사용하는 것은 특히 오래된 시스템의 작동 방식을 모르는 사람이 있거나 시스템을 만지 자마자 문제가 발생하는 경우 특히 좋은 투자 일 수 있습니다.

또한 VB6은 지원하기에 좋지 않습니다. 10 년 안에 전문가를 찾아야한다면 문제가 될 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.