簡體   English   中英

如何使我的開發工作流程更“企業化”?

[英]How can I make my development workflow more “enterprisey”?

我是總部設在東北大學的學術聯盟的唯一開發人員。 我的所有開發工作都涉及內部工具,主要是Java,因此沒有任何內容發布給公眾。 現在,我覺得我的開發工作流程非常“愛好”,並且與您在經驗豐富的軟件開發公司看到的完全不同。 我傾向於說這並不重要,因為我是唯一一個開發人員,但是如果沒有其他原因,只要讓我的工作變得更容易並獲得一些改變就不會有任何改變。我的簡歷中有更多技術。 現在我的工作流程是這樣的:

  • 我在筆記本電腦上的Eclipse中進行了大部分開發工作。 一切都保存在我的筆記本電腦本地,我沒有使用VCS,也沒有真正備份我的代碼(偶爾通過電子郵件發送給自己,所以我可以在另一台計算機上看到它 - 是的,我告訴過你我的開發環境需要工作)。

  • 當我完成一個項目並希望部署它或者我只是想測試它時,我使用Eclipse中的內置Jar工具來創建我的項目的可執行文件.jar。 如果我使用外部.jar庫,我使用Fat-Jar插件將這些.jars包含在我的可執行文件.jar中。

  • 創建.jar之后,我通過SFTP手動將其上傳到服務器,並使用java -jar MyProject.jar等測試它。

哦是的,我提到過我不進行單元測試嗎?

我想首先解決的最明顯的問題是我缺乏源代碼控制。 我喜歡git,因為它具有分布式特性,但它似乎沒有很好地與Eclipse集成,我聽說它在Windows上運行不佳,這是我的主要開發操作系統。 所以,我傾向於SVN,我確實有一些經驗。 我確實擁有自己的個人服務器,我想我會將它用於我的源代碼控制,因為我寧願成為自己的管理員而不是處理大學官僚機構。 我之前設置SVN時遇到了一些麻煩,但是我會再試一次。 也許我還會安裝像Trac或Redmine這樣的bug跟蹤,待辦事項列表等等?

那么構建和部署呢? 必須有比使用Fat-Jar更好的方法並手動將我的jar上傳到服務器。 我聽說過像Ant和Maven這樣的工具 - 這些適用於我想做的事情嗎? 我怎樣才能開始使用它們?

我想我最終也希望將單元測試與JUnit集成。 雖然它可能應該是,但這不是我現在主要關注的問題,因為到目前為止我的應用程序並不是非常復雜。 我現在非常想簡化和簡化我的工作流程,然后我會輕松進行單元測試。

很抱歉這個問題很長。 我想我的問題歸結為,對於一個唯一的開發人員,我可以/應該使用哪些工具和方法,不僅可以使我的工作更輕松,而且還可以讓我自己接觸一些在專門開發中需要的必備知識的技術屋?


編輯:感謝目前為止的精彩答案。 我並不是說我想讓我的工作流程“企業化”只是為了做到這一點,而是為了讓我的工作變得更簡單,並獲得一些通常用於企業開發環境的技術。 這就是我的意思。

在我看來,你實際上對你需要做的事情非常了解。

使用Subversion(或其他VCS)是必須的。 雖然為您的工作相關代碼設置單獨的SVN存儲庫而不是使用個人代碼可能是明智之舉。

您可以使用像Subclipse這樣的插件將Subversion與Eclipse集成,我發現它非常適合。

我肯定會使用Ant或Maven - 我的偏好是Ant,因為它更靈活,我認為它也比Maven更適合你的開發風格。 但您可能還需要研究處理依賴關系管理的Apache Ivy

基本上你設置了一個運行編譯,構建和部署步驟的ant任務 - 這樣當你創建一個最終的JAR包時,你可以確定它已經過單元測試,因為它是你的ant腳本的一部分。 開始使用ant的最佳方法是查看一些示例,並閱讀手冊

至於單元測試 - 您可以逐步建立單元測試。 我建議將JUnit與代碼覆蓋工具(如Cobertura (易於設置))結合使用 - 它將幫助您了解測試所覆蓋的代碼量,並指示測試的有效性。

在設置像Trac這樣的東西時也值得你這么做 - 能夠跟蹤bug是很重要的,而wiki對文檔來說非常有用。

換句話說,所有這些聽起來都像是在正確的線上,你只需要開始使用這些工具!

如果你真的開始使用分布式源代碼控制,我建議你看看Bazaar 它的GIT類似分布式源代碼控制,旨在執行非常高質量的合並。 開箱即用它適用於所有平台,包括Windows,他們有一個TortoiseBZR客戶端。

實際上,任何源代碼控制都比沒有好。 如果您是唯一的開發人員,那么就不需要比SVN更復雜的東西了。 大型公司和項目始終使用SVN,幾乎沒有問題。

就單元測試而言,你應該熟悉JUnit 您知道單元測試並知道您應該這樣做的事實仍然比大多數臨時開發人員領先幾步。

使用版本控制。 期。 SVN與Eclipse和Windows有很好的集成。 獲取Windows的TourtisSVN客戶端並使用Eclipse的subclipse插件。

我建議購買外置高清或使用貴公司的服務器來存放您的存儲庫並經常進行備份。 Subversion也適用於部署和升級。 只是學習如何做到這一點,你永遠不會回頭:)

對於單元測試,有些人會說這是要走的路,但我沒有找到足夠的證據來自己開始練習。 如果這個問題上的sombody可以說服我,那么請做!

