「ソフトウェア工学」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Melan (会話 | 投稿記録)
m編集の要約なし
Melan (会話 | 投稿記録)
en:Software engineering(2008年9月5日 1:05:55(UTC))の部分訳をマージ
6行目: 6行目:


また、他分野とクロスオーバーしていたり、もしくはソフトウェア工学の1分野だったものが独立して別分野を形成したり(例:[[データベース]]設計)、別分野で培われた技術や概念がソフトウェア工学の対象となることもある(例:[[オブジェクト指向]]技術)。
また、他分野とクロスオーバーしていたり、もしくはソフトウェア工学の1分野だったものが独立して別分野を形成したり(例:[[データベース]]設計)、別分野で培われた技術や概念がソフトウェア工学の対象となることもある(例:[[オブジェクト指向]]技術)。

== 分野の曖昧性と論争 ==
ソフトウェア工学の典型的な定義として、以下のようなものがある。
* 「[[ソフトウェア]]の開発・運用・保守に体系的・学問的・定量的手法を応用する分野」<ref name="IEEE610a">“IEEE Standard Glossary of Software Engineering Terminology,” [[IEEE]] std 610.12-1990, 1990.</ref>
* 「ソフトウェア開発のあらゆる面を扱う工学分野」<ref name="Sommerville1">{{cite book|last= Sommerville|first=Ian|authorlink= | title = Software Engineering|origyear = 1982年 | url = http://www.pearsoned.co.uk/HigherEducation/Booksby/Sommerville/ | edition = 8th ed. | year = 2007年 | publisher = Pearson Education | location = Harlow, England | isbn = 0-321-31379-8 | pages = P. 7 | chapter = 1.1.2 What is software engineering?| quote = Software engineeering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use. In this definition, there are two key phrases: <br>
1. ''Engineeering discipline'' Engineers make things work. They apply theories, methods and tools where these are appropriate [. . .] Engineers also recognise that they must work to organisational and financial constraints. [. . .]<br>
2. ''All aspects of software production'' Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production. }}</ref>
* 「実際の機械上で機能する信頼性のあるソフトウェアを経済的に得るための確かな工学原則の確立と利用」<ref name="Bauer1">{{cite journal | author=F. L. Bauer | title= Software Engineering | journal = Information Processing | volume = 71 | publisher = North-Holland Publishing Co. | year = 1972年 | pages = 530–538}}</ref>

