2010-03-04 25 views
5

Tôi làm việc trên một nhóm với ba nhà phát triển khác và một nhà phân tích nghiệp vụ viết các ứng dụng kinh doanh nội bộ là gì. Chúng tôi chủ yếu xây dựng các ứng dụng trong ASP.Net, và làm như vậy theo một cách rất riêng của năm 2003. Nó giống như trở lại trong một cỗ máy thời gian. Mặc dù hai trong số các nhà phát triển khác có thể học được những điều mới mẻ, nhưng một trong những nhà phát triển thì không. Anh ấy là kiểu người nghĩ anh ấy là nhà phát triển mạnh nhất trong thị trấn và nếu anh ta không hiểu một công cụ mới trong vòng 5 phút thì anh ấy chỉ cần xây dựng công cụ của riêng mình. Anh ta cũng không nhận ra sự phát triển nhanh, TDD, hoặc về cơ bản là bất kỳ công cụ hoặc phương pháp nào không phải của Microsoft. Anh ta thậm chí còn xem xét kiểm soát nguồn từ bất cứ thứ gì khác ngoài SourceSafe là nguy hiểm. Để tín dụng của mình, anh ấy là một lập trình viên rực rỡ, chỉ cần không ai đó quan tâm đến việc phát triển phần mềm .Bộ công cụ đơn giản nhất để bắt đầu với Kiểm soát nguồn, TDD và CI cho Microsoft.Net 2008/2010

Vì vậy, cách duy nhất tôi có thể nhận được sự đồng thuận là nếu một công cụ thực sự dễ sử dụng. Một khi chúng tôi đánh một cú đánh duy nhất, anh ấy sẽ mất niềm tin vào một cách "tôi đã nói với bạn".

Vậy tôi nên sử dụng công cụ nào để đưa chúng ta vào hệ thống kiểm soát nguồn hiện đại, TDD và CI? Sự lựa chọn hiển nhiên trong tình huống của tôi có vẻ giống như TFS của Microsoft, nhưng tôi nghi ngờ rằng tôi có thể có được đội ngũ quản lý tiết kiệm và thờ ơ của chúng tôi để tiêu thêm tiền (họ đã nghĩ MSDN Pro là quá nhiều).

Về cơ bản, công cụ đơn giản nhất để thực hiện điều khiển Nguồn, TDD và CI cho môi trường .Net 2008/2010 là gì?

+0

Tôi thực sự bắt đầu nghiêng về phía TFS vì tôi nghĩ sẽ dễ dàng hơn để đưa mọi người lên tàu. Tôi chỉ không hiểu chi phí cho năm 2010. Điều gì sẽ là sự khác biệt để đi từ 4 msdn pro giấy phép cho TFS? Và bạn chỉ nhận được các tính năng thử nghiệm nếu bạn mua phiên bản thử nghiệm? Nếu chúng tôi vừa gia hạn đăng ký Pro, chúng tôi có thể nâng cấp không? Đây có phải là bài đăng hoàn toàn mới không? – NeedAgileNow

Trả lời

-1

Trong môi trường .NET, Microsoft Visual SourceSafe thường được sử dụng nhất. (nhưng chi phí). Bên cạnh đó bạn có thể chọn SVN hoặc GIT. Git là gần đây hơn (và được phổ biến). Việc làm việc dễ dàng hơn SVN một khi bạn nhận được nó.

http://git.wiki.kernel.org/index.php/GitSvnComparison có thể giúp bạn quyết định.

+0

Visual SourceSafe là một con khủng long. Tôi sẽ nói rằng tất cả mọi người trong một thiết lập của công ty sử dụng TFS ngay bây giờ. – Slavo

+1

SourceSafe đã hoạt động tốt trong kinh doanh của chúng tôi trong khoảng 5 năm cho đến vài tháng trước. Chúng tôi đã bắt đầu có những vấn đề kỳ lạ, và tôi nghĩ đã đến lúc sử dụng nó như một cơ hội để tiếp tục. – NeedAgileNow

+0

SourceSafe chi phí bằng cách rất không an toàn. Không được dùng. http://www.codinghorror.com/blog/2006/08/source-control-anything-but-sourcesafe.html –

3

