開発ワークフローをより「エンタープライズ」なものにするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/413713

質問

私は北東部の大学に本部を置く学術コンソーシアムの唯一の開発者です。私のすべての開発作業には、主に Java を使用した内部ツールが含まれるため、一般に公開されるものはありません。今のところ、私の開発ワークフローは非常に「趣味的」で、経験豊富なソフトウェア開発会社で見られるようなものではないと感じています。とにかく開発者は私一人だけなので、あまり関係ないと言いたくなるかもしれませんが、私の仕事を少し楽にしていくつかの開発者を得る以外の理由がない場合、いくつかの変更を加えても害はありません私の履歴書にはもっと多くのテクノロジーが載っています。現在、私のワークフローは次のようなものです。

  • 私はほとんどの開発作業をラップトップ上の Eclipse で行っています。すべては私のラップトップにローカルに保存されており、私は VCS を使用していません。また、コードを実際にバックアップすることもありません (別のコンピューターで確認できるように時々自分に電子メールで送信することを除いて - はい、私の開発環境についてはお話しました)仕事が必要です)。

  • プロジェクトが完了してデプロイしたい場合、または単にテストしたい場合は、Eclipse の組み込み Jar ツールを使用してプロジェクトの実行可能 .jar を作成します。外部の .jar ライブラリを使用する場合は、Fat-Jar プラグインを使用して、それらの .jar を実行可能ファイル .jar に含めます。

  • .jar を作成した後、それを SFTP 経由でサーバーに手動でアップロードし、次のようなものでテストします。 java -jar MyProject.jar.

そうそう、単体テストはしないと言いましたね?

最初に修正したい最も明白な問題は、ソース管理が欠如していることです。私は git が分散的な性質を持っているので気に入っていますが、Eclipse とうまく統合できていないようで、私の主な開発 OS である Windows ではうまく動作しないと聞いています。したがって、私は経験のある SVN に傾いています。私は自分の個人サーバーを持っていますが、それをソース管理に使用すると思います。なぜなら、私は大学の官僚主義に対処するよりも自分の管理者になりたいからです。以前、SVN のセットアップに少し苦労しましたが、もう一度試してみます。バグ追跡や Todo リストなどのために Trac や Redmine などもインストールするかも?

構築と展開についてはどうですか?Fat-Jar を使用して、jar を手動でサーバーにアップロードするよりも良い方法があるはずです。Ant や Maven などのツールについて聞いたことがありますが、これらは私がやりたいことに当てはまりますか?どうすればそれらの使用を開始できますか?

最終的には単体テストも JUnit と統合したいと考えています。おそらくそうあるべきですが、今のところ私のアプリケーションはそれほど複雑ではないので、それは私の最大の関心事ではありません。今すぐワークフローの簡素化と合理化に取り組んでから、単体テストに取り組みたいと考えています。

長い質問ですみません。私の質問は要約すると、単独の開発者にとって、自分の仕事を容易にするだけでなく、専用の開発で必要な知識が期待されるいくつかのテクノロジーに触れるために、どのようなツールや方法論を使用できるか、使用すべきかということだと思います。家?


編集:これまで素晴らしい回答をありがとうございました。私は、ワークフローを単に実行するために「エンタープライズ」にしたいと提案したのではなく、仕事を簡素化し、エンタープライズ開発環境で通常使用されるいくつかのテクノロジを習得するためでした。私が言いたかったのはそれだけです。

役に立ちましたか?

解決

あなたは実際に何をする必要があるかについてかなり良いアイデアを持っているように思えます。

Subversion (または他の VCS) を使用することが必須です。ただし、個人用のリポジトリを使用するのではなく、仕事関連のコード用に別の SVN リポジトリをセットアップすることが賢明かもしれません。

Subclipse のようなプラグインを使用すると、Subversion を Eclipse と統合できます。これは非常にうまく機能することがわかりました。

私は間違いなく Ant または Maven を使用します。私の好みは Ant です。より柔軟であり、Maven よりも開発スタイルに適していると思います。しかし、あなたも調べたいかもしれません アパッチ・アイビー, 、依存関係の管理を処理します。

