自分で開発する場合の方法論/ツール[終了]


10

中規模以上のソフトウェアを完全に自分で開発する必要があるとします。達成したい個人的なプロジェクトのように。

どのような方法論/ツールを使用して、開発、学習する必要があるかを定義し、システムの詳細と全体像を把握する必要がありますか?

基本的に自分を追跡し、途中で迷子にならないようにします。


3
鉛筆、紙、そして私の脳。ホワイトボードがあると役立ちます。真剣に、私の設計作業の多くはIDEで直接行われます。現在直面している問題に基づいて、特定の質問がありますか?あなたが解決しようとしている問題を具体的に知っている場合、それは私たちが質問に答えるのに役立ちます。
Robert Harvey

@RobertHarvey haha​​それは本当です。まあ、ちょっと。私は自分の考え、個人的なプロジェクトを開発しています。ソフトウェアがたまたま私が想像していたよりも大きくなっただけで、それがどのように機能するかを学び、それからそれを開発する方法を理解しなければならないことがあります。
Cassio、2011

1
@RobertHarvey主な問題は、詳細についてのブレインストーミングの欠如であり、何を行う必要があるかを追跡し、システム全体のビューを維持することです。
カシオ、2011

2
これが別の質問でカバーされていることは99.9%確信していますが、現時点ではそれらを見つけることができません。
アダムリア

4
私はいつも道に迷うようにしています。学習への近道です。
Joel Etherton、2009

回答:


5

通常はMercurialを使用します。機能が必要な場合は追加し、不要になった場合は削除します。また、迷子にならないように、コミットコメントを上手に書くようにしています。


うん- Mercurialは...彼らはApple社によって作られたように:)シンプルで強力な、美しい、まだ便利に感じるこれらのツールの一つである
ルーク

4

それはあなたの注意の範囲を超えて簡単に成長するかもしれません。スパンではなく、

一度に多くの要素を考慮することは困難です。

そして...それは回帰ジェットコースターになります。
あなたがするすべては以前のものを壊し、ロールバックは助けにはなりません。

これを回避するには、回帰積極的にテストする必要があります。
自動的に。(あなたはそうでなければそれを行うことはできず、正気を保つことができます)

テストはあなたのエネルギーに厳しい負担を加えます。

プロジェクトがすべてUIに関するものであれば、おそらくトーストします。

  • UIテストは難しい
  • 自動UIテストはまだ難しいです。

UIに焦点を当てたプロジェクトのテストされていない直前のアイデア親戚をUIテスターとして彼のマウスをクリックするのが好きで暇な時間に
登録します。 ここでは「ティーンエイジャー」を考えています。

その他の問題:

  • それは永遠にかかります
  • あなたは作家のブロックに直面します
    (それは実際には条件として存在しません、それは人々が彼らの規律の欠如に付着する人気のある誤ったラベルです

何らかのバージョン管理慣れていて気に入っている場合は、それを使用してください。今すぐ学習を始める散ります

すでに指摘したように、アイデアをグラフ化すると役立つ場合があります。

FreemindCMapsXMindyEdgraphvizなどを使用しました。

XMindはあまり意味がありません。

  • データを挿入するのに非常に高速
  • 自動レイアウト
  • 厳密にあなたがトピックに留まるようにしようとしています
  • 服用のために非常に良い授業中のノートを(私はそう、私はそれを持っていた希望の大学で
  • あなたがそこに明確にしていない何かについてあなたの心決めているまだ使いにくい

私のトップ10で鉛筆とノートはまだかなり良いスコアです。

  • 多くのメモをスキャンします
  • 小さな説明的な絵をたくさん描いています。

    • 画像で考えると、充実したブレーンストーミングツールを見つけることができない場合があります)

最後の手段として、いつでも自分の消費用にパワーポイント準備できます:)


+1。しかし、「あなたがそこに明確にしていない何かについてあなたの決心をする」ことについて何か提案はありますか?
カシオ2011

@Cassio私はxmindと鉛筆+スケッチブックを切り替えたり、libreofficeで先のとがったリストを作成したり、例を書き留めたり、おおよその実装をテストしたりしています。それはかなり時間のかかるプロセスですが、正しいと感じるものに到達するには、いくつかの非生産的な考えを捨てなければなりません。(追伸:
くしゃくしゃにする

1
@ZJR確かに。時々、必要のないものを書いて時間を浪費するのが怖かっただけですが、今ではそれがプロセスの仕組みだとわかりました。最初は役に立たないものを書きますが、時間の経過とともに改善されます。:)ありがとう!
Cassio、2011年

3

識字プログラミング。

文芸的プログラミングの実践者は、エッセイストと見なすことができ、その主な関心事は、スタイルの説明と卓越性にあります。そのような著者は、シソーラスを手にして、変数の名前を慎重に選択し、各変数の意味を説明します。彼または彼女は、その概念が、お互いを補強する公式と非公式の方法を組み合わせて使用​​し、人間の理解に最も適した順序で導入されているため、わかりやすいプログラムを目指して努力しています。

プロジェクトに関する論文(または本、レポート、ドキュメント)を書いている場合は、仕事に専念する傾向があります。

何をしているかの概要から始めます:ユースケースの概要、リリース1、リリース2、リリースn。ユースケースの概要を書き留めます。それらを優先します。それらをスプリントとリリースに入れます。

