IPAの「高信頼化ソフトウェアのための開発手法ガイドブック」

IPAが今週発表した「高信頼化ソフトウェアのための開発手法ガイドブック−予防と検証の事例を中心に−」が、よいカンジだと思ったので、メモ。

「システムを開発する際に気をつけるべき項目とは何か」は、非機能要求仕様定義ガイドライン日本情報システム・ユーザー協会)や、非機能要求グレードを参考にすれば、ある程度、誰でも機械的に洗い出すことができます。

しかし、それらの項目について、「どのタイミングで・誰が・何を行えばよく・その結果どんな効果が得られるか」を明らかにすることは、一筋縄ではいきません。少なくとも、経験の浅い人間が一人で考えていても、何も出てきません。

これをするには、経験豊かな開発者やアーキテクトから知見を引き出し、まとめる作業が必要になります。とはいえ、

  • そういうスーパーエンジニアは、そもそも数が少ない
  • 運良く社内にいても、あちこちに引っ張りだこで、ヒアリングの調整が難しい
  • 相当経験豊かな人でも、システムの全ての面について深く知っているわけではない
  • せっかく凄い話をしてもらっても、受信側の汎化能力が低いと、役に立つ知見に昇華されない

などの問題があり、むずかしいですよね。

このガイドブックは、そこを埋めるための一つの材料になりそーだなぁと思いました。

たとえば、機能性の相互運用性「外部接続に対するデータ数、変換、編集(データ形式、コードなど)に関するコミュニケーション」の項をみると、次のようにかかれていマス。

汎用系とオープン系とのデータ接続では文字コード系の障害がよく起きる。特に、MIXフィールド(全角/半角混在)については、領域の途中で区切るとシフトコードを付け替えなど煩雑な対応になるため、障害の対処に相当の期間とコストを要する。本課題に対応するため、データ変換機能を共通化する。

国内システムと海外システムとの連携において、想定外の事象が発生する場合がある。(例:日本時間から海外への日時変換にて、サマータイムの切替り時期で日が変わることがあり、結果同一日にふたつのデータが存在するという障害が発生。)想定外に発生した障害については、以降の開発において同様の誤りを発生させないよう、チェックリスト化する。

まさに経験者ならではの知見といえる生々しさです。

開発の際に気をつけるべき項目に、「たとえば具体的に何をすればよいか」が添えられていることは、おそらく重要です。なぜなら、それは、設計者や開発者が何をすべきかを考えるための手がかりになるからです。そのまま参考にできる例であっても、そうでなくても、類似の問題を同程度の粒度で探す上でヒントになるでしょう。

それを現場から収集するのは、上記のとおり一苦労ですが、今回IPAが7社分もの事例をまとめてくれました。IPAさん、アリガトウ。

年末には、今回の資料を元に本が出る予定だそうです。楽しみです。