Disciplined Software Engineering Lecture #9

Slides:



Advertisements
Similar presentations
1 線形代数学. 2 履修にあたって 電子情報システム学科 必修 2005 年度1セメスタ開講 担当 草苅良至 (電子情報システム学科) 教官室: G I 511 内線: 2095 質問等は上記のいずれかに行なうこと。 注意計算用のノートを準備すること。
Advertisements

論理回路 第3回 今日の内容 前回の課題の解説 論理関数の基礎 – 論理関数とは? – 真理値表と論理式 – 基本的な論理関数.
論理回路 第 11 回
小テスト解説 問1 次の中置記法で書かれた数式を、前置記法、後 置記法に直せ。 12 × 23 +( 34 + 45 ) × ( 56 + 67 ) × 78 + × 23 +( 34 + 45 ) × ( 56 + 67 ) × 78 + 89  前置記法 12 x 23 + (+ 34.
0章 数学基礎.
和田俊和 資料保存場所 /2/26 文法と言語 ー正規表現とオートマトンー 和田俊和 資料保存場所
第1回 確率変数、確率分布 確率・統計Ⅰ ここです! 確率変数と確率分布 確率変数の同時分布、独立性 確率変数の平均 確率変数の分散
第3回 論理式と論理代数 本講義のホームページ:
離散数学入門 (集合論、ベン図) 情報システム学科 中田豊久.
第1章 数と式 第4節 集合と命題  8  集合 (第3回).
コンパイラ 2011年10月17日
プログラミング言語としてのR 情報知能学科 白井 英俊.
JavaによるCAI学習ソフトウェアの開発
ファジィ論理と ファジィ構造モデリング 北海道工業大学 情報デザイン学科 三田村 保.
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
プログラミング基礎I(再) 山元進.
Extremal Combinatorics 14.1 ~ 14.2
演習3 最終発表 情報科学科4年 山崎孝裕.
C言語 配列 2016年 吉田研究室.
プログラミング言語論 第4回 式の構文、式の評価
論理式の表現を数学的に取り扱いやすくするために代数学の助けを借りる.
人工知能特論2011 資料No.6 東京工科大学大学院 担当教員 亀田弘之.
香川大学工学部 富永浩之 情報数学1 第5-2章 命題論理式の 同値変形とカルノー表 香川大学工学部 富永浩之
Semantics with Applications
条件式 (Conditional Expressions)
情報教育論 第9回 仮定文の仕組み 政策・メディア研究科 岡田 健.
Probabilistic Method 6-3,4
透視投影(中心射影)とは  ○ 3次元空間上の点を2次元平面へ投影する方法の一つ  ○ 投影方法   1.投影中心を定義する   2.投影平面を定義する
第4回 カルノー図による組合せ回路の簡単化 瀬戸 目標 ・AND-OR二段回路の実現コスト(面積、遅延)が出せる
Disciplined Software Engineering Lecture #12
コンパイラ 2012年10月15日
離散数学I 第6回 茨城大学工学部 佐々木稔.
論理回路 第7回
論理回路 第8回
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
4. 組み合わせ回路の構成法 五島 正裕.
アルゴリズムとチューリングマシン 「もの」(商品)としてのコンピュータ 「こと」(思想)としてのコンピュータ アルゴリズム
Googleのページランク 基本的な仕組は数学的 グラフの行列による表現 隣接行列(推移行列、遷移行列) 固有値と固有ベクトル W大学
プログラムの制御構造 選択・繰り返し.
第4章 組合せ論理回路 (4) Quine McCluskeyの方法.
ディジタル回路 3. 組み合わせ回路 五島 正裕 2018/11/28.
2. 論理ゲート と ブール代数 五島 正裕.
プログラミング言語論プログラミング言語論 プログラムの意味論 水野嘉明
ネットワーク理論 Text. Part 3 pp 最短路問題 pp 最大流問題 pp.85-94
3. 束 五島 正裕.
ディジタル回路 2. ブール代数 と 論理ゲート 五島 正裕.
第5回 今日の目標 §1.6 論理演算と論理回路 ブール代数の形式が使える 命題と論理関数の関係を示せる
 型推論1(単相型) 2007.
25. Randomized Algorithms
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
知能情報システム特論 Introduction
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
コンパイラ 2011年10月20日
4. システムの安定性.
論理回路 第12回
論理回路 第4回
  第3章 論理回路  コンピュータでは,データを2進数の0と1で表現している.この2つの値,すなわち,2値で扱われるデータを論理データという.論理データの計算・判断・記憶は論理回路により実現される.  コンピュータのハードウェアは,基本的に論理回路で作られている。              論理積回路.
B03 量子論理回路の 最適化に関する研究 西野哲朗,垂井淳,太田和夫,國廣昇 電気通信大学 情報通信工学科.
プログラミング基礎a 第4回 C言語によるプログラミング入門 条件判断と反復
アルゴリズムと数式の表現 コンピュータの推論
論理回路 第5回
PROGRAMMING IN HASKELL
プログラミング言語論 第10回 情報工学科 篠埜 功.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
PROGRAMMING IN HASKELL
香川大学工学部 富永浩之 情報数学1 第5-2章 命題論理式の 同値変形とカルノー表 香川大学工学部 富永浩之
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
PROGRAMMING IN HASKELL
アルゴリズム ~すべてのプログラムの基礎~.
Presentation transcript:

Disciplined Software Engineering Lecture #9 Watts S. Humphrey Software Engineering Institute Carnegie Mellon University Pittsburgh, PA 15213 Sponsored by the U.S. Department of Defense ノートを書いたのは 6, 8, 60だけです。すべて用語集不備への不満です。 PSPの教えにもかかわらずレビューもテストもなしに,コース教材として提供することにします:-) (久保記)

設計記法ー概観 記法の重要性 ブール代数 カルノー図 有用な記号 ブール関数の利用 簡単化 形式的手法

記法の重要性 ソフトウエア開発における多くの欠陥は誤解と混乱から生じている。 プログラムの要求と設計を表現するために使用される記法は、 精密かつ簡潔、 使い易い 共通に理解される 広範囲のソフトウエア機能の表現に適切 であるべきである。 形式的記法はこれらの判断基準を満たしている。

集合の性質ー数学的記法 英語 記号 例 Union, sum A or B, A+B 英語 記号 例 Union, sum A or B, A+B Intersection, product A and B, A*B, AB Complement, not ' A', not A All, universal 1 None, empty set 0

この記法の利用 短所 長所 重要な一つの記法に精通する プログラムの正当性証明ための形式的手法で使用される記法と無矛盾である。 論理を他の表現から区別する。 短所 一般に入力に時間がかかる 精通に練習を要する 同僚が理解できないかもしれない           

ブール代数 集合の代数 集合の表現 集合の関係を定義し取り扱う。 首尾一貫性=文が自己無矛盾か 妥当性(validity)=文が現実を表現しているか 集合の表現 ベン図 基本的関係 全集合と空集合 the universal and empty sets basic relationships Venn diagrams Class representations validity - whether statements represent reality consistency - whether statements are self- consistent defines and manipulates class relationships The algebra of classes “Class”の訳が用語集にない。藤野さんの訳,「集合」のままです。 “Universal Set”の訳も用語集にはない。“Empty Set”も同じ。(久保記)

ベン図 人間 人間 女性 男性 非成人女性 非成人 男性 成人 男性 成人 女性 全集合 A’B’C’ A’BC’ AB’C’ AB’C

集合の性質 - 1 反射律: for every x, x<=x べき(等)律: xx=x, x+x=x 反対称律: if x<=y and y<=x then x=y 推移律: if x<=y and y<=z then x<=z 可換律: xy=yx, x+y=y+x 結合律: x(yz)=(xy)z, x+(y+z)=(x+y)+z 分配律: x(y+z)=xy+xz, x+yz=(x+y)(x+z) 「べき(等)律」は用語集からもってきました。カッコが気になるし,正解は知らないし,困ったけど,とりあえずは用語集のまま。「べき律」と「等律」の二つの日本語用語が一個の英語用語に対応するんですか。(久保記)

集合の性質 - 2 空集合と全集合: xx’=0, x+x’=1, 0<=x<=1 x0=0, x+1=1, x+0=x, x1=x 一貫性: x<=y, xy=x, x+y=y は同値である 吸収律: x(x+y)=x+xy=x ドモルガンの定理: (x’)’=x, (xy)’=x’+y’, (x+y)’=x’y’

例 次のような条件の下でONにしたいスイッチをもっているとする。 ●A または B または C がON ●A かつ B が ONでないとき ●A かつ C が ONでないとき このスイッチを次のように表現する、   ON=(A+B+C)*[(A*B)+(A*C)]’

ブール式の簡単化 ブール式を簡単化するとき次のようなガイドラインを考えること。 もしプライム’のついた括弧つきの任意の式があるならば、それらを取り除くためドモルガンの定理を使いなさい。 分配法則で因数分解される共通項を探せ。 複雑さを減少させるため代入をする。 積の和の形の式へもっていくよう試みる。

簡単化の例 - 1 電球の例をつかう On = (A+B+C)*[(A*B)+(A*C)]’ ドモルガンの定理を適用する On = (A+B+C)*[A’+(B’*C’)] B+Cを x で, B’*C’を x’ でそれぞれ置き換える On = (A+x)*(A’+x’)

簡単化の例 - 2 式は完全に簡単化された。しかし集合の積の和の形に変換した方がいい。 On = (A+x)*(A’+x’) On = [(A+x)*A’]+[(A+x)*x’] On = [(A*A’)+(x*A’)]+[(A*x’)+(x*x’)] On = (x*A’)+(A*x’) ここで x を B+C で置き換える On = [(B+C)*A’]+[A*(B’*C’)] On = (A*B’*C’)+[A’*(B+C)]

簡単化の練習問題 つぎの式を簡単化せよ 1. F = X+(X’*Y) 2. F = (X+Y)+[(X*Z)+Y] 3. F = (X’*Y’*Z’)+(X*Y*Z’)+(X*Y’*Z’) 4. F = [X’*(Y+Z’)]’*(X+Y’+Z)*(X’*Y’*Z’)’

問題 1 の答え この式から始める F = X+(X’*Y) 分配律を使うと F = (X+X’)*(X+Y) ここで、全集合の性質によって X+X’ = 1 および 1*(X+Y) = X+Y ゆえに、答えは F = X+Y

問題 2 の答え F = (X+Y)+[(X*Z)+Y] この式から始める。 分配律を適用すると F = (X+Y)+(X+Y)*(Z+Y) F = (X+Y)*[1+(Z+Y)] 全集合の性質によって,  1+Z+Y=1 ゆえに、答えは F = X+Y

問題 3 の答え F = (X’*Y’*Z’)+(X*Y*Z’)+(X*Y’*Z’) から始める。 F = Z’*(X’Y’+XY+XY’) 共通のX 項を因数としてくくり出すと次式になる。 F = Z’*[X’Y’+X(Y+Y’)] = Z’*(X’Y’+X) さて, 分配律によって F = Z’*(X’+X)*(Y’+X) = Z’*(Y’+X)

問題 4 の答え F = [X’*(Y+Z’)]’*(X+Y’+Z)*(X’*Y’*Z’)’ から始める。 先ず ドモルガンの定理を適用すると, 次式になる。 F = (X+Y’Z)*(X+Y’+Z)*(X+Y+Z) 共通の X 項を因数としてくくり出すと次式になる。 F = X+Y’Z*(Y’+Z)*(Y+Z) 共通の Z 項をくくり出すと F = X+Y’Z*(Z+Y’Y) = X+Y’Z

カルノー図 - 1 6 変数以下の式はカルノー図が簡単化プロセスに役立つ。 カルノー図は、一つの式に変数の全ての可能な組み合わせを表現するための構造的な方法である。 そこでの括り出しは、関係のある項を結びつけ、それにより簡単化する方法をとる。

カルノー図 - 2 ブール式は最小項の形式で表現できる。 最小項は変数のすべて可能な組み合わせの積である。 X と Y の最小項はつぎである: X’*Y’, X*Y’, X’*Y, XY n 個の変数の最小項は 2**n 個ある。

カルノー図 - 3 XY’ X’Z YZ YZ X 00 01 11 10 X 00 01 11 10 X X 1 1 X X 00 01 11 10 X 00 01 11 10 X X 1 1 X X XY’+X’Z YZ X 00 01 11 10 X X 1 X X

4 変数カルノー図 YZ WX 00 01 11 10 00 X 01 X X X 11 X X 10

5 変数カルノー図 XYZ VW 000 001 011 010 110 111 101 100 00 01 11 10

図の上の括り出し - 1 2つの隣り合ったセルが共に1をもつとき、それらのセルは括り出すことができ、そのとき2つのセルに対して異なる値をとる変数は消去する。 例えば、 0100 と 0101 のセルは括り出すことができ、変数 Z は消去する。 このことは次のような図の上で見ることが出来る。

図の上の括り出し - 2 YZ WX 00 01 11 10 00 X 01 X X X 11 X X 10

図の上の括り出し - 3 同様に, 4つの隣り合ったセルが1をもつとき, その時これらのセルは括り出すことができ、その4つのセルに対して異なる値をとる2つの変数は消去できる。 例えば, 0101, 0111, 1101, および 1111 のセルは括り出せて、 変数 w と y は消去される。 このことは次の図の上で示される。

図の上の括り出し - 4 YZ WX 00 01 11 10 00 X 01 X X X 11 X X 10

図の上の括り出し - 5 以上可能な括り出し3つをすべて行わうと、結果の式は次のようになる。 F = w’yz + wxy’ + xz こことは次の図の上で見ることが出来る。

図の上の括り出し - 6 YZ WX 00 01 11 10 00 X 01 X X X 11 X X 10 W’YZ+W’XY’+XZ

簡単化の練習問題 カルノー図を使用して、次の4つの式を簡単にせよ。 1. F = X+(X’*Y) 2. F = (X+Y)+[(X*Z)+Y] 3. F = (X’*Y’*Z’)+(X*Y*Z’)+(X*Y’*Z’) 4. F = [X’*(Y+Z’)]’*(X+Y’+Z)*(X’*Y’*Z’)’

問題 1 の答え 関数は F = X+(X’*Y)である。 括り出しを行うと結果は F = X+Y YZ X 00 01 11 10 1 1 00 01 11 10 1 1 1 1 1 1 1 YZ 括り出しを行うと結果は F = X+Y X 00 01 11 10 1 1 1 1 1 1 1

問題 2 の答え 関数は F = (X+Y)+[(X*Z)+Y] = X+Y+XZ+Y = X+Y+XZ 括り出しを行うと結果は YZ X 00 01 11 10 1 1 1 1 1 1 1 YZ 括り出しを行うと結果は F = X+Y X 00 01 11 10 1 1 1 1 1 1 1

問題 3 の答え 関数は 括り出しを行うと結果は F = Y’Z’+XZ’ = Z’(Y’+X) F = (X’*Y’*Z’)+(X*Y*Z’)+(X*Y’*Z’) = X’Y’Z’+XYZ’+XY’Z’ YZ X 00 01 11 10 1 1 1 1 YZ 括り出しを行うと結果は F = Y’Z’+XZ’ = Z’(Y’+X) X 00 01 11 10 1 1 1 1

問題 4 の答え - 1 関数は次式である: この式は3つの図でカバーされる。 F = [X’*(Y+Z’)]’*(X+Y’+Z)*(X’*Y’*Z’)’ = (X+Y’Z)*(X+Y’+Z)*(X+Y+Z) この式は3つの図でカバーされる。 X+Y’Z YZ X 00 01 11 10 1 1 1 1 1 1 X+Y’+Z X+Y+Z YZ YZ X 00 01 11 10 X 00 01 11 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

問題 4 の答え - 2 全体の関数はこれらの3つの図 の積である。つまり 3つの図の すべてが1をもつところは 1 で, 他の所は0の図である。図は右 のようになる。 YZ X 00 01 11 10 1 1 1 1 1 1 この図で括り出しを行って答えは F = X+Y’Z YZ X 00 01 11 10 1 1 1 1 1 1

ゼロの括り出し 1を括り出すときには、カルノー図上の1を全部塗りつぶす。このことにより、式の最小項形式をえる。 同じカルノー図の0を全部塗りつぶすことにより括り出しを行うことも可能である。このときには、それに続いてドモルガンの定理を適用する。 このときには、その式の最大項形式、つまり集合和の積の形式が得られる。

ゼロの括り出しの例 右の図の1を全部塗りつぶすことで、 括り出しを行うと次式が得られる。 F = X+Y+Z YZ X 00 01 11 10 1 1 1 1 1 1 1 1 一方、 0を全部塗りつぶすことにすると 次式が得られる。 F’ = X’Y’Z’ これにドモルガンの定理を適用すると 最大項形式の答えが選られる。 F = X+Y+Z YZ X 00 01 11 10 1 1 1 1 1 1 1 1

もう一つの括り出しの例 右の図の1を全部塗りつぶすして括り出しを すると、最小項形式の結果が得られる。 F = XY’+X’Y+Z YZ X 00 01 11 10 1 1 1 1 しかし、 0を全部塗りつぶすことにすると、 次が得られる F’ = X’Y’Z’+XYZ’ ドモルガンの定理を適用すると最大項 形式の答えが得られる。 F = (X+Y+Z)*(X’+Y’+Z) = (X+Y)*(X’+Y’)+Z 1 1 1 YZ X 00 01 11 10 1 1 1 1 1 1 1

ゼロの括り出し 1 の括り出しがときどき、1つか2つまずい位置におかれた0によって複雑になることがある。これは次のように処理することが出来る。 あたかも都合の悪い0が1であるとみてその図の括り出しを行う。 そののち括り出した因子をそれぞれ小さな図とみて0を括りだす。

ゼロの括り出しの例 - 1 2つの都合の悪い0を別にすれば この図の括り出しは非常に単純で ある。 F = Y’+W’Y = Y’+W’ YZ WX 00 01 11 10 00 1 1 1 01 1 1 1 しかし、W’X’Y’Z’ と W’XYZに0が ある から,これを括り出さねばなら ない。 11 1 1 10 1 1

ゼロの括り出しの例 - 2 第1の因子、 Y’は変数W,X,と Zからなる小さな図゚を創る。 この図上で、W’X’Z’ が括り 出される: F1 = Y’*(W’X’Z’)’ = Y’*(W+X+Z) ここの本質は Y’  not W’X’Z’ の括り出しである。. YZ WX 00 01 11 10 00 1 1 1 01 1 1 1 11 1 1 第2の因子の括り出しは F2 = W’Y*(XZ)’ = W’Y*(X’+Z’) よってこの関数は次になる。 F = Y’*(W+X+Z)+W’Y*(X‘+Z’) 10 1 1

多変数の括り出し カルノー図は6変数まで可能である。 それを超えると、特別なコツが必要になる。 もし式のほとんどの項が6以下の変数からなり、その他の変数が2,3個の場合に限り、 0の括り出しに近い方法が使える。 この方法は例外括り出しと呼ばれ、変数の数がいくらあっても使える。

例外括り出し - 1 次の関数の括り出しを4変数のカルノー図の上で行う。 F = AX’Y’+WXY’+W’Y’Z+XY’Z+W’XY’Z’+WX’Y’ 1. 変数 W, X, Y, および Z を使って関数を構成する. 2. A をもつ項については、 1の代わりに、その桝目に A を入れる。 3. ゼロを括り出す際、 A を A+0 として扱う。

例外括り出し - 2 初めに、 W, X, Y, と Z を含む項のみを 使って図をつくる。 次は, Aを含む項である。 0がある には0を入れる。 F1 = WXY’+W’Y’Z+XY’Z+W’XY’Z’+WX’Y’ F2 = AX’Y’ YZ YZ WX 00 01 11 10 WX 00 01 11 10 00 1 00 A A 01 1 1 01 11 1 1 11 10 1 1 10 A A

例外括り出し - 3 初めに、A が1であると仮定して 1を括り出す。 F1 = Y’ 次に、Aの項を括り出す。そのとき A をA+0として取り扱う。 F = Y’*[A+(W’X’Z’)’] = Y’*(A+W+X+Z) YZ WX 00 01 11 10 00 A 1 01 1 1 11 1 1 10 1 1

他の有用な記号 次のような基本的な数学記号もまたプログラム機能を定義する際に有用である。 - “集合の1つの要素である”ことを意味する - “集合の1つの要素である”ことを意味する - “その集合の要素ではない”ことを意味する - “その集合の全要素に対して”を意味する - “その集合の要素が存在する”を意味する

記法の例 データセット D がファイルに含まれるならファイルを更新する (D File) :: Update i when (i even) :: add x(i) 任意の数 i が負であるときレジスターをクリアーする i when (i < 0) :: Clear

関数の完全性 もし関数の集合が全ての可能な条件をカバーしているときその集合は完全であると言う。 完全な関数集合に対しては、関数の和に対応するカルノー図が図上の位置すべてをカバーする。 図上の位置が多重にカバーされることはありうる。

関数の直交性 関数集合に属するどの二つの関数も同じ条件をカバーすることがなければ、その集合は直交していると言う。 これは任意の関数と任意の他の関数の積が0であることを意味する。 i, j where (i j) => F(i)*F(j) = 0 図は完全にはカバーされていないかもしれない。

完全かつ直交 1つの関数集合はつぎの条件を満たすとき,完全であり、かつ直交している。 関数全体ですべての要素をカバーする。 どの2つの関数も同じ要素をカバーしない。

完全かつ直交している関数 f, g, h は完全である f, g, h は直交している 00 01 11 10 00 01 11 10 f 00 01 11 10 00 01 11 10 f g gh fh f g 1 g f fh fg 1 h g f f, g, h は完全かつ直交である。 00 01 11 10 f f g h 1 h g h f

形式的方法 - 1 ソフトウェア設計の形式的方法は数学の概念をベースに開発されてきた。 形式的方法の前提は次である。 コンピュータプログラムは数学の文として扱うことができる。 したがって、数学の原理が適用できる。 正しいプログラムの設計は、したがって、定理の導出として取り扱うことが出来る。 数学的に厳密な方法はかくして正しいプログラムをつくりだすはずである。

形式的方法 - 2 形式的方法は典型的には,プログラムの前置条件、後置条件、およびプログラム不変条件を使う。 そこでのプログラムは、不変条件を保存しながら、前置条件を後置条件に変換する。 プログラムの正しさは、次のように証明する。 プログラムは、前置条件を後置条件に変換する。 プログラムは、不変条件を保存する。

形式的方法 - 3 新しいプログラムを形式的方法で開発するとしたら、 後置条件から出発する 。 前置条件を導出する。 不変条件を決定する。 前置条件を後置条件に変換しその不変条件を保存するプログラムを定義する。 もしそのプログラムが繰り返しを含むならば、各サイクルはループ終了に向かって進行すべきである。

形式記法への賛成論 形式記法は精密である。 形式記法は複雑な機能を簡潔に表現できる。 形式記法は形式的方法を学習するときの基礎をなす。

形式記法への反論 形式記法は学習に時間がかかる。 形式記法について、それを設計に使用するのに必要なレベルで精通するには、さらに多くの時間がかかる。 あなたの仲間たちは形式記法を理解できないかもしれない。

このコースの形式的記法 支持者達は形式的方法は品質のよいソフトウエアを開発するための厳密な方法を与えると主張する。懐疑派は費用効果的でないと反論する。 形式的方法は、設計の正当性を示しているが、それが一般にされるにはつぎが要求される。 ユーザ゙の訓練 形式的に証明する方が、ソフトウェアの設計の中で行うよりもエラーが少ないユーザ 形式的手法はこのコースではこれ以上は扱わない。

形式的方法関連の示唆 - 1 もしあなたが形式的方法に精通している、あるいは訓練を受けていれば、 形式的方法をPSPで使いなさい。 あなたのあなたの品質と生産性を測定しなさい。 あなたの結果を同様の方法を使用する他の人の結果と比較しなさい。 あなたの結果をあなたが形式的方法によらない場合の結果と比較しなさい。 この方法があなたにとって効果があるかどうかを判断しなさい。 あなたが何か発見したら、それを他の人に話しなさい。

形式的方法関連の示唆 - 2 もしあなたが形式的方法に精通してなければ、以下を検討しなさい。 ユーザに彼らのデータを見せてもらう。 コースをとるか、参考書で勉強する。 自分自身で試してみる。 あなたの品質と生産性を前後で計測し、形式的方法があなたにとって効果があるかどうか判断する。 あなたが何か発見したら、それを他の人に話しなさい。

演習課題 #9 テキストの付録B (p.353-373)を読んで、例題を実施しなさい。 PSP2.1を使用して、N個の実数のリンクリスト(linked list)を昇順にソートするプログラム8Aを書きなさい。 PSP2.1の説明は付録C(p.394-397)を、プログラム8Aの仕様は付録D(p.492-493)を参考にしなさい。 “linked list”の訳が用語集にない。(久保記)

講義9のまとめ - 1 1. 貧弱な設計記法はエラーの原因である。 2. 定義された厳密な記法を使用することによって、 1. 貧弱な設計記法はエラーの原因である。 2. 定義された厳密な記法を使用することによって、 あなたはあなたの設計の品質を改善できるし、欠 陥をなくすことができる。

講義9のまとめ - 2 3. 利用可能なものの中から適切な記法を選択し、 使用しなさい。 3. 利用可能なものの中から適切な記法を選択し、   使用しなさい。 4. あなたのソフトウェア開発に形式的方法を試みなさ  い。そしてそれがあなたの役に立つか調べなさい。