Sẽ rất khó để giới thiệu các công cụ mới nếu bạn không thể xây dựng được sự đồng thuận. Tập trung vào việc xây dựng sự đồng thuận, hơn là trên các công cụ.

SVN là rất tốt (với Ankh và TSVN), nhưng nó có thể là một chút đáng ngạc nhiên cho những người sử dụng để SourceSafe.

TDD là một kỹ thuật, chứ không phải là bộ công cụ, vì vậy bạn cần sách, blog, v.v. Đối với các công cụ hỗ trợ nó, NUnit hoặc MSTest. Tích hợp liên tục là phải có. CruiseControl.Net là khá tốt (mặc dù một chút khó khăn để cấu hình ban đầu). Cũng xem xét TeamCity.

Bạn có hệ thống theo dõi lỗi không?

Ồ, và nếu nhóm quản lý của bạn cảm thấy thờ ơ, hãy cân nhắc việc bỏ thuốc.

Cập nhật: bạn đã nói rằng chúng không quá nhiều "thờ ơ" như "vô hiệu hóa". Câu hỏi: họ có thật sự bắt tay và họ có cho phép bạn di chuyển mọi thứ cùng không? Hay là "trạng thái" - "nó không bị phá vỡ, vì vậy đừng sửa nó, và đừng đá thuyền"?

+0

Điểm tốt. Tôi nghĩ rằng tôi cần để có được ông chủ của tôi trên tàu đầu tiên. Bạn đề nghị SVN trên Git và Mercurial? Tôi ấn tượng với TeamCity, mặc dù đó là một chút đau thiết lập DB conn cho SQL Server, mặc dù. Chúng tôi có một hệ thống vé nội bộ để theo dõi lỗi. Để công bằng để quản lý, họ thực sự là những người rất tốt và tuyệt vời để làm việc cho hầu hết các khía cạnh (rất linh hoạt với làm việc ở nhà, ví dụ).Họ chỉ rất chặt chẽ với tiền. Apathetic có lẽ là một sự lựa chọn của người nghèo. Tôi nên nói rằng họ rất thờ ơ với phương pháp phát triển. – NeedAgileNow

+0

Vấn đề của tôi với Git và Mercurial là thiếu sự trưởng thành tương đương với TSVN. Theo kinh nghiệm của tôi (và tôi lái một VSS để di chuyển SVN vài năm trở lại đây), hầu hết người dùng MS-stack đều thích GUI, và bạn không thể làm tốt hơn nhiều so với Visual Studio hay Windows Explorer hội nhập. –

+0

... và những người đã từng sử dụng SourceSafe sẽ lo sợ khi họ nhìn vào Git hoặc Mercurial ... –

6

Có rất nhiều sự lựa chọn tốt, nhưng cá nhân tôi có thể giới thiệu sau đây:

  • Nguồn kiểm soát: Subversion với TortoiseSVNAnkh hoặc VisualSVN
  • Tích hợp liên tục: CruiseControl.NET
  • cụ TDD: NUnit + khung mocking của bạn lựa chọn (Tôi sử dụng NMock, mặc dù đó là một chút trường học cũ). Tôi đồng ý với commenter Eric rằng TestDriven.NET là một-phải có, đặc biệt là nếu bạn muốn thực hiện điều này dễ dàng!

Đây là những cách dễ dàng để bắt đầu vì chúng là tất cả các sản phẩm tốt, hợp lý để được tài liệu hóa và sử dụng rộng rãi (vì vậy thật dễ dàng để nhận trợ giúp).

+1

TDD Công cụ: TestDriven.Net là một-phải có trong quan điểm của tôi! – Eric

+1

Các bạn thích SVN hơn Git hay Mercurial? NUnit trên xUnit? CruiseControl.Net trên TeamCity hoặc Hudson? NMock trên Moq? NCover qua PartCover? – NeedAgileNow

+1

SVN có một câu chuyện tích hợp tốt hơn Git hoặc Mercurial ngay bây giờ. PartCover là miễn phí, nhưng NCover thì tốt hơn. Không thể nhận xét về xUnit hoặc Hudson. Tôi thích TeamCity để CC.NET, nhưng TeamCity chi phí tiền một khi bạn outgrow phiên bản miễn phí. –

6

Tôi sẽ không khuyên bạn nên đổ tất cả các công cụ và phương pháp này vào nhóm của bạn cùng một lúc, thực hiện các bước cho em bé. Giới thiệu từng cái một. Một số sẽ đến một cách tự nhiên.

+2

+1 cho các bước em bé. Một việc tại một thời gian. Đừng đái người. –

+1

Đồng ý với điều này, đặc biệt nếu có một anh chàng ồn ào trong đội. Giới thiệu quá nhiều quá nhanh sẽ chắc chắn làm anh khó chịu và có thể dừng toàn bộ quá trình. – Nick

+1

Các nhà phát triển không được sử dụng để làm việc mà không có bất kỳ kiểm soát nguồn nào thường thấy việc điều chỉnh trở nên khó khăn. Cố gắng để có được một đội ngũ để thích nghi với một bộ công cụ hoàn toàn mới có thể trình bày một đường cong học tập rất dốc, nó sẽ xuất hiện để được một bức tường cho nhóm của bạn. Tôi đồng ý rằng việc giới thiệu một công cụ thành công có khả năng dẫn đến việc chấp nhận nhiều công cụ hơn trên đường. – smencer

1

Tôi nghĩ bạn có thể tạo ra một trường hợp thực sự tốt trong vòng hai năm qua Agile đã trở nên hoàn toàn và hoàn toàn được Microsoft chấp nhận. Tôi biết một thực tế là các đội Codeplex, MEF và ASP.NET MVC khá ngập trong đó. Tôi cũng nghĩ rằng rằng studio trực quan và các bộ phận của nhóm Windows 7 là Agile. Ngoài ra, hãy xem xét rằng Visual Studio 2010 bao gồm các phép tái cấu trúc ngoài hộp không thực sự có ý nghĩa bên ngoài ngữ cảnh TDD và Agile là mẫu quản lý dự án mặc định cho TFS và một bức tranh về văn hóa doanh nghiệp hoàn toàn khác từ một trong những năm qua bắt đầu xuất hiện.

Đối với các công cụ cụ thể. TFS là OK để kiểm soát nguồn nhưng tôi thấy nó rất nặng và khó tính. Những người khác đã đề cập đến Subversion nhưng nếu bạn đang lo lắng về phước lành MS bạn có thể có may mắn hơn nhảy thẳng đến Mercurial. Nó là một SCM cao cấp hơn nhưng bây giờ nó được hỗ trợ bởi Codeplex và có tích hợp các cửa sổ tuyệt vời. Tôi đã không bao giờ sử dụng nó nhưng tôi đang ở trong tình yêu sâu sắc công cụ với nó git anh em họ.

Phát triển theo hướng thử nghiệm: Bắt đầu với MSTest, nó không phải là bóng bẩy như bất kỳ ai muốn nhưng nó không phải là điều tồi tệ nhất trên thế giới. Tôi cũng khuyên bạn nên dùng MbUnit có tất cả các tính năng của NUnit cùng với một số hỗ trợ tốt cho các bài kiểm tra tích hợp mà bạn có thể sẽ viết do tai nạn khi bạn bắt đầu với thử nghiệm. Oh, và nếu bạn có freak tùy biến tôi sẽ thúc giục anh ta nhìn vào XUnit.Net.

Mocking: Sự lựa chọn về cơ bản là Rhino Mocks hoặc MoQ. Here's a quick intro I wrote for Rhino Mocks mà đi qua tất cả các khái niệm cơ bản. Điều đó đang được nói, giao dịch có vẻ là tài liệu hướng dẫn cho RM so với cú pháp dễ bị lỗi rất ít đối với MoQ.

Test Runners: Nếu bạn bắt đầu với MSTest, bạn sẽ nhận thấy rằng bạn có thể tăng tốc độ đáng kể trong thử nghiệm bằng cách sử dụng TestDriven.Net, resharper hoặc coderush thay vì được xây dựng trong runner thử nghiệm. Điều đó đang được nói, đừng đánh giá thấp những người chạy thử nghiệm độc lập. Họ có thể khá tốt mỗi lần trong một thời gian. Tôi khuyên bạn nên sử dụng Gallio Icarus runner đi kèm với MbUnit.

