コンテンツへスキップ
ソフトウェア品質について
- AIによるコード生成が日常化しつつある今、品質の評価基準や判断者が曖昧になるリスクが高まっています。
- 今回は、ワインバーグの品質に対する考えを手がかりに、変わる技術の中で変わらない品質の本質について考えてみます。
ソフトウェア品質とは何か?
- 品質向上、品質改善、品質担保、といった言葉は、ソフトウェア開発の現場でよく使われますが、「品質」とは具体的に何を指すのでしょうか?
- ワインバーグの言葉を借りるなら、「品質は、誰かの要求に適合していることである」となります。
- 品質は相対的なものであり、ある文脈や誰かの要求から生まれるもので、絶対的なものではありません。
相対的な品質とは?
- ソフトウェアを利用するステークホルダーによって、重視するポイントは異なります。
- 例えば、多機能なソフトウェアは販売側には魅力的でも、ユーザーには操作性が悪いと感じられることがあります。また、最新技術を使ったコードは同僚から高評価でも、保守性が下がる場合もあります。
- このように、品質は普遍的なものではなく、現場や状況に応じて変化します。一方で、誰かの要求に適合することだけが品質なのでしょうか?
要求適合
- 極端な例ですが、ステークホルダーの中で最も発言力のある人が「バグのないソフトウェア」を要求した場合、開発者は「それは非現実的な要求だ」と答えるでしょう。この要求の問題点はどこにあるのでしょうか。
- このような要求は、実現可能性や現実的な運用を考慮すると、そもそも成立しない問題だと言えます。
- つまり、「バグのないソフトウェア」という要求は、現実の開発現場では達成不可能な目標であり、議論の出発点として適切ではありません。
- 要求適合の良し悪しがソフトウェアの品質を左右するのであれば、その良し悪しを規定するものは何でしょうか?
真の要求
- ワインバーグの言葉を借りれば、「要求が、重要な人々を正しく特定し、彼らにとって真の価値を把握しているなら、この定義はクロスビーのいう要求適合にまさしく帰着する」となります。
- これは理想的な状況ですが、現実にはこの状況を想定できず、多くの開発プロセスは"真の"要求に近づけることに関心があります。
- ワインバーグは"真の"要求が何かについて明確には述べていませんが、この言葉の意味を考えることにヒントがあるように感じます。
ソフトウェア品質特性
- 品質を評価する際、ISO/IEC25010:2011が示すソフトウェア品質特性のような基準を参照することは重要です。
- 機能適合性や性能効率性などの品質特性をフレームワークとして、ステークホルダーの要求を整理することで、"真の"要求に近いものを引き出し、高品質なソフトウェア開発につなげることができます。
要求と実装の間に
- 要求を出すステークホルダーは、必ずしもソフトウェアの知識があるとは限りません。生成AIによる自動化が進む中で、出てきた要求に対してフレームワークや実効性を加味し、より良い要求("真の"要求に近づける要求)を作り上げていくことが、今後のソフトウェア開発者に求められるスキルです。
- より良い要求とは、実装を進める上で困らない具体性があり、ステークホルダーとの「合意」が得られていることが条件です。
- 最近では、AIを活用した仕様駆動開発(Spec-Driven Development)などの手法も登場し、要求の具体化や仕様整理の重要性が高まっています。
- AI技術の進歩が目覚ましい今、改めて古典から学べることも多いのではないでしょうか。
参考文献
- G.M.ワインバーグ著「ワインバーグのシステム思考法」
- https://www.kyoritsu-pub.co.jp/book/b10011607.html