内容紹介
何かものを作るためには、何のために何を作るのか、それはどうやって作るのか、どうやって使うのか、どうやって修理するのか、どうやって廃棄するのか等を考えなければならない。もし、自分一人のための何かを、一人で作るのであれば、考えて実行するだけでよい。しかし、誰かと一緒に作るのであれば、あるいは別の人が使うのであれば、「考えを」伝えなければならない。
考えを伝えるもの、それをここでは仕様書と定義する。他の人に何かを頼むときに必要になるものが仕様で、それを表現したものが仕様書である。
(第1章「仕様書とは」より)
ソフトウェア開発に限らず、ものを作る現場では「仕様書」が不可欠です。しかし、自然言語で書かれた仕様書には、曖昧な部分(グレー・ゾーン)がどうしても出てきます。それを回避するには、書き手は注意深く書き、読み手は注意深く読み込む必要があります。
本書では、仕様書の定義から、避けるべき仕様書の分類、否定・推論・時間・変数といった論理的要素の具体的な対処法を説明します。
仕様書を読む、そして書くすべてのエンジニアのための本です。
書誌情報
- 著者: 藤倉俊幸
- 発行日: 2018-10-05 (紙書籍版発行日: 2018-10-05)
- 最終更新日: 2018-10-05
- バージョン: 1.0.0
- ページ数: 147ページ(PDF版換算)
- 対応フォーマット: PDF, EPUB
- 出版社: 達人出版会
対象読者
仕様書を読み書きする人、これから書こうとしている人
著者について
藤倉俊幸
組み込みシステムおよび形式手法に関するコンサルティングに従事する.著書に「リアルタイム/マルチタスクシステムの徹底研究」「組み込みソフトウェアの設計&検証」「組み込みソフトへの数理的アプローチ」などがある.博士(学術)
目次
第1章 仕様書とは
- 1.1 仕様書の仕様
- 1.2 プログラムに変換できるか
第2章 仕様書のタイプ
- 2.1 レトリックについて
- 2.2 自然言語の曖昧性
- 2.3 数式と言葉
- 2.3.1 AndかOrか
- 2.3.2 and/orとは
- 2.3.3 x = 1 または x = 2
- 2.3.4 ケイコトユウコ
- 2.4 書き方の問題
- 2.4.1 二重否定
- 2.4.2 部分否定と全体否定
- 2.4.3 受け身構文
- 2.4.4 反語疑問など
- 2.5 読み方の問題
- 2.5.1 「は」と「が」
- 2.5.2 「か」との絡み
- 2.5.3 ゲシュタルトな仕様書
- 2.5.4 推論と推理
- 2.5.5 エッシャーな仕様書
- 2.5.6 「に」の読み方
- 2.5.7 道教的仕様書
- 2.5.8 シュールな仕様書
- 2.6 ではどうするか
第3章 否定の使い方
- 3.1 矛盾とは
- 3.2 反対関係とは
- 3.3 矛盾関係と反対関係
- 3.3.1 if文への変換
- 3.3.2 switch文への変換
- 3.3.3 含意関係と包含関係
- 3.3.4 ド・モルガンの定理
- 3.3.5 真理表における矛盾関係と反対関係
- 3.4 全称命題に関連した矛盾と反対
- 3.4.1 「すべての…」の否定
- 3.4.2 恒等式と方程式
- 3.5 その他の矛盾と反対
- 3.5.1 するのか、しないのか
- 3.5.2 言った、言わないの原因
第4章 推論表現
- 4.1 裏
- 4.1.1 プログラム形式
- 4.1.2 仕様追加の封印
- 4.1.3 裏プログラム形式
- 4.2 対偶
- 4.2.1 デバッグ形式
- 4.3 逆
- 4.3.1 プログラム形式の逆
- 4.4 推論形式の表現
- 4.5 必要条件と十分条件
- 4.6 前提部の正しさ
第5章 時間表現
- 5.1 因果律と時間
- 5.2 現在・過去・未来と継続・完了
- 5.2.1 アスペクト
- 5.2.2 主語の時制
- 5.2.3 動詞と係り結び
- 5.2.4 実行順
- 5.2.5 丁寧体
- 5.3 時相論理
- 5.3.1 タクシス
- 5.4 継続に関する表現
- 5.4.1 結果の継続か動作の継続か
- 5.4.2 動詞を名詞化して使う
- 5.4.3 受動と能動
- 5.4.4 時間と関係ない場合
- 5.5 同時か継起か
- 5.5.1 同時
- 5.5.2 継起
- 5.5.3 完了か継続か
- 5.5.4 ギャップがあるか接続かオーバーラップか
- 5.6 期間に関する表現
- 5.7 因果関係
第6章 変数表現
- 6.1 入れ物と中身
- 6.1.1 変数表現
- 6.1.2 論文投稿規定が参考になる
- 6.1.3 未知の世界
- 6.2 データとその入れ物
- 6.2.1 入れ物を表現する言葉
- 6.2.2 再起構造
- 6.2.3 ポインタ
- 6.2.4 配列とポインタ
- 6.2.5 関数とポインタ
- 6.2.6 C++の参照型
- 6.2.7 Javaのオブジェクト型
- 6.2.8 定数の場合
- 6.3 メタ形式を使う
- 6.3.1 固有名詞
- 6.3.2 メタ形式
- 6.3.3 引用形式の利用
- 6.3.4 意味を求める
- 6.3.5 指示詞のメタ形式
- 6.3.6 一般化する
- 6.3.7 再定義する
- 6.4 指示代名詞
- 6.4.1 「これ」と「それ」
- 6.4.2 「その」
- 6.4.3 this
- 6.4.4 名詞の部分反復
- 6.4.5 「その」と「それ」
- 6.5 時間の原点