クライアントと開発者の両方にとってツールの要件を明確にするために、形式的な方法を使用することを考えていました。
フォーマルメソッドの経験を持つ開発者はほとんどいません。CADiZを Windows に移植していたときの ZUG のメンバーだけが、フォーマル メソッドのトレーニングを受けているクライアントを見たことがあります。
正式な方法とは、何らかの形のモデリング、おそらく数学に基づくものを意味します。Z ( http://en.wikipedia.org/wiki/Z_notation )、ステート マシン、UML 2.0 (おそらく OCL などの拡張機能を使用)、ペトリ ネット、およびいくつかのコーディングについて読んだことがあり、検討していることもあります。契約や前後の条件などのレベルのもの。他に考慮すべきことはありますか?
集合論に基づいた正式な方法である Z と、いくつかの準正式な表記法 (ステート マシン) がタグ付けされた非公式な表記法である UML の間には、非常に大きなギャップがあります。
ソフトウェア要件ツールを使用して見つけることが期待されるような一部のテクニカル クライアントは、UML に非常に慣れています。
ドメインの Z モデルを作成することには価値があるかもしれませんし、クライアントとサーバー (またはペトリネット、しかし私は pi の方が単純で強力だと思います) 間のメッセージングの pi 計算モデルを作成することにも価値があるかもしれません。
ドメインの Z モデルが提供するのは、一般的な実装言語の型システムよりも強力に表現された、実装に依存しない型制約のセットです。
メッセージングの正式なモデルが提供するものは、分析を実行して、更新が失われたり、競合やデッドロックが発生したりしないようにするための機能です。
UML モデルが提供するのは、大規模なシステムを機能領域に分割するための表記法 (パッケージ図)、それらの領域内のクラスが互いに静的に関連する方法を示すための表記法 (クラス図)、それらのクラスのインスタンスが動的に関連する方法を示すための表記法です (シーケンス図、アクティビティ図、相互作用図)、およびパッケージの展開方法の表示 (コンポーネント図と展開図)。これらは、チーム内のコミュニケーションやアイデアを少し具体化するのに役立ちますが、非常に洗練された分析を可能にする正式に定義されたセマンティクスはありません。
私が 90 年代に一緒に働いていた Z スペシャリストは、Z で CASE GUI を指定するという考えはばかげていると考えていました。このような GUI の UML モデルを作成することは一般的です。
正式な契約前および事後条件の設計は使用していませんが、コメントに追加することもあれば、アサーションに頻繁に追加することもあり、それらに違反する可能性のある条件を単体テストします。