2009-09-17 5 views
0

민첩성이 보장되는 프로그램 논리를 디자인 할 방법이 있는지 궁금합니다.민첩한 환경에서 변경 방지 개발을위한 방법론

현재 예를 들어 비디오 녹화 및 업로드 용 응용 프로그램을 개발 중입니다. 처음에는 사용자가 라이브러리에서 저장된 레코딩을 선택하고 타이틀을 편집하거나 선택한 비디오를 업로드 할 수 있도록 계획되었습니다. 그런 다음 사용자가 녹음을 멈 추면 제목 대화 상자를 자동으로 표시하도록 프로그램을 수정해야했습니다. 이제 프로그램은 녹화 중단시 제목 대화 상자를 표시해야하며 사용자에게 동영상을 업로드 할 것인지 물어보고 사용자의 선택에 따라 진행됩니다.

다른 조건 상태 조합으로 프로그램 메소드를 실행하는 경우의 문제점을 설명하는 데 더 나은 예제가있을 수 있습니다. 그러나 주요한 질문은 개발주기 동안 "통제하에있는 로직을 유지하는"방법입니다.

미리 정의 된 기능을 기반으로 복잡한 디자인을 만든 다음 처음부터 끝까지 코드를 작성하는 것은 간단하지만 이러한 경우는 거의 없다고 생각합니다. 현재 알려진 모든 시나리오를 종이에 쓴 다음 디버거를 실행하고 논리와 버그를 수정하기 위해 수정 작업을 수행합니다. 불행하게도 어느 정도 복잡성이 커지면 이런 식으로 일하는 것이 정말 고통 스럽습니다. 개발을 단순화하는 방법론이 있다면 나는 그것에 대해 배우고 싶습니다. 좋은 책을 알고 있거나 문제에 대한 제안을하면 매우 감사 할 것입니다!

+1

민첩성이란 무엇입니까? 민첩한 개발 관행에 대한 필요성이 부족합니까? 아니면 변화가 필요하지 않습니까? –

+0

수정 됨! 고마워. –

+0

수십 년 동안 추구해온 은총을 찾고 있지 않습니까? http://en.wikipedia.org/wiki/Silver_bullet은 내가 의미하는 바를 약간 설명해야합니다. –

답변

1

애자일 방법이 당신이 찾고있는 정확한 해결책 인 것처럼 보이는 이유를 모르겠다. 민첩한 방법은 필연적 인 변화에 직면하여 위험을 최소화 할 수있는 방법을 모색하고 변화를 기대합니다 (켄트 벡이 사용하는 것으로 생각합니다.). 여러분의 프로젝트가 애자일 방법이 필요한 이유를 포스터 자식으로 생각합니다.

민첩한 방법에 대한 많은 책 중 하나를 읽고 TDD, 상용 배달, 스토리 기반 개발 등과 같은 기술에 대해 배우는 것이 좋습니다. 그러면 모든 프로젝트에서 발생하는 피할 수없는 변화를 효과적으로 관리 할 수 ​​있습니다. 짐 하이 스미스 (Jim Highsmith)는 여러 가지 민첩한 방법론에 대한 개요를 제공하고 개발시 특정 문제를 해결하는 방법에 대한 좋은 책인 Agile Software Development Ecosystems을 보유하고 있습니다.

편집 : 아마도 당신이되어 무슨 뜻인지 "변경 방지"고 개발을 나에게 발생합니다. 나는 이것이 정말로 가능하다고 생각하지 않는다고 말 하여서 유감이다. 변경을 최소화하는 기술이 있지만 제거 할 수는 없습니다. 나는 그것이 일어날 것이라는 것을 인식하는 것이 더 좋으며, 그것을 기대하고 그것을 시도하고 최소화하는 것보다 더 잘 관리 할 수있는 방법론을 사용하는 것을 발견했습니다. 변화를 최소화하려고하는 프로세스는 계획 활동으로 인해 매우로드가 많이 걸리므로, 일반적으로 작업하는 프로젝트 유형에 지출하고자하는 것보다 훨씬 오래 걸립니다. 애자일 방법을 사용하면 다른 방법론을 계획하는 데 소요되는 시간만큼 프로젝트를 완료 할 수 있습니다.

저는 정치적인 이유 때문에 최근에 요구 사항을 수집하고 제품 평가를 수행하는 데 많은 시간을 투자해야한다는 프로젝트가있었습니다. 결국 어떤 제품을 얻을지 결정하는 데 약 1 년이 걸렸습니다. 약 2 개월 만에 설치 및 통합 작업을 수행했습니다.

0

나는 당신이 찾고있는 것이 일종의 finite state machine이라고 생각합니다.

하지만 일반적으로 내부 상태로 사용되며 요구 사항을 임의로 변경하지 않습니다. 어쩌면 UML state machine 일종의 유용 할 수도 있습니다.

1

하나의 민첩한 방법론은 TDD입니다.

그것은 하나, 간단한 규칙이 있습니다

만 코드는 패스 테스트하기 위해 쓰기가 아닌 한 줄 더.

이 aproach를 사용하면 코드를 매우 간단하게 유지할 수 있습니다. 또한 MVC 패턴은 컨트롤러에서 디자인의 로직을 분리하고 집중시키는 데 도움이됩니다. 보기를 조롱하기 위해 일부 모의 객체를 사용하면 그 동작을 시뮬레이트하는 테스트를 만드는 것이 매우 쉽습니다. 테스트를 빠르고 간단하게 수행하면 디버거에서 목표에 대한 테스트가 매우 명확하기 때문에 디버거에서 보내는 시간이 줄어 듭니다.

관련 문제