中規模以上のソフトウェアを完全に自分で開発する必要があるとします。達成したい個人的なプロジェクトのように。
どのような方法論/ツールを使用して、開発、学習する必要があるかを定義し、システムの詳細と全体像を把握する必要がありますか?
基本的に自分を追跡し、途中で迷子にならないようにします。
中規模以上のソフトウェアを完全に自分で開発する必要があるとします。達成したい個人的なプロジェクトのように。
どのような方法論/ツールを使用して、開発、学習する必要があるかを定義し、システムの詳細と全体像を把握する必要がありますか?
基本的に自分を追跡し、途中で迷子にならないようにします。
回答:
それはあなたの注意の範囲を超えて簡単に成長するかもしれません。スパンではなく、幅。
一度に多くの要素を考慮することは困難です。
そして...それは回帰ジェットコースターになります。
あなたがするすべては以前のものを壊し、ロールバックは助けにはなりません。
これを回避するには、回帰を積極的にテストする必要があります。
自動的に。(あなたはそうでなければそれを行うことはできず、正気を保つことができます)
テストはあなたのエネルギーに厳しい負担を加えます。
プロジェクトがすべてUIに関するものであれば、おそらくトーストします。
UIに焦点を当てたプロジェクトのテストされていない直前のアイデア親戚をUIテスターとして彼のマウスをクリックするのが好きで、暇な時間に
登録します。 ここでは「ティーンエイジャー」を考えています。
その他の問題:
何らかのバージョン管理に慣れていて気に入っている場合は、それを使用してください。今すぐ学習を始めると気が散ります。
すでに指摘したように、アイデアをグラフ化すると役立つ場合があります。
Freemind、CMaps、XMind、yEd、graphvizなどを使用しました。
XMindはあまり意味がありません。
私のトップ10で鉛筆とノートはまだかなり良いスコアです。
小さな説明的な絵をたくさん描いています。
最後の手段として、いつでも自分の消費用にパワーポイントを準備できます:)
識字プログラミング。
文芸的プログラミングの実践者は、エッセイストと見なすことができ、その主な関心事は、スタイルの説明と卓越性にあります。そのような著者は、シソーラスを手にして、変数の名前を慎重に選択し、各変数の意味を説明します。彼または彼女は、その概念が、お互いを補強する公式と非公式の方法を組み合わせて使用し、人間の理解に最も適した順序で導入されているため、わかりやすいプログラムを目指して努力しています。
プロジェクトに関する論文(または本、レポート、ドキュメント)を書いている場合は、仕事に専念する傾向があります。
何をしているかの概要から始めます:ユースケースの概要、リリース1、リリース2、リリースn。ユースケースの概要を書き留めます。それらを優先します。それらをスプリントとリリースに入れます。
各リリースには、ユースケースビュー、論理ビュー、処理ビュー、コンポーネントビュー、デプロイメントビューがあります。スプリントについては、ユースケースを詳しく説明します。HTMLドキュメントを発行して、何をするかを示します。スプリントの使用例を詳しく説明した後、論理モデルを記述します。これをサポートするコードを記述します。処理ドキュメントを作成します。それをサポートするコードを記述します。モジュールを作成します。コンポーネントビューのドキュメントを作成します。テストとサポートドキュメントを作成します。スプリント結果をHTMLドキュメントとして公開します。
スプリントごとに繰り返します。時々、ドキュメントを確認して編集します。
非常に多くの読み書き可能なプログラミングツールがあります。それらは、ドキュメントとコードの両方を単一のテキストから作成するソースを作成するのに役立ちます。
アイデアを書き留めたい場合は、XMindやFreeMindなどのマインドマッピングツールを使用できます。どちらのツールも無料で(XMindの個人向け)、アイデアをブレインストーミングしたり整理したりするのに最適です。これらのツールの重要な点は、何かを忘れる可能性が少ないということです。
私は最後の個人プロジェクトを始める前に、Freemindを個人的に使用しました。それ自体は特別な方法論はありませんでした。2日に1回、1時間のセッションでアイデアを提示しました。ブレーンストーミングセッションの間隔を空けることで、何が問題で、何が本質的でなく、次のバージョンで役立つかなどをよりよく理解できたと思います。
また、最初のコードコミットでは、ブレインストーミングファイルをソースコードリポジトリに保存し(bitbucketを使用しました)、最新のアイデアで最新の状態に保ちました。
実際のソフトウェアプロジェクトのように扱ってください(1つであるため)。開発者が1人であるため、変更点はわずかです。まだソース管理が必要です。修正するバグを追加する機能を整理する方法がまだ必要です。コードにリグレッションを作成しないことを確認するために、自動テストが必要です。また、必要に応じてコードを自動的にコンパイルし、テストを実行してレポートを表示する自動方法も必要です。
私はあなたが説明したように個人的なプロジェクトに取り組んでいます。私が説明したすべてのカテゴリを満たすために、Git、Redmine、JUnit、およびJenkinsを使用しています。私のワークフローは:
すべてを管理および整理することは、多くの開発者がいる場合と同じくらい重要です。多くの開発者がいるため、情報を誰にでも配布できるように整理する必要があります。それがあなただけの場合、あなたはすでにすべての情報を持っていますが、システムのすべての部分を思い出すことは困難です。管理されたシステムはそれをあなたにもっと簡単にし、あなたは目の前の仕事に集中することができます。
ツール:
コントロールバージョンシステム(ガレージまたは自宅のパーソナルPCの唯一の開発者であっても):GIT、Mercurial、Tourtoise
IDE(Scintilla、Vim、メモ帳)を使用している場合でも、ソースコードが強調表示されたエディター
実世界の黒板、ホワイトボードなど、Designer Toolsアプリケーションに適合しないものがあります。
設計ツール:Rational Rose、Umbrello、(UML、ER、)Visio、またはPower Point、Corel Draw、Open Office Drawなどの「貧しい開発者向けデザイナーツール」
テキスト/ソースコードテキスト比較ツール、例:WinMerge
開発プロセスのすべてのステップを確認する必要があるため、さまざまなタスクを区別して処理する方法に依存します。
ツールは、ツールの使い方をすでに知っていて、最悪の間違いの1つは、ツールの使い方を学ぶのではなく、ツールの仕組みを学ぶことである場合にのみ役立つと思います。
最初に、私の意見では、ソフトウェアが期待すること、特にソフトウェアが実行しないことを書き留める必要があります。それが重要なポイントです。次のステップは、最終システムを下位のサブシステムに分割し、構築プロセスを容易にすることです。そして最後に重要なことですが、ツールを選択する必要があります。基本的には、優れたIDE、VCS、およびデータモデラーです。役立つ他の多くのツールを追加できますが、間違ったトラックから始めないように注意してください。
まあ、最初はそれほど魅力的ではないようですが、プロセスは時間とともに楽しくなります。