ソフトウェア開発パラダイムの進化

ソフトウェア開発におけるソフトウェアテスト--その多面的な役割(1)

Atif Memon(メリーランド大学博士) 2017年05月09日 07時30分

  • このエントリーをはてなブックマークに追加

ソフトウェア開発パラダイムの進化に伴い、ソフトウェアプロセスも進化した。そして、今日のコモディティ化されたソフトウェアには、アジャイルプロセスが非常に適しているーーメリーランド大学カレッジパーク校 コンピューターサイエンスの教授を務めるAtif Memon氏はこう話す。日本では、ビッグツリーテクノロジー&コンサルティング(BTC)と共同研究しているMemon氏に、ソフトウェア開発とテストについて寄稿してもらう。今回は1回目。

 ソフトウェアは、今日、知られている形として登場してしてから半世紀近くが経過しています。ソフトウェアは、この期間、主にその基礎となるハードウェアの速度、容量、相互接続によるコンピュータ性能の改善によって、いくつの変化がありました。

 この改善により、計算能力が拡大し、優れたプログラム言語パラダイムが可能になりました。プログラムコードの抽象度が上がり、マシン固有の命令文から、より汎用的で、想像しやすく、モデル化しやすいカプセル化された構文が使えるようになりました。

 このような改善に活気づけられて、ソフトウェア開発パラダイムもまた進化し、最新動向と歩調を合わせています。近年のソフトウェア開発は、世界中の異なった時間帯で作業する複数の開発者たちにより特徴づけられています。開発者は、設計やコーディングの決定を伝える定期ミーティングを実施しないで、常時頻繁に(一日に複数回)コードを変更しています。

 ソフトウェア開発パラダイムが進化したように、ソフトウェアプロセスも進化したのです。近年のソフトウェアプロセスでは、正式なドキュメントは保守せず、厳密な開発ワークフローにも従いません。その代わり、ソフトウェア業界は、今日のコモディティ化されたソフトウェアには、アジャイルプロセスが非常に適していることに気づきました。

 アジャイルプロセスでは、コード成果物が同時に実行プログラム、仕様、設計ドキュメント、要件定義として複数の役割を果たします。開発者は、開発プロセスを一番大切なエンドユーザー、つまり顧客を中心に据えることにより、顧客視点から成功している製品を最終的に作っていると感じます。

 今日のソフトウェア消費者(顧客)は、技術に詳しく、以前の世代よりもソフトウェアについてさまざまな要求をこれまでにないほどたくさん出してきます。消費者は、特にソフトウェアの新機能についての要求をいつも出してきます。例を挙げると、モバイルアプリ市場では、顧客は機能をたくさん要求することが知られています。

 このような要求によって、多くのソフトウェア市場は「機能戦争」状態になってしまいます。開発者は、消費者の要求が満たされることがないように思える新機能要求に対応しなければならず、コードチャーン(code churn)率を増大させてしまう。

 また、顧客は、ソフトウェアにバグがなく、十分な性能があり、フリーズしたり、クラッシュしないことを求めます。実際、ある調査によれば、ソフトウェアは十分にテストを行い、一度顧客が使ったら使い続けられることが重要だということです。2つのソフトウェアがあった場合には、顧客は性能が良く安定しているソフトウェアを選択します。

 ソフトウェア開発者は、新機能の追加と品質のバランスを取り、それと同時に、バグレポートと顧客からのフィードバックには迅速に対応する必要があります。顧客は、さまざまなプラットフォーム上でソフトウェアを実行するので、開発者は、ソフトウェアが人気のあるプラットフォームの構成で動作することを確認する必要があります。

 新機能の要求、バグ修正要求への迅速な対応、莫大な数のハードウェア構成上での稼働要求といったことの掛け算によって、コードチャーン率に前例のない影響を与えます。開発者によって、毎分複数回同時にコードを変更します。

 このような場合、開発者は、ミーティング、ドキュメント、設計といった、コミュニケーションや同期を取る正式な手段を持っていないので、コードにリグレッションが簡単に入り込んでしまい、ソフトウェアの品質低下、最終的には製品の失敗にまでなってしまいます。

 コードチャーン率が増加する際に、大きな組織でソフトウェア製品に含まれるリグレッションを防ぐ方法の一つが、強靭なCI(継続的インテグレーション)とテストプロセスの使用です。CIプロセスを定期的に(例えばコードを変更する度に)実行し、ソフトウェアの最新リリースをビルドし、一般的なバグパターンがコードに入り込んでないことを確認する静的解析ツールを実行し、リグレッションテストスイートを自動的に実行するのです。

 ある意味、リグレッションテストスイートは、コードが順守しなければならない(仕様書と要件定義様書に代わる)契約として機能します。契約に違反すれば、リグレッションテストの失敗によって発見されます。

 CIとテストプロセスは、素早く完全なフィードバックを自動的に開発者に返すので、コード開発プロセスとうまく共存します。ある開発者が他の開発者のコードに誤って修正しても、ほとんどの場合はリグレッションテストで見つけることができます。

 開発者は、コードの正式なドキュメントを作成する必要はありません。テストがそのコードの意図する機能の説明になります。ソフトウェア大企業の多くでコードチャーン率が、最近高くなっているのはリグレッションテストのせいであるというのは、不合理だとは言えません。ソフトウェアの健全性を継続してモニターすれば、リグレッションを防止し、破滅的な失敗を回避するために役立ちます。