なお、''software engineering'' という英語の場合、必ずしも工学の一分野を指すわけではなく、以下のような用法もある。
* 元々、[[プログラミング (コンピュータ)|プログラミング]]および[[システム分析]]と呼ばれていた活動などを総称的に ''software engineering'' と呼ぶ<ref>{{cite web|url= http://www.micsymposium.org/mics_2002/SALAH.PDF|publisher=35th Annual Midwest Instruction and Computing Symposium|date=2002年4月5日|accessdate=2006-09-13|author=Akram I. Salah|title=Engineering an Academic Program in Software Engineering}}: "For some, software engineering is just a glorified name for programming. If you are a programmer, you might put 'software engineer' on your business card—never 'programmer' though."</ref>。
* プログラミングに必要とされる理論的側面を[[計算機科学]]と呼び、そうでないあらゆる面を ''software engineering'' と称する<ref>Mills, Harlan D., J. R. Newman, and C. B. Engle, Jr., "An Undergraduate Curriculum in Software Engineering," in {{cite book|title=Software Engineering Education: SEI Conference 1990, Pittsburgh, Pennsylvania, USA, April 2-3,...|first = Lionel E.|last=Deimel|year=1990年|publisher=Springer|id=ISBN 0-387-97274-9}}, [http://books.google.com/books?vid=ISBN3540972749&id=ZuWbyy2blMEC&pg=PA26&lpg=PA26&sig=Yxs2mS5S0Xs2cnGv2vYsYUcFNQM p. 26]: "As a practical matter, we regard software engineering as the necessary preparation for the practicing, software development and maintenance professional. The Computer Scientist is preparing for further theoretical studies..."</ref>。
* 「プログラミング」を単なる技巧や技能ではなく[[工学]]として扱うことを主張する用語であり、そのような指針を文書化したもので使われる<ref>{{cite web|url= http://evidence.cs.keele.ac.uk/rebse.html|title=Realizing Evidence-based Software Engineering|accessdate=2006-10-18|date=2004年12月14日|author=David Budgen, Pearl Brereton, Barbara Kitchenham, Stephen Linkman}}: "We believe that software engineering can only advance as an engineering discipline by moving away from its current dependence upon advocacy and analysis...."</ref>。

''software engineering'' は、ある種の学問的訓練、専門教育が必要であり、それにはソフトウェア開発には必ずしも使われないものも含まれるとする人もいる。よく言われる喩えとして、[[建築]]に携わる全ての人が[[建築学]]者ではないのと同様、[[ソースコード]]を書く人が常にソフトウェア工学者とは限らない。また、カナダの Professional Engineers Ontario という団体は、''software engineering'' という呼称自体に反対している。すなわち、ソフトウェア開発は工学と呼ぶには未成熟で、それに携わる人々はプロのエンジニアとは呼べないという<ref>{{Citation|last=Sayo|first=Mylene|title=What's in a Name? Tech Sector battles Engineers on "software engineering"|url= http://www.peo.on.ca/enforcement/June112002newsrelease.html|accessdate=2008-07-24}}</ref>。

「ソフトウェア工学」を工学の一分野としてどう定義するかは、人によって異なり、論争が行われてきた。[[デイビッド・パーナス]]は、ソフトウェア工学は実際に工学の一形式であるとした<ref>{{cite journal | last = Parnas| first = David L.| authorlink = デイビッド・パーナス| year = 1998年| title = Software Engineering Programmes are not Computer Science Programmes|url= http://www.cas.mcmaster.ca/serg/papers/crl361.pdf| journal = Annals of Software Engineering| volume = 6| pages = 19–37| doi = 10.1023/A:1018949113292}}, p. 19: "Rather than treat software engineering as a subfield of computer science, I treat it as an element of the set, {Civil Engineering, Mechanical Engineering, Chemical Engineering, Electrical Engineering,....}."</ref><ref>{{cite journal | last = Parnas| first = David L.| authorlink = デイビッド・パーナス| year = 1998年| url = http://www.cas.mcmaster.ca/serg/papers/crl361.pdf|title= Software Engineering Programmes are not Computer Science Programmes| journal = Annals of Software Engineering| volume = 6| pages = 19–37| doi = 10.1023/A:1018949113292}}, p. 20: "This paper argues that the introduction of accredited professional programmes in software engineering, programmes that are modelled on programmes in traditional engineering disciplines will help to increase both the quality and quantity of graduates who are well prepared, by their education, to develop trustworthy software products."</ref>。Steve McConnell は工学ではないとしたが、工学にすべきだと主張した<ref>{{cite book | last = McConnell| first = Steve| authorlink = | year = 2003年| month = 8月| title = Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers | publisher = Addison-Wesley| location = Boston, MA| id = ISBN 0-321-19367-9}}, p. 39: "In my opinion, the answer to that question is clear: Professional software development should be engineering. Is it? No. But should it be? Unquestionably, yes. "</ref>。[[ドナルド・クヌース]]は、プログラミングは技であり科学だとした<ref>{{cite journal|last=Knuth | first=Donald| authorlink=ドナルド・クヌース |year = 1974年| title= Computer Programming as an Art |url= http://www.paulgraham.com/knuth.html| journal = Communications of the ACM | volume = 17 | issue = 12 | pages = 667–673}} 1974年の[[チューリング賞]]講演</ref>。[[エドガー・ダイクストラ]]は、''software engineering'' と ''software engineer'' という用語が特に[[アメリカ合衆国]]で誤用されていると指摘した<ref> {{cite web | url = http://www.cs.utexas.edu/users/EWD/transcriptions/EWD11xx/EWD1165.html| title = There is still a war going on (manuscript Austin, 3 December 1993)| accessdate = 2007-02-17 | last = Dijkstra | first = Edsger W| authorlink = エドガー・ダイクストラ| coauthors = transcribed by Mario Béland |date = 1993年12月3日; transcription last revised 2004年11月23日| work = E. W. Dijkstra Archive| publisher = The University of Texas at Austin, Department of Computer Sciences| quote = When the term was coined in 1968 by F.L. Bauer of the Technological University of Munich, I welcomed it. [. . .] I interpreted the introduction of the term “software engineering” as an apt reflection of the fact that the design of software systems was an activity par excellence for the mathematical engineer. [. . .]. As soon the term arrived in the USA, it was relieved of all its technical content. It had to be so for in its original meaning it was totally unacceptable [. . .] In the mean time, software engineering has become an almost empty term, as was nicely demonstrated by Data General who overnight promoted all its programmers to the exalted rank of “software engineer”! }}</ref>。


==ソフトウェア開発方法論==
==ソフトウェア開発方法論==
46行目: 63行目:
;プロセス:管理工程・手順を定式化した開発技術。([[CMM]]/[[CMMI]]、[[ISO9001]]、[[SLCP]]、[[IEEEソフトウェア規格]])などがある。
;プロセス:管理工程・手順を定式化した開発技術。([[CMM]]/[[CMMI]]、[[ISO9001]]、[[SLCP]]、[[IEEEソフトウェア規格]])などがある。
;プロジェクト管理(工程管理):納期・品質・コスト管理技術・教育など。([[ファンクションポイント法]]、[[PMBOK]]、[[ISBOK]])などがある。
;プロジェクト管理(工程管理):納期・品質・コスト管理技術・教育など。([[ファンクションポイント法]]、[[PMBOK]]、[[ISBOK]])などがある。

==脚注==
<references />


== おもな研究分野 ==
== おもな研究分野 ==
55行目: 69行目:
* [[ソフトウエア検証論]]
* [[ソフトウエア検証論]]
* [[ソフトウエア開発環境]]
* [[ソフトウエア開発環境]]

== 歴史 ==
ソフトウェア工学は[[コンピュータ]]と共に発展してきた。そのためのツールも書かれたアプリケーションも時と共に進化してきた。

1940年代、初期のコンピュータでは人間が直接[[機械語]]を打ち込んでいた。その後[[アセンブリ言語]]が生まれ、1950年代中ごろには [[Autocode]]、[[FORTRAN]]、[[LISP]]といった初期の[[高級言語]]が生まれた。1960年代には第二世代の[[コンパイラ]]などが登場し、生産性や品質の向上に寄与した。60年代末には、大規模プロジェクトが行われるようになり([[Future Systems プロジェクト]]など)、[[ソフトウェア危機]]が叫ばれるようになる。1968年、NATO Conference on Software Engineering が開催された。1970年代になると、[[UNIX]]、コードリポジトリ、[[make]] などの協調的ソフトウェアツールが登場する。1980年代、[[パーソナルコンピュータ]]が登場し、急速に広まり、[[市販ソフトウェア]]も大量に販売されるようになっていった。[[Smalltalk|Smalltalk-80]]が公開され、[[オブジェクト指向]]が新たなパラダイムとして徐々に注目されていった。1990年代になると、[[オブジェクト指向プログラミング]]、[[アジャイルソフトウェア開発]]、[[エクストリーム・プログラミング]]が徐々に主流になっていった。2000年代になると、[[Java]]、[[Ruby]]、[[Python]]、[[PHP: Hypertext Preprocessor|PHP]] といった[[インタプリタ]]ベースの言語や [[.NET Framework]] の [[マネージコード]] などが多用されるようになった。

== ソフトウェア工学の最近の傾向 ==
ソフトウェア工学はまだ若い分野であり、今も発展し続けている。最近のソフトウェア工学の重要な傾向を以下に示す。

; [[アスペクト指向プログラミング]]
: [[ソースコード]]の様々な場所に定型的コードを追加・削除するツールを提供することで、品質を高める支援をする。アスペクトには、あらゆるオブジェクトや関数が特定の状況でどう振舞うべきかを記述している。例えば、アスペクトを使って、特定の型の全オブジェクトに[[デバッグ]]機能、[[データログ|ロギング]]機能、[[ロック (情報工学)|ロック]]機能などを追加できる。現在は、アスペクトを使って汎用コードを設計する方法の研究が進んでいる。関連する概念として、[[自動プログラミング]]や[[テンプレート (プログラミング)|テンプレート]]がある。
; [[アジャイルソフトウェア開発]]
: 目まぐるしく変化する市場に素早く対応できる[[ソフトウェア開発]]の手法。この手法の信奉者は、従来型の文書を多用する手法は徐々に消えていくと信じている。関連する概念として、[[エクストリーム・プログラミング]]や[[リーンソフトウェア開発]]がある。
; [[実験的ソフトウェア工学]]
: ソフトウェア上で[[実験]]を行うことを重視する分野。実験によってデータを収集し、そこから法則や理論を導き出そうとする。この手法の信奉者は、実験によってのみソフトウェアの性質に関する知識が得られると考えている。
; [[モデル駆動工学]]
: 設計段階でテキストと図を使ったモデルを構築する。[[モデル変換]]やコード生成のツールを使って、モデルからコードの断片を抽出し、その後の開発に役立てる。
; [[ソフトウェアプロダクトライン]]
: 一連のソフトウェア製品群を体系的に構築する手法。[[コードの再利用]]を発展させ、ソフトウェア開発工程を工業化しようとする試み。

==脚注==
<references />


== 関連項目 ==
== 関連項目 ==
73行目: 109行目:
* [[銀の弾丸]]
* [[銀の弾丸]]
* 『[[伽藍とバザール]]』
* 『[[伽藍とバザール]]』

== 参考文献 ==
* {{cite book|last= Jalote|first=Pankaj| title = An Integrated Approach to Software Engineering |origyear = 1991年 | url = http://www.springer.com/east/home?SGWID=5-102-22-52090005-0&changeHeader=true | edition = 3th ed. | year = 2005年 | publisher = Springer | location = | isbn = 0-387-20881-X }}
* {{cite book|last= Sommerville|first=Ian|authorlink= | title = Software Engineering|origyear = 1982年 | url = http://www.pearsoned.co.uk/HigherEducation/Booksby/Sommerville/ | edition = 8th ed. | year = 2007年 | publisher = Pearson Education | location = Harlow, England | isbn = 0-321-31379-8 }}
* {{cite book|last= Pressman|first=Roger S|authorlink= | title = Software Engineering: A Practitioner's Approach |origyear = | edition = 6th ed. | year = 2005年 | publisher = McGraw-Hill | location = Boston, Mass | isbn = 0072853182}}
* Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli: ''Fundamentals of Software Engineering'', 2nd (International) ed.: 2003 (1st ed.: 1991), Pearson Education @ Prentice-Hall
* Colin Hood,Simon Wiedemann, Stefan Fichtinger, Urte Pautz ''Requirements Management: Interface Between Requirements Development and All Other Engineering Processes'' Springer, Berlin 2007, ISBN 354047689X

== 外部リンク ==
* [http://www.swebok.org Guide to the Software Engineering Body of Knowledge]
[http://www.ul.ie/%7Eicse2000/ ICSE 2000]、[http://web4.cs.ucl.ac.uk/icse07/ ICSE 2007]
* [http://www.laputan.org/mud/ Big Ball of Mud] A "yes but why not" point of view by Brian Foote and Joseph Yoder, Department of Computer Science, University of Illinois at Urbana-Champaign
* [http://StudentProjectGuide.info A Student's Guide to Software Engineering Projects] - a free online guide for students taking SE project courses


{{DEFAULTSORT:そふとうえあこうかく}}
{{DEFAULTSORT:そふとうえあこうかく}}

2008年9月7日 (日) 04:14時点における版

ソフトウェア工学(ソフトウェアこうがく、: Software engineering) は、コンピュータソフトウェアの開発方法を研究対象とする情報工学の一分野である。 具体的には、高度かつ安全なコンピュータのソフトウェアを短期間で設計するための研究などを行なう。難易度の高い大規模ソフトウェアの開発に焦点を当てることが多い。

ソフトウェア工学では、通常、開発対象となるソフトウェアの開発を思いついた時点から、実際に動くソフトウェアが完成し、使用されるまでを、いくつかの工程に分けて考察する (ソフトウェア開発工程) 。これらの工程ごとに典型的な課題が存在し、課題に立ち向かう方法を明確にしようとする。 このため、ソフトウェア工学の対象は広範囲にわたる。

また、他分野とクロスオーバーしていたり、もしくはソフトウェア工学の1分野だったものが独立して別分野を形成したり(例:データベース設計)、別分野で培われた技術や概念がソフトウェア工学の対象となることもある(例:オブジェクト指向技術)。

分野の曖昧性と論争

ソフトウェア工学の典型的な定義として、以下のようなものがある。

  • ソフトウェアの開発・運用・保守に体系的・学問的・定量的手法を応用する分野」[1]
  • 「ソフトウェア開発のあらゆる面を扱う工学分野」[2]
  • 「実際の機械上で機能する信頼性のあるソフトウェアを経済的に得るための確かな工学原則の確立と利用」[3]

なお、software engineering という英語の場合、必ずしも工学の一分野を指すわけではなく、以下のような用法もある。

  • 元々、プログラミングおよびシステム分析と呼ばれていた活動などを総称的に software engineering と呼ぶ[4]
  • プログラミングに必要とされる理論的側面を計算機科学と呼び、そうでないあらゆる面を software engineering と称する[5]
  • 「プログラミング」を単なる技巧や技能ではなく工学として扱うことを主張する用語であり、そのような指針を文書化したもので使われる[6]

software engineering は、ある種の学問的訓練、専門教育が必要であり、それにはソフトウェア開発には必ずしも使われないものも含まれるとする人もいる。よく言われる喩えとして、建築に携わる全ての人が建築学者ではないのと同様、ソースコードを書く人が常にソフトウェア工学者とは限らない。また、カナダの Professional Engineers Ontario という団体は、software engineering という呼称自体に反対している。すなわち、ソフトウェア開発は工学と呼ぶには未成熟で、それに携わる人々はプロのエンジニアとは呼べないという[7]

「ソフトウェア工学」を工学の一分野としてどう定義するかは、人によって異なり、論争が行われてきた。デイビッド・パーナスは、ソフトウェア工学は実際に工学の一形式であるとした[8][9]。Steve McConnell は工学ではないとしたが、工学にすべきだと主張した[10]ドナルド・クヌースは、プログラミングは技であり科学だとした[11]エドガー・ダイクストラは、software engineeringsoftware engineer という用語が特にアメリカ合衆国で誤用されていると指摘した[12]

ソフトウェア開発方法論

ソフトウェア工学の成果は、ソフトウェア開発方法論にまとめられることがある。

対象物をどのように人間が把握し、設計し、プログラムとして実現するかという視点からは、ソフトウェア開発方法論には次のような分類がある。

開発プロジェクトをどのように運営するかに焦点を当てる場合は、特に「開発プロセスモデル」と呼び、以下の二種類に分類できる。ただし、以下の二種類は組み合わせて利用されることもある。

またオープンソースなどのプロジェクトにおいて、開発者の参加基準などの観点からは、以下の二種類に分類できると言われる。(エリック・レイモンド伽藍とバザール』」) [13]

ソフトウェア開発工程

開発工程は、開発着手から終了まで次のように分けられることが多い。ただし用語や詳細な定義は開発方法論ごとにさまざまである。

要求分析
着想したソフトウェアがどのような機能を持つべきかを検討し、必要に応じて文書化する。
設計
機能がソフトウェアとしてどのように実装されるべきかを検討し、必要に応じて仕様化する。
コーディング
仕様に従ってプログラムを作成する。
テスト
作成されたプログラムが機能的な要求を満たしていることを実証する。
運用・保守
ソフトウェアを使用したり、新たな要求に応じて機能を追加・変更する。

プロセスモデルにおいては、開発工程をどのように定義・配置するかが各モデルを規定する重要な要素となる。例えばウォーターフォール・モデルでは、要求分析からテスト-運用までを順に、1度ずつ行うことを想定している。スパイラル・モデルでは開発期間を短く分け、短期間に各開発工程を行い、それを繰り返す。

アジャイルソフトウェア開発のいくつかの開発手法 (エクストリーム・プログラミングなど) では、例えばコーディング前に(あるいは同時に)テスト用のコードを書き、コーディングはそのテストに通過することを目標にして行う (テスト駆動開発テストファースト) など、順序や各工程の意味づけを大きく変更している。

ソフトウェア開発の技術分類

ソフトウェア開発の技術はプロダクト・プロセス・プロジェクト管理に分類できる。

プロダクト
モデルの表現方法、ソフトウェアのアーキテクチャに関する技術。(ISO/IEC9126UML)などがある。
プロセス
管理工程・手順を定式化した開発技術。(CMM/CMMIISO9001SLCPIEEEソフトウェア規格)などがある。
プロジェクト管理(工程管理)
納期・品質・コスト管理技術・教育など。(ファンクションポイント法PMBOKISBOK)などがある。

おもな研究分野

歴史

ソフトウェア工学はコンピュータと共に発展してきた。そのためのツールも書かれたアプリケーションも時と共に進化してきた。

1940年代、初期のコンピュータでは人間が直接機械語を打ち込んでいた。その後アセンブリ言語が生まれ、1950年代中ごろには AutocodeFORTRANLISPといった初期の高級言語が生まれた。1960年代には第二世代のコンパイラなどが登場し、生産性や品質の向上に寄与した。60年代末には、大規模プロジェクトが行われるようになり(Future Systems プロジェクトなど)、ソフトウェア危機が叫ばれるようになる。1968年、NATO Conference on Software Engineering が開催された。1970年代になると、UNIX、コードリポジトリ、make などの協調的ソフトウェアツールが登場する。1980年代、パーソナルコンピュータが登場し、急速に広まり、市販ソフトウェアも大量に販売されるようになっていった。Smalltalk-80が公開され、オブジェクト指向が新たなパラダイムとして徐々に注目されていった。1990年代になると、オブジェクト指向プログラミングアジャイルソフトウェア開発エクストリーム・プログラミングが徐々に主流になっていった。2000年代になると、JavaRubyPythonPHP といったインタプリタベースの言語や .NET Frameworkマネージコード などが多用されるようになった。

ソフトウェア工学の最近の傾向

ソフトウェア工学はまだ若い分野であり、今も発展し続けている。最近のソフトウェア工学の重要な傾向を以下に示す。

アスペクト指向プログラミング
ソースコードの様々な場所に定型的コードを追加・削除するツールを提供することで、品質を高める支援をする。アスペクトには、あらゆるオブジェクトや関数が特定の状況でどう振舞うべきかを記述している。例えば、アスペクトを使って、特定の型の全オブジェクトにデバッグ機能、ロギング機能、ロック機能などを追加できる。現在は、アスペクトを使って汎用コードを設計する方法の研究が進んでいる。関連する概念として、自動プログラミングテンプレートがある。
アジャイルソフトウェア開発
目まぐるしく変化する市場に素早く対応できるソフトウェア開発の手法。この手法の信奉者は、従来型の文書を多用する手法は徐々に消えていくと信じている。関連する概念として、エクストリーム・プログラミングリーンソフトウェア開発がある。
実験的ソフトウェア工学
ソフトウェア上で実験を行うことを重視する分野。実験によってデータを収集し、そこから法則や理論を導き出そうとする。この手法の信奉者は、実験によってのみソフトウェアの性質に関する知識が得られると考えている。
モデル駆動工学
設計段階でテキストと図を使ったモデルを構築する。モデル変換やコード生成のツールを使って、モデルからコードの断片を抽出し、その後の開発に役立てる。
ソフトウェアプロダクトライン
一連のソフトウェア製品群を体系的に構築する手法。コードの再利用を発展させ、ソフトウェア開発工程を工業化しようとする試み。

脚注

  1. ^ “IEEE Standard Glossary of Software Engineering Terminology,” IEEE std 610.12-1990, 1990.
  2. ^ Sommerville, Ian (2007) [1982年]. “1.1.2 What is software engineering?”. Software Engineering (8th ed. ed.). Harlow, England: Pearson Education. pp. P. 7. ISBN 0-321-31379-8. http://www.pearsoned.co.uk/HigherEducation/Booksby/Sommerville/. "Software engineeering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use. In this definition, there are two key phrases:
    1. Engineeering discipline Engineers make things work. They apply theories, methods and tools where these are appropriate [. . .] Engineers also recognise that they must work to organisational and financial constraints. [. . .]
    2. All aspects of software production Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production."
     
  3. ^ F. L. Bauer (1972年). “Software Engineering”. Information Processing (North-Holland Publishing Co.) 71: 530–538. 
  4. ^ Akram I. Salah (2002年4月5日). “Engineering an Academic Program in Software Engineering”. 35th Annual Midwest Instruction and Computing Symposium. 2006年9月13日閲覧。: "For some, software engineering is just a glorified name for programming. If you are a programmer, you might put 'software engineer' on your business card—never 'programmer' though."
  5. ^ Mills, Harlan D., J. R. Newman, and C. B. Engle, Jr., "An Undergraduate Curriculum in Software Engineering," in Deimel, Lionel E. (1990). Software Engineering Education: SEI Conference 1990, Pittsburgh, Pennsylvania, USA, April 2-3,.... Springer. ISBN 0-387-97274-9 , p. 26: "As a practical matter, we regard software engineering as the necessary preparation for the practicing, software development and maintenance professional. The Computer Scientist is preparing for further theoretical studies..."
  6. ^ David Budgen, Pearl Brereton, Barbara Kitchenham, Stephen Linkman (2004年12月14日). “Realizing Evidence-based Software Engineering”. 2006年10月18日閲覧。: "We believe that software engineering can only advance as an engineering discipline by moving away from its current dependence upon advocacy and analysis...."
  7. ^ Sayo, Mylene, What's in a Name? Tech Sector battles Engineers on "software engineering", http://www.peo.on.ca/enforcement/June112002newsrelease.html 2008年7月24日閲覧。 
  8. ^ Parnas, David L. (1998年). “Software Engineering Programmes are not Computer Science Programmes”. Annals of Software Engineering 6: 19–37. doi:10.1023/A:1018949113292. http://www.cas.mcmaster.ca/serg/papers/crl361.pdf. , p. 19: "Rather than treat software engineering as a subfield of computer science, I treat it as an element of the set, {Civil Engineering, Mechanical Engineering, Chemical Engineering, Electrical Engineering,....}."
  9. ^ Parnas, David L. (1998年). “Software Engineering Programmes are not Computer Science Programmes”. Annals of Software Engineering 6: 19–37. doi:10.1023/A:1018949113292. http://www.cas.mcmaster.ca/serg/papers/crl361.pdf. , p. 20: "This paper argues that the introduction of accredited professional programmes in software engineering, programmes that are modelled on programmes in traditional engineering disciplines will help to increase both the quality and quantity of graduates who are well prepared, by their education, to develop trustworthy software products."
  10. ^ McConnell, Steve (8月 2003). Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers. Boston, MA: Addison-Wesley. ISBN 0-321-19367-9 , p. 39: "In my opinion, the answer to that question is clear: Professional software development should be engineering. Is it? No. But should it be? Unquestionably, yes. "
  11. ^ Knuth, Donald (1974年). “Computer Programming as an Art”. Communications of the ACM 17 (12): 667–673. http://www.paulgraham.com/knuth.html.  1974年のチューリング賞講演
  12. ^ Dijkstra, Edsger W; transcribed by Mario Béland (1993年12月3日; transcription last revised 2004年11月23日). “There is still a war going on (manuscript Austin, 3 December 1993)”. E. W. Dijkstra Archive. The University of Texas at Austin, Department of Computer Sciences. 2007年2月17日閲覧。 “When the term was coined in 1968 by F.L. Bauer of the Technological University of Munich, I welcomed it. [. . .] I interpreted the introduction of the term “software engineering” as an apt reflection of the fact that the design of software systems was an activity par excellence for the mathematical engineer. [. . .]. As soon the term arrived in the USA, it was relieved of all its technical content. It had to be so for in its original meaning it was totally unacceptable [. . .] In the mean time, software engineering has become an almost empty term, as was nicely demonstrated by Data General who overnight promoted all its programmers to the exalted rank of “software engineer”!”
  13. ^ ソースコードを非公開としているプロジェクトにおいては原理的に伽藍方式以外をとりえない。ソースコードを公開しているからこそ、見ず知らずの人達が思い思いの拡張をすることが出来るのである。

関連項目

参考文献

外部リンク

ICSE 2000ICSE 2007