![見出し画像](https://assets.st-note.com/production/uploads/images/93333820/rectangle_large_type_2_e03b07aaf250a5bc7633c582db1f0655.png?width=800)
ソフトウエア開発に関する一私見〜設計について〜
こまさです。
今回は、設計についてです。
設計とは
そもそも設計とは何でしょう。
広辞苑のネット検索によると
せっ‐けい【設計】 (plan; design)
①ある目的を具体化する作業。製作・工事などに当たり、工費・敷地・材料および構造上の諸点などの計画を立て図面その他の方式で明示すること。「ビルの―」
②比喩的に、人生や生活について計画を立てること。
とあります。我々としては少しニュアンスが違うような気もしますが①が該当しますね。これをソフトウエアの設計っぽく書くとこんな感じでしょうか。
「要求事項を達成させるためにどの様なソフトウエアが適切かを具体的に明確化する作業。」
では、どんな作業をすればソフトウエアを具体的に明確化出来るのでしょうか。
設計作業を定義してみた
ソフトウエアを具体的に明確化するために必要な作業を定義する前に、その条件を考えてみます。何が満たせたら「具体的に明確化」できたと言えるでしょうか。
ここではプログラミングするために困らないこととします。そのためには
必要なモジュール(クラス)が列挙されている。
モジュールの責務が定義されている。
モジュール間のインターフェースが定義されている。
の3つが最低限明確(誰が見ても同じ認識になるよう)に文書で明示されている必要があります。
設計作業で行うこと
とゆうことで、設計時の作業を列記してみます。
必要なクラスをリストアップする。
リストアップしたクラスの責務の定義として保持するデータを明示する。そのデータを作成するインターフェイスを明示する。
そのデータを取り出すインターフェイスを明示する。
そのクラスが持つデータ、インターフェイスに相応しいクラス名を定める。
まとめ
わたしの考えた設計作業では要求された動作を実現するためのコードの直接の検討は行いません。
この辺りの認識が若いメンバーと合わなくて困っております。
この記事が気に入ったらサポートをしてみませんか?