3

手元に特定のプロジェクトがあり、それを部分に分割することができ、発生するすべての問題について完全に確信が持てないとします。時間が重要です。

  • パーツがソフトウェア製品を使用するか、独自のコードを使用するかをどのように決定しますか? (いくつかのツールは素晴らしいものですが、習得には多くの時間が必要であることを考慮してください)
  • 適切なソフトウェア製品をどのように選択しますか?
  • 適切な製品を選択するこの段階にかかる時間 (パーセンテージ) と、1 つの製品を評価するのにかかる時間は?
  • せっかく作った商品が合わなくて、途中で気が変わってもいいですか?

それらについての経験則を聞きたいです。

4

5 に答える 5

3

決定を変更することは、家がすでに建てられている間に設計図を変更するようなものです。

それはあなたがその時点までに費やした時間とお金に完全に依存します.

いくつかの考慮事項:

0) 始める前に、問題を明確かつ単純な言葉で理解してください。 その成功にとって何が重要かを知り、そのリストを使用して、ソフトウェア、言語、またはツールがそれを支援するかどうか、どのくらいの費用がかかるか、費用が利益を上回るかどうかを確認します。

1) 塾のスケジュールを使う。1日または1週間しかなく、それ以上作業する時間がない場合に構築する順序で構築します。機能の 50% を 100% の品質で実行しなければならない場合、どれだけ問題がなくなるかは驚くべきことです。価値、価値、価値に焦点を当てます。詳細については、37 Signal の書籍 Getting Real などをお読みください。

2) 車輪を再発明しないでください。 ゼロから何かを構築する方が常に簡単なようです。実装のほんの一部を行っていて、それが本当に簡単でない限り、つまり、何を構築していたかを忘れるまで抽象化を回避できる場合を除き、それを検討してください。より速く、より良く、より安く、同じ時間で構築できるのであれば、それを実行してください。

3) ツールの機能と、ツールがソリューションにもたらす利点を理解する。統合するかもしれないし統合しないかもしれない多くのツールに精通しているか、少なくとも認識している必要があります。

4) 多くの問題を解決するために使用される言語を選択します。 時間を節約するソフトウェアを構築するための多くの優れたライブラリとツールが見つかる可能性があります。提供し、実行でき、他の人の知恵に頼ることができるものが必要な場合は、確立されたものを使用するか、必要に応じて .NET や Java に簡単にアクセスできる言語を使用してください。

于 2009-06-13T20:52:18.687 に答える
2

