web-dev-qa-db-ja.com

ソフトウェア開発ライフサイクルのどの段階で計算アルゴリズムを設計する必要がありますか?

ソフトウェア設計では、通常、UML図とアーキテクチャ設計を担当します。

しかし、データ分析ソフトウェアの場合は、設計アルゴリズムなどに注意を払う必要があります。 AIを必要とする顔検出ソフトウェアの場合を考えてみましょう。ソフトウェア設計でソフトウェアのAI部分を明示的に設計する必要がありますか?

P.S:私のマネージャーは、実現可能性調査で明確に設定し、設計ステップで設計できるように明確にする必要があると述べています。彼は正しいですか?

5
Mehraban

私の経験から、アルゴリズム自体から始める方が良いでしょう。アルゴリズムを分析し、必要なデータフロー、使用するデータ構造などを見つけます。このアプローチにより、アルゴリズムの最も複雑な部分を中心にソフトウェアを構築し、それに関連するリスクを予測および管理できます。これは、実装をより簡単かつ最適にするのにも役立ちます。

アルゴリズムが別の[独立した]モジュールにある場合、そのような分析は、高レベルのアーキテクチャが開発された後で行うことができます。ただし、実装に関する決定を行う前に、分析を完了する必要があります。

補足:アルゴリズムが使用するデータ構造の選択には特に注意してください。データ構造は、その内部の複雑さの一部を隠すことができるため、実装をより保守しやすくします。

2
superM

すべてのアルゴリズム部分、特により複雑な部分は、意図的に設計されたAPIの背後にうまくカプセル化する必要があります。これにより、デカップリングが劇的に増加します。これは、中心的な設計原則の1つであるIMHOです。

したがって、このAPIが全体像に入れるのに十分なほど明確な形状になり、そのAPIへのさらなる変更が最小限になるように、アルゴリズムは必要に応じて詳細に設計する必要があります。

初期の労力を減らしながらリスクを最小限に抑えたいと考えています。これは、多かれ少なかれ、最適なバランスポイントを見つける必要があるトレードオフです。その段階でAPIがさらに変更されるリスクを完全に排除することはできませんが、回避可能なミスを回避し、そのような変更の影響を可能な限り減らすように努めることはできます。

2
JensG