各リリースには、ユースケースビュー、論理ビュー、処理ビュー、コンポーネントビュー、デプロイメントビューがあります。スプリントについては、ユースケースを詳しく説明します。HTMLドキュメントを発行して、何をするかを示します。スプリントの使用例を詳しく説明した後、論理モデルを記述します。これをサポートするコードを記述します。処理ドキュメントを作成します。それをサポートするコードを記述します。モジュールを作成します。コンポーネントビューのドキュメントを作成します。テストとサポートドキュメントを作成します。スプリント結果をHTMLドキュメントとして公開します。

スプリントごとに繰り返します。時々、ドキュメントを確認して編集します。

非常に多くの読み書き可能なプログラミングツールがあります。それらは、ドキュメントコードの両方を単一のテキストから作成するソースを作成するのに役立ちます。

私はスフィンクスPyLitを使用していますが、それは私がPythonプログラマだからです。


大学の論文ざっくり抜いて忘れてしまうのは良いことです。後で製品をリリースまたは維持することを計画しているのであれば、悪いことです。とにかく、Pythonであっても、だれもがどこでもdoxygenを使用する必要があります。しかし、それは私がファンだからという理由だけです:)
ZJR

2

アイデアを書き留めたい場合は、XMindFreeMindなどのマインドマッピングツールを使用できます。どちらのツールも無料で(XMindの個人向け)、アイデアをブレインストーミングしたり整理したりするのに最適です。これらのツールの重要な点は、何かを忘れる可能性が少ないということです。

私は最後の個人プロジェクトを始める前に、Freemindを個人的に使用しました。それ自体は特別な方法論はありませんでした。2日に1回、1時間のセッションでアイデアを提示しました。ブレーンストーミングセッションの間隔を空けることで、何が問題で、何が本質的でなく、次のバージョンで役立つかなどをよりよく理解できたと思います。

また、最初のコードコミットでは、ブレインストーミングファイルをソースコードリポジトリに保存し(bitbucketを使用しました)、最新のアイデアで最新の状態に保ちました。


とても良い。私はすでにこれらすべてをテストしています。ありがとう!
カシオ2011

2

実際のソフトウェアプロジェクトのように扱ってください(1つであるため)。開発者が1人であるため、変更点はわずかです。まだソース管理が必要です。修正するバグを追加する機能を整理する方法がまだ必要です。コードにリグレッションを作成しないことを確認するために、自動テストが必要です。また、必要に応じてコードを自動的にコンパイルし、テストを実行してレポートを表示する自動方法も必要です。

私はあなたが説明したように個人的なプロジェクトに取り組んでいます。私が説明したすべてのカテゴリを満たすために、Git、Redmine、JUnit、およびJenkinsを使用しています。私のワークフローは:

  • 作業するチケットを選択してください
  • コードベースを分岐させる
  • タスクのコードとテストを開発する(適切なセーブポイントでブランチへの変更をコミットする)
  • ブランチをトランクにマージします
  • ビルドが成功し、テストに合格し、他に問題がないことを確認します
  • 繰り返す

すべてを管理および整理することは、多くの開発者がいる場合と同じくらい重要です。多くの開発者がいるため、情報を誰にでも配布できるように整理する必要があります。それがあなただけの場合、あなたはすでにすべての情報を持っていますが、システムのすべての部分を思い出すことは困難です。管理されたシステムはそれをあなたにもっと簡単にし、あなたは目の前の仕事に集中することができます。


2

ツール:

  • コントロールバージョンシステム(ガレージまたは自宅のパーソナルPCの唯一の開発者であっても):GIT、Mercurial、Tourtoise

  • IDE(Scintilla、Vim、メモ帳)を使用している場合でも、ソースコードが強調表示されたエディター

  • 実世界の黒板、ホワイトボードなど、Designer Toolsアプリケーションに適合しないものがあります。

  • 設計ツール:Rational Rose、Umbrello、(UML、ER、)Visio、またはPower Point、Corel Draw、Open Office Drawなどの「貧しい開発者向けデザイナーツール」

  • テキスト/ソースコードテキスト比較ツール、例:WinMerge


非常に役立ちます!私はこれらすべてを実践します。ありがとう。
Cassio

1

開発プロセスのすべてのステップを確認する必要があるため、さまざまなタスクを区別して処理する方法に依存します。

ツールは、ツールの使い方をすでに知っていて、最悪の間違いの1つは、ツールの使い方を学ぶのではなく、ツールの仕組みを学ぶことである場合にのみ役立つと思います。

最初に、私の意見では、ソフトウェアが期待すること、特にソフトウェアが実行しないことを書き留める必要があります。それが重要なポイントです。次のステップは、最終システムを下位のサブシステムに分割し、構築プロセスを容易にすることです。そして最後に重要なことですが、ツールを選択する必要があります。基本的には、優れたIDE、VCS、およびデータモデラーです。役立つ他の多くのツールを追加できますが、間違ったトラックから始めないように注意してください。

まあ、最初はそれほど魅力的ではないようですが、プロセスは時間とともに楽しくなります。


うん!コードは-プロジェクトが適切に設計されている場合-全体のごく一部です。
Lucas Maus、2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.