Programming Self-Study Notebook

勉強したことを忘れないように! 思い出せるように!!

スクラム開発について②:品質

f:id:overworker:20200615215136p:plain

スクラム開発の品質

  • 『狭義の品質』よりも『広義の品質』を重要視する。

    狭義の品質 固定の要求に対してソフトウェアの実装に不良がない
    広義の品質 開発されたソフトウェアを使う人がより満足すること

アジャイル開発の)品質への取り組み

  • 決められた予算、開発期間の中でユーザー価値を最大化するために試行錯誤する

    • 以下の項目を定義する必要があります。
      • 重要視する品質は何か
      • 品質をどのように計測(定量化)するか

例:重要視する品質は?計測方法は?

  • 性能効率性
  • 使用性
    • 疑似ユーザーによるユーザーテスト
    • NEMによる操作性の定量的評価
    • Nielsenの原則に基づくユーザビリティインスペクション
  • 保守性
    • アーキテクチャレビュー
    • 静的解析による保守性・移植性の定量
      • 設計品質
        • 循環参照がない
        • 凝集度
        • クラスの複雑度(サイクロマティック複雑度)
        • リソース管理
      • ソースコード品質
        • メソッド/関数の複雑度
        • クローン、コメント
        • 最大ネスト
        • 実行分の行数
        • コーディング規格準拠
        • 移植性
  • セキュリティ
    • ライセンス上問題のあるソフトウェアの混入チェック
    • 脆弱性チェック
  • 信頼性
    • シミュレーション環境によるテスト
    • 実環境ログを使用したオペレーショナルプロファイルテスト

スクラム開発での品質の高め方

「すべての反復で確認し続けなければならない品質」と「段階的に確認する品質」を分離する

すべてのスプリントで確認し続けなければならない品質

  • 新規に実装した機能に不具合がないこと
  • 新規に実装した機能が要求仕様を満たしていること
  • 新規に実装した機能により、既存機能に不具合が発生していないこと
  • その他の対応(バグ修正、技術負債の返却等)により新たな不具合が発生していないこと

段階的に確認する品質

  • (新規に実装した機能の仕様の)目的を達成するための手段としての妥当性
    • 利用者に満足を提供すること。(利用者の満足度)
    • 妥当性確認
  • できるだけ早期に品質の妥当性を確認する観点から具体的な期日を設定するべきだと思います。

ユーザー満足度をどのように計測するか?

公開前

  • テストフライトの活用

公開後

  • オープンβの活用
    • ユーザーの使用状況調査
    • ユーザーアンケートの実施
    • ユーザー増加率/定着率・離脱率の計測

アジャイル開発での品質管理方法

  • アジャイル開発における各種ルールは作業方法のルールというよりも『作業の結果としてしっかりとしたものができたか』という観点を重視している。
  • 品質マネジメントという立場では『どのように作業をするか』というルールも重要になります。
    • 反復という一種類の工程に対しルールがあれば原則的には十分

スクラム開発での品質管理方法

  • 最初の反復(スプリント0)でプロジェクトの全体のルールを決める
  • 通常の反復用のルール
  • 開発物を外部(組織内の他のプロジェクトや組織外)にリリースする場合に対応できるルール

参考文献

以下の書籍から大きな影響を受けました。

overworker.hatenablog.jp