トップエスイー:ソフトウェア開発におけるトップレベル技術者の育成
早稲田大学/国立情報学研究所 鷲崎 弘宜
国立情報学研究所 田口 研治
国立情報学研究所 吉岡 信和
三菱総合研究所/国立情報学研究所 粂野 文洋
電気通信大学 田原 康之
国立情報学研究所/東京大学 本位田 真一
1. トップエスイーとは
社会で求められるソフトウェアは、量・質・種類の全てについて増大の一途にあります[1]。一方で、品質と納期に対する要求は厳しさを増しています。このような厳しい状況において、大規模・高品質・多品種・高生産を確実に追求するためには、理論や経験に裏づけされたソフトウェア工学技術の体系を適切に用いることが不可欠です。
しかしソフトウェア工学の分野では、「産業―アカデミア・ギャップ」[2]の存在が指摘されています。アカデミアには良い技術や方法論が多数ありますが、その活用の場を欠き、実践性を追及できていません。一方、産業界ではときにソフトウェア工学の習得と導入が欠けています。本稿ではこのギャップを克服する方策の1つとして、国立情報学研究所が実施している産学連携に基づいた人材育成プログラム「トップエスイー」(TopSE : Top Software Engineers )[3][4][5]をご紹介します。
国立情報学研究所は2004年度から2008年度まで、文部科学省/科学技術振興調整費の支援を受け、トップレベルのソフトウェア技術者の育成を目指した「トップエスイー:サイエンスによる知的ものづくり教育」を実施してきました。これまでに、1期生6名(12名が2006年度に修了)、2期生25名(企業から18名と大学院生7名)、3期生31名(企業から24名と大学院生7名)が受講しています。2009年度からは、より内容を充実させて新しいトップエスイーの教育プログラムが実施される予定です。
2. トップエスイーの教育目標と体制
トップエスイーの教育目標は、受講生が「ソフトウェアシステムの背後にある本質を把握し、モデルとして具体的に表現し、理論的基盤に基づいて体系的に分析・洗練化することで、高品質なソフトウェアシステムを高効率に開発するスキル」を習得することです。
その実現のために、産業界、大学、国立研究所が密に連携し、ネットワーク家電を主な対象ドメインとして教材開発と教育、普及に努めています。具体的には、講座ごとに大学関係者と企業とで作業部会を設立し、約1年かけて教材を開発しています。特に教材の題材として、企業からは、数年先に顕在化することが予想される実問題を持ち込んでもらっています。作業部会では、様々な最先端のツールを実問題に適用し、試行錯誤を繰り返しながら、有用なツールを見極めます。ツールを実問題に適用する際には、様々なノウハウが必要となりますので、それらを顕在化し教材としてまとめあげています。
例えば講座の1つである「設計モデル検証(基礎編)」では、HDレコーダ・DVDレコーダ向けのソフトウェアの設計と組込ボード上での実装を実問題として設定し、実問題に対してモデル検査ツールの活用により設計誤りの検出・修正作業を行うことで、モデル検査技術の有効性と難しさを体得させるものとなっています。
教育を実施する講師陣として、企業側から10名以上の技術者・研究者が参画し、大学側からも国立情報学研究所をはじめとして多数の大学・研究所より教員・研究者が参画し、総勢で約30名に及びます。
受講生としては、情報系大学院相当の計算機科学の知識を有していることを前提として、企業の若手エンジニアを中心に毎年20~30名ほどが、出願書類審査、筆記試験ならびに口頭試問を経て受講が認められ、1~2年間をかけて受講しています。 さらに、全国の大学や企業においても同等な教育を実施できるように、普及のための教材作成も合わせて実施しています。
3. ソフトウェア技術者が持つべきスキル
ソフトウェア開発において、技術者が有すべきスキルは多岐に渡ります。プログラマならばプログラミングスキル、アーキテクトならばアーキテクチャの設計スキル、プロジェクトマネージャならばプロジェクト管理スキルといった具合です。しかしそれぞれの職種におけるトップレベルの技術者育成を考えるとき、職種ごとに特化したスキルを修得する上での土台となる共通なスキルを識別することができます。大学院相当レベルの教育において、特定の職種に特化したスキル教育の準備と実施は有効とはいえないため、トップエスイーでは共通スキルの教育に注力しています。
その共通スキルは、実際のソフトウェア開発に着目して識別します。ソフトウェア開発プロセスを、システム要求分析・方式設計、ソフトウェア要求分析、方式設計、詳細設計、実装、テストという流れとして捉えるとしましょう。ここで、各フェーズでは中間成果物として何らかのモデルが構築されるため、ソフトウェア開発プロセスとは本質的には多段階のモデル変換工程と捉えることができます。その流れを図1に示します。各フェーズで構築される要求モデル、分析モデル、設計モデルといったモデル間の変換を経てソフトウェアシステムが出来上がるということです。
図1 多段階モデル変換としての開発プロセス
マネージャやアーキテクト、プログラマは、それぞれの立場でこれらのモデルに関わることになります。このように、ソフトウェア開発に関わる様々な職種において、モデリング能力を共通スキルの一つとして捉えることができます。ここでモデリング能力とは、良いモデルの構築・分析・検証・操作の能力を意味します。トップエスイーでは、その良いモデルを、「抽象化により事柄の本質を表わしている、最小かつ完備である、解釈の一意性が実現されているという性質を有した表現」と定義しています。
モデリングとは、狭義にはそのようなモデルを作成する行為であり、「表現のための道具の特性を踏まえた手順(モデリングプロセス)に従って対象を道具で表現していく」行為を意味しています。そのうえでトップエスイーでは、下記を備えることをモデリング能力として期待しています。
・抽象化や具象化の操作を含むモデリングプロセスが身に付いている
・厳格にモデル構築できる
・モデル間の関連性を把握できる
・保守性、再利用性、非機能性を踏まえたモデル構築できる
ソフトウェアシステムには、様々な視点での切り口が存在し、その切り口に基づいたモデリングの道具も多種多様です。さらに、それぞれのモデリングの道具には固有のモデリングプロセスがあります。トップエスイーでは、モデリングプロセスを問題解決と位置付けて、様々なモデリングの道具とプロセスを習得することが、高度なモデリング能力を身につける際の有効な手法と考えています。
ここで、最先端のモデリングツール(道具)の多くは、計算機科学に基づいています。例えばモデル検査ツールであるSPIN [6][7]の習得には、前提知識としてオートマトン、時相論理、抽象解釈などが必要です。トップエスイーでは、形式的な意味論を背景として持ち、その意味論を元に開発されている約20種類のツールを導入し、これらのソフトウェアツールをシャワーの如く、繰り返し学習させることとしています。その学習の過程で、計算機科学に関する知識を深耕させることができます。さらに、ツールを実問題に適用する過程で、モデリング能力が洗練化されることになります。このプロセスを繰り返すことで、モデリング能力の深耕と計算機科学の知識の深耕の両者を同時に達成でき、その結果としてソフトウェアツールを習得しつつ新たな問題への応用力も身につくことになります。
図2 ソフトウェアツール教育の効果
4. トップエスイーのカリキュラム
トップエスイーでは、将来のエンタープライズソフトウェアシステム開発および組込みソフトウェアシステム開発において、特に信頼性、効率性、変更容易性、セキュリティの達成が重要であると捉えています。そこで、それらの各品質特性の達成に有効であり、かつ、計算機科学に基づく評価の高い複数のソフトウェアツールが存在していることを講座開発の前提としました。その結果、形式手法関係の講座が半分近く占めることになりました。トップエスイーは必ずしも形式手法の教育を標榜していませんが、形式手法が有する厳格なモデリングプロセスを学ぶことで、表現上は自然言語やUMLを用いるとしても「厳格にモデリングする」という癖を身につけさせることを意図しています。また、複数のツールを扱うことで、1つのツールに依存せず、対象分野の基本的な概念を習得させて新たなツールへの適用能力を身に付けさせることができます。
2009年度に開講する講座は、下記のとおりです。各講座の詳細は http://topse.jp/ よりご参照ください。
- 基礎系
・基礎理論:受講生が他の講座を受講し理解するために必要な計算機科学に関する知識の総復習 - 要求分析系
・ゴール指向要求分析:個別の要求の背後にある上位目標といった多様な抽象度から要求を分析する技術の習得
・要求獲得・定義:要求を獲得するための基本的な技術と、それをモデル化する技術、さらに、獲得された知識や要求を仕様化し、要求仕様書にまとめあげ、評価するための技術の習得
・セキュリティ要求分析:システムの脆弱性、利用者の悪意、システムへの攻撃といったセキュリティ上の問題を予測・発見し克服する手法、および、演習を通して実際の要求モデルをセキュリティという視点から分析する方法の習得
・超上流要求工学:問題を解決するための論理的な思考体系や発想法、および、多様性と変動性を視野に入れた情報システムを構築するための前提としてのビジネスモデリング法の習得 - 形式仕様系
・形式仕様記述(基礎編):形式仕様言語に基づく段階的な詳細化と呼ぶ技術と、仕様を直接実行する技術の2つの方向から、妥当性の確認を行う方法の習得
・形式仕様記述(応用編):形式仕様記述(基礎編)に引き続いて静的な情報構造にまとを絞り、上流工程からインプリメンテーションまでをつなぐ形式手法を用いた系統的な開発の方法の習得
・形式仕様記述(セキュリティ編):形式仕様言語を使ったポリシ・モデルの理解、および、段階的な詳細化、定理証明、モデル検査というシステム検証技術における主要な三技術を使ったセキュア・システムの開発技術の習得
・並行システムのモデル化と検証:信頼性の高い並行システムを構築することを目的としたモデル化、検証、実装方法の習得 - モデル検査系
・設計モデル検証(基礎編):ネットワーク家電の制御ソフトウェアを題材とした産業ソフトウェアの設計モデル検証のプロセスとノウハウの習得
・設計モデル検証(応用編):設計モデルの特徴に合わせたモデル検査ツールの使い分けおよびノウハウの習得
・実装モデル検証:ネットワークを介したメッセージ通信を通して動作する分散ソフトウェアの振る舞いを網羅的に検証する技術、および計算機上で扱える程度の規模に検証問題を変換する抽象化技術の習得
・性能モデル検証:設計モデルの性能面に関する動作の正しさを自動的に検証する性能モデル検査ツールを使用し、実際のシステム開発に適用する方法を習得
・テスティング:組込みシステムからネットワークまで対応可能な、ソフトウェア・テスティングの技術の習得
・プログラム解析:形式仕様記述に基づくプログラムの静的検証や単体テストの手法の習得 - アーキテクチャ系
・コンポーネントベース開発:早期の分割統治とインタフェース中心の分析設計を系統立てて実施するためのコンポーネントベース開発手法とプロセスの習得
・ソフトウェアパターン:情報機器系のシステム開発において代表的な既存ソフトウェアパターンの適用ノウハウ、設計原則や非機能的特性からのパターンの適用範囲と取捨選択、支援環境の活用ノウハウの習得
・アスペクト指向開発:アスペクト指向に基づく関心事の分離と合成の技術、アスペクト指向プログラミングおよび分析設計の実践的ノウハウの習得 - マネジメント系
・ソフトウェアメトリクス:ソフトウェア開発に「数字による管理」を取り入れ、品質の定量的評価、品質予測、手法の有効性評価、プロジェクトの状況判断といった局面で定量的な観点から議論するための基礎知識とスキルの習得
表1 講座とスキルレベルの対応(抜粋)
表2に、各講座で使用している方法論とツールの一例を示します。受講生が、カリキュラムを修了するためには、8講座の習得により、約10-20点の異なるツールが有するモデリング技術の習熟が求められることになります。
表2 利用ツール(一例)
5. 修了生の実際と教育効果
トップエスイーでは、受講生の修了を認定するために修了制作を課しています。修了制作とは、受講生が教員の指導を受けながら主体的に約2ヶ月間をかけて、職場で抱える実問題あるいは実問題に近い課題を設定し、トップエスイーで習得した2種類以上のモデリング技術を駆使して課題を解決し、その成果および過程において得られた知見を報告書にまとめて発表するという一連の実習活動です。
トップエスイーにおいて受講生に求められる最終目標は、表1における技術スキルレベル4に到達することであり、その到達の可否は、修了制作の発表内容を教員が評価して判定されます。従って表1に示すように、高品質な成果を生み出すにとどまらず、修了後の受講生自身や所属組織および広く一般における開発・技術活動について習得モデリング技術を活用可能となることを念頭において、(A) 解決の過程で得られたモデリング上の知見を再利用可能な方法論として一般化することや、(B) 一定の汎用性を備えてモデリング作業を支援する新ツールを生み出すことが求められます。さらに2種類以上の技術使用を義務付けることで、状況に応じた技術の使い分けや、工程・側面を超えた複数技術の組み合わせといった実践上のノウハウが習得されていることを確認しています。ただし、(B)を主目的とする場合は、作業負荷を考慮して1種類のみの技術使用も可としました。
修了制作の具体例として、平成18年度に修了した受講生の事例を以下に2つ取り上げます。
(1)「UTMアプライアンスのログ情報解析ツールの解析」: セキュリティ機能を統合したUTM(Unified Threat Management)製品の開発にあたり、同製品が出力するログの解析ツールを合わせて開発する必要がありました。開発にあたり受講生は、機能要求の不明確さや時間効率性・拡張性に関する品質要求などを問題として識別しました。
そこで受講生は、トップエスイーで習得した技術群から、要求分析においてKAOSによるゴール指向分析、設計において品質特性駆動型設計を選択・併用し、問題を解決する形でツールを実装しました。前者は多種の目標群を達成する観点に基づいて要求を詳細に識別・分析する手法であり、後者は各種パターン(定石や手本)を再利用して品質要求を満足するアーキテクチャを導出する手法です。
さらに、これらの技術の組み合わせ方法には、これまで明らかでなかった実用上のノウハウが含まれていたため、受講生は全体を品質要求駆動型プロセスとして一般化しました。これは、開発過程で得られた知見を方法論としてまとめるという(A)の好事例といえます。得られた解析ツールの実用化が検討されており、高品質であることからも、背景理論と実用上のノウハウを共に重視して複数のモデリング技術を習得させるトップエスイーの高い教育効果が結実した形と捉えられます。
(2) 「Webアプリケーションのページ間遷移仕様検証ツール」: Webアプリケーション開発の問題として、大規模・複雑なWebページ遷移の信頼性や安全性を検証することの難しさがあります。例えば、個人情報ページに到達する前に認証ページを必ず辿っていることや、行き止まりのページが存在しないことを人手で確認しようとすると膨大な時間がかかり、さらには見落としの危険性もあります。
このような状態遷移上の性質の検証には、有限の状態空間を網羅的・自動的に探索するモデル検査が有用です。しかし、対象アプリケーションの振る舞いを有限状態モデルとしてモデリングするにあたって、必要な遷移情報が各ページ定義やフレームワークの構成定義に分散し、結果として適用コストが大きく誤りも混入しやすいという問題を受講生は識別しました。
そこで受講生は、対象フレームワークをStrutsに設定し、ページ定義および構成定義から遷移情報を抽出し、モデル検査ツールSPINが扱う有限状態モデルへと自動変換する実用的ツールstruts2spinを開発しました。つまり同ツールは、モデル検査をWebアプリケーションという実問題へ適用する際に必要なモデリング上の新ノウハウと手順をカプセル化し、誰でも一定品質のモデリング結果を得られるように自動化します。受講生は実際のWebアプリケーションに同ツールを適用し、識別した問題を解決しつつ、遷移上の信頼性・安全性検証に有効なことを確認しました。これは汎用性を備えた新ツールを生み出すという(B)の好事例といえます。同成果には学術界より高い評価が与えられており、国際会議に論文が採択されたことからも[8]、モデリング能力の洗練化を目指すトップエスイーの高い教育効果が結実した形と捉えられます。
6. 今後の展開
2008年度現在のトップエスイーの3期生の数は31名です。30名程度が、一つの教室で良質な教育ができる上限値と考えられます。そこでトップエスイーでは、同等の教育を広く大学や企業に普及させて多数の優秀なソフトウェア技術者育成に貢献するために、教材の洗練と普及を進めていく方針です。その一環として、各講座の講義ノートをサイエンスによる知的ものづくりシリーズとして順次刊行しています[9]。また、文科省の先導的ITスペシャリスト育成推進プログラムなど他の教育プログラムとも積極的に連携を進めています。たとえば、東大、東工大の学生を対象にした「情報理工実践プログラム」においてトップエスイーの6教材を使用しています。また、2009年度は講座の一部について北陸先端科学技術大学院大学が開設する社会人向け博士課程「先端ソフトウェア工学コース」の講座と共通化される予定です。
トップエスイーでは2008年度11月現在、2009年度4月に始まる4期生が募集されています。ご興味を持たれましたらぜひhttp://topse.jp/ をご参照ください。個々の講義シラバスや協賛企業名などが掲載されています。
謝辞
2004年度から2008年度までの本人材養成ユニットは文部科学省科学技術振興調整費新興分野人材養成の支援により運営されていることをここに記すとともに感謝いたします。また、本記事は文献[4][5]に基づいて、一部改変する形で執筆されました。
参考文献
[1] 鷲崎弘宜, "情報学探求 - 大規模ソフトウェアの効率的開発技術の追求", 情報通信ジャーナル5月号, 2007.
[2] K. Beckman, N. Coulter, S. Khajenoori, and N. R. Mead, "Collaborations: Closing the industry-academia gap," IEEE Software, Vol.14, No.6, pp.49-57, 1997.
[3] Shinichi Honiden, Yasuyuki Tahara, Nobukazu Yoshioka, Kenji Taguchi, Hironori Washizaki, "Top SE: Education Program of Japan to Produce Superarchitects Who Can Apply Software Engineering Tools to Practical Development", Proceedings of the 29th International Conference on Software Engineering (ICSE 2007), 20-26 May 2007.
[4] 本位田真一, 田口研治, 吉岡信和、田原康之, 鷲崎弘宜, "トップエスイー「サイエンスによる知的ものづくり教育」"、映像情報メディア学会誌、Vol. 61, No. 9, 2007.
[5] 本位田真一, 粂野文洋, 田原康之, 鷲崎弘宜, "トップエスイー: サイエンスによる知的ものづくり教育", 情報処理, Vol.48, No.11, pp1264-1272, 2007.
[6] G.J. Holzmann, "The SPIN Model Checker: Primer and Reference Manual", Addison Wesley, 2004.
[7] 萩谷昌己 監修, 吉岡信和, 青木利晃, 田原康之 著, "SPINによる設計モデル検証", 近代科学社, 2008.
[8] Atsuto Kubo, Hironori Washizaki, Yoshiaki Fukazawa, "Automatic Extraction and Verification of Page Transitions in a Web Application", Proceedings of the 14th Asia-Pacific Software Engineering Conference (APSEC 2007), IEEE Computer Society, pp.350-357, 2007.
[9] 本位田真一監修:サイエンスによる知的ものづくりシリーズ, 近代科学社