此外,不要將“企業”視為您的工作流程 - 希望使其更好。 適用於大型團隊和合作的實踐可能不適合您。 我自己幾乎是一個唯一的開發人員,並且知道你所處的情況。只需嘗試一切,只保留一段時間后感覺自然。

但請務必嘗試SVN! 如果您的公司有一個帶Apache的LINUX服務器,請查看您是否可以使用DAV-SVN在那里設置服務器。

:)

我想你回答了大部分自己的問題。

  • 源代碼控制:選擇SVN - 易於安裝,與Eclipse(subclipse)的完美集成。
  • 使用Ant構建項目並進行部署(SCP / SFTP任務)
  • 在SVN中保留所有設置(Eclipse項目設置,構建xmls等)。
  • 使用Bugzilla來跟蹤您的錯誤/問題/請求/想法。

開始使用版本控制非常有用。 從現在開始,不要拖延! Git正在快速移動,並且已經開發了TortoiseGit。 SVN仍然是一個很好的標准。 我沒有和Mercurial合作過,但那是另一個值得研究的VCS。

除此之外,我不明白為什么你的工作流程必須是企業的。 它必須高效舒適。 也就是說,我認為您應該嘗試使用簡單的文本編輯器並從命令行進行編譯。 大多數世界上最好的程序員仍然使用它而不是IDE,它將幫助您理解您喜歡的IDE下面的過程。

查看Pragmatic Programmers的實用入門套件

它讓您了解大學/等的軟件開發的重要基礎知識。 似乎放棄了,如版本控制,單元測試和項目自動化(按此順序),並以非常平易近人的方式進行。

它將為您提供堅實的基礎,讓您繼續前進。

之前的所有評論幾乎涵蓋了您可能需要的所有內容:-)

我想在如何開發(開發工作流程)上添加另一種方法。

我建議您閱讀以下文章,雖然它是一個git工作流程,但您可以對您可能使用的任何其他工具使用相同的想法。

http://nvie.com/posts/a-successful-git-branching-model/

看看@Matt Raible的Appfuse。

它結合了Maven和單元測試。

http://raibledesigns.com/rd/tags/appfuse

一旦你有一個設置版本控制和一些單元測試,我會考慮一個連續的集成服務器(你想成為企業,對吧?)。

即使您是並且仍然是唯一的開發人員,這可能會幫助您發現一些錯誤。 你忘記辦理登機手續或喜歡的事情。 CI服務器定期檢查所有源,干凈的構建運行所有測試。 如果出現錯誤,它也會與您聯系。

這可以保證您(或任何其他人)能夠檢查您的代碼並構建/運行您的項目。

我建議看看哈德森

雖然你把它作為最后一件事,但我認為你應該毫不拖延地開始使用jUnit。

原因是,它可能是您已經確定的最容易實現的目標,並且這些工具幾乎肯定已經內置到Eclipse構建中。

在項目中創建一個名為“jUnit”的新文件夾。

假設您有一個Employee類,使用setAnnualSalary()和getMonthlySalary()方法。

右鍵單擊jUunit文件夾,new - >“jUnit test case”。 這將成為一個新的課程。 稱之為TestEmployee。 Eclipse像往常一樣為您生成樣板文件。

添加名稱以'test'開頭的void方法:

public void testSalaryCalc() {
    Employee emp = new Employee("John Doe");
    emp.setAnnualSalary(12000);
    assertEquals(1000,emp.getMonthlySalary());
}

右鍵單擊“運行方式” - >“jUnit test”。 (Eclipse第一次可能會提示你為項目做一些設置。就像它說的那樣。)

如果員工工作正常,您將看到一個綠色欄。 破壞Employee類,再次運行測試,你會看到一個紅色條,以及輸出告訴你失敗是什么。

恭喜:您正在進行單元測試!

右鍵單擊父目錄並選擇“Run as jUnit test”將運行目錄中的每個Testcase類。 稍后您可以將jUnit合並到構建過程中,但現在不用擔心。

自動填充功能會向您顯示您可以使用的assert()所有變體。 您可以閱讀它,並針對在您通過它們的實現之前編寫測試用例的實踐。 但只要做上面這些簡單的事情就可以獲得很大的好處。

像其他人所說,你已經清楚地知道你需要做什么。 VCS是必須的,CI或錯誤跟蹤可能是過度的(對於單個開發人員來說,電子表格可能足以進行錯誤跟蹤)。

可能對您有益的一件事是保持有組織的產品積壓。 在單獨開發中,我發現專注於高優先級功能並避免功能蔓延成為我最大的挑戰之一。 保持積壓有助於極大地。 它不一定只是一個優先級的功能列表,並且有一些關於每個功能范圍的注釋。 在我的工作場所,我們將此信息保存在Trac中,但在這里,您可能只需要一個電子表格。

我想插入一個單元測試插件,特別是測試驅動開發(TDD)。 Kent Beck的書是一個很好的起點。 我發現TDD有助於讓我保持誠實,專注於我真正需要做的事情,特別是在沒有QA的單一開發人員項目上。 有時似乎代碼會自行編寫。

你有一些非常可靠的答案如此簡短的帖子添加了一篇關於測試驅動開發的文章的鏈接,這是一個敏捷的練習,在你的簡歷上會很好看。 TDD

如果您正在運行要放置SVN服務器的Windows Server,請使用Visual SVN作為服務器。 它易於設置和使用,它支持基本身份驗證和Windows身份驗證。 它也是免費使用的。

Eclipse有很多模塊可以與SVN服務器集成,因此請使用其中一個或已經建議的Tortoise SVN。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM