JP4688478B2 - ストレージ装置のソフトウェア開発支援システム及びソフトウェア開発支援方法 - Google Patents

ストレージ装置のソフトウェア開発支援システム及びソフトウェア開発支援方法 Download PDF

Info

Publication number
JP4688478B2
JP4688478B2 JP2004339832A JP2004339832A JP4688478B2 JP 4688478 B2 JP4688478 B2 JP 4688478B2 JP 2004339832 A JP2004339832 A JP 2004339832A JP 2004339832 A JP2004339832 A JP 2004339832A JP 4688478 B2 JP4688478 B2 JP 4688478B2
Authority
JP
Japan
Prior art keywords
hardware
software
information
register
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004339832A
Other languages
English (en)
Other versions
JP2006146842A (ja
Inventor
恭久 木村
廣二 渋谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2004339832A priority Critical patent/JP4688478B2/ja
Priority to US11/034,849 priority patent/US7353496B2/en
Publication of JP2006146842A publication Critical patent/JP2006146842A/ja
Application granted granted Critical
Publication of JP4688478B2 publication Critical patent/JP4688478B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、ストレージ装置のソフトウェア開発支援システムに関する。
ストレージ装置は、例えば、ハードディスク装置や半導体メモリ装置等の記憶デバイスをアレイ状に配設し、RAID(Redundant Array of Independent Disks)に基づいた記憶領域を構築するもので、ディスクアレイ装置とも呼ばれる。各ディスクドライブが有する物理的な記憶領域上には、論理的な記憶領域である論理ボリューム(LU:Logical Unit)が形成され、この論理ボリュームがホストコンピュータ(以下、「ホスト」と略記)に提供される。
ストレージ装置は、例えば、ホストとの間のデータ通信を制御する通信制御基板、記憶デバイスとのデータ授受を制御する通信制御基板、各種のデータを記憶するメモリ基板、記憶デバイス等のように、種々のハードウェア及びソフトウェアを結合させて構成される高度なシステム製品である。各制御基板は、それぞれがマイクロプロセッサ等を内蔵したコンピュータ製品であり、各制御基板がそれぞれの制御プログラムを実行することにより、種々のハードウェアが連携して動作するようになっている。このように、ストレージ装置は、多数のマイクロコンピュータ部品を搭載した大規模なシステム製品であり、多くのハードウェア資源とソフトウェア資源とから構成されている。
ここで、ストレージ装置を新たに開発する場合は、例えば、開発目標に基づいてハードウェア仕様とソフトウェア仕様とをそれぞれ定め、ハードウェアとソフトウェアをそれぞれ別々の開発チームが担当する。両チームは、定期的に又は不定期に連絡を取り合いながら、それぞれの開発を進めていく。そして、最後にハードウェアとソフトウェアとを結合させて、その動作を検証する。
ストレージ装置に用いられるソフトウェア群は、各種制御基板等のハードウェアに組み込まれるものであるため、組込型ソフトウェアとも呼ばれる。このようなハードウェア組込型ソフトウェアでは、例えば、C言語等の高級言語によってソースプログラムが作成される。このソースプログラムを所定のコンパイラによってコンパイル等することにより、CPU(Central Processing Unit)が直接実行可能な形式のオブジェクトコードを得ることができる。このようにして得られたオブジェクトコードは、制御基板に実装されたROM(Read Only Memory)等に格納される。
なお、ストレージ装置用のソフトウェア開発に使用するものではないが、変更されたコードの動作チェックを自動的に行うことによりソフトウェアの開発を支援するソフトウェア開発支援装置は、知られている(特許文献1)。このほかに、ソフトウェアの静的なまたは動的な解析を行う開発支援ツールも知られている。
特開2004−272830号公報
上記特許文献に記載された技術では、ソフトウェアの開発をある程度支援することはできるが、ソフトウェアのみを対象とするため、ハードウェアの仕様変更に対応することができない。ストレージ装置は、多数のソフトウェア群と多数のハードウェア群とが高度に連携する大規模なシステム製品であり、市場要求等によってハードウェア仕様が適宜変更される場合がある。
ハードウェアが変更されると、そのハードウェアを利用するソフトウェア群が影響を受けることになる。例えば、クロック周波数が変更された場合は、そのクロック周波数を直接的または間接的に利用するソフトウェア群に影響が生じる。従って、ハードウェアの仕様が変更された場合は、そのハードウェアを使用するソフトウェアの仕様も変更せざるを得ないことがある。
このように、ハードウェア群とソフトウェア群とが結合したシステム製品では、ハードウェアの仕様変更がソフトウェアの仕様に影響を与え、これによりソフトウェアの手直しや検証が必要となる。従って、ハードウェアの仕様を変更する場合は、その仕様変更の内容がソフトウェア開発者に通知される必要がある。
本発明は、上記問題点に鑑みてなされたもので、その目的の一つは、ハードウェアとソフトウェアとの関係を考慮して、ソフトウェアの開発を支援することができるストレージ装置のソフトウェア開発支援システム及びソフトウェア開発支援方法を提供することにある。本発明の目的の一つは、ハードウェアの仕様変更がソフトウェアに与える影響を予測し、この情報をハードウェア開発者及びソフトウェア開発者の両方にそれぞれ提供することにより、ハードウェア及びソフトウェアを協調させて開発を進めることが可能なストレージ装置のソフトウェア開発支援システム及び開発支援方法を提供することにある。本発明の他の目的は、後述する実施形態の記載から明らかになるであろう。
上記課題を解決すべく、本発明に従うストレージ装置のソフトウェア開発支援システムは、上位装置との間のデータ授受を制御するための情報処理システムを有する上位通信制御部と、記憶領域を提供する記憶デバイス群と、この記憶デバイス群との間のデータ授受を制御するための情報処理システムを有する下位通信制御部と、上位通信制御部及び下位通信制御部により共用されるメモリ部と、上位通信制御部及び下位通信制御部にそれぞれ設けられ、これら各通信制御部の各情報処理システムをそれぞれ制御するソフトウェアと、を備えたストレージ装置の前記ソフトウェアの開発を支援する開発支援システムであって、ソフトウェアに関する仕様情報を取得して、ソフトウェアを構成する所定のソフトウェア要素群の構造を解析するソフトウェア情報解析部と、少なくとも上位通信制御部及び下位通信制御部をそれぞれ構成するハードウェアに関する仕様情報を取得して、ハードウェアを構成する所定のハードウェア要素群の構造を解析するハードウェア情報解析部と、ソフトウェア情報解析部による解析結果とハードウェア情報解析部による解析結果とに基づいて、ハードウェア要素群とソフトウェア要素群との間の依存関係を分析する依存関係分析部と、依存関係分析部による分析結果に基づいて、ハードウェア要素群のいずれか一つまたは複数のハードウェア要素を変更した場合に、その変更がソフトウェア要素群に与える影響度を予測する影響度予測部と、影響度予測部により予測された影響度を外部に提供する情報提供部とを備える。
ソフトウェアに関する仕様情報には少なくともソースプログラムを、ハードウェアに関する仕様情報には少なくともソフトウェアとハードウェアとのインターフェースに関する情報をそれぞれ含めることができる。また、ソフトウェア要素群には少なくともソースプログラムに含まれている関数群を含め、ハードウェア要素群には少なくともインターフェースに関するレジスタ群を含めることができる。そして、(1)ソフトウェア情報解析部は、関数群の各関数間の相互関係を解析し、(2)ハードウェア情報解析部は、レジスタ群をその機能別に分類し、(3)依存関係分析部は、(3A)レジスタ群の各レジスタ毎に、該レジスタを直接的または間接的に利用する関数群の階層構造を分析し、この分析された階層構造に基づいて、各レジスタ毎に、該レジスタと該レジスタを利用する関数との論理的な距離を検出し、(3B)関数群の各関数毎に、レジスタ群の利用状況を分析し、(3C)検出された論理的な距離と分析された利用状況とに基づいて、各関数が各レジスタに依存する依存度合をそれぞれ検出し、(4)影響度予測部は、依存関係分析部により検出された依存度合に基づいて、レジスタ群の各レジスタ毎に、該レジスタに対応するハードウェアを変更した場合の影響度をそれぞれ検出する、ことができる。
影響度予測部は、ソフトウェアの品質管理情報を取得し、この取得した品質管理情報と依存度合とに基づいて、各影響度をそれぞれ検出することもできる。
また、本発明の別の観点に従うストレージ装置のソフトウェア開発支援方法は、ソフトウェアに関する仕様情報を取得して、ソフトウェアを構成する所定のソフトウェア要素群の構造を解析するソフトウェア情報解析ステップと、少なくとも上位通信制御部及び下位通信制御部をそれぞれ構成するハードウェアに関する仕様情報を取得して、ハードウェアを構成する所定のハードウェア要素群の構造を解析するハードウェア情報解析ステップと、ソフトウェア情報解析ステップによる解析結果とハードウェア情報解析ステップによる解析結果とに基づいて、ハードウェア要素群とソフトウェア要素群との間の依存関係を分析する依存関係分析ステップと、を含んでいる。
そして、依存関係分析ステップによる分析結果に基づいて、ハードウェア要素群のいずれか一つまたは複数のハードウェア要素を変更した場合に、その変更がソフトウェア要素群に与える影響度を予測する影響度予測ステップを、さらに含めることもできる。
本発明の手段またはステップは、その全部または一部を、コンピュータプログラムによって実現可能な場合がある。このコンピュータプログラムは、例えば、ハードディスク装置、半導体メモリ装置、光ディスク装置等の記録媒体に固定させて流通に置くこともできるし、あるいは、通信ネットワークを介して送信することもできる。
図1に基づいて、本発明の実施形態を説明する。図1は、実施形態の全体概念を模式的に示す説明図である。この全体概念図には、以下の発明が開示される。
即ち、所定のハードウェアに組み込まれ、このハードウェアの作動を制御する所定のソフトウェアの開発を支援するハードウェア組込型ソフトウェアの開発支援システムであって、前記ソフトウェアに関する仕様情報を取得して、前記ソフトウェアを構成する所定のソフトウェア要素群の構造を解析するソフトウェア情報解析部と、前記ハードウェアに関する仕様情報を取得して、前記ハードウェアを構成する所定のハードウェア要素群の構造を解析するハードウェア情報解析部と、前記ソフトウェア情報解析部による解析結果と前記ハードウェア情報解析部による解析結果とに基づいて、前記ハードウェア要素群と前記ソフトウェア要素群との間の依存関係を分析する依存関係分析部と、前記依存関係分析部による分析結果を外部に提供する情報提供部と、を備えたハードウェア組込型ソフトウェアの開発支援システムが開示されている。
さらに、図1では、前記依存関係分析部による分析結果に基づいて、前記ハードウェア要素群のいずれか一つまたは複数のハードウェア要素を変更した場合に、その変更が前記ソフトウェア要素群に与える影響度を予測する影響度予測部を備え、前記情報提供部は、前記依存関係分析部による分析結果に代えて、または、この分析結果と共に、前記影響度予測部により予測された影響度を外部に提供するようになっている。
図1に基づいて、本実施形態を詳細に説明する。ストレージシステム1は、複数のハードウェア要素Eh1〜Ehnと、複数のソフトウェア要素Es11〜Esmnとを備えて構成されており、これらハードウェアとソフトウェアとは、複数のインターフェース(以下「I/F」)要素を介して接続されている。
ここで、ハードウェア要素としては、例えば、タイマ、バッファ、キャッシュメモリ、通信インターフェース、論理LSI等を挙げることができる。ソフトウェア要素としては、例えば、関数、変数、マクロ、テーブル等を挙げることができる。ハードウェアとソフトウェアとのインターフェース要素としては、例えば、ハードウェア要素を使用するためのレジスタ等を挙げることができる。
開発支援システム2は、ストレージシステム1からハードウェア要素及びソフトウェア要素に関する仕様情報をそれぞれ取得する(S1)。ここで、ハードウェア仕様情報及びソフトウェア仕様情報は、電子データまたは非電子データのいずれか又は双方の形式で取得することができる。
即ち、ハードウェア仕様情報やソフトウェア仕様情報は、例えば、紙媒体に印刷された仕様書として、または、ハードディスク装置等のデータ記録媒体に固定された電子データとして、それぞれ作成し、保存することができる。開発支援システム2は、これらの電子化または非電子化された仕様情報を取得する。なお、仕様情報が非電子化データである場合、開発支援システム2は、例えば、スキャナ装置やディジタルカメラ等の撮像装置を使用することにより、仕様情報を電子データに変換してから取り込むことができる。また、仕様情報の全部または一部をシステム管理者等が手動で入力する構成でもよい。
開発支援システム2は、ハードウェア仕様情報及びソフトウェア仕様情報をそれぞれ解析し、ハードウェア要素とソフトウェア要素との相互依存関係を解析する(S2)。この解析された相互依存情報は、データベース2Aに記録される。相互依存関係情報とは、ハードウェア要素群とソフトウェア要素群との関係、即ち、各ソフトウェア要素が各ハードウェア要素をどの程度利用しているかを示す情報である。例えば、レジスタ等のインターフェース要素に着目することにより、各ハードウェア要素をそれぞれ直接的に使用する各ソフトウェア要素(Es11〜Es1n)を特定することができる。そして、各ソフトウェア要素同士の接続関係(階層構造)を解析することにより、どのソフトウェア要素がどのソフトウェア要素を介して特定のハードウェア要素を使用しているか等を把握することができる。
開発支援システム2は、相互依存情報とソフトウェア品質管理情報とに基づいて、ソフトウェアへの影響を示すソフトウェア影響情報を生成する(S3)。ソフトウェア影響情報は、あるハードウェア要素の変更が各ソフトウェア要素に与える影響の度合を示すものである。このソフトウェア影響情報は、データベース2Bに記録され、ハードウェア開発セクション3及びソフトウェア開発セクション4のそれぞれに提供される。ソフトウェア影響情報は、各セクション3,4により共有される。
ハードウェア開発セクション3では、ソフトウェア影響情報を参照することにより(S4)、現在計画中の仕様変更がソフトウェアに与える影響の範囲や大きさ等を事前に確認することができる。同様に、ソフトウェア開発セクション4でも、ソフトウェア影響情報を参照することにより(S5)、予定されているハードウェアの変更がソフトウェアに与える影響を事前に把握することができる。
各セクション3,4がそれぞれソフトウェア影響情報を参照することにより、各セクション3,4は共通の認識を有することができる。そして、この共通の認識を基礎として、各セクション3,4は互いに連絡を取り合うことができる(S6)。
ハードウェア開発セクション3は、その仕様変更がソフトウェアに与える影響を事前に確認した上で設計の手直し等を行うことができる(S7)。同様に、ソフトウェア開発セクション4は、ハードウェアの仕様変更により影響を受ける全てのソフトウェア要素について、手直し等することができる(S8)。
ソフトウェアの仕様変更に関する情報は、ソフトウェア品質管理情報としてデータベース2Cに記録される(S9)。ソフトウェア品質管理情報には、ソフトウェア要素の品質の履歴等を含めることができる。即ち、例えば、あるハードウェア要素の挙動に異常が検出された場合、そのハードウェア要素を制御するソフトウェア要素のバグが特定され、このバグに関する情報が記録される。
従って、ソフトウェア品質管理情報を参照することにより、過去に生じた不具合の頻度等を知ることができる。上述のように、開発支援システム2は、ソフトウェア品質管理情報と相互依存情報とに基づいて、ソフトウェア影響情報を生成するようになっている。各セクション3,4による開発の進行は、相互依存情報に反映され、ソフトウェア影響情報が更新される。
このように、本実施形態の開発支援システム2は、ソフトウェア仕様情報及びハードウェア仕様情報に基づいて、ソフトウェア要素群の構造及びハードウェア要素群の構造をそれぞれ解析する。そして、開発支援システム2は、両解析結果に基づいて、ソフトウェア要素群とハードウェア要素群との間の依存関係を示す依存関係情報を得る。さらに、開発支援システム2は、依存関係情報に基づいて、ハードウェア要素群のいずれか一つまたは複数のハードウェア要素を変更した場合に、その変更がソフトウェア要素群に与える影響度を予測するソフトウェア影響情報を生成し、この情報を各セクション3,4にそれぞれ提供する。
従って、本実施形態によれば、ハードウェア開発セクション3及びソフトウェア開発セクション4は、それぞれソフトウェア影響情報を参照して共通の認識を得ることができ、この共通の認識の上に立って相互に連絡を取り合いながら、それぞれの開発を進めることができる。これにより、本実施形態では、ハードウェア開発セクション3及びソフトウェア開発セクション4の両方が協調しながら、ストレージシステム1の開発を連携して進めることができる。このため、本実施形態では、従来技術のように、ソフトウェアへの影響を殆ど考慮していないハードウェアの仕様変更により、ソフトウェアの手直し作業や検証作業が発生してソフトウェア開発工数や開発期間が増加するのを未然に抑制することができる。本実施形態では、ストレージシステム開発の総工数を低減し、コストの増加を防止することができ、さらには、品質改善にも役立たせることができる。
また、既に開発済のストレージシステムのソフトウェア影響情報を参照することにより、新たに開発予定のストレージシステムの設計に活かすこともできる。即ち、例えば、ソフトウェアへの影響度が大きいハードウェア仕様については、より慎重により優先して検討し、ソフトウェアへの影響度の小さいハードウェア仕様については、柔軟に対応する等のように、新機種の開発計画を策定する際にも利用することができる。以下、他の図面を参照しながら、本実施形態をよく詳しく説明する。
図2は、ストレージ装置のソフトウェア開発支援システム100の全体像を示す構成説明図である。この開発支援システム100は、例えば、ソフトウェア仕様情報解析部110と、ハードウェア仕様情報解析部120と、品質管理情報解析部130と、ハードウェア依存度分析部140と、ソース影響度分析部150と、情報提供部160等を備えて構成することができる。
また、開発支援システム100は、ソース構造解析データ111と、ソフトウェア−ハードウェア間インターフェース解析データ(以下、「インターフェース解析データ」とも呼ぶ)121と、プログラム変更管理情報131と、ハードウェア依存度情報141と、ソフトウェア影響度情報151とをそれぞれ管理することができる。
開発支援システム100は、例えば、サーバマシン等のコンピュータ装置上に実現することができ、ソフトウェア開発セクションの端末310及びハードウェア開発セクションの端末320とそれぞれ通信可能に接続されている。開発支援システム100は、各端末310,320に対して、それぞれ情報を提供することができる。各セクションでは、開発支援システム100から得た情報に基づいて、ソフトウェア及びハードウェアの仕様を変更することができる。
開発支援システム100の各機能をそれぞれ簡単に説明する。各機能の詳細は、別図と共に後述する。まず、開発支援システム100には、少なくとも3種類の情報Ds,Dh,Dqをそれぞれ入力することができる。ソフトウェア仕様情報Dsは、ソースファイル(ソースプログラム)の構成、即ち、ソースコード、関数やマクロ等の定義等を示す情報である。ハードウェア仕様情報Dhは、ストレージ装置を構成するハードウェア要素、特に、コンピュータ制御される要素の仕様を示す情報である。品質管理情報Dqは、ソースファイルの品質(障害対策の履歴等)を示す情報である。
これらの情報Ds,Dh,Dqは、文書ファイル等の電子データとして作成されている場合もあるし、紙媒体に印刷された非電子データの場合もある。また、一部が電子化され、他の一部が紙媒体に印刷されている場合もある。電子化されていないデータの場合、例えば、スキャナ装置やディジタルカメラ等を用いて電子化し、開発支援システム100に入力することができる。
ソフトウェア仕様情報解析部110は、ソフトウェア仕様情報Dsに基づいて、ストレージ装置のソフトウェア構造を解析するものである。ソフトウェア仕様情報解析部110による解析結果は、ソース構造解析データ111として管理される。ソース構造解析データ111には、例えば、ソースファイルに含まれている関数、変数、マクロ、テーブル等の各エンティティと、これら各エンティティ間の相互参照状態等の情報を含めることができる。
ハードウェア仕様情報解析部120は、ハードウェア仕様情報Dhに基づいて、ストレージ装置のハードウェア構造を解析するものである。ハードウェア仕様情報解析部120は、例えば、ハードウェアとソフトウェアとを繋ぐ外部レジスタについて調査することにより、ハードウェアの構造を解析する。この解析結果は、インターフェース解析データ121として管理される。インターフェース解析データ121には、例えば、各外部レジスタの番号、その名称(用途)、各制御ビットの定義、種別等を含めることができる。
品質管理情報解析部130は、品質管理情報Dqに基づいて、ソフトウェアの品質、即ち例えば、プログラムの変更履歴を解析する。この解析結果は、プログラム変更管理情報131として管理される。プログラム変更管理情報131には、例えば、そのプログラムに生じた過去の問題点、その問題点解決のために修正された箇所及びその内容、そのプログラムが関係するハードウェア名等を含めることができる。
ハードウェア依存度分析部140は、ソース構造解析データ111及びインターフェース解析データ121に基づいて、ソフトウェアとハードウェアとの依存関係を分析するものである。即ち、ソフトウェアとハードウェアとのインターフェースに関する構造と、ソフトウェアの内部構造とを互いに突き合わせて検討することにより、どのソフトウェア要素(関数、マクロ、変数等)がどのハードウェア要素を利用しているか等を把握することができる。この分析結果は、ハードウェア依存度情報141として管理される。ハードウェア依存度情報141には、例えば、各ハードウェア要素に関連する一つまたは複数のソフトウェア要素の依存度合を数値化して含めることができる。
ソース影響度分析部150は、ソース構造解析データ111と、ハードウェア依存度情報141と、プログラム変更管理情報131とに基づいて、ハードウェア要素の仕様変更がソースファイルに与える影響度を分析するものである。この分析結果は、ソフトウェア影響度情報151として管理される。
情報提供部160は、ソフトウェア影響度情報151を各端末310,320にそれぞれ提供するためのものである。情報提供部160は、例えば、ウェブサーバ機能を備えて構成することができる。この場合、各端末310,320は、ウェブヴラウザを用いてソフトウェア影響度情報151を参照することができる。なお、ソフトウェア影響度情報151を提供する場合に限らず、ソフトウェア影響度情報151を生成するために用いられたハードウェア依存度情報141や他の解析データ111,121,131を各端末310,320にそれぞれ提供可能な構成でもよい。
ハードウェア開発セクション及びソフトウェア開発セクションは、ソフトウェア影響度情報151を参照して、ハードウェアの仕様変更がソフトウェアに与える影響を事前に把握し、そのハードウェアの仕様変更について事前に協議することができる。そして、ハードウェア開発セクションでは、例えば、ソフトウェアの開発も含めた全体の開発工数や期間及びコストを考慮して、ハードウェアの仕様変更を決定することができる。また、ソフトウェア開発セクションでは、そのハードウェアの仕様変更によって影響を受ける全てのソースファイルを事前に把握することができ、これらのソースファイルの修正作業を漏れなく行うことができる。
開発支援システム100によって開発が支援されるシステム製品としては、ストレージ装置10を挙げることができる。図3,図4を参照して、ストレージ装置10の構成を説明する。
図3は、ストレージ装置10の外観構成の一例を示す概略斜視図である。ストレージ装置10は、例えば、基本筐体11と複数の増設筐体12とから構成可能である。基本筐体11は、ストレージ装置10の最小構成単位であり、記憶機能及び制御機能の両方を備えている。増設筐体12は、ストレージ装置10のオプションであり、基本筐体11の有する制御機能により制御される。例えば、最大4個の増設筐体12を基本筐体11に接続可能である。
基本筐体11には、複数の制御パッケージ13と、複数の電源ユニット14と、複数のバッテリユニット15と、複数のディスクドライブ26とがそれぞれ着脱可能に設けられている。増設筐体12には、複数のディスクドライブ26と、複数の電源ユニット14及び複数のバッテリユニット15が着脱可能に設けられている。また、基本筐体11及び各増設筐体12には、複数の冷却ファン16もそれぞれ設けられている。
制御パッケージ13は、後述するチャネルアダプタ(以下、CHA)21、ディスクアダプタ(以下、DKA)22及びキャッシュメモリ23等をそれぞれ実現するためのモジュールである。即ち、基本筐体11には、複数のCHAパッケージ、複数のDKAパッケージ及び1つ以上のメモリパッケージがそれぞれ着脱可能に設けられ、パッケージ単位で交換可能となっている。
図4は、ストレージ装置10の全体概要を示すブロック図である。ストレージ装置10は、通信ネットワークCN1を介して、複数のホストコンピュータ(以下、「ホスト」)30と双方向通信可能にそれぞれ接続可能である。
通信ネットワークCN1としては、例えば、LAN(Local Area Network)、SAN(Storage Area Network)、インターネットあるいは専用回線等を挙げることができる。LANを用いる場合、ホスト30とストレージ装置10との間のデータ転送は、TCP/IPに従って行われる。SANを用いる場合、ホスト30とストレージ装置10とは、ファイバチャネルプロトコルに従ってデータ転送を行う。ホスト30がメインフレームの場合、例えば、FICON(Fibre Connection:登録商標)、ESCON(Enterprise System Connection:登録商標)、ACONARC(Advanced Connection Architecture:登録商標)、FIBARC(Fibre Connection Architecture:登録商標)等の通信プロトコルに従ってデータ転送が行われる。
各ホスト30は、例えば、サーバ、パーソナルコンピュータ、ワークステーション、メインフレーム等として実現されるものである。例えば、各ホスト30は、図外に位置する複数のクライアント端末と別の通信ネットワークを介して接続されている。各ホスト30は、例えば、各クライアント端末からの要求に応じて、ストレージ装置10にデータの読み書きを行うことにより、各クライアント端末へのサービスを提供する。
各CHA21は、各ホスト30との間のデータ転送を制御するもので、複数の通信ポート21Aを備えている。CHA21は、例えば、オープン系用CHA、メインフレーム系用CHA等のように、ホスト30の種類に応じて用意することができる。各CHA21は、それぞれに接続されたホスト30から、データの読み書きを要求するコマンド及びデータを受信し、ホスト30から受信したコマンドに従って動作する。各CHA21は、複数のホスト30からのI/O要求をそれぞれ個別に制御することができる。
DKA22の動作も含めて先に説明すると、CHA21は、ホスト30からリードコマンドを受信すると、このリードコマンドを共有メモリ24に記憶させる。DKA22は、共有メモリ24を随時参照しており、未処理のリードコマンドを発見すると、ディスクドライブ26からデータを読み出して、キャッシュメモリ23に記憶させる。CHA21は、キャッシュメモリ23に移されたデータを読み出し、ホスト30に送信する。
一方、CHA21は、ホスト30からライトコマンドを受信すると、このライトコマンドを共有メモリ24に記憶させる。また、CHA21は、受信したデータをキャッシュメモリ23に記憶させる。CHA21は、キャッシュメモリ23にデータを記憶させた後、ホスト30に書込み完了を報告する。DKA22は、共有メモリ24に記憶されたライトコマンドに従って、キャッシュメモリ23に記憶されたデータを読出し、所定のディスクドライブ26に記憶させる。
各DKA22は、ストレージ装置10内に複数設けることができる。各DKA22は、各ディスクドライブ26との間のデータ通信をそれぞれ制御する。各DKA22と各ディスクドライブ26とは、例えば、SAN等の通信ネットワークCN4を介して接続されており、ファイバチャネルプロトコルに従ってブロック単位のデータ転送を行う。各DKA22は、ディスクドライブ26の状態を随時監視しており、この監視結果は、内部ネットワークCN3を介して、SVP28に送信される。
各CHA21及び各DKA22は、例えば、プロセッサやメモリ等が実装されたプリント基板と、メモリに格納された制御プログラムとをそれぞれ備えており、これらのハードウェアとソフトウェアとの協働作業によって、それぞれ所定の機能を実現するようになっている。各CHA21,各DKA22にそれぞれ設けられる制御プログラムは、ストレージ装置10の全体動作を制御するものである。なお、CHA21とDKA22の詳細は、さらに後述する。
キャッシュメモリ23は、例えば、データ等を記憶するものである。キャッシュメモリ23は、例えば不揮発メモリから構成される。共有メモリ(あるいは制御メモリ)24は、例えば不揮発メモリから構成される。共有メモリ24には、例えば、制御情報や管理情報等が記憶される。これらの制御情報等の情報は、複数の共有メモリ24により多重管理することができる。共有メモリ24及びキャッシュメモリ23は、それぞれ複数個設けることができる。また、同一のメモリ基板にキャッシュメモリ23と共有メモリ24とを混在させて実装することもできる。あるいは、メモリの一部をキャッシュ領域として使用し、他の一部を制御領域として使用することもできる。
スイッチ部25は、各CHA21と、各DKA22と、キャッシュメモリ23と、共有メモリ24とをそれぞれ接続するものである。これにより、全てのCHA21,DKA22は、キャッシュメモリ23及び共有メモリ24にそれぞれアクセス可能である。スイッチ部25は、例えば超高速クロスバスイッチ等として構成することができる。
ストレージ装置10は、複数のディスクドライブ26を実装することができる。各ディスクドライブ26は、例えば、ハードディスクドライブ(HDD)、半導体メモリ装置、光ディスク装置、光磁気ディスク装置及びこれらの均等物として実現可能である。なお、ディスクドライブ26にHDDを使用する場合、例えば、FC(Fibre Channel)ディスク、SATA(Serial AT Attachment)ディスク、SCSI(Small Computer System Interface)ディスク等のHDDを使用することができる。また、複数種類のHDDをそれぞれ使用することもできる。
ディスクドライブ26は、物理的な記憶デバイスである。RAID構成等によっても相違するが、例えば、4個1組のディスクドライブ26が提供する物理的な記憶領域上には、仮想的な論理領域であるRAIDグループ(パリティグループとも呼ばれる)27が構築される。さらに、RAIDグループ27上には、論理デバイス(論理ボリュームとも呼ばれる)を1つ以上設定可能である。この論理デバイスをLUN (Logical Unit Number) に対応付けることにより、オープン系のホスト30により認識される。メインフレーム系ホストの場合は、論理デバイスを直接認識する。
なお、ストレージ装置10により使用される記憶資源は、全てストレージ装置10内に設けられている必要はない。ストレージ装置10は、ストレージ装置10の外部に存在する記憶資源を、あたかも自己の記憶資源であるかのように取り込んで、利用することもできる。
サービスプロセッサ(SVP)28は、LAN等の内部ネットワークCN3を介して、各CHA21及び各DKA22とそれぞれ接続されている。また、SVP28は、LAN等の通信ネットワークCN2を介して、複数の管理端末31に接続可能である。SVP28は、ストレージ装置10内部の各種状態を収集し、管理端末31に提供する。
次に、図5は、CHA21及びDKA22の要部を概略的に示すブロック図である。CHA21について先に説明する。CHA21は、例えば、ポート制御部211と、メインプロセッサ212と、ローカルメモリ213と、データ転送アダプタ(DTA)214と、マイクロプログラムアダプタ(MPA)215とを備えて構成することができる。
ポート制御部211は、プロセッサ216を備えており、所定の通信プロトコルに従って、ホスト30とのデータ通信を行うものである。メインプロセッサ212は、CHA21の作動を制御するもので、複数のハードウェアレジスタ217を備えている。メインプロセッサ212には、ローカルメモリ213が接続されている。ローカルメモリ213には、例えば、共有メモリ24に格納されている制御用情報のうち、そのCHA21で使用する制御用情報等がコピーされている。
DTA214は、キャッシュメモリ23との間のデータ転送を行う。MPA215は、共有メモリ24との間のデータ転送を行う。メインプロセッサ212は、MPA215を介して、ホスト30から受信したコマンドを共有メモリ24に格納させる。メインプロセッサ212は、DTA214を介して、ホスト30から受信したライトデータをキャッシュメモリ23に格納させる。また、メインプロセッサ212は、DTA214を介してキャッシュメモリ23からデータを読出す。この読み出されたデータは、ポート制御部211を介して、ホスト30に送信される。
CHA21と同様に、DKA22も、例えば、ポート制御部221と、メインプロセッサ222と、ローカルメモリ223と、DTA224と、MPA225とを備えて構成することができる。
ポート制御部221は、ディスクドライブ26との間のデータ転送を制御するもので、プロセッサ226を備えることができる。メインプロセッサ222は、DKA22の作動を制御するもので、複数のハードウェアレジスタ227を備えることができる。ローカルメモリ223には、例えば、DKA22の作動を制御するために必要な制御用情報等を記憶させることができる。また、DTA224は、キャッシュメモリ23との間のデータ転送を行う。MPA225は、共有メモリ24との間のデータ転送を行う。
次に、開発支援システム100の各機能の詳細を説明する。図6は、図2中のソフトウェア仕様情報解析部110により実行されるソースプログラム解析処理(図中では、ソースプログラムまたはソースファイルを「ソース」と略記する場合がある)の概略を示すフローチャートである。
開発支援システム100(以下、「システム100」とも呼ぶ)は、所定の制御または所定のプロジェクトに含まれる一連のソースファイル群のうち、解析対象のソースファイルを一つ選んでオープンする(S11)。システム100は、選択されたソースファイルのプリプロセッシングを実行する(S12)。このプリプロセッシングでは、例えば、デバッグコードをコンパイルするか否か等のコンパイルオプションを反映させ、また、マクロを解決等する。図7を参照する。ソフトウェア仕様情報Dsとしてのソースファイルをプリプロセッシングすることにより、情報がインクルードされ、ソースコードが展開され、マクロが解決等される。これにより、コンパイル前の中間ファイルが生成される。
図6に戻る。次に、システム100は、このプリプロセッシングされたコード(展開系と呼ぶ)が、前回の解析時と比較して変化しているか否かを判定する(S13)。展開系に差分があるときは(S13:YES)、ソースファイルが修正されている場合なので、ソースファイルの内部解析を行う(S14)。この内部解析では、例えば、そのソースファイルに含まれている関数エンティティの抽出、各関数の内部で使用されている変数の抽出、そのソースファイルで使用されている各テーブルの抽出、そのソースファイルに含まれているマクロエンティティの抽出等を行う。一方、プリプロセッシング後のコードが前回と変化していない場合(S13:NO)、S14をスキップする。
次に、システム100は、ソースファイル間の解析を行う(S15)。このソース間解析処理では、例えば、各エンティティ間における相互参照の状況を把握する。即ち、S15では、どの関数がどの関数を参照し、または参照されているかを示す関数間のクロスリファレンス情報を検出する。また、S15では、変数(マクロ)と関数との間のクロスリファレンス情報を検出する。さらに、S15では、マクロ間のクロスリファレンス情報を検出する。
次に、システム100は、メトリックス情報の解析を行う(S16)。このメトリックス情報解析では、例えば、親関数(Fan-IN)の数、子関数(Fan-OUT)の数、プログラムの複雑度情報等を解析する。プログラムの複雑度情報を得る場合、例えば、McCabe's metrics/Halstead's metrics等の手法を用いることができる。図8には、親関数と子関数との関係が示されている。ある関数F4に着目する。この関数F4には、関数F2と関数F3の演算結果がそれぞれ直接入力される(Fan-IN)。関数F1の演算結果は、関数F2を介して間接的に関数F4に入力される(Transitive Fan-IN)。関数4の演算結果は、関数F5に直接出力される(Fan-OUT)。また、関数F4の演算結果は、関数F5を介して間接的に関数F6に出力される(Transitive Fan-OUT)。このように、S16では、各関数間の親子関係を把握する。
図6に戻る。システム100は、解析結果をソースメトリックス情報テーブル111Aにエントリさせる(S17)。なお、S17では、上記の解析結果を、ソースファイル単位や関数単位で集計し、登録する。
そして、システム100は、未解析のソースファイルが存在するか否かを判定する(S18)。未解析のソースファイルが存在する場合(S18:YES)、システム100は、次のソースファイルに移動し(S19)、上述したS11〜S17の処理を繰り返す。解析すべき全てのソースファイルを解析した場合(S18:NO)、システム100は、ソースメトリックス情報テーブル111Bに、制御単位またはプロジェクト単位で集計し、登録させる(S20)。
図9は、S17で生成されるソースメトリックス情報テーブル111Aの一例を示す説明図である。図9は、各関数単位の集計結果を示す。このソースメトリックス情報テーブル111Aは、例えば、各レコードのインデックス番号と、関数名と、その関数のステップ数と、親関数の数(Fan-IN)と、子関数の数(Fan-OUT)と、間接的な親関数の数(Transitive Fan-IN)と、間接的な子関数の数(Transitive Fan-OUT)と、経路の複雑度情報とを、それぞれ対応づけることにより構成可能である。
図10は、S20で生成されるソースメトリックス情報テーブル111Bの一例を示す説明図である。図10は、制御単位での集計結果を示す。従って、テーブル111Bでは、制御名単位でそれぞれの解析結果が集計されている。
図11は、図2に示すハードウェア仕様情報解析部120により実行されるハードウェアドキュメント情報解析処理の概要を示すフローチャートである。ハードウェア仕様情報Dhとして、ハードウェア仕様を記述したハードウェアドキュメントが用いられる。
先に図12を参照する。図12は、ハードウェア仕様情報Dhの一例を示す説明図であって、ハードウェア仕様情報は各ハードウェア毎にそれぞれ用意されている。そして、これら各ハードウェア毎の仕様情報は、例えば、そのハードウェアに属する各レジスタのアドレスと、各レジスタの名称と、各レジスタの機能名称と、各レジスタの各制御ビットの定義情報と、各レジスタのセット条件及びリセット条件とをそれぞれ対応付けることにより構成される。
図11に戻る。システム100は、このハードウェアドキュメントからハードウェア仕様情報を取得する(S31)。即ち、ハードウェアドキュメントに記述された全ての情報を取得する必要はなく、例えば、ハードウェアとソフトウェアとのインターフェースとなる外部レジスタ群についての情報を取得すれば足りる。但し、外部レジスタに関する情報に限らず、他のハードウェア情報を利用してもよい。
システム100は、取得したハードウェア仕様情報に基づいて、インターフェース仕様情報を抽出する(S32)。インターフェース仕様情報としては、例えば、レジスタ番号(アドレス)、レジスタ名(ニーモニック)、レジスタの機能名称、レジスタの各制御ビットの定義、レジスタのセット条件及びリセット条件等を挙げることができる。レジスタの機能名称としては、例えば、「データ送受信転送状態レジスタ」、「チャネル側送信バッファ」、「内部クロックレジスタ」等を挙げることができる。
システム100は、レジスタ群を分類する(S33)。即ち、システム100は、レジスタの機能名称に基づいて、レジスタ群を複数のグループに分類する。即ち、例えば、各グループ毎にキーワードを一つまたは複数予め定義しておき、このキーワードに一致または類似する機能名称を有するレジスタを発見した場合、そのレジスタをそのグループに分類する。
例えば、第1グループK01は、「対リソース データ転送系」と定義される。この第1グループには、キャッシュメモリ23や共有メモリ24等の各リソース別に、それぞれのリソースへのデータ送信に使用するレジスタと、各リソースからのデータ受信に使用するレジスタとが所属する。第2グループK02は、「対リソース データ転送制御系」と定義される。この第2グループには、送受信別に、データ転送の制御に用いるレジスタや、データ転送のステータスを示すレジスタ、転送エラーを示すレジスタ等が所属する。
同様に、第3グループK03は「データバッファ系(送受信別)」、第4グループK04は「データバッファ制御系」、第5グループK05は「内部データ転送路(path/bus)制御系」、第6グループK06は「外部I/F状態監視系」、第7グループK07は「デバイス監視系」、第8グループK08は「エラー系(データパリティエラーや電気信号エラー等)」、第9グループK09は「タイマ監視系」、第10グループK10は「システムタイマ系」として、それぞれ定義される。なお、以上のレジスタ分類は一例であって、本発明はこれに限定されない。
システム100は、各レジスタの分類を完了すると、この分類結果をハードウェアI/F情報テーブル(ソフトウェア−ハードウェア間I/F解析データ)121にエントリさせる(S34)。そして、システム100は、未解析のハードウェア仕様情報が存在するか否かを判定する(S35)。未解析のハードウェア仕様情報が存在する場合(S35:YES)、システム100は、次のハードウェア仕様情報に移動して(S36)、上述したS31〜34の処理を繰り返す。そして、解析すべき全てのハードウェア仕様情報の解析が完了した場合(S35:NO)、システム100は、本処理を終了する。
図13は、ハードウェアI/F情報テーブル121の一例を示す説明図である。このハードウェアI/F情報テーブル121は、図2中では、ソフトウェア−ハードウェア間I/F解析データ121として示されている。
ハードウェアI/F情報テーブル121は、例えば、インデックス番号と、そのレジスタが所属するハードウェアの名称と、レジスタIDまたはアドレスと、そのレジスタ名と、そのレジスタの機能名称または簡単な説明と、そのレジスタの属するグループ名とを、それぞれ対応付けることにより構成することができる。
図14は、図2中の品質管理情報解析部130により実行される品質管理情報解析処理の概要を示すフローチャートである。システム100は、品質管理情報Dqとして、問題点管理票Dq1を取得する(S41)。そして、システム100は、取得した問題点管理票Dq1に関連付けられているプログラム変更管理票Dq2を探索する(S42)。
ここで、図15を参照する。図15には、問題点管理票Dq1及びプログラム変更管理票Dq2の一例が示されている。ストレージ装置10に何らかの不具合が発生すると、問題点管理票Dq1が生成される。この問題点管理票Dq1は、例えば、問題点毎に与えられる問題点管理番号と、その問題点の名称と、その問題点の発生日と、その問題点の重要度と、その問題点の対応区分と、その問題点に対応するプログラム変更管理票Dq2の番号とを、それぞれ対応付けることにより構成することができる。「対応区分」としては、例えば、「仕様違反」や「ハードウェア対応」等が挙げられる。「ハードウェア対応」とは、主として、ハードウェア不良や仕様変更に伴い、ソフトウェア(特に、ハードウェア制御プログラム)側で対応し修正したことを示す。
プログラム変更管理票Dq2は、問題点を解消するためにソースプログラムを修正した場合に生成され、問題点管理票Dq1に関連付けられて管理される。プログラム変更管理票Dq2には、例えば、件名と、不具合の生じた製品のバージョン番号と、修正後のバージョン番号と、発生した不具合の内容(不具合発生時の構成、不具合の発生条件、不具合の結果等)と、不具合を検索するために関連付けられるキーワードと、不具合の原因と、原因を検索するために関連付けられるキーワードと、不具合を解消するために実施された対策と、その対策を検索するために関連付けられるキーワードとが含まれている。
さらに、例えば、プログラム変更管理票Dq2には、その下側に示すように、不具合を解消するために変更されたソースファイルの名称と、変更された関数の名称と、変更されたテーブルの名称と、変更されたマクロの名称とが含まれている。
なお、プログラム変更管理票Dq2には、そのプログラム変更に係る制御名とそのプログラム変更に係るハードウェア名とが含められる。例えば、プログラム変更管理票Dq2に与えられる名称の中に、制御名とハードウェア名とを特定するための情報を含ませておくことにより、そのプログラム変更管理票がどの制御やどのハードウェアに関するものであるかを容易に管理することができる。
図14に戻る。システム100は、S41で取得した問題点管理票に関連付けられているプログラム変更管理票が存在するか否かを判定する(S43)。そして、その問題点管理票にプログラム変更管理票が関連付けられている場合(S43:YES)、システム100は、その問題点管理票の「対応区分」が「ハードウェア対応」であるか否かを判定する(S44)。
「ハードウェア対応」に関する問題点管理票である場合(S44:YES)、システム100は、この問題点管理票から「重要度」を抽出する(S45)。また、システム100は、この問題点管理票に対応付けられている一つまたは複数のプログラム変更管理票から、修正されたプログラム制御名や、修正されたソースファイル名、修正された関数名、修正されたテーブル名、修正されたマクロ名及びこれらの修正が施されたハードウェアの名称をそれぞれ取得する(S46)。システム100は、これらの取得した各情報を、ハードウェア対応プログラム変更案件テーブル131Aにエントリさせる。
ここで、図16を参照する。図16は、ハードウェア対応プログラム変更案件テーブル(以下、「変更案件テーブル」とも呼ぶ)131Aの一例を示す説明図である。この変更案件テーブル131Aは、例えば、インデックス番号と、修正に係るハードウェアのプログラム変更管理票番号(P番)と、問題点管理票番号(M番)と、その修正の原因となった不具合の重要度と、修正されたプログラム制御名と、修正されたファイル名と、修正された関数名と、その修正の対象となるハードウェア名とを対応付けることにより構成される。なお、このほかに、修正されたマクロ名やテーブル名を追加することもできる。
このように、システム100は、その問題点管理票がハードウェアに関連する場合、その問題点管理票に対応付けられている全てのプログラム変更管理票から、修正されたソースファイルや関数等の情報を抽出し、変更案件テーブル131Aに登録する。その問題点管理票にプログラム変更管理票が一つも対応付けられていない場合(S43:NO)、システム100は、S44〜S47をスキップする。
そして、システム100は、未解析の問題点管理票が残っているか否かを判定し(S48)、未解析の問題点管理票が存在する場合(S48:YES)、次の問題点管理票に移動して(S49)、上述したS41〜S47の処理を繰り返す。
解析すべき全ての問題点管理票を解析した場合(S48:NO)、システム100は、ハードウェア対応案件統計テーブル(以下、「案件統計テーブル」とも呼ぶ)131Bを生成し(S50)、本処理を終了する。
図17は、ハードウェア対応案件統計テーブル131Bの一例を示す説明図である。この案件統計テーブル131Bは、例えば、インデックス番号と、関数名と、その関数に関連する不具合の重要度別の発生件数とを対応付けることにより構成可能である。
図18は、図2中のハードウェア依存度分析部140により実行されるハードウェア依存度分析処理の概要を示すフローチャートである。システム100は、外部レジスタを起点とする各関数及び各マクロ間のクロスリファレンス階層を検出する(S61)。次に、システム100は、クロスリファレンス階層に基づいて、外部レジスタと各関数及び各マクロとの論理的な距離(Depth)をそれぞれ求める(S62)。
ここで、図19に基づいて、クロスリファレンス階層と距離(Depth)との関係を説明する。図19の上部左側に示すように、外部レジスタを起点とし、その外部レジスタを使用する関数やマクロ(マクロ内の関数。以下両者をまとめて「関数」と呼ぶ場合がある)の繋がり方を示すものが、クロスリファレンス階層図である。例えば、図に示す例では、外部レジスタは関数1によって直接的に使用されており、これらの外部レジスタ及び関数1は、マクロ内に存在している。
そして、関数1の演算結果は関数2によって使用され、関数2の演算結果は関数3及び関数4によってそれぞれ使用されている。また、関数3の演算結果は関数5によって使用されている。
ここで、本実施例では、外部レジスタと各関数との間の論理的な距離、換言すれば、外部レジスタとの親密度をDepthという単位で考える。外部レジスタから遠ざかるほど、Depthの値が大きくなるように、設定されている。例えば、関数1は、外部レジスタを直接使用するため、そのDepthは「1」となる。関数2は、関数1を介して外部レジスタを使用するため、そのDepthは「2」となる。以下同様に、外部レジスタからの論理的な距離が1段階ずつ遠ざかるに従って、Depthの値も1つずつ増加する。
図19の下側に示すように、Depthの値とハードウェアへの依存度とは、逆比例の関係に立つ。Depthの値が小さければ小さいほど、外部レジスタへの親密度、接近度合が高まり、その結果、その外部レジスタに関連するハードウェアへの依存度が増大する。逆に、Depthの値が大きくなると、その外部レジスタを間接的に使用することとなり、ハードウェアへの依存度が低下する。外部レジスタからの論理的な距離が遠くなればなるほど、その外部レジスタに関連するハードウェアの仕様が変更された場合でも、その変更による影響が途中で吸収されてしまい、影響を受けにくくなる。
図18に戻る。システム100は、ある外部レジスタについて、そのクロスリファレンス階層及びDepthをそれぞれ求めた後(S61,S62)、次に解析すべき外部レジスタが存在するか否かを判定する(S63)。システム100は、全ての外部レジスタについてクロスリファレンス階層及びDepthをそれぞれ求めるまで、S61及びS62の処理を繰り返す(S63:YES)。全ての外部レジスタについて解析を終了した場合(S63:NO)、システム100は、各関数がその外部レジスタにアクセスする回数をそれぞれ算出する(S64)。
システム100は、Depthに基づいて、各関数毎にそれぞれ第1ハードウェア依存度指標HD1を算出する(S65)。図19に示したように、Depthの値とハードウェアへの依存度とは逆比例の関係にある。そこで、システム100は、Depthの値が小さくなるほど第1ハードウェア依存度指標HD1の値が大きくなるように、第1ハードウェア依存度指標HD1を算出する。例えば、Depth=1の場合はHD1=10、Depth=2の場合はHD1=9、Depth=3の場合はHD1=8等のように、システム100は、0〜10の自然数の範囲内で第1ハードウェア依存度指標HD1を設定することができる。
次に、システム100は、各関数が外部レジスタにアクセスする回数に基づいて、第2ハードウェア依存度指標HD2をそれぞれ算出する(S66)。この第2ハードウェア依存度指標HD2は、例えば、その関数の総ステップ数に占める外部レジスタへのアクセス行数(HD2=外部レジスタにアクセスする行の総数/その関数の総ステップ数)によって算出することができる。
図20は、第2ハードウェア依存度指標HD2を算出する様子を模式的に示す説明図である。各関数は、それぞれ複数の行(ステップ)から構成されており、必要な箇所で必要な外部レジスタを呼び出している。
そこで、その関数内において、外部レジスタにアクセスする行の数(アクセス回数)を各外部レジスタ毎にそれぞれ算出すると共に、その関数の総ステップ数を求める。そして、各外部レジスタへアクセスする行数を総ステップ数でそれぞれ除算した値を第2ハードウェア依存度指標HD2として用いる。割り切れない場合は、四捨五入や丸めによって整数とすることができる。このように、その関数内で外部レジスタを呼び出す頻度が大きければ大きいほど、その外部レジスタに関連するハードウェアへの依存度が高いと考えることができる。
図18に戻る。システム100は、各ハードウェア依存度指標HD1,HD2をそれぞれ求めた後(S65,S66)、これら各ハードウェア依存度指標HD1,HD2に基づいて、第3ハードウェア依存度指標HD3を算出する(S67)。この第3ハードウェア依存度指標HD3は、例えば、各ハードウェア依存度指標HD1とHD2とを乗算することにより求めることができる(HD3=HD1×HD2)。なお、HD1,HD2のいずれかを重視する場合は、重み付けすることもできる。
そして、システム100は、第3ハードウェア依存度指標HD3をハードウェア依存度統計テーブル141にエントリさせる(S68)。このハードウェア依存度統計テーブル141は、図2中では、「ハードウェア依存度情報」として示されている。
図21は、ハードウェア依存度統計テーブル141の一例を示す説明図である。このテーブル141は、例えば、関数名と、ハードウェア種別と、ハードウェア分類と、ハードウェア依存度(HD3)とをそれぞれ対応付けることにより構成可能である。ハードウェア種別とは、その関数が外部レジスタを介して使用するハードウェアの種別を意味し、ハードウェア分類とは、その外部レジスタの分類先グループ名を示す。このようにして、各関数毎に、どのハードウェアにどの程度依存しているかを一覧形式で把握できる。
図22は、図2中のソース影響度分析部150により実行されるソフトウェア影響度分析処理の概要を示すフローチャートである。まず、システム100は、ソフトウェア影響度ESの値を初期化する(S71)。
次に、システム100は、以下に述べるように、複数種類の影響度ファクタをそれぞれ求め(S72〜S74)、各影響度ファクタの値を重み付けして(S75)、ソフトウェア影響度ESを算出する(S76)。
第1の影響度ファクタとして、システム100は、各ハードウェアに関連する関数をそれぞれ抽出し、抽出された各関数のハードウェア依存度指標(HD3)を0〜10の値に正規化する(S72)。
第2の影響度ファクタとして、システム100は、各関数の追跡複雑度を0〜10の値にランク付けする(S73)。
第3の影響度ファクタとして、システム100は、各関数のハードウェア対応案件量(図17参照)を0〜10の値にランク付けする(S74)。
そして、システム100は、各影響度ファクタで得られたランクを重み付けして総和を求め、この総和を0〜10の値で正規化する(S75)。この総和を正規化して得られた総合ランクは、そのハードウェアがその関数に与える影響度を示す。
システム100は、ソフトウェア影響度ESにS75で得られた影響度を加算する(S76)。そして、システム100は、現在分析中のハードウェアについてソフトウェア影響度ESを未算出の関数が存在するか否かを判定する(S77)。ソフトウェア影響度ESを未だ算出していない関数が存在する場合(S77:YES)、システム100は、S72〜S76の処理を繰り返す。
そのハードウェアに関する全ての関数についてソフトウェア影響度ESをそれぞれ算出した場合(S77:NO)、システム100は、算出された各ソフトウェア影響度ESをソフトウェア影響度統計テーブル23にエントリさせる(S78)。システム100は、分析すべき他のハードウェアが存在するか否かを判定し(S79)、未だ分析していないハードウェアが存在する場合(S79:YES)、S71〜S78の処理を繰り返す。
図23は、ソフトウェア影響度統計テーブル151の一例を示す説明図である。この統計テーブル151は、図2中では「ソフトウェア影響度情報」として示されている。この統計テーブル151は、例えば、各ハードウェア毎に、そのハードウェアに属するレジスタの分類と、そのレジスタのソフトウェアに対する影響度(ES)と、そのソフトウェアへの影響を修正するために必要な推定工数(人×月)とを、それぞれ対応付けることにより構成することができる。なお、レジスタ分類の「ALL」とは、そのハードウェアに属する全てのグループのレジスタを意味する。つまり、レジスタ分類が「ALL」のソフトウェア影響度は、そのハードウェアに関する各グループ毎のソフトウェア影響度を集計した値となる。また、推定工数は、ソフトウェア影響度の単位値毎に必要な工数を予め定義しておくことにより求めることができる。
なお、ソフトウェア影響度ESを求めるための基礎指標として第1影響度ファクタ〜第3影響度ファクタの3種類を挙げたが、本発明はこれに限らず、他のファクタを考慮することもできるし、3種類の影響度ファクタうちいずれか一つまたは二つの影響度ファクタを除くこともできる。また、ハードウェアの種類毎に、ソフトウェア影響度を求めるための影響度ファクタを違える構成でもよい。さらに、追跡複雑度情報としては、以下のような定量情報を利用することもできる。例えば、親関数と子関数の第1合計値 (Fan-IN+Fan-OUT)を用いることができる。または、親関数と子関数の第2合計値(Trans Fan-IN+Trans Fan-OUT)を用いることができる。この第2合計値は、直接的ないし間接的に親子関係としてつながっている関数の数の合計である。さらには、Halstead's metricsのMental EffortやComplexity等のメトリックス情報を用いることもできる。
本実施例は上述のように構成されるので、以下の効果を奏する。本実施例では、ハードウェア要素とソフトウェア要素との相互依存関係を把握し、ハードウェア要素の変更がソフトウェア要素に与える影響の範囲及び大小を予測する。従って、ソフトウェアとハードウェアとが連携したシステム製品であるストレージ装置10の開発をより適切に支援することができる。即ち、ハードウェアとソフトウェアとの高度な連携を意識して、システム製品の開発を行うことができ、開発作業の作業効率が向上する。
また、本実施例では、例えば、ソフトウェアへの影響が広範囲かつ深刻なハードウェアの変更を防止することも可能となる。従って、ソフトウェアの手直し作業や検証作業の発生を抑えることができ、ソフトウェアを効率的に開発することができ、開発コストを低減させることができる。
さらに、本実施例では、ソフトウェア影響度情報をハードウェア開発セクション及びソフトウェア開発セクションの両方がそれぞれ参照可能としている。従って、ハードウェア開発者は、ハードウェアがソフトウェアに与える影響を考慮しながら、そのハードウェアの設計を行うことができ、一方、ソフトウェア開発者は、ソースファイルがどのハードウェアにどの程度依存しているのかを把握しながら、そのソースファイルを作成することができる。ハードウェア開発者とソフトウェア開発者との間に共通の認識を持たせることができ、協調して開発作業を進めることが可能となる。
また、新機種のストレージ装置を開発する場合に、旧機種のストレージ装置に関するソフトウェア影響度を参照することにより、開発に必要な工数、期間、コスト等を予測することができる。
なお、本発明は、上述した実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。本発明は、システム製品であるストレージ装置に用いた場合に特に有用であるが、ストレージ装置に限らず、他の種々のシステム製品にも広く適用可能である。そのようなシステム製品としては、例えば、携帯電話、携帯情報端末、インテリジェント化された各種家電製品、航空機や船舶等を挙げることができる。
本発明の実施形態の全体概要を示す説明図である。 本発明の実施例に係る開発支援システムの全体を示すブロック図である。 開発支援システムが用いられるストレージ装置の外観図である。 ストレージ装置のブロック図である。 CHAとDKAの関係及び両者の概略構造を示す説明図である。 ソース解析処理を示すフローチャートである。 ソースファイルをプリプロセッシングする様子を模式的に示す説明図である。 関数間の親子関係を模式的に示す説明図である。 関数単位で集計したソースメトリックス情報テーブルを示す説明図である。 制御単位で集計したソースメトリックス情報テーブルを示す説明図である。 ハードウェアドキュメント情報解析処理を示すフローチャートである。 ハードウェア仕様情報の説明図である。 ハードウェアI/F情報テーブルの説明図である。 品質管理情報解析処理のフローチャートである。 問題点管理票及びプログラム変更管理票をそれぞれ示す説明図である。 ハードウェア対応プログラム変更案件テーブルの説明図である。 ハードウェア対応案件統計テーブルの説明図である。 ハードウェア依存度分析処理を示すフローチャートである。 外部レジスタを起点とする各関数間のクロスリファレンス状態及び外部レジスタとの論理的な距離(Depth)とハードウェア依存度との関係をそれぞれ示す説明図である。 外部レジスタへアクセスする行数と総ステップ数との比率からハードウェア依存度指標を求める様子を示す説明図である。 ハードウェア依存度統計テーブルの説明図である。 ソフトウェア影響度分析処理を示すフローチャートである。 ソフトウェア影響度統計テーブルの説明図である。
符号の説明
1…ストレージシステム、2…開発支援システム、2A〜2C…データベース、3…ハードウェア開発セクション、4…ソフトウェア開発セクション、10…ストレージ装置、11…基本筐体、12…増設筐体、13…制御パッケージ、14…電源ユニット、15…バッテリユニット、16…冷却ファン、21…チャネルアダプタ(CHA)、21A…通信ポート、22…ディスクアダプタ、23…キャッシュメモリ、24…共有メモリ、 25…スイッチ部、26…ディスクドライブ、27…RAIDグループ、28…サービスプロセッサ(SVP)、30…ホスト、31…管理端末、100…ソフトウェア開発支援システム、110…ソフトウェア仕様情報解析部、111…ソース構造解析データ、111A,111B…ソースメトリックス情報テーブル、120…ハードウェア仕様情報解析部、121…インターフェース解析データ、130…品質管理情報解析部、131…プログラム変更管理情報、131A…ハードウェア対応プログラム変更案件テーブル、131B…ハードウェア対応案件統計テーブル、140…ハードウェア依存度分析部、141…ハードウェア依存度情報、150…ソース影響度分析部、151…ソフトウェア影響度情報、160…情報提供部、211、221…ポート制御部、212,222…メインプロセッサ、213,223…ローカルメモリ、216,226…プロセッサ、217,227…ハードウェアレジスタ、310,320…端末、CN1〜CN4…通信ネットワーク、Dh…ハードウェア仕様情報、Dq…品質管理情報、Dq1…問題点管理票、Dq2…プログラム変更管理票、Ds…ソフトウェア仕様情報、ES11〜ESmn…ソフトウェア要素、Eh1〜Ehn…ハードウェア要素

Claims (2)

  1. 上位装置との間のデータ授受を制御するための情報処理システムを有する上位通信制御部と、記憶領域を提供する記憶デバイス群と、この記憶デバイス群との間のデータ授受を制御するための情報処理システムを有する下位通信制御部と、
    前記上位通信制御部及び前記下位通信制御部により共用されるメモリ部と、
    前記上位通信制御部及び前記下位通信制御部にそれぞれ設けられ、これら各通信制御部の前記各情報処理システムをそれぞれ制御するソフトウェアと、を備えたストレージ装置の前記ソフトウェアの開発を支援する開発支援システムであって、
    前記ソフトウェアに関する仕様情報を取得して、前記ソフトウェアを構成する所定のソフトウェア要素群の構造を解析するソフトウェア情報解析部と、
    少なくとも前記上位通信制御部及び前記下位通信制御部をそれぞれ構成するハードウェアに関する仕様情報を取得して、前記ハードウェアを構成する所定のハードウェア要素群の構造を解析するハードウェア情報解析部と、
    前記ソフトウェア情報解析部による解析結果と前記ハードウェア情報解析部による解析結果とに基づいて、前記ハードウェア要素群と前記ソフトウェア要素群との間の依存関係を分析する依存関係分析部と、
    前記依存関係分析部による分析結果に基づいて、前記ハードウェア要素群のいずれか一つまたは複数のハードウェア要素を変更した場合に、その変更が前記ソフトウェア要素群に与える影響度を予測する影響度予測部と、
    前記影響度予測部により予測された影響度を外部に提供する情報提供部とを備え、
    前記ソフトウェアに関する仕様情報には、少なくともソースプログラムが含まれ、
    前記ハードウェアに関する仕様情報には、少なくとも前記ソフトウェアと前記ハードウェアとのインターフェースに関する情報が含まれ、
    前記ソフトウェア要素群には、少なくとも前記ソースプログラムに含まれている関数群が含まれ、
    前記ハードウェア要素群には、少なくとも前記インターフェースに関するレジスタ群が含まれ、
    (1)前記ソフトウェア情報解析部は、前記関数群の各関数間の相互関係を解析し、
    (2)前記ハードウェア情報解析部は、前記レジスタ群をその機能別に分類し、
    (3)前記依存関係分析部は、
    (3A)前記レジスタ群の各レジスタ毎に、該レジスタを直接的または間接的に利用する前記関数群の階層構造を分析し、この分析された階層構造に基づいて、前記各レジスタ毎に、該レジスタと該レジスタを利用する関数との論理的な距離を検出し、
    (3B)前記関数群の各関数毎に、前記レジスタ群の利用状況を分析し、
    (3C)前記検出された論理的な距離と前記分析された利用状況とに基づいて、前記各関数が前記各レジスタに依存する依存度合をそれぞれ検出し、
    (4)前記影響度予測部は、前記依存関係分析部により検出された前記依存度合に基づいて、前記レジスタ群の各レジスタ毎に、該レジスタに対応する前記ハードウェアを変更した場合の影響度をそれぞれ検出する、ようになっているストレージ装置のソフトウェア開発支援システム。
  2. 前記影響度予測部は、前記ソフトウェアの品質管理情報を取得し、この取得した品質管理情報と前記依存度合とに基づいて、前記各影響度をそれぞれ検出するものである請求項に記載のストレージ装置のソフトウェア開発支援システム。
JP2004339832A 2004-11-25 2004-11-25 ストレージ装置のソフトウェア開発支援システム及びソフトウェア開発支援方法 Expired - Fee Related JP4688478B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004339832A JP4688478B2 (ja) 2004-11-25 2004-11-25 ストレージ装置のソフトウェア開発支援システム及びソフトウェア開発支援方法
US11/034,849 US7353496B2 (en) 2004-11-25 2005-01-14 Storage controller software development support system and software development support method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004339832A JP4688478B2 (ja) 2004-11-25 2004-11-25 ストレージ装置のソフトウェア開発支援システム及びソフトウェア開発支援方法

Publications (2)

Publication Number Publication Date
JP2006146842A JP2006146842A (ja) 2006-06-08
JP4688478B2 true JP4688478B2 (ja) 2011-05-25

Family

ID=36568602

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004339832A Expired - Fee Related JP4688478B2 (ja) 2004-11-25 2004-11-25 ストレージ装置のソフトウェア開発支援システム及びソフトウェア開発支援方法

Country Status (2)

Country Link
US (1) US7353496B2 (ja)
JP (1) JP4688478B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060129781A1 (en) * 2004-12-15 2006-06-15 Gellai Andrew P Offline configuration simulator
US7793269B2 (en) * 2005-02-15 2010-09-07 Ebay Inc. Parallel software testing based on a normalized configuration
US20070174699A1 (en) * 2006-01-05 2007-07-26 Honeywell International Inc. Automated generation of operational monitor platform for computer boards
US8286149B2 (en) * 2007-10-15 2012-10-09 International Business Machines Corporation Apparatus for and method of implementing feedback directed dependency analysis of software applications
US8689172B2 (en) * 2009-03-24 2014-04-01 International Business Machines Corporation Mining sequential patterns in weighted directed graphs
JP5236564B2 (ja) * 2009-04-20 2013-07-17 株式会社日立製作所 ソフトウェア再利用支援方法及び装置
US8489826B2 (en) * 2010-03-25 2013-07-16 Hitachi, Ltd. Storage controller and storage subsystem with added configurable functions
EP2608024A1 (en) * 2011-12-22 2013-06-26 Tata Consultancy Services Limited Computing reusability index of software assets
US10089463B1 (en) * 2012-09-25 2018-10-02 EMC IP Holding Company LLC Managing security of source code
WO2015145540A1 (ja) * 2014-03-24 2015-10-01 株式会社日立製作所 開発情報生成装置およびその生成方法
WO2015195676A2 (en) * 2014-06-16 2015-12-23 Silverthread, Inc. Computer-implemented tools and methods for extracting information about the structure of a large computer software system, exploring its structure, discovering problems in its design, and enabling refactoring
CN104898591B (zh) * 2015-03-27 2017-10-20 西安交通大学 一种智能家电协同控制方法
CN105354030A (zh) * 2015-11-06 2016-02-24 天脉聚源(北京)教育科技有限公司 一种控制窗体最小化的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001034567A (ja) * 1999-07-16 2001-02-09 Hitachi Ltd 外部記憶サブシステムおよび外部記憶サブシステムの制御方法
JP2001325100A (ja) * 2000-05-15 2001-11-22 Mitsubishi Electric Corp プログラム解析装置
JP2004234556A (ja) * 2003-01-31 2004-08-19 Hitachi Ltd 画面データ生成方法、コンピュータ、プログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0934698A (ja) * 1995-07-20 1997-02-07 Hitachi Ltd ソフトウェア生成方法及び開発支援方法
JP3708199B2 (ja) * 1996-01-17 2005-10-19 株式会社東芝 コンカレントエンジニアリング支援システム及びコンカレントエンジニアリング支援方法
US6006022A (en) * 1996-11-15 1999-12-21 Microsystem Synthesis, Inc. Cross-linked development and deployment apparatus and method
US6389379B1 (en) * 1997-05-02 2002-05-14 Axis Systems, Inc. Converification system and method
US6810373B1 (en) * 1999-08-13 2004-10-26 Synopsis, Inc. Method and apparatus for modeling using a hardware-software co-verification environment
US7107202B1 (en) * 2000-01-31 2006-09-12 Intel Corporation Method and apparatus for hardware and software co-simulation
JP4060552B2 (ja) * 2001-08-06 2008-03-12 株式会社日立製作所 記憶装置システム、および、記憶装置システムの構成方法
JP2004272830A (ja) 2003-03-12 2004-09-30 Hitachi Ltd ソフトウェア開発支援装置
US7243059B2 (en) * 2003-04-24 2007-07-10 International Business Machines Corporation Simulation of hardware based on smart buffer objects

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001034567A (ja) * 1999-07-16 2001-02-09 Hitachi Ltd 外部記憶サブシステムおよび外部記憶サブシステムの制御方法
JP2001325100A (ja) * 2000-05-15 2001-11-22 Mitsubishi Electric Corp プログラム解析装置
JP2004234556A (ja) * 2003-01-31 2004-08-19 Hitachi Ltd 画面データ生成方法、コンピュータ、プログラム

Also Published As

Publication number Publication date
US7353496B2 (en) 2008-04-01
US20060117306A1 (en) 2006-06-01
JP2006146842A (ja) 2006-06-08

Similar Documents

Publication Publication Date Title
US7353496B2 (en) Storage controller software development support system and software development support method
JP7129465B2 (ja) コグニティブ階層型ストレージ管理システムを訓練する際のユーザ満足度の最適化
Dunn Software defect removal
US7676445B2 (en) Apparatus, system and method for developing failure prediction software
US6182245B1 (en) Software test case client/server system and method
CN104679602B (zh) 用于在存储区域网络中处置事件的方法和系统
US8135995B2 (en) Diagnostic data repository
Thereska et al. Ironmodel: Robust performance models in the wild
Chen et al. Towards energy efficient mapreduce
CN103092742B (zh) 程序日志记录优化方法和系统
JP4514501B2 (ja) ストレージシステム及びストレージシステムの障害解消方法
US9311176B1 (en) Evaluating a set of storage devices and providing recommended activities
Brosch et al. Reliability prediction for fault-tolerant software architectures
CN104657255A (zh) 用于监控信息技术系统的计算机实现的方法和系统
Di et al. Exploring properties and correlations of fatal events in a large-scale hpc system
WO2019097360A1 (en) Machine learning to enhance redundant array of independent disks rebuilds
US20220206765A1 (en) Intermediate representation construction method, compiler, and server
Zhang et al. Duplicate bug report detection: How far are we?
JP5439775B2 (ja) 障害対応プログラム、障害対応装置、及び障害対応システム
US10380313B1 (en) Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration
US10783042B2 (en) System and method of assessing and managing storage device degradation
CN101681362B (zh) 存储优化方法
US10887186B2 (en) Scalable web services execution
Hukerikar et al. A pattern language for high-performance computing resilience
CN112559331A (zh) 测试方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070913

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110126

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110215

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110215

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140225

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees