21章 ソフトウェア設計手法の潮流(担当:kando@nerimadors.or.jp)
Trends in Software Design Methodos
l ここまで並行・実時間システムの設計手法を幾つか概観し、既存の設計手法に基づく2つの設計手法、Ada-based Design Approach for Real-Time Systems(ADARTS)とConcurrent Design Approach for Real-Time Systems(CODARTS)について述べた。(これらについては第2部で幾つかの例を挙げて詳説する。)
l この章では、ソフトウェア設計手法(並行・実時間システムには限らない)に関する最近の潮流について幾つか述べる。
l それらの中では「効率解析と実時間設計」が最も実時間システムに深く関連している。
異なる設計手法における概念を協調させ、統合して折衷的な設計手法が作られてきた。
ADARTS、CODARTSやEntity Life Modelingの間でもこのような努力が払われてきた。
l CODARTS: タスク構造化(DARTS)、モジュールとオブジェクト構造化(NRLソフトウェア費用削減法とOOD法)、実体モデル(JSD法)、実時間解析の記法を統合。
l Entity Life Modeling: JSD法、情報隠蔽モジュールとAdaのタスクを統合。
部品レベルでのソフトウェアの再利用(コード部品は開発者の手によって独自に開発された部分と結合される)が図られてきた。
→ 再利用可能なソフトウェア・アーキテクチャ(ドメインに特化したソフトウェア・アーキテクチャ)へと進行する。
既存の解析・設計手法は特定のシステムの設計に利用できる。
→ あるドメインにおけるシステムの一族について、一括して仕様記述・設計できるドメイン解析手法のようなものが開発される。
l あるアプリケーションのドメインでの類似と変形を反映した、ドメインに特化したソフトウェア・アーキテクチャの開発を可能にし、個々の対象システムはドメインに特化したソフトウェア・アーキテクチャを個々の必要に応じて調整して仕立てる。
l ソフトウェアの仕様記述と開発手法に関連して、部品間の整合性を検査する限定された能力をいくらか備えるグラフィカルなエディタ程度のCASE(Computer Assisted Sofware Engineering)ツールは数多く存在する。
l ソフトウェア開発環境の潮流は、ソフトウェアのライフ・サイクル全体にわたって支援を行い、特定のソフトウェア設計手法と設計手法の発見的な部分を強調させる方向に向かう。
CASEツールが作られたことによって、仕様や設計を実行して見られるようになり、設計者が設計を直接検証できるようになった。
例: 状態遷移図に基づくStatemate[Harel88a]。Statemateは開発するシステムの機能と挙動を仕様化でき、それを実行して論理的な整合性を検査できる。
設計者が設計の効率を解析できるように、実時間ソフトウェアの設計手法は効率解析技法とよく統合する必要がある。
→ 設計を評価してシステムの目的に最適な設計を選択できる。
様々な効率解析とモデルの化技法: Petriネット、シミュレーション、実時間スケジューリング理論。
例:
l Timed Petriネット解析を利用するために設計をPetriネットに写像する.
l 実時間スケジューリング理論(11章、19章)は特に厳しい時間制約を満たすかどうかを解析するのに適している。 (この分野での注目すべき動きの多くはSEI(Software Engineering Institute、著者の所属先)で行われていて、複雑で厳しい時間制約を持つシステムを実際的に解析できるように拡張することを目指している。)
多くの設計手法は発見的な規準を利用する。
例: DARTSのタスク構築規準、構造化設計のモジュール結合・凝集規準
これらの規準はので、アルゴリズム内にうまく組み込むことができない。
→ これらの発見的規準を体系化する知識ベースのツールが開発されてきている。
→ これらのツール(designer’s assistant)はアーキテクチャの設計で設計チームを助けられる。
l ソフトウェアの仕様記述と設計手法では、以上の他に形式的な手法が増加する傾向がある。
l 形式的手法では、形式的な仕様記述言語(構文と意味が数学的に定義されている)が用いられる。
l 実時間システム向けの手法は、未だ初等的で研究段階。
l VDM(Vienna Development Method)、Z: プログラミング言語の意味論とコンパイラの構築の分野で成功してきた形式的手法。
l temporal logicやPetriネットに基づく手法: 並行・実時間システム向けを含む形式的手法の例。
l Box Structured Information Systems Method: 産業的なプロジェクトに異なるアプリケーション・ドメインでの形式的な手法を利用して成功した例。仕様と設計に形式的な手法を利用し、仕様、設計とコードの形式的な検証に利用。
l Statemate: 形式的な有限状態機械の手法に基づくCASEツールで実時間仕様の開発を助ける。