はじめに
引き続き、研修で学んだことをアウトプットしていきます。
今回は「ソフトウェアの品質」についてです。
学んだこと
品質とは?
製品やサービスの良し・悪しのこと
求められる品質は製品
であったりユーザーの期待値
によって異なる
例)製品:スポーツウェアとおしゃれ着
求められる品質はさまざまであるため、一定の基準を設けるために以下を規定
評価するための指標
外部品質
エンドユーザーが最初に触れる部分の品質
対象:ソフトウェアのふるまい
内部品質
エンドユーザーに直接影響しないが、外部品質には影響する
対象:ソースコード、仕様書、設計書など
ソフトウェアの品質特性
機能性
要求されている機能が満たせているか
合目的性
:機能は目的に対して適切か
正確性
:期待に対して正確か
相互運用性
:ほかのシステムとやり取りできるか
機密性
:セキュリティはどうか
標準適合性
:標準(ISOやJISなどの規格)と合っているか
信頼性
障害が起こりにくいか、正しく動作し続けられるか
成熟性
:障害で機能が停止しないか
障害許容性
:障害が起きても機能を提供し続けられるか
回復性
:障害が起きても戻れるか
標準適合性
使用性
使い勝手や使いやすさ、操作性はどうか
理解性
:理解しやすいか
習得性
:学習しやすいか
運用性
:運用しやすいか
魅力性
:使ってみたくなるか
標準適合性
効率性
与えられたリソースに対して、適切な性能を発揮しているか
時間効率性
:適切な時間で応答するか
資源効率性
:資源(メモリ・ハードディスクなど)適切に使用しているか
標準適合性
保守性
できたソフトウェアの修正のしやすさはどうか
解析性
:障害が発生したときに原因解析しやすいか(ログがちゃんと出ているかなど)
変更性
:変更しやすいか
安定性
:影響範囲が安定しているか(変更が予定外のとこに及ばないか)
試験性
:テストしやすいか
標準適合性
移植性
別の環境へ移すことになったときのやりやすさはどうか
環境適応性
:他の環境に移しやすいか
設置性
:インストールしやすいか
共存性
:他のソフトウェアと共存できるか
置換性
:他のソフトから置き換えられるか
標準適合性
品質特性はどこで使う?
非機能要求を見つけるために使う
非機能要求とは?
機能として顧客から明確に求められてはいないが、システムとして必要そうなもの
例)機能 :OKボタンを押したら、ダイアログを開く
非機能:レスポンスは3秒以内でおこなう
V字モデルとは?
開発工程とテスト工程の関係を表したもの
見比べることで「実施されるテストがどのレベルの開発内容を検証するためのテストなのか」がイメージしやすくなる
- 要求分析 ⇔ 受け入れテスト
- 要件定義 ⇔ システムテスト
- 基本設計 ⇔ 結合テスト
- 詳細設計 ⇔ 単体テスト
- コーディング ⇔ コードレビュー
なぜテストをするのか
開発されたシステムが案件、仕様書通りに作成されているか、品質に問題ないかなどの確認を行うため
受け入れテストとは
システム全体をユーザー視点で問題ないか検証
システムテストとは
システム全体を開発者視点ですべてのプログラムとハードウェアを組み合わせて検証
結合テストとは
単体テストで検証したものを組み合わせて不具合がないか検証
単体テストとは
メソッドなどの小さな単位で要件・機能を満たしているか検証
まとめ
ソフトウェアの品質について細かく考えたことがなかったので、これらの知識が頭にあるのと無いのとでは開発していく際に影響してくるだろうなと感じました。意識することで、高品質なシステムにつながっていくと思うので、定期的に確認して自分の中に落とし込んでいきたいと思います。