2014年2月26日水曜日

[ソフトウェア品質技術]品質の定義(Philip B. Crosby)

◆Philip B Crosby (1926-2001)の品質の定義

"品質とは「要求条件への合致」である。"

 彼は米国の品質マネージメントのコンサルタントで「欠陥ゼロ (Zero Defects)」 運動の生みの親です。

 ZD運動とは、予防に焦点をあて、測定可能な基準をもとに欠陥を製造初期の段階から作らない運動だそうです。60年代から70年代にGEやロールスロイス、ITTなどの多くの製造業で採用されたものだそうです。

◆参考資料

 彼の考える品質についてよくまとまった記事があったので、紹介しておきます。

◆面白い抜粋

 和訳本はどうかわかりませんが、なかなかユーモアのある方だったんでしょうね…

 『Quality is Free: The Art of Making Quality Certain』 から
"Quality is like sex -  Everyone is for it. (Under certain conditions of, course.) Everyone feels they understand it. (Even though they wouldn't want to explain it.) Everyone thinks execution is only a matter of following natural inclinations. (After all, we do get along somehow.) And, of course, most people feel that all problems in these areas are caused by other people. (If only they would take time to do things right.) In a world where half the marriages end in divorce or separation, such assumptions are open to question.” 
-- Philip B Crosby 

2014年2月25日火曜日

[ソフトウェア品質技術]SQuaRE (ISO/IEC 25000 シリーズ)

◆製品品質評価に関する新しい規格

 ISO 25000シリーズは、ソフトウェアの製品品質要求と評価に関して規定している国際規格だそうです。

 ISO/IEC 9126 (ソフトウェア製品の品質に関する規格群) と ISO/IEC 14598 (ソフトウェア製品評価)を統合、改善、強化したもの。

 別名、"SQuaRE"と呼ばれているらしい。(某ゲームメーカーではない。^^;)
  • ISO/IEC 25000番台
    品質マネージメントの規格を定義している群(Quality Management Division)
  • ISO/IEC 25010番台
    品質モデルの規格を定義している群(Quality Model Division)
  • ISO/IEC 25020番台
    品質測定の規格を定義している群(Quality Measurement Division)
  • ISO/IEC 25030番台
    品質要求の規格を定義している群(Quality Requirements Division)
  • ISO/IEC 25040番台
    品質評価の規格を定義している群(Quality Evaluation Division)

◆余談

"SQuaRE=Software product Quality Requirements and Evaluation"
日本人は、語句の1文字目の漢字を利用して省略することが好きな人種だと思うが、欧米人も頭文字を残した省略が好きな人種だと思う。

 日本語の省略の場合、情報量の多い漢字を使うためほとんどの場合、省略した用語の意味を簡単にとらえることができる。省略方法に一貫性があればよいのだが、ものすごく適当なのでSQuaREみたいな省略は、国際規格で使用するのはいかがなものだろうか?

 "SQuaRE"と呼んだだけで本来の用語が分かる人は少ないだろう。”product”は、どこへいったのか?"u"は頭文字でもないし意味が想像できるのか?

◆参考資料

2014年2月24日月曜日

[ソフトウェア品質技術]品質の定義(Bary Bohem)

 バリー ベームは、スパイラルモデルを考えた人で有名です。彼は、次のようなモデルや技法を提案しました。
  • ソフトウェア品質モデル
  • プロセスモデル
  • V&V(Verification & Validation)1981

◆どんな人か調べていたら面白記事を見つけました

 平鍋さん(日本のアジャイル開発の第一人者)のブログから・・・

 Tom DeMarco :
「Barryのあの曲線、ソフトウェアの修正コスト曲線が発表されたおかげで、みんな要求をはじめにちゃんと決めないと、という洗脳にあったんだ」


 Barry Boehm :「
そうだ、Tomは正しい。その時代ぼくがいたドメインでは、要求を決めることができたんだ。だから要求を先に決めることは理にかなっていた。でも、80年以降は変化が大きくて、そんなことはなくなってしまった。要求は変化する。先にすべて決めるなんて無理だ。今ではみんながこの指数関数のように変更のコストが高くなる、というグラフに洗脳されてしまって、すべてを先に決めないといけない、と思っている。そして、みんなのその固定観念を変えること自体を難しくしてしまったからだ。」

◆思うこと

 これを読むと、開発スタイルが80年代と比べて大幅に変わってしまい、その当時定義したものが現在ではあまり役にたたないことがわかると思います。

 SQuBOKは、品質にかかわる有識者の知識がいっぱいつまっているのだと思いますが、大企業のウォーターフォール開発を主体に策定された重量級の知識体系ぽい、常に変化している開発現場では、フィットしない感がありますよね。(アカデミックな内容が苦手な自分には、いろいろとちんぷんかんぷんな内容が多くて…^^;)

 ちなみに、Validation(妥当性確認)についても初期の提案では、開発の最後に実施するものとなっているのに、開発の最終段階で問題を検出した場合にコストが高くなるので、上流工程でValidationを実施することを後の論文で提案しています。

◆参考資料

2014年2月21日金曜日

[ソフトウェア品質技術]McCallの品質モデル

◆最初のソフトウェア品質モデル

 1977年にJames A. McCall と 同僚によって提案されたソフトウェア品質モデルです。 ソフトウェアのライフサイクルのステージを区分ごとに、ファクター、クライテリア、メトリクスの3階層構造で品質をモデル化したも。利用者視点、開発者視点、および測定可能なレベルを結びつけた最初のソフトウェア品質モデルとして評価が高いらしいです。(※用語は適当に訳しているので適当かどうかは不明です。)

ファクター
クライテリア
メトリクス
製品改訂
Product Revision
保守性
Maintainability
Simplicity
Conciseness
Modularity
柔軟性
Flexibility
Self-descriptiveness
Expandability
Generality
テスト容易性
Testability
Simplicity
Instrumentation
Self-descriptiveness
Modularity
製品運用
Product Operations
正当性
Correctness
Traceability
Completeness
Consistency
信頼性
Reliability
Consistency
Accuracy
Error tolerance
効率
Efficiency
Execution efficiency
Storage efficiency
完全性
Integrity
Access control
Access audit
利用容易性
Usability
Operability
Training
Communicativeness
製品移行
Product Transition
可搬性
Portability
Modularity
Self-Descriptiveness
Machine Independence
Software System Independence
再利用性
Reusability
Generality
Modularity
Software System Independence
Machine Independence
Self-Descriptiveness
相互運用性
Interoperability
Modularity
Communications Commonality
Data Commonality

◆余談

 このモデルは、"General Electrics Model of 1977" とも呼ばれていますが、ソフトウェア工学の品質モデルの中で一番有名?なモデルなのに、原典の入手が困難なのはなぜでしょうか? 古いので電子化されていないとうことでしょうかね?Googleで探しているとOCRをPDF化したものを見つけたので参照サイトにリンクを載せておきます。

◆参考資料

2014年2月20日木曜日

[ソフトウェア品質技術]動作環境のサポート終了日を調べる

◆サポートライフサイクルって重要

 ソフトウェアが動作する動作環境にはいろいろあります。
  • OS(Windows、Linux…)
  • ミドルウェア(Oracle、DB2…)
  • アプリケーションサーバー(Tomcat、WAS…)
  • ランタイムライブラリー(JDK、JRE…)
  • ブラウザー(IE、Firefox、Chrome…)
  • アプリケーション(Excel、Word…)
これらが組み合わさってソフトウェアが動作するのですが、すべての動作環境を考慮した保守が想像以上に厳しい。

 中でも、動作環境の開発元が設定したサポートライフサイクルのサポート終了と自分たちのライフサイクルが合わないことが問題になります。サポート終了とは、今まで、動作環境として保証してきた環境の保守とサポートを終了することです。開発元がサポートできないものを、それを利用したソフトウェエアを提供する我々がどうやって動作環境として保証し続けることができるでしょうか?もちろん動作環境として挙げておくこともできますが、不具合が発生して環境を再現しようとしても入手困難だったり、開発元の原因で不具合が解決できなかったりすることがあるでしょう。

 ユーザーは、当然、今まで問題なく使えていたのにサポート終了したら不満に思うでしょうね。動作保証から外すことを事前にきちんと告知したとしても、動作環境のバージョンアップをしなければいけないので不満に思うでしょう。大企業の場合は、規模が大きいのでバージョンアップをするだけでもかなりの時間とお金がかかるのでバージョンアップするということ自体が無理難題なんです。

 動作保証し続けるか、それとも終了するかは、プロダクトオーナーの決断です。ただ、動作環境として挙げるからには、最低限、各環境の「サポート終了日」の把握しておかなければいけません。こういった情報を明確にして、ユーザーにきちんと告知することが品質を下げない活動の一部だと思うんです。

 ここで言う「サポート終了日」とは、開発やメンテナンスだけでなく、サポートサービスが終了した状況のことを言います。ほとんどの開発元では、延長サポートを終了した時点を"End of Life"として定義しています。

◆調べたこと

 仕事にかかわるの主要ベンダー製品のサポートライフサイクル情報を検索して、「サポート終了日」を調べた記録をここに残します。Windows 8のサポートはいつまでか?Javaのサポートはいつまでか?Oracleの延長サポートはいつまでか?とか調べるのに利用できます。(開発元のこういう情報は、すぐに削除されてリンク切れを起こすのでムカつきますが…)

◆OS

