8

Haskell のような関数型プログラミング言語を使用してシステムを開発する場合、分析と設計のフェーズをどのように処理しますか?

私のバックグラウンドは命令型/オブジェクト指向プログラミング言語であるため、ユースケース分析と UML を使用してプログラムの設計を文書化することに慣れています。しかし、問題は、UML が本質的にオブジェクト指向のソフトウェアのやり方に関連しているということです。

また、関数型プログラミングを使用して開発される予定のシステムのドキュメントを開発し、ソフトウェア設計を定義するための最良の方法について、私は興味をそそられます。

  • 代わりに、ユースケース分析またはおそらく構造化された分析と設計を引き続き使用しますか?
  • ソフトウェア アーキテクトは、システムの高レベル設計をどのように定義して、開発者がそれに従うようにしますか?
  • ソリューションの設計を提示することになっているときに、クライアントまたは新しい開発者に何を示しますか?
  • 最初にすべてを書かずに、全体像をどのように文書化しますか?
  • 関数の世界でUMLに匹敵するものはありますか?
4

2 に答える 2

1

私は専門家ではありませんが、これらの質問のいくつかに答えようと思います。

ユースケース分析を引き続き使用しますか [?]

理由がわかりません。ユース ケースを収集し、ユース ケースを満たす、公開するモジュール API を設計します。ユース ケースで型クラスが必要か、単純な関数が必要かを判断します。

あるいは構造化された分析と設計でしょうか?

私はそのアプローチに慣れていませんが、ウィキの記事から集めたものからすると、うまくいくようです。

ソフトウェア アーキテクトは、システムの高レベル設計をどのように定義して、開発者がそれに従うようにしますか?

モジュールと、モジュールの各部分が持つべき型を指定していると思います。繰り返しますが、私は専門家ではないので、実際に何が行われているのかよくわかりません。

ソリューションの設計を提示することになっているときに、クライアントまたは新しい開発者に何を示しますか?

クライアントにとって意味のあるものを示します。クライアントが十分に精通している場合は、型シグネチャを示して重要な機能を説明してください。彼らがあまり精通していない場合は、きれいな絵を描くか、あなたがしなければならないことは何でもしてください. OOP は実世界のオブジェクトと比較しますが、FP は...まあ...関数と比較します。関数を初心者に説明する典型的な方法は、あるものを入れると他のものが出てくるマシンとしてそれを描写することです。

最初にすべてを書かずに、全体像をどのように文書化しますか?

絵"?重要な関数の型シグネチャを定義するだけで、実装はそのままにしておきundefinedます。コンパイル時にまだ実装する必要がある部分を思い出させる、より優れたスタブを提供するパッケージがどこかにあります。

関数の世界でUMLに匹敵するものはありますか?

いいえ?

于 2012-04-12T23:25:24.137 に答える
-7

この主張を調べてみましょう:

UML は本質的に、ソフトウェアを実行するオブジェクト指向の方法に関連しています。

まず第一に、これは真実ではありません。実装がどうであれ、UML で対話、ユース ケース、状態、およびデータ モデルをモデル化できます。

第 2 に、Haskell の型クラスはオブジェクト指向の形式です。それらは、引数の型で多態的なディスパッチを提供します (これにより、その型に存在するデータを使用するさまざまな関数の実装が可能になります)。

ですから、本当に UML を使い続けたいのであれば、どうぞ。

于 2012-04-12T18:02:01.490 に答える