トレーサビリティということ: 設計書とコードの間
トレーサビリティとは、 「追跡できること」 です。
ソフトウェア開発においては、 最初に作った成果物 ( 一般には、 要件定義書 ) と最後に作成したもの ( プログラムやマニュアル ) との間を追跡することができることです。 要件定義書に書かれているある一文は、 設計書のここに書かれており、 それはこのソースコードのこの部分に実装されている、 と追跡できること。 あるいは、 逆に、 プログラムで不具合が出た場所は、 ソースコードではここで、 それは設計書のここに書かれていて、 それは要件定義書にここに基づいている、 と辿れることです。
さて。 設計書には、 どんな処理をするかを日本語などの自然言語で書きます。 それを、 一言一句そのまま書けとはいいませんが、 コード中のロジック部分の核の部分には、 設計書に書かれた処理が素直にたどれるような形でコーディングしてあるべきでしょう。
そうせずに、 この方が処理効率がいいとか、 こっちの書き方の方がカッコ良いとか、 まぁようするに自分の趣味でロジックの核の部分をコーディングされちゃうと、 どうなるか…
…デバッグするときに、 コードのどこを見ればいいのかワカリマセン orz ← いまココ (;;
| 固定リンク
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
この記事へのコメントは終了しました。
コメント
ぅお。
本文より長っ!! (w
完全復活と認定 (^^; > Gwp
> そもそも、そのプログラムはそんなに複雑で、全体の見通しが悪くなってもしかたがない設計する必要があるものだったのですか?
そんな設計、 必要無いのよ~
画面を抽象化したモデルのオブジェクトが渡って来るから、 そこから値を取り出して、 素直にロジックを書いて、 結果をまたバリューオブジェクトに詰め込んで、 印刷クラスに渡してくれればいいだけの、 簡単なお仕事です f(^^;
仕様書に書かれたロジックの流れを変えなきゃならんよーな設計が必要なら、 文句垂れませんってw
# そのときは、なんで仕様書を直さないんだ、 って文句言うけどwww
投稿: biac | 2008年11月12日 (水) 12時31分
> 設計書には、 どんな処理をするかを日本語などの自然言語で書きます。
ここがトレースできない問題の一端です。自然言語と、現状のプログラム言語の間には相当な差異があると思っています。
プログラムの中にコメントではなく自然言語で仕様を長々と記述する会社がありましたが、はっきりいってバグを意図して増やしている作業でしかない非効率なものでした。反吐がでました。
>デバッグするときに、 コードのどこを見ればいいのかワカリマセン
私の経験から。
そもそも、そのプログラムはそんなに複雑で、全体の見通しが悪くなってもしかたがない設計する必要があるものだったのですか?
機能をどんどんまとめて、それをアクセスするためのI/Fをつくって、その下位I/Fだけでは操作しずらいから下位I/Fをバッチ処理する便利関数をつくって、データプールのためのモジュールを作って、それだけではデータの取り回しがうまくできないから、データ本体を複数の関数間で丸ごとコピーしていじりまわして(笑)という設計をしでかして、デバッグするためには5グループぐらいを渡り歩いて延々と内容を追っていかないといけないアホな会社がありましたが、反吐以上のものがでました。
某a氏のソースコードを見る機会があったのですが(そこそこの機能数があった)、設計書もコメントもほとんど無かったのに簡単に理解できて手を加える位置がわかりました。
信頼性のない部品、製作元を大きな製品に組み込むと簡単に動かないものができます。一番の得策はそんな部品は使用しないことです。そして、それを使わざるを得ない環境に追い込まれているときは戦略的に負けているので現場で犬死にしてください。合掌。
投稿: Gwp | 2008年11月12日 (水) 10時08分