9

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

  • 私はほとんどの開発作業をラップトップのEclipseで行っています。すべてがラップトップにローカルに保存されており、VCSを使用していません。また、コードを実際にバックアップしていません(ただし、別のコンピューターで表示できるように、時々自分宛てにメールで送信する場合を除きます。開発環境について説明しました。作業が必要です)。

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

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

そうそう、私はユニットテストをしないと言いましたか?

私が最初に修正したい最も明白な問題は、ソース管理の欠如です。gitは分散型であるため好きですが、Eclipseとうまく統合されていないようで、私の主要な開発OSであるWindowsではうまく機能しないと聞いています。ですから、私はある程度の経験があるSVNに傾倒しています。私は自分のパーソナルサーバーを持っていますが、大学の官僚機構に対処するよりも自分の管理者になりたいので、ソース管理にそれを使用すると思います。以前にSVNのセットアップに問題がありましたが、もう一度試してみます。たぶん、バグ追跡やToDoリストなどのためにTracやRedmineのようなものもインストールしますか?

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

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

長い質問でごめんなさい。私の質問は、唯一の開発者にとって、仕事を簡単にするだけでなく、専用の開発で必要な知識が期待されるいくつかのテクノロジーに自分自身をさらすために使用できるツールと方法論に要約されると思います家?


編集:これまでの素晴らしい答えをありがとう。ワークフローを「エンタープライズ」にするためだけにワークフローを作成することを提案するつもりはありませんでしたが、仕事を簡素化し、エンタープライズ開発環境で通常使用されるいくつかのテクノロジーを導入することを目的としています。それが私が意味するすべてです。

4

13 に答える 13

8

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

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

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

私は間違いなくAntまたはMavenを使用します。柔軟性が高いためAntを好みます。また、Mavenよりも開発スタイルに適していると思います。ただし、依存関係の管理を処理するApacheIvyも調べてみてください。

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

ユニットテストに関しては、ユニットテストを徐々に積み上げることができます。JUnitをCoberturaなどのコードカバレッジツール(セットアップが簡単)と組み合わせて使用​​することをお勧めします。これは、テストがカバーしているコードの量を理解するのに役立ち、テストの効果を示す指標になります。

Tracのようなものを設定する際にも価値があるかもしれません。バグを追跡できることが重要であり、wikiはドキュメント化に驚くほど役立ちます。

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

于 2009-01-05T16:54:55.710 に答える
2

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

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

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

于 2009-01-05T16:54:46.803 に答える
2

バージョン管理を使用します。限目。SVNはEclipseおよびWindowsとの優れた統合性を備えています。Windows用のTourtisSVNクライアントを入手し、Eclipseでsubclipseプラグインを使用します。

外付けHDを入手するか、会社のサーバーの1つを使用してリポジトリを配置し、バックアップを頻繁に行うことをお勧めします。Subversionは、デプロイメントとアップグレードでもうまく機能します。それを行う方法を学ぶだけで、決して振り返ることはありません:)

ユニットテストに関しては、それが進むべき道だと言う人もいますが、私は自分で練習を始めるのに十分な証拠を見つけていません。この質問の誰かが私を他の方法で納得させることができるなら、してください!

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

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

:)

于 2009-01-05T16:55:43.353 に答える
2

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

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

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

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

于 2009-01-05T16:54:16.400 に答える
1

Pragmatic Programmers' Pragmatic Starter Kitをチェックしてください。

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

そこから先へ進むための強固な土台となります。

于 2009-01-05T17:05:09.153 に答える
0

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

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

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

于 2009-01-05T19:53:21.547 に答える
0

あなたはいくつかの本当に確かな答えを得たので、短い投稿でテスト駆動開発に関する記事へのリンクを追加しました。これはあなたの履歴書によく似合うアジャイルプラクティスです。 TDD

于 2009-01-05T19:57:44.687 に答える
0

バージョン管理のセットアップといくつかの単体テストが完了したら、継続的インテグレーション サーバーを検討します (企業向けにしたかったのですよね?)。

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

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

ハドソンを検討することをお勧めします

于 2009-01-05T17:18:53.510 に答える
0

最後に申し上げましたが、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 クラスを妨害し、テストを再度実行すると、赤いバーが表示され、何が失敗したかを示す出力が表示されます。

おめでとう: あなたは単体テストです!

親ディレクトリを右クリックして [Run as jUnit test] を選択すると、ディレクトリ内のすべての Testcase クラスが実行されます。後で jUnit をビルド プロセスに組み込むことができますが、今はそれについて心配する必要はありません。

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

于 2009-01-05T17:19:52.400 に答える
0

以前のコメントはすべて、必要になる可能性のあるほとんどすべてをカバーしていました:-)

開発方法 (開発ワークフロー) に別のアプローチを追加したいと考えています。

次の記事を読むことをお勧めします。これは git ワークフローですが、使用している他のツールにも同じ考え方を使用できます。

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

于 2014-07-16T00:29:36.827 に答える
0

SVN サーバーを配置する Windows サーバーを実行している場合は、Visual SVNをサーバーとして使用します。セットアップと使用は非常に簡単で、基本認証と Windows 認証の両方をサポートしています。使用も無料です。

Eclipse には SVN サーバーと統合するモジュールがかなりあるので、そのうちの 1 つを使用するか、すでに提案されている Tortoise SVN を使用してください。

于 2009-01-05T20:13:02.333 に答える
0

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

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

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

于 2009-01-05T16:57:28.670 に答える