【上巻】Codeコンプリート第1, 2, 3, 4章レビューメモ

【上巻】Codeコンプリート熟読中のメモになります。

かなり本書の文になるのでまずいようならご連絡頂ければと思います。

【第1章】ソフトウェアコンストラクションへようこそ

  • コンストラクションの重要性
  • ソフトウェアコンストラクションとは?
    • コンストラクションとは「作る」プロセス
  • コンストラクションの重要性
    • 実行されることが保証されている唯一のアクティビティ
  • 要求仕様書とアーキテクチャは、コンストラクションに効果的に取り組めるように、コンストラクションの前に作成される。
  • システムテスト(厳密には独立テスト)は、コンストラクションが正しく行われたことを確認するために、コンストラクションの後に実施される。
  • コンストラクションはソフトウェア開発プロセスの中心に位置する。

【第2章】ソフトウェア開発への理解を深めるメタファ

  • メタファ(たとえ)
    • メタファを利用したものをモデリングと呼ぶ
  • メタファは「アルゴリズム」というよりも「ヒューリスティクス(発見的)」という意味合いが強い
  • 例)誰かの家に車で行く時について
    • アルゴリズム
      • 「ハイウェイ167号線を南下してピュアラップまで進む。サウスヒルモール出口を出て、丘を4.5マイル登る。スーパーマーケット前の信号を右折して、最初の角を左折する。左手にあるノースシダー714番地の大きな茶色の家のドライブウェイに入る」となる
    • ヒューリスティクス
      • 「私たちが最後に出した手紙を取り出して、そこに書いてある住所までドライブしてください。街に着いたら、誰かに私たちの家を訪ねてください。誰でも知っていますから、きっと親切に教えてくれるでしょう。道を聞けそうな人が見つからなかったら、公衆電話から電話してください。迎えに行きます。」
  • 計画の不備が後で大問題に発展しない程度に、十分な計画を立てれば良い
  • ソフトウェア開発の最適なメタファは「ソフトウェアを構築する(建物の建築)」

【第3章】2回測って、1度で切る:上流工程の必要性

  • ソフトウェアコンストラクションを成功させるための下準備、下準備の大切さについて書かれている
  • プログラマはソフトウェアの食物連鎖の末端にいる。アーキテクトは要求を取り込み、設計者はアーキテクチャを取り込む。プログラマは設計を取り込む
  • 過去25年間にわたる研究で分かっている事
    • コンストラクションを開始する前に欠陥を取り除いた場合は、プロセスの最後や、システムテストの最中や、リリース後に欠陥を取り除いた場合よりも、作業の手戻りが10〜100倍少ない事が分かっている
  • 1つの目安として、要求の約80%を事前に指定しておき、後から要求を追加するための時間を設けておく。そして、プロジェクトを進めながら新しい要求の内最も価値の高いものだけを取り入れるようにする。
  • コンストラクションを始める前に完了しなければならない最初の準備は、システムが解決するはずの課題を明記することである
  • 課題定義が大事
    • 課題定義はユーザーの言葉で語られるべきであり、課題はユーザーの立場で説明されるべきである

【第4章】コンストラクションの重要な決断

  • プログラミング言語の選択
    • プログラミング言語はプログラマの考えを表現する言語である。その為プログラミング言語の選択がその後のコンストラクションに与える影響は大きい
  • 言語の”中で”のプログラミングと、言語の”中へ”のプログラミングを区別している
    • ”中で”
      • 考えを表現する際に言語がサポートしている構造に限定されてしまう
    • ”中へ”
      • どのような考えを表現したいのかを決めてから、その考えを特定の言語が提供するツールを使って表現する

感想

コンストラクションや開発とは?的な説明で、大事だと思うことはもちろんあるが読んでてまだ面白くはない。

言語の”中で”のプログラミングと、言語の”中へ”のプログラミングの仕方で実現されるコンテンツが大きく違ってくるので本当に大切だと思う。

スポンサーリンク
レスポンシブ