第4章 ソフトウェア工学の領域 この原稿全体で、ソフトウェア工学の成果を紹介したいと私は「はじめに」で書いた。そ れではソフトウェア工学とは、どのような領域をカバーしているのだろうか。この原稿の 構成はやはり「はじめに」で述べたが、それは妥当なものなのだろうか。 こういう観点から第 4 章では、ソフトウェア工学とはどういう領域をカバーするものであ るのかを見てみたい。 テキストがカバーしている領域 今ソフトウェア工学の世界でよく読まれているテキストが、4冊ある。それは、以下のも のである。 z Shari Lawrence Pfleeger, “Software Engineering Second Edition,” Prentice Hall, 2001. [PFL01] z Roger S. Pressman, “Software Engineering A Practitioner’s Approach 5th Edition,” The McGraw Hill Co., 2001. [PRE01] z Ian Sommerville, “Software Engineering 6th Edition,” Addison-Wesley, 2001. [SOM01] z Richard H. Thayer ed., “Software Engineering,” IEEE Computer Society Press, 1997. [THA97] 最初の3冊はいずれも同じ著者が同じ書名で何度か改訂版を出しており、上にも記したよ うに最新のものは、プリーガー(Shari Lawrence Pfleeger)の場合はまだ第2版だが、プ レスマン(Roger S. Pressman)の場合は第5版、サマーヴィル(Ian Sommerville)の場 合は第6版まで版が上がっている。いずれの著者のものも、どれかの版で日本語に翻訳さ れて出版されているが、いずれも最新のものには日本語訳はない。 最後のティラー(Richard H. Thayer)のものは、彼自身がこの本を書いたものではなく、 1960 年代からこの本が出る直前(1997 年)まで、いろんな雑誌などに発表されたソフトウ ェア工学の論文の中から良いものを彼が選んで、1つの本にしたものである。 幸いわたしはこれらのいずれの本も最新のものを持っているので、これらがそれぞれどう いう領域をカバーしているかをまとめてみた。その結果を表 4-1 に示す。 Software Software Software Software Engineering Engineering Engineering Engineering (6th Edition) (Fifth Edition) (Second Editin) Merlin Dorfman Roger S. Shari Lawrence Richard H. Pressman Pfleeger Thayer (ed.) Ian Sommerville 概論 一般的な概念 1 1 ソフトウェア危機 1 2/3 1 33 システム工学 2 10 3 2 2 11 ソフトウェアへの要求 5 11 4 4 要求工学 6 システムのモデル 7 12 プロトタイピング 8 (11) ソフトウェア・ライフサ イクル ソフトウェ アへの要 求 設計の概念 アーキテクチャの設 計 13 10 ユーザインタフェース の設計 分散システム 15 15 11 28 Web システム プログラ ミング 13 部品化と再利用 14 4 4 27 構造化プログラミン 7 グ 6 V&V の概念 7 ション ック 19 (8) 20 17 テストの戦略 7 8 10 保守 11 リエンジニアリング メトリクス 30 12 (24) 4/19 12 31 12 分析と設計 一般的な概念 クト指向 オブジェクト指向分 技法 析 8 28 CASE オブジェ 7 18 移行/切替/配布 技法 6 プログラム言語 テストの概念とテクニ 構造化 4 29 リアルタイムシステム レビュー/インスペク V&V 5 16 の設計 アの設計 12 14 コンポーネントレベル ソフトウェ 2 5 12 20 21 34 6 5 オブジェクト指向設 22 計 オブジェクト指向のテ 23 スト実施 OO に関わるメトリク 24 ス 使用性/信頼性/ 16 クリティカ 安全性など ルシステ 仕様 17 ム 開発 18 テスト 21 フォーマ フォーマルメソッド ルメソッド クリーンルーム開発 9 25 5 26 人の管理 22 ソフトウェ コストの見積もり 23 ア開発の 品質の管理/保障 24 8 9 管理 構成管理 29 9 9 プロセスの改善 25 一般的な概念 10 4 プロジェクトの計画立 プロジェ クト管理 案 リスク分析とリスク管 スケジューリングと進 革新 3 3 10 5 (3) 10 7 捗管理 ア開発の 11 6 理 ソフトウェ 13 レガシーシステム 26 ソフトウェアの変化 27 ソフトウェア工学に関わる標準 9 ソフトウェアの評価 12 ソフトウェア開発方法の進歩 13 ソフトウェア工学についての教育 13 ソフトウェア工学の将来 14 表 4-1 ソフトウェア工学の領域(4つのテキストの比較)1 1表の中の数字は、それぞれの本のどの章で記述されているかを示す。例えば「3」と表示 されている場合には、第3章でその内容が記述されていることを示す。 35 この結果から、次のようなことが言える。 z 当然のことだが全てのテキストで、ソフトウェア工学の目的、これまでの経緯など が「概論」として記述されている。 z 「ソフトウェアへの要求分析」、「ソフトウェアの設計」、「プログラミング」、「レビ ューとテスト(表では V&V 記述)」は、全てのテキストで記述されている。 z また、オブジェクト指向技法についても、全てのテキストで記述されている。ただ しこれについての記述は、サマーヴィルが一番詳しい。 z 構造化技法のついては、ティラーだけに記述が見られる。 z プロジェクト管理についても、全てのテキストで記述がある。しかしこの領域につ いては、プレスマンの記述が一番詳しい。 z ソフトウェアの品質/品質保証、ソフトウェアの構成管理と言ったことについては、 プリーガーの場合にどこに記述があるのかが明確ではない。これは彼女の場合章立 てがシンプルなことが原因しているのかも知れない。 z また「リエンジニアリング」、 「メトリクス」、 「フォ−マル・メソッド」についても、 プリーガーの場合にどこに記述があるのかが明確ではない。 z 逆に「ソフトウェアの評価」、「ソフトウェア開発の進歩」、「ソフトウェアの将来」 については、プリーガーにしか記述が見あたらない。 z クリティカルシステム2と、レガシーシステム3の取り扱いについてサマーヴィルに 詳しい記述があるが、他の人にはこの記述は見あたらない。 z 「ソフトウェア工学に関わる標準」 、「ソフトウェア工学についての教育」について は、ティラーの本にしか記述が見あたらない。 これらをまとめて一言でいえば、基本的な領域については全てのテキストで共通して記述 されている。しかし当然のことながら、その記述に濃淡がある。一方基本を超える内容の 部分については、ある本には記述があり、別の本には記述がない、ということが起きてい る。これらは当然、著者/編者の考え方に基づいている。 少し雑然としているがこれらのテキストからは、表 4-1 の項目としてあげた領域が最小公 倍数としてのソフトウェア工学の領域ということが言えるだろう。 カーネギ・メロン大学の定義 「Body of Knowledge」という言葉がある。100 万語を集めた英語の辞書として売り出し ている「英辞郎」によれば、この言葉は「一連の知識」と定義されている。つまり“Body of Knowledge”の言葉の前に付く言葉について体系的にまとめた一連の知識を指す。この言 2 障害が起きて機能を停止すると、人命の損傷や経済的にたいへん大きな問題が生じるよう なシステム。 3 古いアーキテクチャや方法論、プラットフォーム(ハードウェアや OS)で作られている システム。メインフレーム用に COBOL で開発されたようなシステムを指すことが多い。 36 葉を使った有名なものに「Project management Body of Knowledge」というのがあって、 これはこの頭文字を取って PMBOK(「ピンボック」と発音する)と呼ばれている。プロジ ェクト管理についての考え方、方法、手順などを体系的にまとめたものとして知られてい る。 ソフトウェア工学についても「Software Engineering Body of Knowledge」があって、 これは SWEBOK(「スウィーボック」と発音する)と呼ばれている。この SWEBOK には カーネギ・メロン大学(Carnegie Mellon University)のソフトウェア工学研究所(Software Engineering Institute:SEI)が発表したものと、IEEE と ACM(Association for Computing Machinery)の合同プロジェクトが今検討しているものの二種類がある。 ここではまず、カーネギ・メロン大学ソフトウェア工学研究所[HIL99]のものから見てみ たい。 英文のままで恐縮だが、カーネギ・メロン大学の SWEBOK の内容を要約したものを表 4-2 に示す。 大分類 中分類 小分類 1.1.1 Basic Data Structure 1.1 Algorithm and Data Structure 1.1.2 Design of Algorithm 1.1.3 Analysis of Algorithm 1.2.1 Digital System 1.2.2 Computer System Organization 1.2 Computer Architecture 1.2.3 Alternative Architecture 1.2.4 Communications and Networks 1.3.1 Mathematical Logic and Proof Systems 1.3.2 Discrete Mathematical Structure 1.3 Mathematical Foundations 1.3.3 Formal Systems 1. Computing 1.3.4 Combinatorics Fundamentals 1.3.5 Probability and Statistics 1.4.1 Operating System Fundamentals 1.4.2 Process Management 1.4 Operating System 1.4.3 Memory Management 1.4.4 Security and Protection 1.4.5 Distributed and Real-time Systems 1.5.1 Theory of Programming Language 1.5.2 Programming Paradigms 1.5 Programming Language 1.5.3 Programming Language Design and Implementation 37 2.1.1 Requirements Elicitation 2.1 Software Requirement 2.1.2 Requirements Analysis Engineering 2.1.3 Requirements Specification 2.2.1 Architecture Design 2.2.2 Abstract Specification 2.2 Software Design 2.2.3 Interface Design 2.2.4 Data Structure Design 2.2.5 Algorithm Design 2.3.1 Code Implementation 2.3 Software Coding 2.3.2 Code Reuse 2.3.3 Coding Standards and Documentation 2 Software Product 2.4.1 Unit Testing Engineering 2.4.2 Integration Testing 2.4.3 System Testing 2.4 Software Testing 2.4.4 Performance Testing 2.4.5 Acceptance Testing 2.4.6 Installation Testing 2.4.7 Test Documentation 2.5.1 Software Installation and Operation 2.5.2 Software Maintenance Operations 2.5 Software Operation and 2.5.3 Software Maintenance Process Maintenance 2.5.4 Software Maintenance management 2.5.5 Software Reengineering 3 Software 3.1.1 Project Planning Management 3.1.2 Project Organization 3.1 Software Project 3.1.3 Project Forecasting Manaagement 3.1.4 Project Scheduling 3.1.5 Project Control 3.2.1 Risk Analysis 3.2 Software Risk Management 3.2.2 Risk management Planning 3.2.3 Risk Monitoring 3.3.1 Software Quality Assurance 3.3 Software Quality Management 3.3.2 Verification and Validation 3.3.3 Software Metrics 3.3.4 Dependable Systems 38 3.4.1 Software Configuration Identification 3.4 Software Configuration 3.4.2 Software Configuration Control Management 3.4.3 Software Configuration Audit 3.4.4 Software Configuration Status Accounting 3.5.1 Quantative Software Process Management 3.5.2 Software Process Improvement 3.5 Software Process 3.5.3 Software Process Assessment Management 3.5.4 Software Process Automation 3.5.5 Software Process Engineering 3.6.1 Procurement Management 3.6 Software Acquisition 3.6.2 Acquisition Planning 3.6.3 Performance Management 4.1 Artificila Intelligence 4.2 Database Syatems 4 Software Domains 4.3 Human-Computer Interaction 4.4 Numerical and Symbolic Computing 表 4-2 ソフトウェア工学の領域(カーネギ・メロン大学の SWEBOK より) カーネギ・メロン大学の SWEBOK には、次のような特徴がある。 z 次に述べる IEEE と ACM の SWEBOK をも含めて、カバーしている範囲が最も広 い。 z 特に基本的な部分についてはアルゴリズムやデータ構造、基本的な数学やオペレー ティング・システムまでカバーしているところに特徴がある。 z また Software Management についても広い範囲が意識されており、Software Acquisition までが対象に含まれている。 このカーネギ・メロン大学の SWEBOK をまとめた人たちも、次に述べる IEEE と ACM の SWEBOK について意識を持っており、ある意味でこの IEEE と ACM 版が本命と目さ れる状況にある。 IEEE と ACM の定義 IEEE と ACM は、1997 年以来合同でプロジェクトを作って、SWEBOK をまとめる作業 に取り組んでいる。この作業は段階を踏んで実施されており、最初にまとまった版(「Straw Man Version」と呼ばれており、1998 年 9 月に発表された)から第 2 版(「Stone Man Version」 と呼ばれており、2000 年春に発表された)、第3版(「Iron Man Version」と呼ばれており、 2003 年に発表の予定となっているが、まだ発表されていない)を経て最終版になる予定で ある。 39 図 4-1 ソフトウェア工学の領域(IEEE と ACM) ([IEE01]日本語版の 12 ページより) 40 各版はインターネットなどで公表され、それについて寄せられた意見を基に版が重ねられ る仕組みになっている。この原稿を書いている時点(2004 年(平成 16 年)3 月)ではまだ 最終版になっておらず、Stone Man Version[IEE01]を今インターネットからダウンロード することができる4。 この現時点での内容の主要な部分を、図 4-1 に示す。 IEEE と ACM の版の特徴は、以下の通りである。 z カーネギ・メロン大学のものが対象にしていたコンピュータ科学やオペレーティン グ・システム、プログラム言語などの領域をはずしていて、範囲が狭い。 z 構造化技法やデータ中心アプローチ、あるいはオブジェクト指向技法といった方法 論が表に出ていない。 z ピープルウェアやピープル CMM といった人の問題が含まれていない。 今は複数ある SWEBOK も、IEEE と ACM のものが最終版になった時点で、それが広く 世界で受け入れられるようになると私は考える。その意味で、図 4-1 を今我々は重く受け止 めるべきであろう。 この原稿での領域 この原稿の構成は、既に示した。章立てはかなり細かくしたが、基本的な構成は IEEE と ACM の SWEBOK を意識している。ただしそこには含まれない開発方法論と人の問題、お よびソフトウェア工学の教育についての記述を、積極的に含めることにした。 ここで2つ、お断りをしておきたい。 その1つ目は、この原稿ではツールについて記述しないことである。その理由は、ツール は種類が多く、また変化が激しいためである。つまり今の私の立場では、ソフトウェア開 発で使うツールについて、調べ切って自信を持って記述することができない。したがって この原稿では、ツールについては原則として記述しない。 しかしツールは、我々人間が持っている機能では不十分な場合、あるいはその機能を全く 持っていない場合に、それを補うために作られた。したがって、ツールをうまく使えば必 ず効果がある。これは明らかである。しかしツールには、棒きれのように容易に使えるも のと、自動車のようにある特別の訓練を受けないと使えないものがある。ソフトウェア工 学に関わるツールは一般に使い方が難しく、ある種の訓練を受けないと使いこなせないも のが多い。ツールを使いこなすためには、そのための充分な準備が必要である。 2つ目は、ソフトウェア工学の考え方についてである。図 4-2 はプレスマン博士の本 [PRE01]から取ったもので、プレスマン博士のソフトウェア工学についての考え方を端的に 4 「IEE01」で記述している日本語の本は、この途中段階のものを翻訳したものである。監訳 者の松本先生はこのあたりの事情をよくご存じと思うが、この翻訳は少し時期的に早かっ たかも知れない。あるいは先生には、最終バージョンでは大きな変更が入らないだろうと いう読みがあるのかも知れない。 41 表現したものである。この考え方に、私も同意する。 図 4-2 ソフトウェア工学の考え方([PRE01]21 ページより) つまりソフトウェア工学の根底には、品質への配慮がある。その上にプロセスが位置して おり、さらにその上に方法論が乗っている。ツールが最も上の位置にある。 既にこの原稿では、ツールについては記述しないと述べたが、品質への配慮とプロセスに ついての記述に重点を置くつもりである。 キーワード ソフトウェア工学、PMBOK、カーネギ・メロン大学ソフトウェア工学研究所、SEI、 SWEBOK、IEEE、ACM、ツール 人名 プリーガー シャリ・ローレンス(Shari Lawrence Pfleeger)、プレスマン ロジャー S. (Roger S. Pressman)、サマーヴィル イアン(Ian Sommerville)、ティラー リチャー ド H.(Richard H. Thayer) 参考文献とリンク先 [HIL99] Thomas B. Hilbum, Iraj Hirmanpour, Sohei Khajenoori, Richard Turner, Abir Qasen, “A Software Engineering Body of Knowledge Version 1.0,” Technical Report CMU/SEI-99-TR-004, ESC-TR-99-004, CMU, 1999. なおこのレポートは、次の URL からダウンロードすることができる。 http://www.sei.cmu.edu/pub/documents/99.reports/pdf/99tr004.pdf [IEE01] 松本吉弘監訳、「ソフトウェアエンジニアリング基礎知識体系 –SWEBOK-」、オ ーム社、平成 15 年. なおこの本の原著は次のものである。 A Project of the Software Engineering Coordinating Committee, “SWEBOK Guide to the Software Engineering Body of Knowledge Trial Version,” IEEE, 2001. さらにこの資料は、以下の URL からダウンロードすることができる。 http://www.swebok.org/stoneman/version_1.00/SWEBOK_w_correct_copyright_web 42 _site_version.pdf [PFL01] Shari Lawrence Pfleeger, “Software Engineering Second Edition,” Prentice Hall, 2001. [PRE01] Roger S. Pressman, “Software Engineering A Practitioner’s Approach 5th Edition,” The McGraw Hill Co., 2001. [SOM01] Ian Sommerville, “Software Engineering 6th Edition,” Addison-Wesley, 2001. [THA97] Richard H. Thayer Ed., “Software Engineering,” IEEE Computer Society Press, 1997. (2004 年(平成 16 年)3 月 31 日 43 初稿作成)
© Copyright 2024 Paperzz