・UNIX
  ・AIX
   "IBM AIX support lifecycle information - United States"
   https://www-304.ibm.com/support/docview.wss?uid=isg3T1012517
  ・HP-UX
   『日本HP 長期間利用のための開発方針とサポートポリシー』
   http://h50146.www5.hp.com/products/software/oe/hpux/topics/support/
  ・Solaris
   "Lifetime Support Policy: Oracle and Sun System Software and Operating Systems (PDF)"
   http://www.oracle.com/us/support/library/lifetime-support-hardware-301321.pdf?ssSourceSiteId=ocomjp
 ・Linux
  ・Suse
   「Novell Support | Support Lifecycle」
   https://support.novell.com/lifecycle/?attachmate_cb=on&novell_cb=on&netiq_cb=on&suse_cb=on#
  ・Red Hat
   "Red Hat Enterprise Linux Life Cycle - Red Hat Customer Portal"
   https://access.redhat.com/site/support/policy/updates/errata/
  ・CentOS
   "FAQ/General - CentOS Wiki"
   http://wiki.centos.org/FAQ/General#head-fe8a0be91ee3e7dea812e8694491e1dde5b75e6d
   CentOS-3 updates until Oct 31, 2010
   CentOS-4 updates until Feb 29, 2012
   CentOS-5 updates until Mar 31, 2017
   CentOS-6 updates until November 30, 2020
 ・Windows
  ・Server
   「マイクロソフト プロダクト サポート ライフサイクル」
   http://support.microsoft.com/lifecycle/?c2=1163
  ・Client
   "Lifecycle Information for Microsoft Client Software Support"
   http://support.microsoft.com/gp/lifeselectwin

◆ブラウザー

 ・Internet Explorer
  IISのサポートはOS依存なのでOSのサポート終了日と同じです。
  「[ソフトウェア品質技術]Windows と IEのサポート終了日について」
  http://www.underclock.net/2014/01/windows-ie.html
 ・Firefox
  旧バージョンのダウンロード | 次世代ブラウザ Firefox
  http://www.mozilla.jp/firefox/download/older/
  6週間程度でバージョンアップする、最新以外のバージョンは未サポート
  扱いになるただし、ESRに関しては7バージョンの間隔でリリースされるの
  約8か月間はサポート期間となる。
  「Firefox/Thunderbird 法人向け延長サポート版 (ESR) のダウンロード」
  http://www.mozilla.jp/business/downloads/
 ・Safari
  SafariのEoLの情報が存在しない。リリースタイミングがOSと一緒なので、
  OSの方も調べたら、それも無いらしい。
  http://lists.apple.com/archives/macos-x-server/2009/Jun/msg00221.html
 ・Google Chrome
  EoLの情報が存在しない。自動更新なので古いものはサポートされないと
  考えた方がよい。
 ・Opera
  12以降あChromeのエンジンを使用するらしく、自動更新なので古いバージ
  ョンは今後サポートされないと考えてよいかも。情報は見つからなかった。

◆アプリケーションサーバー

 ・Tomcat
  "Apache Tomcat - End of life for Apache Tomcat 5.5.x"
  http://tomcat.apache.org/tomcat-55-eol.html
  2014年2月現在、6以降は未定になっている。
 ・IIS
  IISのサポートはOS依存なのでOSのサポート終了日と同じです。
  OS-Windows-ServerとOS-Windows-Clientを参照してください。
  OSに搭載されているバージョン情報についてはこちらを参考にしました。
  "Internet Information Services - Wikipedia"
  http://ja.wikipedia.org/wiki/Internet_Information_Services
  IIS 5.0 - Windows 2000 に搭載
  IIS 5.1 - Windows XP Professional に搭載
  IIS 6.0 - Windows Server 2003 と Windows XP Professional x64 Edition に搭載
  IIS 7.0 - Windows Vista と Windows Server 2008 に搭載
  IIS 7.5 - Windows 7 と Windows Server 2008 R2 に搭載
  IIS 8.0 - Windows 8 と Windows Server 2012 に搭載
 ・WAS
  "IBM Software support lifecycle - Search results"
  http://www-01.ibm.com/software/support/lifecycleapp/PLCSearch.wss?q=WebSphere+Application+Server&scope=&ibm-search.x=22&ibm-search.y=23&ibm-search=Search&sort=P
 ・WebLogic
  "Lifetime Support Policy: Oracle Fusion Middleware Products"
  http://www.oracle.com/us/support/library/lifetime-support-middleware-069163.pdf?ssSourceSiteId=ocomjp
 ・Glassfish
  "Lifetime Support Policy: Oracle and Sun System Software and Operating Systems (PDF)"
  http://www.oracle.com/us/support/library/lifetime-support-hardware-301321.pdf?ssSourceSiteId=ocomjp

