Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

第1回 プログラマのための計算機科学

1,956 views

Published on

『オブジェクト指向入門』より
第1章 ソフトウェアの品質
http://atnd.org/events/42135

※「書籍の要約」にあたるとの指摘を受けましたので、出版社に確認中です。(8/9)

Published in: Technology
  • Be the first to comment

第1回 プログラマのための計算機科学

  1. 1. 『オブジェクト指向入門』 第1章�ソフトウェアの品質 Shinya Hayakawa 第1回 プログラマのための計算機科学 2013/08/08
  2. 2. 「はじめに」 •本書は一連のストーリー •最初から最後まで順に読む (飛ばして良い所には印) •「私たち」「われわれ」は読者 も含む
  3. 3. 言語の名前 •「この言語」 •意図的に伏せられている
  4. 4. 「この言語」 •分析、設計、実装で使われ ている •「この言語」を理解する =OOを理解する
  5. 5. 誤解 •実際の実装言語を用いて の分析は勧められない •OOが分析だけで、実装に 役立たない訳では無い
  6. 6. オブジェクト指向 •ソフトウェアの分析、設計、 実装への道 •高品質のソフトウェアを現 場で生み出すための方法 論、ツール、技法
  7. 7. 核心 •構造的な手法 •信頼性の規律 •認識論上の原則 •分類の方法
  8. 8. 構造的な手法 •クラス •型の構造の上にシステムを 構築する •モジュール化の基盤
  9. 9. 信頼性の規律 •Design by Contract
  10. 10. 認識論上の原則 •クラスをどのように書くか •どうのように使えるか、によ ってのみ認識できる •抽象データ型
  11. 11. 分類の方法 •継承
  12. 12. 単純で強力なもの •クラス、契約、抽象データ 型、継承 •ソフトウェアの再利用性、拡 張性、信頼性と結びつく
  13. 13. 「Algol 60はその大部分の 後継言語たちを、大幅に 改良したものである」
  14. 14. 第1章 ソフトウェアの品質
  15. 15. ソフトウェアの品質 •目的は、品質の高いソフト ウェアの生産 •目標とする品質は?
  16. 16. 外的品質要因 •スピードや使いやすさ •ユーザが認識できる性質 •拡張性も含まれる
  17. 17. 内的品質要因 •ソースコードにアクセスでき る人間にしか分からないもの
  18. 18. •問題になるのは外的品質 要因 •内的品質要因を実現する 技法もOOの範疇
  19. 19. 目的 •外的品質要因を達成する •内的品質要因は手段
  20. 20. 主要な 外的品質要因
  21. 21. 正確さ •仕様通りに動く ※仕様を決めること自体が 難しい
  22. 22. 正確さ •前提条件依存 •レイヤーアーキテクチャ
  23. 23. 正確さ •テスト、デバッグ •型付け、表明 •形式仕様記述
  24. 24. 丈夫さ •フォールトトレランス •「異常な場合」=「仕様にな い場合」
  25. 25. 拡張性 •仕様変更に対する適応の しやすさ •規模の問題 •人間特有の変わりやすさを 受け入れる
  26. 26. 拡張性 •設計の単純さ •変更に適応しやすい •非集中化 •変更の連鎖反応を起こさない
  27. 27. 再利用性 •多様なアプリ構築に利用で きる •書くコードが減る •必然的に品質が上がる
  28. 28. 互換性 •他のソフトウェア要素との 組み合わせやすさ •インターフェイス
  29. 29. 効率性 •ハードウェア資源の使用度 合い •最適化厨 •富豪的プログラミング
  30. 30. 効率性 •悪いアルゴリズム •「正確さ」への影響 •リアルタイム性 •性能に無視される
  31. 31. 可搬性 •移植しやすさ
  32. 32. 使いやすさ •学習しやすさ •応用的な使い方 •インストール、操作、監視
  33. 33. 使いやすさ •一様でない知識レベル •構造の単純さ •「know the user」の功罪
  34. 34. 機能性 •サービスの提供可能範囲
  35. 35. 機能主義 •機能追加で、使いやすさ、 一貫性が失われる •製品の基礎概念 •目に見える「全体図」
  36. 36. 機能主義 •ほかの品質要因を忘れる •Osmondの曲線
  37. 37. 適時性 •タイムリーなリリース •チャンスを失う可能性
  38. 38. そのほかの品質要因 •実証性 •統合性 •修復性 •経済性 ( 適時性)
  39. 39. ドキュメント •独立した品質要因ではない •品質要因の結果
  40. 40. ドキュメント •外部向けドキュメント •内部向けドキュメント •APIドキュメント
  41. 41. ドキュメント •→ オンラインヘルプ •→ 良い実装なら必要ない •→ ソースから自動生成
  42. 42. トレードオフ •保護策 使いやすさ •保護策 統合性 •経済性 機能性
  43. 43. トレードオフ •効率性� 可搬性 •効率性 再利用性 •適時性 拡張性
  44. 44. トレードオフ •「正確さ」のトレードオフは あり得ない
  45. 45. 特に重要な事柄 •正確さと頑丈さ •信頼性 •拡張性と再利用性 •モジュール性
  46. 46. 特に重要な事柄 •互換性、可搬性、使いやす さ、効率性、適時性、経済 性、機能性
  47. 47. ソフトウェアの保守 •品質要因に保守性は含ま れない •「保守」は間違った表現
  48. 48. ソフトウェアの保守 •仕様変更に対する修正 •期限を過ぎてからのデバッ グ
  49. 49. ソフトウェアの保守 •ドキュメント •緊急のバグ修正 •効率性向上のための修正 •新しい環境への移植
  50. 50. 1章のまとめ •品質の高いソフトウェアを作る方法を 探求する •品質は複数の目標のバランスを基準 に判断する •外的品質要因と内的品質要因は区 別する
  51. 51. 1章のまとめ •重要なのは外的品質要因 実現するために内的品質要因 を満たす •基本的な外的品質要因と特に 重要な事柄
  52. 52. 1章のまとめ •保守はコストの大きな割合を占 める ← 罰 •変更が困難なようにつくった •データにプログラムが依存し すぎている

×