次回に続く。

Atife M. Memon
メリーランド大学カレッジパーク校 コンピューターサイエンス
ソフトウェア工学 ソフトウェアテスト、モバイルアプリのセキュリティテスト、モデル駆動型人間性能試験、遺伝子アセンブラのモデルベーステスト。ソフトウェアテスティング、ソフトウェアエンジニアリングに関する140以上の論文を執筆。 2016年にはGoogleでも客員研究員として活躍し、ソフトウェアテスティング分野における功績をたたえられ、ドイツのフンボルト財団よりフラウンホーファーベッセル賞を授与された。 2017年3月に日本で開催されたIEEEのICST(International Conference on Software Testing)のGeneral Chairmanを務めるとともに、中国科学院の客員研究員やタタ(インド)での客員調査員として活躍している。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

  • このエントリーをはてなブックマークに追加

この記事を読んだ方に

連載

CIO
デジタル“失敗学”
コンサルティング現場のカラクリ
Rethink Internet:インターネット再考
インシデントをもたらすヒューマンエラー
トランザクションの今昔物語
エリック松永のデジタルIQ道場
研究現場から見たAI
Fintechの正体
米ZDNet編集長Larryの独り言
大木豊成「仕事で使うアップルのトリセツ」
山本雅史「ハードから読み解くITトレンド放談」
田中克己「2020年のIT企業」
松岡功「一言もの申す」
松岡功「今週の明言」
内山悟志「IT部門はどこに向かうのか」
林 雅之「デジタル未来からの手紙」
谷川耕一「エンプラITならこれは知っとけ」
大河原克行「エンプラ徒然」
内製化とユーザー体験の関係
「プロジェクトマネジメント」の解き方
ITは「ひみつ道具」の夢を見る
セキュリティ
企業セキュリティの歩き方
サイバーセキュリティ未来考
ネットワークセキュリティの要諦
セキュリティの論点
スペシャル
ざっくりわかるSNSマーケティング入門
課題解決のためのUI/UX
誰もが開発者になる時代 ~業務システム開発の現場を行く~
「Windows 10」法人導入の手引き
ソフトウェア開発パラダイムの進化
エンタープライズトレンド
10の事情
座談会@ZDNet
Dr.津田のクラウドトップガン対談
Gartner Symposium
IBM World of Watson
de:code
Sapphire Now
VMworld
Microsoft WPC
Microsoft Connect()
HPE Discover
Oracle OpenWorld
Dell EMC World
AWS re:Invent
AWS Summit
PTC LiveWorx
吉田行男「より賢く活用するためのOSS最新動向」
古賀政純「Dockerがもたらすビジネス変革」
中国ビジネス四方山話
ベトナムでビジネス
日本株展望
企業決算
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]