2011-08-17 6 views
4

나는 프레임 워크, 협약 또는 상식을 사용하지 않고 지난 x 년 동안 작성된 당사 소프트웨어의 재 작성을 준비하고 있습니다. 결과는 매우 방대하고 강력한 응용 프로그램으로 유지 관리, 수정 및 수정하는 악몽입니다.Application Rewrite - 사용할 개발 방법론은 무엇입니까?

이 좋은보고, 매우 구성 (인터페이스와 백엔드 모두) 등으로 오랫동안이 요구 사항이있는 한

와 모듈 형 다목적 있어야하는데 스테로이드에 주문 시스템의 일종이라고 말할 정도로

모듈의 경우, 그 중 대부분은 나머지 모듈과 확실히 상호 연결되어 있습니다 ...

내 질문은 - 어떤 방법론을 사용하는 것이 가장 좋을까요?

나는 웅대 한 계획, 상세한 명세를 만들고, 데이터베이스를 설계하고, 오래된 고객을위한 이전 스크립트를 작성한 다음 모든 것이 잘 앉고 계획에 따라 글을 쓰기 시작하는 '보수적 인'접근 방식에 기대고 있었다.

그러나 일부 사람들은 전체 응용 프로그램 (특히 이러한 복잡성이있는)에 대한 상세하고 정확한 계획을 작성한 다음 그냥 수행하는 것이 매우 어렵다고 지적했습니다. 어떤 사람들은 애자일/반복 및 증분 방법론을 사용하여 모듈을 선택하고 데이터베이스를 설계하고 테스트를 작성하고 백엔드 및 프론트 엔드를 작성한 후 다음 모듈을 얻는 방법을 제안했습니다.

모두 보이지만 우리는 새로운 '아이디어'를 쓸 수 있기 때문에 아주 멋지기는하지만 처음부터 새로 디자인하지 않고 서로간에 모듈을 통합하는 것이 더 고통스럽지 않을까요?

비슷한 경험이있는 사람이 있다면 올바른 방향으로 나를 안내 할 수있는 몇 가지 지침을주십시오.

미리 감사드립니다.

답변

2

이전 시스템 재 작성에 대한 간략한 설명은 나와 관련되었지만 프로세스, 디자인 및 프레임 워크 지침 IMO를 지원하기 위해 기술 선택, 시스템 크기 등에 대한 자세한 정보가 필요합니다.

이전 시스템의 모양이 손상되었지만 여전히 약간의 차이점이 있습니다. 여전히 작동합니다 (시스템 재건을위한 시간을줍니다). 대체로 오래된 시스템의 이상한 점이 원인으로 발견되었습니다. 엄청나게 보이는 것을 발견 할 때마다,이 이유 (또는 이유)가 완전히 유효한지 여부를 알아 내야합니다.

가능한 한 새로운 시스템을 사용하여 큰 활약을 피하십시오. 단계별 전략을 시도하십시오. 특정 카테고리의 제품이 생방송으로 살 수 있는지 확인하십시오. 예전 데이터베이스를 살리거나 살 수 있다면 조종사 사용자가 다음과 같은 작업을 할 수있게 할 수도 있습니다. 어느 한 시스템에서 단계적으로 작업하십시오.

데이터 마이그레이션이 중요합니다. 전송 가능한 데이터베이스는 마이그레이션 된 데이터베이스가 아니며 언제든지 실행할 수 있어야하는 스크립트 시퀀스이며 많은 양의 데이터가있는 경우 최대한 빨리 실행되도록 스크립트를 최적화해야합니다. 이전 시스템에서 전환 할 시점에 비즈니스는 두 시스템 중 하나에 액세스 할 수 없게됩니다.

화면 - 보유한 사용자 수에 따라 화면을 변경하면 사용자를 다시 교육해야 할 수도 있음을 기억하십시오. 예를 들어, 이는 응용 프로그램과 비슷한 모양과 느낌을 유지하도록 사용자를 유도합니다.

애플리케이션이 '사내 (in-house)'인 것처럼 들리므로 사양 문서에 대해 과도하게 사용하면 과장 될 수 있습니다 (누군가와 사인을해야합니까?). 그러나 이전 시스템의 모든 기능을 문서화하는 것은 좋은 생각이다. (예전의 시스템에 관한 문서는 시대에 뒤질 수있다.) 새로운 시스템에서는 디자인 중 의사 결정에 대한 모든 근거를 문서화하십시오. 모든 요구 사항과 디자인 문서, 전자 메일 및 모델을 소스 제어에 보관하거나 Sharepoint와 같은 문서 관리 시스템에서 유지하는 것이 좋습니다.

행운을 빌어 요!

+0

감사합니다. 아주 좋은 포인터들. 건배! – RandomWhiteTrash

2

더 나은 방법은 민첩합니다.

객체 지향 접근 방식과 디자인 패턴을 사용하여 모듈을 계획하고 구현하십시오. 모든 모듈에서 모든 작업을 완료하면 전체 시스템 구조를보다 쉽게 ​​최적화 할 수 있습니다.

또한 객체 지향 접근법과 디자인 패턴으로 구축 된 시스템의 최적화는 민첩한 방법론을 사용하여 수행 할 수도 있습니다.

1

이미 리팩토링을 몇 번 해본 적이 없다면, 중간 지점을 제공하는 계획으로 진행하고 올바른 일을한다면 다시 생각해보아야합니다. 예, 반복적 인 사운드가 훨씬 좋습니다. 그리고 가지고있다하더라도, 다시 시작하는 것에 대한 강력한 논쟁이 있습니다. 조엘 스폴 스키 (Joel Spolsky)는 article on the idea of restarting from scratch입니다. 나는 그것에 더 할 것이별로 없다고 생각한다.

마틴 파울러 (Martin Fowler)는 Refactoring에 관한 좋은 책을 저술했으며, 이런 종류의 일에 대해 알아볼 가치가 있습니다.

+0

감사합니다. 거기에 몇 가지 좋은 점이 있습니다. – RandomWhiteTrash

1

나는 Rafael Osipov에 동의합니다.

개체 지향 디자인을 사용하면 모든 것을 고유 한 장소에 유지하는 데 도움이됩니다.

그리고 작고 빠른 구현을 수행 할 수있는 민첩한 방법을 사용하십시오.

또한 사용자에게 지속적인 피드백을 요청합니다.

1

대용량 시스템이기 때문에 작고 버그 제거 - 초기 증분에 대해서는 민첩합니다.

또한 다른 사람들이 말한 바 있습니다. 그리고 안내 자료 인 here을 지적하고자합니다.

관련 문제