0

Một công cụ khiến tôi bị hocked trên TDD là TestDriven.Net để đặt kết quả thử nghiệm vào cửa sổ Output. Tôi lập bản đồ này với phím F8 và đạt được năng suất là tuyệt vời; viết một bài kiểm tra, nhấn F8 và xem kết quả này trong cửa sổ đầu ra.

Một gợi ý tôi cũng phải phân biệt giữa việc có các xét nghiệm đơn vị và thực hiện TDD. Tôi đã thấy rằng TDD có thể rất khó để tiếp tục với một nhóm, trong khi đó; đơn vị, tích hợp hoặc kiểm tra chức năng là một bán dễ dàng hơn. Có một loạt các bài kiểm tra mà tiết kiệm một giờ đi qua một ngày thử nghiệm thủ công sau khi ngày là một chiến thắng lớn.

Sau một thời gian mọi người sẽ bắt đầu đánh giá cao một số ý tưởng mới nếu nó giúp họ trong cuộc sống hàng ngày của họ. Sau đó, bạn sẽ có thể giới thiệu một máy chủ xây dựng và di chuyển ra khỏi SourceSafe.

+0

Keybinding của tôi là: Ctrl + R, T - Chạy thử nghiệm (Chế độ soạn thảo thử nghiệm); Ctrl + R, R - ReRunTestsWithDefault (Toàn cầu) - cái này cực kỳ hữu ích Ctrl + R, Ctrl + T - ReRunTestsWithDebug (Toàn cầu) –

1

Tôi muốn lặp lại những gì George Mauer đã nói và đề xuất bắt đầu với MSTest để kiểm tra đơn vị của bạn. Đó là ngay trong hộp để bắt đầu với Visual Studio, điều này sẽ giúp trong nguyên nhân của bạn vì nó là "MS may mắn".

Tôi sẽ bắt đầu với thử nghiệm đơn vị và lấy nó từ đó, sau một vài tháng "nhìn cuộc sống của chúng tôi dễ dàng hơn bao giờ hết khi chúng tôi có các thử nghiệm này một cách tự động". Cân nhắc thêm một thứ gì đó như Selenium hoặc WatiN vào hỗn hợp. Một khi bạn đang lăn với điều đó, có được máy chủ CI của bạn lên. "Sẽ không tuyệt vời nếu chúng tôi không phải bắt đầu tất cả các thử nghiệm này theo cách thủ công? ..."

Tôi đoán SCM khá có thể là điểm gắn bó. SourceSafe là tốt hơn không có gì. Có lẽ bắt đầu sử dụng Mercurial hoặc Git cho mình? Cho thấy những người cởi mở với sự thay đổi lợi ích, cuối cùng dev của bạn bướng bỉnh sẽ đến xung quanh khi những người khác xung quanh anh ta muốn chuyển đổi. Hy vọng rằng, anh ta sẽ thấy khó hét hơn nếu anh ta ở trong nhóm thiểu số.

Kiểm tra http://www.viget.com/extend/effectively-using-git-with-subversion/ để biết các ý tưởng về cách trộn các SCM khác nhau.

Tôi cũng muốn +1 mxmissile để nói chậm rãi. Tôi nghĩ bạn sẽ thấy rất khó để giới thiệu tất cả những thay đổi này trong một lần. Đó là rất nhiều để có trong lúc đầu tiên nếu bạn không quen với nó. Cố gắng chọn phần bạn yếu nhất, hoặc sẽ thêm nhiều giá trị nhất và tích lũy từ đó.

Chúc may mắn!

+0

Tôi không chắc nó sẽ hoạt động như thế nào nếu tôi sử dụng SCM khác với SCM khác những người trong đội. Mặc dù chúng tôi có các dự án mà chúng tôi "sở hữu", vẫn có một số lượng hợp tác hợp lý trong các dự án. – NeedAgileNow

+0

@NeedAgileNow Đúng, có thể hơi khó, xem bản chỉnh sửa của tôi, tham khảo trang này: http://www.viget.com/extend/effectively-using-git-with-subversion/ cho một số ý tưởng – Kirschstein

Các vấn đề liên quan