ソフトウェア コンポーネント/パッケージとして認識するソフトウェアの各部分について:

  1. パーツがソフトウェア製品を使用するか、独自のコードを使用するかをどのように決定しますか? (いくつかのツールは素晴らしいものですが、習得には多くの時間が必要であることを考慮してください)

    • 検討しているコンポーネントが製品の主要なビジネス コアの一部であるかどうかを自問してください。

      • そうでない場合は、通常、既存のソリューションを使用し、あまり時間をかけない方がよいでしょう。

      • もしそうなら、あなたが計画しているものよりも優れた既存の製品がないことを確認してください. - あります。製品を開発する代わりに、ライセンスを購入することを検討してください。

    • 同様のコンポーネント (商用、オープン ソース、さらには記事/デモ ソース コード) をオンラインで検索します。

      • コンポーネントからのすべての要件を実装しているものはありますか?
      • 同様のコンポーネントを開発して維持するには、それ以上の費用がかかりますか?
      • ライセンス条件は何ですか?- それらはあなたの製品に適していますか?
      • コンポーネントにユーザーインターフェースが含まれている場合、見やすく使いやすいですか?

      • 上記のすべてに「はい」と答えた場合は、コンポーネントを自分で開発しないでください。

      • そうでない場合:

      • コンポーネントはオープンソースですか、それとも記事/デモコードで公開されていますか? - もしそうなら、それは堅牢です。コードを改善して使用するか、要件により適したコードを書くのに役立つ例として使用できますか? - その場合、独自のコードを作成する場合は、ゼロから開発されていないコードを独自のコンポーネントの一部として使用します。

      • 上記に対する答えが「いいえ」の場合は、独自のものを開発する必要があります (または、間違った場所で検索しています)。

  2. 適切なソフトウェア製品をどのように選択しますか?

    • 1 の回答を参照してください。
  3. 適切な製品を選択するこの段階にかかる時間 (パーセンテージ) と、1 つの製品を評価するのにかかる時間は?

    • 1 日をクリアし、既存のコンポーネントを検索し、それらについて (機能、価格、レビュー) を読み、最大 5 つまでダウンロードしてインストールします。
    • 別の日には、2 ~ 3 個の製品を評価し、デモやサンプルを比較し、コードを見て、それぞれを使用する 2 つの小さな例を書きます (同じサンプルで別の製品)。
    • 3 つ以上を選択した場合は、別の日をクリアして、残りをテストします。
  4. せっかく作った商品が合わなくて、途中で気が変わってもいいですか?

    • すべてのコンポーネントが交換可能になるように、常にソフトウェアを設計してください。

      • これにより、常に「戻る方法」があることが保証されます。(インターフェイスとアダプターの設計パターンを使用し、多くのアセンブリに分割し、すべてのコンポーネントをできるだけ疎に接続します(イベント、バインディングなどを使用)-疎結合。
    • 自分で何かを実装したとしても、元に戻す方法があることを確認してください。間違ったテクノロジー/設計を使用し、コンポーネントを開発/購入した新しいものに置き換える必要がある場合があります。

    • その他の経験則:

    各コンポーネントを検討する前に、どのアプリケーション全体のテクノロジを使用するかを検討してください。

    • アセンブリでの記述は、C ではそれより短く、C++ ではさらに短く、C#、Java、Delphi などの最新の言語ではさらに短く、最も長くかかります。

    • あなたに関連する自己要素が多いのはどれですか? あなたのチームは何の経験がありますか。

    • .NET (C#) を使用している場合、WPF は GUI とビジネス ロジックの間の結合を減らし、見栄えの良い GUI を作成するのに役立ちますが、使用方法を習得するには時間がかかります (最低 5 日間のコースを強くお勧めします)。 )。

于 2009-06-20T14:44:33.370 に答える
1

どんな芸術でもそうであるように、非常に大きな可能な解決空間に基づいて良い解決策を構成することは困難です。開発者と同じくらい多くの方法があります。

私は通常、問題を理解し、できる限り明確かつ簡潔に、できれば書面で述べるのに時間を費やします。問題の説明は、可能な解決策から完全に抽象化する必要があります。次に、通常、ソリューションに適用する必要がある利用可能な制約 (時間、予算、法律、政治、パフォーマンス、使いやすさ、チーム内で利用できるスキルなど) をリストします。

次に、問題を解決し、同時に制約を満たすものを市場で探す必要があるという理論があります。実際には、このプロセスはそれほど単純ではありません。有用である可能性が高い市場カテゴリを特定し、それらを調査して、利用可能なものを確認し、制約と機能の間のギャップを可能な限り縮小しようと継続的に試みます。多くの場合、戻って制約を再検討し、再交渉することによって。

いくつかの一般的なヒント:

  1. 調査中は元の問題に戻り続けます。

  2. 常に複数の解決策があります。深く掘り下げる前に、検索空間の幅を広げるようにしてください (問題を解決するための非常に異なる方法に集中します)。

  3. さらに調査するかどうかを決定する前に、調査する価値のある多くのオプションと、それぞれに費やす価値のある時間を明確にしてください。

  4. 最適なソリューションを見つける価値はほとんどありません。特に、技術的な状況が非常に急速に変化し続ける場合はなおさらです。十分な解決策を探してください: 「<a href="http://video.google.com/videoplay?docid=6127548813950043200" rel="nofollow noreferrer">選択のパラドックス - 多いほど少ない理由」.

  5. いくつかのオプションから選択する際に、(ソフトウェアの専門家でない限り)ユーザーに助けを求める価値はほとんどありません。いくつかの選択肢がどれも同じように魅力的で、元の問題をよりよく理解する必要がある場合は、1 つまたは 2 つの要件を見逃している可能性があります。

  6. サードパーティ コンポーネントの使用に関するその他の注意事項(GUI コンポーネントを参照しますが、他のソフトウェア領域にも簡単に適用できます)。

  7. また、プロジェクトの範囲設定、構成、調査に関するさらに多くのメモ。

于 2009-06-16T09:47:17.587 に答える
1
  • パーツがソフトウェア製品を使用するか、独自のコードを使用するかをどのように決定しますか? (いくつかのツールは素晴らしいものですが、習得には多くの時間が必要であることを考慮してください)

自分に2つの質問をしてください。
1) 成熟した製品ですか。はいの場合、
2) 提供する機能を独自に作成するのにかかる時間。その値に時給を掛けた値が製品のコストよりも大きい場合は、その製品を使用してください。

  • 適切なソフトウェア製品をどのように選択しますか?

他の開発者のネットワークに相談してください。彼らはそれを使用しましたか、問題に遭遇しましたか。インターウェブを参照してください。製品を使用してプロトタイプを作成します。うまくいきますか?大きなバグはありますか?

  • 適切な製品を選択するこの段階にかかる時間 (パーセンテージ) と、1 つの製品を評価するのにかかる時間は?

それは、プロジェクトの規模と、成功に対する製品の重要度によって異なります。ほとんどの場合、非常に短い時間で製品の概要を把握できます。

あなたが言う前にそれを使用するのはほんの数分かもしれません-いいえ-プライムタイムの準備ができていません. それを過ぎた場合、1 日か 2 日実験を行うと、プロジェクトの要件を満たしていることがわかる場合があります。

多くの開発者が参加する大規模なプロジェクトの場合は、その時間に投資する価値があるかどうかを確認するために、プロトタイプ アプリケーションの作成により多くの時間を費やすことをお勧めします。

  • せっかく作った商品が合わなくて、途中で気が変わってもいいですか?

うまくいかないとわかったら、元に戻しても問題ありません。実際、おそらくそうしなければなりません。理想的には、これを早期に見つけることができます。11時間目ではありません。繰り返しますが、これがプロトタイピングの目的です。

于 2009-06-16T22:26:40.923 に答える
1

ここにはすでにいくつかの非常に優れた回答があるため、繰り返しませんが、必ず考慮すべき点が 1 つあります。それは明らかだと思いましたが、まだここで言及されていません
。ソリューション、彼らのコア コンピテンシー、およびコンピテンシーの一般的なレベル。
誰がこれを実装しなければならないか (それがチームであり、自分だけではなく、自分だけであっても関係があると仮定します...) は、結果に大きな影響を与える可能性があります。これを開発するのを手伝ってくれる経験豊富なプログラマーがいない場合は、代わりに作業を行う OTS 製品を探すほうがよいでしょう... または、成功する可能性が低いプログラマーがいる場合でも、プロジェクト全体のリスクが低いソリューションを見つけたいと考えています。

于 2009-06-22T18:55:53.620 に答える