◆データベース

 ・Oracle
  "Lifetime Support Policy: Oracle Technology Products (PDF)"
  http://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf?ssSourceSiteId=ocomjp
 ・SQL Server
  「マイクロソフト プロダクト サポート ライフサイクル SQLServer」
  http://support.microsoft.com/lifecycle/?C2=1044
 ・DB2
  "IBM Software support lifecycle - Search results"
  http://www-01.ibm.com/software/support/lifecycleapp/PLCSearch.wss?q=DB2+Enterprise&scope=&ibm-search.x=0&ibm-search.y=0&ibm-search=Search&sort=P
  ※Enterprise Server Editionのバージョンを確認すること前提です。
 ・Sybase IQ
  "End of Life Notice - Sybase Inc"
  http://www.sybase.com/detail_list?id=9790&pageNum=1&multi=true&header=true&show=17737&timeframe=
 ・Dr.Sum EA
  「【BI・データ活用のDr.Sum EA】取扱終了製品について説明」
  http://www.wingarc.com/product/dr_sum/shipmentstop/
 ・RedBrick
  "IBM Software support lifecycle - Search results"
  http://www-01.ibm.com/software/support/lifecycleapp/PLCSearch.wss?q=RedBrick&scope=&ibm-search.x=0&ibm-search.y=0&ibm-search=Search&sort=P
 ・Essbase
  "Lifetime Support Policy: Oracle Applications (PDF)"
  http://www.oracle.com/us/support/library/lifetime-support-applications-069216.pdf?ssSourceSiteId=ocomjp
 ・MySQL
  "Lifetime Support Policy: Oracle Technology Products (PDF)"
  http://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf?ssSourceSiteId=ocomjp
 ・IBM i
  "IBM Software support lifecycle - Search results"
  http://www-01.ibm.com/software/support/lifecycleapp/PLCSearch.wss?q=IBM+i&scope=&ibm-search.x=6&ibm-search.y=14&ibm-search=Search&sort=P

◆Java

 ・JDK、JRE
  「Oracle Java SE サポート・ロードマップ」
  http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html

◆Office製品

 ・Excel
  「マイクロソフト プロダクト サポート ライフサイクル Excel」
  http://support.microsoft.com/lifecycle/?C2=918
 ・Access
  「マイクロソフト プロダクト サポート ライフサイクル Access」
  http://support.microsoft.com/lifecycle/?C2=915

2014年2月18日火曜日

[ソフトウェア品質技術]ソフトウェア保守の種類

「ISO/IEC 14764」によると、ソフトウェア保守の種類は全部で4つある。
また、保守の分類は「訂正」と「改善」とに大別できる。
  1. 適用保守
  2. 是正保守
  3. 予防保守
  4. 完全化保守
ISOの定義を日本語に翻訳したものではなく、SQuBOKガイドの執筆者が言い換えたものだが訳文が微妙だった。

"Modification of a software product after delivery" これは、きちんとそろえて翻訳しておかないと4つの保守が相対的に比較しにくくなる。

◆適用保守(Adaptive Maintenance)[訂正]

"Modification of a software product performed after delivery to keep a software product usable in a changed or changing environment."(原文)
 「引渡し後に変化した環境においてもソフトウェア製品を同様に使用できるように保ち続けるために行うソフトウェア製品の修正」(SQuBOKガイド)

→導入後に、システムやシステム環境の変更に適応して、継続して利用できるようにソフトウェアを修正することなので、新機能を供給するような保守ではないだろう。たとえば、消費税が8%から10%に変更になったときの保守などがこれに該当するのではないだろうか?

◆是正保守(Corrective Maintenance)[訂正]

"Reactive modification of a software product performed after delivery to correct discovered problems."(原文)
 「ソフトウェア製品の引渡し後に発見される問題を是正するために行う受身の修正」(SQuBOKガイド)

→導入後に、見つかった問題を解決するためにソフトウェアを修正することだと思う。

◆予防保守(Preventive Maintenance)[改善]

"Modification of a software product after delivery to detect and correct latent faults in the software product before they become effective faults."(原文)
 「引渡し後のソフトウェア製品の潜在的な障害が顕在化する前に発見し,是正を行うための修正」(SQuBOKガイド)

→導入後に、ソフトウェアの既知障害や潜在的な障害を修正することだと思う。

◆完全化保守(Perfective Maintenance)[改善]

"Modification of a software product after delivery to improve performance or maintainability."(原文)
 「引渡し後の顧客ニーズの変化に対応して,ソフトウェア製品を改善することで,顧客満足を維持するための修正」(SQuBOKガイド)

→導入後に、ソフトウェアのパフォーマンスや保守性を改善するために修正することだと思う。ガイドでは「顧客満足を維持」と執筆者の主義主張的な表現になっているのが気がかりだ。

◆参考資料