安心・安全なユビキタス社会へ

ソフトウェア工学の現状と課題

 

東京情報大学総合情報学部 教授
杉本 正勝(すぎもと まさかつ)

東京情報大学総合情報学部情報システム学科(システム開発分野システムデザイン研究室)教授。情報処理学会会員、日本ソフトウェア科学会会員。

主な研究テーマ:ソフトウェア工学、システム設計論

産業におけるソフトウェアの役割はますます増加している。ソフトウェアの生産性/信頼性/保守性の向上をめざす体系がソフトウェア工学である。ここでは、ソフトウェア作りの現状と今後について紹介する。

ソフトウェア危機

ソフトウェア工学、つまり“Software Engineering”という言葉が最初に使われたのは、1975年の国際会議である。1960年代半ば、IBM社のS360と呼ぶ汎用大型機向けのOS開発の経験などから、当時は「ソフトウェア危機」という言葉があった。ソフトウェアが期間内に出来ない、見積りを大幅にオーバーする、ソフトウェアの品質が悪いなどあり、工学的手法で何とか解決しようと研究が始まった。これがソフトウェア工学である。

それ以降30数年間、ソフトウェア工学の研究は、その時々の課題を解決してきた。しかし、コンピュータのCPUやメモリの進歩は、ムーア氏の経験則(半導体の集積度は1年半または2年で2倍となる)にあるように急激であった。例えばプログラムで使用できるメモリの量は、30数年間で、100,000倍以上にもなる。この間、4〜5年単位でソフトウェア開発技術は大きく変化してきた。現在も「ソフトウェア危機の状況」は変わっていない。

激しい開発競争

今日、産業におけるソフトウェアの役割はますます増している。インターネット利用の進展、今後のユビキタスコンピューティング/ユビキタスネットワーキングの時代に向けて、開発すべきソフトウェアの量は飛躍的に増大する。効率的なソフトウェア開発法と高信頼度のソフトウェア実現への期待が大きい。

ニュース等でソフトウェアの欠陥による事故等が報道される。何故ソフトウェアの欠陥が最近目立つのか。その原因として挙げられるのは@ソフトウェアを作る対象分野が急激に増大、A製品の開発競争が激しく、次々にソフトを開発する必要がある、B優秀なソフトウェア開発者を大量に準備できない、Cソフトウェア開発技術が属人的であり、技術移転が難しい等である。

ここでは、ソフトウェアの欠陥の大幅減少を目指す取組みに焦点をあてる。

ソフトウェアの欠陥率

ソフトウェアの欠陥をバグという。ソースプログラムの1千行にどれくらいバグが含まれているかが第一義的な尺度である。商用システムでは、特別に高品質をめざしたソフトウェアで、3個程度というデータがある。

コンピュータとネットワークが社会生活の隅々まで行き渡るとされるユビキタス社会に向けては、ソフトウェアの欠陥率を1桁、更に2桁と減少させる必要がある。

IT産業は一見華やかであるが、ITを支える日本のソフトウェア産業にはいろいろの問題点が指摘されている。「ある程度の信頼度を持つソフトウェアを作り出しているが採算的には厳しい」と言われる。「ソフトウェアは大幅な輸入超過」のデータがある。その解決策として、近年インド、中国などのソフトウェア技術者にソフトウェア開発を依頼するオフショアリング(Offshoring)が盛んになっている。このままでは、産業の基盤を支えるソフトウェア開発技術が日本には定着しないのではないかと筆者は危惧している。とはいえ、先ほどのムーア氏の経験則によるハードウェアの進歩が続く中で、日本にチャンスが大いにあると考えている。

バグのない開発に向けて

ソフトウェア工学分野では、バグのないソフトウェア開発に向けて、次のような解決策がとられてきた。

仕様技術:作るべきソフトウェアの機能・性能等を正確に記述するための技術。

モデリング:問題の本質をうまく表現するモデルに当てはめてゆく技術。モデルとしては、オブジェクト指向モデル、データフローモデル、機能階層モデル、E−Rモデル、ペトリネットモデル、有限状態機械モデルなどがある。

抽象化とモデルの利用:大規模で複雑な事柄を抽象化する技術。抽象化にはモデルの適用が重要な役割を果たす。

段階的詳細化:抽象化された設計内容を段階的に詳細化して、最終的には全ての条件を含んだプログラムとする技術。

可視化技術:ソフトウェアで扱う対象はデータであり目に見えない。ソフトウェアも目に見えない。目に見えないものを図や表、あるいはアニメーションで表示して、目に見えるようにすることも重要である。UML(Unified Modeling Language)などが可視化を扱う。

プログラムのテスト:プログラミング言語で書かれたプログラムのテスト技術。

バグのないソフトウェアに向けて、ここでは2つのアプローチを紹介する。

知識ベース利用の自動設計

ソフトウェアを設計するとき、設計作業のおおもととなるのは設計仕様書である。現在は設計者が設計仕様書を見ながら詳細化など、作業を進める。将来的にはこの設計仕様書をコンピュータの中に格納して、ある程度自動的に設計作業を行ってしまうことができるだろう。知識ベース利用の自動設計である。

知識ベース利用のソフトウェア自動設計は、本質的にはセマンティックWebと同じ課題に取組むことになる。ネットワーク中にどのように知識を蓄えたらよいか? 筆者の研究室ではJSONというデータ格納方式に注目し研究を進めている。具体的にはJSONデータを基にしたWeb KBJ(Web KB in JSON)を使用、高度な知識の実現を目指している。図はWeb KBJを用いた筆者のWebサイトの例である。

形式仕様記述言語

ソフトウェアの仕様を正確に記述することが重要である。形式仕様記述言語の例としてVDM++がある。非常に基本的な数学を利用して作るべきソフトウェアの仕様を書く。集合、順列、関数(写像)、関係を使った記法である。

仕様に含まれる矛盾点の検出や、仕様からプログラムの自動生成等とつなげる。VDM++を利用して大規模ソフトウェアを作成し、優れた結果を得たと言う報告がある。ソースプログラム千行につき、バグ1個程度。通常の作り方より1桁少ない結果である。

また、おサイフケータイで知られるFelicaのICチップ向けのソフトウェア開発にVDM++を利用し、よい結果が得られたという報告もある。

世界に誇るレベルに

コンピュータの利用途が拡大し、ユビキタスコンピューティング/ユビキタスネットワーキングの時代に入りつつある。安心・安全なユビキタス社会実現に向けて、バグのないソフトウェアをうみだす新しいソフトウェア工学の体系を目指したい。IT産業をはじめとする多くの産業を支えるソフトウェア開発技術を世界に誇るレベルにすべくチャレンジしてゆきたい。



・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

Web KBJと名付けた知識ベースによるWebページの記述 インターネットの分野ではセマンティックWebと呼ぶ技術の研究が盛んである。ネットワーク中に知識を集め、どこからでも機械的に(コンピュータが)アクセスできるようにする。

Web KBJによりWebページの例 (筆者のサイトhttp://www.rsch.tuis.ac.jp/~sugimoto/index.htsml

×CLOSE