基本的には、コンパイル、ビルド、デプロイメントのステップを実行する Ant タスクを設定します。これにより、最終的な JAR パッケージを作成するときに、それが Ant スクリプトの一部として単体テストされていることを確認できます。ant を使い始めるための最良の方法は、いくつかの例を見て、本書を最後まで読むことです。 マニュアル.

単体テストに関しては、単体テストを徐々に強化していきます。JUnit を次のようなコード カバレッジ ツールと組み合わせて使用​​することをお勧めします。 コベルトゥーラ (設定は簡単です) - テストでカバーされているコードの量を理解するのに役立ち、テストがどの程度効果的であるかを示す指標になります。

Trac のようなものをセットアップするのも価値があるかもしれません。バグを追跡できることは重要であり、Wiki はドキュメントとして驚くほど役立ちます。

言い換えれば、これはすべて正しい方向に進んでいるように思えます。必要なのは、これらのツールのいくつかを使用し始めるだけです。

他のヒント

実際に分散ソース管理を設定している場合は、 Bazaar をご覧になることをお勧めします。非常に高品質のマージの実行を中心に設計されたGITのような分散ソースコントロール。 Windowsを含むすべてのプラットフォームで動作し、 TortoiseBZR クライアントがあります。

しかし、ソース管理はどれよりも優れています。あなたが唯一の開発者であれば、SVNより複雑なものは必要ありません。大企業やプロジェクトは、ほとんど問題なく常にSVNを使用しています。

単体テストに関しては、 JUnit に慣れる必要があります。ユニットテストを知っていて、それを行うべきだということを知っているという事実は、ほとんどのアドホック開発者よりも数歩進んでいます。

バージョン管理を使用します。期間。 SVNには、EclipseおよびWindowsとの素晴らしい統合があります。 Windows用のTourtisSVNクライアントを入手し、Eclipseでsubclipseプラグインを使用します。

外部HDの取得を推奨するか、会社のサーバーの1つを使用してリポジトリを配置し、頻繁にバックアップを行います。 Subversionは、展開およびアップグレードでもうまく機能します。方法を学ぶだけで、後戻りすることはありません:)

単体テストに関しては、それが進むべき道だと言う人もいますが、私は自分で練習を始めるのに十分な証拠を見つけていません。この質問のソムボディが私を納得させることができるなら、そうしてください!

また、「エンタープライズ」に目を向けないでください。あなたのワークフロー-それを改善するために見てください。巨大なチームや企業でうまく機能するプラクティスは、あなたにとってうまく機能しないかもしれません。私は自分自身の開発者であり、あなたがいる状況を知っています。すべてを試してみて、しばらくして自然に感じられるものだけを維持してください。

ただし、必ずSVNを試してください!会社にApacheを備えたLINUXサーバーがある場合、DAV-SVNを使用してそこにサーバーをセットアップできるかどうかを確認してください。

:)

あなたはあなた自身の質問のほとんどに答えたと思います。

  • ソース管理:SVNを選択-簡単なインストール、Eclipse(subclipse)との優れた統合。
  • Antを使用してプロジェクトをビルドし、展開します(SCP / SFTPタスク)
  • SVNですべての設定(Eclipseプロジェクトの設定、xmlのビルドなど)を保持します。
  • Bugzillaを使用して、バグ/問題/リクエスト/アイデアを追跡します。

バージョン管理の使用を開始することは非常に有益です。今すぐ始めましょう、遅れないでください! Gitは非常に速く動いており、すでにTortoiseGitが開発されています。 SVNは、引き続き使用するのに最適な標準です。そして、私はMercurialを使用したことはありませんが、それはもう1つのVCSを検討する価値があります。

それ以外は、なぜあなたのワークフローがエンタープライズでなければならないのかわかりません。効率的で快適でなければなりません。とはいえ、単純なテキストエディターを使用してコマンドラインからコンパイルしてみてください。世界の最高のプログラマーのほとんどはまだIDEの代わりにそれを使用しており、お気に入りのIDEの下のプロセスを理解するのに役立ちます。

Pragmatic Programmersの Pragmatic Starter Kit をご覧ください。

大学/などのソフトウェア開発の重要な基礎について学習します。バージョン管理、単体テスト、プロジェクト自動化(この順序で)のようにパススルーし、非常に親しみやすい方法でそれを行います。

そこから継続するための強固な基盤を提供します。

Matt RaibleのAppfuseを見てください。

Mavenと単体テストが組み込まれています。

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

最後に言いましたが、jUnitは早速使い始めるべきだと思います。

その理由は、おそらく、 最も簡単な あなたが特定した野心的なものであり、ツールはほぼ確実にあなたの Eclipse ビルドにすでに組み込まれています。

プロジェクト内に「jUnit」という名前の新しいフォルダーを作成します。

setAnnualSalary() メソッドと getMonthlySalary() メソッドを備えた Employee クラスがあるとします。

jUunit フォルダーを右クリックし、新規 -> 「jUnit テスト ケース」をクリックします。これにより、新しいクラスが作成されます。これを TestEmployee と呼びます。いつものように、Eclipse が定型文を生成します。

「test」で始まる名前の void メソッドを追加します。

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

右クリックして「実行」→「jUnitテスト」をクリックします。(初めて Eclipse がプロジェクトのセットアップを行うよう求めるプロンプトを表示する場合があります。ただ言われたことをやるだけです。)

従業員が適切に機能している場合は、緑色のバーが表示されます。Employee クラスを妨害し、テストを再度実行すると、赤いバーが表示され、何が失敗したかを示す出力が表示されます。

おめでとう:あなたは単体テストを行っています!

親ディレクトリを右クリックし、「jUnit テストとして実行」を選択すると、ディレクトリ内のすべてのテストケース クラスが実行されます。後で jUnit をビルド プロセスに組み込むことができますが、今のところは心配する必要はありません。

オートコンプリートでは、すべてのバリエーションが表示されます。 assert() 使用できます。これを読んで、実装に合格する前にテスト ケースを作成する実践を目指すことができます。しかし、上記の簡単なことを実行するだけで大​​きなメリットが得られます。

バージョン管理といくつかの単体テストを設定したら、継続的な統合サーバーを検討します(企業になりたいですか?)

あなたが唯一の開発者であり続けたとしても、これはいくつかのエラーを発見するのに役立つかもしれません。チェックインするのを忘れたものやいいね。 CIサーバーは定期的にすべてのソースをチェックアウトし、クリーンビルドを実行してすべてのテストを実行します。また、エラーの場合に連絡します。

これにより、あなた(または他の人)がコードをチェックアウトし、プロジェクトをビルド/実行できることが保証されます。

Hudson

をご覧になることをお勧めします

他の人が言ったように、あなたはすでにあなたが何をする必要があるかを明確に知っています。 VCSは必須です。CIまたはバグ追跡はやり過ぎかもしれません(1人の開発者にとって、バグ追跡にはスプレッドシートで十分かもしれません)。

大きなメリットが得られることの1つは、製品のバックログを整理しておくことです。ソロ開発では、優先度の高い機能に焦点を当て続け、機能のクリープを回避することが私の最大の課題の1つであることがわかりました。バックログを保持することは非常に役立ちます。機能の優先順位付けされたリストよりも、各機能のスコープについての注意事項をはるかに超える必要はありません。私の職場では、この情報をTracに保存していますが、ここでもスプレッドシートで十分です。

そして、ユニットテスト、特にテスト駆動開発(TDD)用のプラグを挿入したいと思います。 ケントベックの本は、開始するのに適した場所です。 TDDを使用すると、特にQAのない単一の開発者プロジェクトで、本当に必要なことに正直になり、集中することができます。コードが自分自身を書いているように見える場合があります。

非常に堅実な答えが得られたので、短い投稿でテスト駆動開発に関する記事へのリンクを追加しました。これはあなたの履歴書でよく見えるアジャイルプラクティスです。 TDD

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top