ソフトウェア工学

フリー百科事典ウィキペディアより
ナビゲーションにジャンプ 検索にジャンプ

ソフトウェア エンジニアリングは、ソフトウェア開発に対する体系的なエンジニアリングアプローチです。[1] [2] [3]

ソフトウェア エンジニアは、ソフトウェア エンジニアリングの原則を適用して、コンピューター ソフトウェアの設計、開発、保守、テスト、および評価を行う人ですプログラマーという用語は同義語として使用されることもありますが、エンジニアリング教育やスキルの意味合いが欠けている場合もあります。

エンジニアリング技術は、ソフトウェア ライフ サイクル プロセス自体の定義、実装、評価、測定、管理、変更、および改善を含むソフトウェア開発プロセス[1] [4]を[説明が必要]通知するために使用されます。ソフトウェア構成管理[1] [4]を多用しています。これは、構成に対する変更を体系的に制御し、システムのライフサイクル全体にわたって構成とコードの整合性と追跡可能性を維持することに関するものです。最新のプロセスでは、ソフトウェアのバージョン管理が使用されます。

歴史

1960 年代以降、ソフトウェア エンジニアリングは独自のタイプのエンジニアリングと見なされていました。さらに、ソフトウェア エンジニアリングの開発は苦闘と見なされていました。ハードウェアについていくのが難しく、ソフトウェア エンジニアに多くの問題を引き起こしました。問題には、予算超過、締め切り超過、大規模なデバッグと保守が必要なソフトウェア、消費者のニーズへの対応に失敗した、または完成すらしなかったソフトウェアが含まれていました。1968 年にNATOは、ソフトウェアに関連する問題が取り上げられた最初のソフトウェア エンジニアリング会議を開催しました。ソフトウェア開発のガイドラインとベスト プラクティスが確立されました。[5]

「ソフトウェア エンジニアリング」という用語の起源は、さまざまな情報源に起因しています。「ソフトウェア エンジニアリング」という用語は、COMPUTERS and AUTOMATIONの 1965 年 6 月号で企業が提供するサービスのリストに登場し、 1966 年 8 月号の Communications of the ACM (Volume 9, number 8)「letter to the ACM」でより正式に使用されました。 ACM プレジデントのアンソニー A. エッティンガーによる ACM メンバーシップ」[6] [7]は、1968 年にフリードリッヒ L. バウアー 教授が開催した NATO 会議のタイトルにも関連付けられています。これは、ソフトウェア エンジニアリングに関する最初の会議です。[8] マーガレット・ハミルトンは、アポロ計画で行っていたことに正当性を与えるための「ソフトウェア工学」という分野について説明しました。[9] 当時、「ソフトウェア危機」と認識されていました。[10] [11] [12]第 40 回ソフトウェア エンジニアリング国際会議 (ICSE 2018) は、フレデリック ブルックス[13]マーガレット ハミルトンの本会議の基調講演で、「ソフトウェア エンジニアリング」の 50 周年を祝います。[14]

1984 年、米国ペンシルベニア州ピッツバーグにあるカーネギー メロン大学のキャンパスに本社を置く連邦政府の資金提供による研究開発センターとして、 Software Engineering Institute (SEI) が設立されました。Watts Humphreyは、ソフトウェア エンジニアリング プロセスの理解と管理を目的とした SEI ソフトウェア プロセス プログラムを設立しました。導入されたプロセス成熟度レベルは、開発のための能力成熟度モデル統合 (CMMI-DEV) となり、米国政府がソフトウェア開発チームの能力を評価する方法を定義しました。

ソフトウェア エンジニアリングの最新の一般的に受け入れられているベスト プラクティスは、ISO/IEC JTC 1/SC 7サブ委員会によって収集され、ソフトウェア エンジニアリング知識体系(SWEBOK)として公開されています。[15]ソフトウェア エンジニアリングは、主要なコンピューティング分野の 1 つと考えられています。[16]

定義と用語論争

ソフトウェア エンジニアリングの注目すべき定義には、次のようなものがあります。

  • 「科学的および技術的な知識、方法、および経験を、ソフトウェアの設計、実装、テスト、および文書化に体系的に適用する」 — 労働統計局 — IEEE システムおよびソフトウェア工学 – 語彙[17]
  • 「ソフトウェアの開発、運用、および保守に対する体系的で規律のある、定量化可能なアプローチの適用」 — IEEE Standard Glossary of Software Engineering Terminology [18]
  • 「ソフトウェア制作のあらゆる側面に関係する工学分野」— Ian Sommerville [19]
  • 「信頼性が高く、実際のマシンで効率的に動作するソフトウェアを経済的に入手するための健全なエンジニアリング原則の確立と使用」 — Fritz Bauer [20]
  • 「複雑なコンピューター プログラムの設計、実装、保守を扱うコンピューター サイエンスの分野」— Merriam-Webster [21]
  • 「『ソフトウェア エンジニアリング』には、コードを記述する行為だけでなく、組織がそのコードを長期にわたって構築および維持するために使用するすべてのツールとプロセスが含まれます。[...] ソフトウェア エンジニアリングは、『長期にわたって統合されたプログラミング』と考えることができます。 .'"—Google のソフトウェア エンジニアリング[22]

この用語は、あまり正式には使用されていません。

「ソフトウェアエンジニア」の語源

マーガレット・ハミルトンは、アポロ計画の仕事中に「ソフトウェア工学」という用語を宣伝しました「エンジニアリング」という用語は、技術の進歩に向けた他の貢献と同じくらい真剣に取り組まなければならないことを認めるために使用されました。ハミルトンは、この用語の使用について詳しく説明しています。

私が最初にこの用語を思いついたとき、少なくとも私たちの世界では、これまで誰も聞いたことがありませんでした. それは長い間続いていた冗談でした。彼らは私の急進的な考えについてからかうのが好きでした。最も尊敬されているハードウェアの専門家の 1 人が、ミーティングで全員に、ソフトウェアを構築するプロセスもハードウェアと同様にエンジニアリング分野と見なされるべきであることに同意したと説明したのは、忘れられない日でした。彼が新しい「用語」自体を受け入れたからではなく、私たちが彼と部屋にいる他の人たちに、それ自体が工学分野にあるものとして受け入れられたからです。[26]

用語の適合性

個々のコメンテーターは、ソフトウェア エンジニアリングをどのように定義するか、またはエンジニアリング分野としての正当性をどう定義するかについて、激しく意見が分かれています。David Parnasは、ソフトウェア エンジニアリングは実際にはエンジニアリングの一形態であると述べています。[27] [28] Steve McConnellはそうではないが、そうすべきだと言っている。[29] Donald Knuthは、プログラミングは芸術であり科学であると述べています。[30] Edsger W. Dijkstraは、ソフトウェア エンジニアリングソフトウェア エンジニアという用語が誤用されていると主張しました[不適切な統合? ] 有害であると見なされるべきであり、特に米国[31]

大規模プロジェクトのタスク

ソフトウェア要件

要件エンジニアリングは、ソフトウェア要件抽出、分析、仕様、および検証に関するものですソフトウェア要件には、3 つの異なるタイプがあります。機能要件非機能要件がある、およびドメイン要件。ソフトウェアの操作を実行し、ユーザーが使用する適切な出力を期待する必要があります。非機能要件は、移植性、セキュリティ、保守性、信頼性、スケーラビリティ、パフォーマンス、再利用性、柔軟性などの問題を扱います。それらは、次のタイプに分類されます: インターフェイスの制約、パフォーマンスの制約 (応答時間、セキュリティ、ストレージ スペースなど)、動作の制約、ライフ サイクルの制約 (保守性、移植性など)、および経済的な制約。非機能要件の指定に関しては、システムまたはソフトウェアがどのように機能するかについての知識が必要です。ドメイン要件は、プロジェクトの特定のカテゴリまたはドメインの特性と関係があります。[32]

ソフトウェア設計

ソフトウェア設計とは、システムまたはコンポーネントのアーキテクチャ、コンポーネント、インターフェイス、およびその他の特性を定義するプロセスに関するものです。これはソフトウェア アーキテクチャとも呼ばれます。ソフトウェア設計は、設計の 3 つの異なるレベルに分けられますインターフェイス設計アーキテクチャ設計詳細設計の 3 つのレベルがあります。. インターフェイス設計は、システムとその環境の間の相互作用です。これは、システムの内部動作とともに高レベルの抽象化で発生します。アーキテクチャ設計は、システムの主要なコンポーネントと、それらの責任、プロパティ、インターフェイス、およびそれらの間で発生する関係と相互作用に関係しています。詳細設計は、すべての主要なシステム コンポーネント、それらのプロパティ、関係、処理、および通常はそれらのアルゴリズムデータ構造の内部要素です。[33]

ソフトウェア構成

ソフトウェア開発の主な活動であるソフトウェア構築[1] [4]は、プログラミング単体テスト統合テスト、およびデバッグの組み合わせです。この段階でのテストは、通常、ソフトウェアの構築中にプログラマーによって実行され、何が書かれたかを確認し、コードを次のステップに送る準備ができているかどうかを判断します。

ソフトウェアのテスト

ソフトウェア テスト[1] [4]は、テスト対象の製品またはサービスの品質に関する情報を利害関係者に提供するために実施される実証的で技術的な調査であり、単体テスト統合テストなどのさまざまなアプローチが使用されます。これは、ソフトウェアの品質の 1 つの側面です。ソフトウェア開発の独立したフェーズとして、通常、コードを書いた人以外の 品質保証スタッフまたは開発者によって実行されます。

ソフトウェア分析

ソフトウェア分析は、パフォーマンス堅牢性セキュリティなどのプロパティに関するコンピューター プログラムの動作を分析するプロセスです。プログラムを実行せずに実行することも (静的プログラム分析)、実行時に実行することもできます (動的プログラム分析)、またはその両方を組み合わせて実行できます。 .

ソフトウェアのメンテナンス

ソフトウェア保守[1] [4]は、ソフトウェア製品の出荷後に費用対効果の高いサポートを提供するために必要な活動を指します。ソフトウェア保守とは、配布後にソフトウェア アプリケーションを修正および更新して、障害を修正し、そのパフォーマンスを向上させることです。ソフトウェアは現実の世界と大きく関係しており、現実の世界が変化すると、ソフトウェアのメンテナンスが必要になります。ソフトウェア メンテナンスには、エラーの修正、最適化、未使用および破棄された機能の削除、既存の機能の強化が含まれます。通常、メンテナンスはプロジェクトのコストの約 40% から 80% を占めます。そのため、メンテナンスに集中することで、コストを抑えることができます。[34]

教育

ソフトウェアエンジニアになるためには、プログラミングの知識が必要です。2004 年、IEEE Computer SocietySWEBOKを作成しました。これは、ISO/IEC Technical Report 1979:2005 として公開されており、4 年の経験を持つ大卒のソフトウェア エンジニアが習得することを推奨する一連の知識について説明しています。[35] 多くのソフトウェア エンジニアは、大学の学位を取得したり、専門学校で訓練を受けたりして、この職業に就きます。IEEE Computer SocietyAssociation for Computing Machineryの Computing Curricula に関する合同タスク フォースによって、ソフトウェア工学の学士号を取得するための標準的な国際カリキュラムが 1 つ定義されました。[ 36 ]多くの大学がソフトウェア工学の学位プログラムを持っています。2010 年の時点で、米国には 244 の Campus Bachelor of Software Engineeringプログラム、70 の Online プログラム、230 の Masters レベルのプログラム、41 の Doctorate レベルのプログラム、および 69 の Certificate レベルのプログラムがありました。

大学教育に加えて、多くの企業が情報技術のキャリアを追求したい学生のためのインターンシップを後援しています。これらのインターンシップは、典型的なソフトウェア エンジニアが毎日遭遇する興味深い現実世界のタスクを学生に紹介することができます。同様の経験は、ソフトウェア エンジニアリング の兵役を通じて得ることができます。

ソフトウェア工学学位プログラム

今日、実務家の半数はコンピュータ サイエンス情報システム、または情報技術の学位を取得しています。[要出典]ソフトウェア工学の学位を取得している実践者の数は、少数ではあるが増加している。1987 年、インペリアルカレッジ ロンドンのコンピューティング学科は、英国および世界で最初の 3 年間のソフトウェア エンジニアリング学士号を導入しました。翌年、シェフィールド大学は同様のプログラムを設立しました。[37] 1996 年、ロチェスター工科大学は、米国で最初のソフトウェア エンジニアリングの学士号プログラムを設立しましたが、ライス大学クラークソン大学ミルウォーキー工科大学、ミシシッピ州立大学が取得したのと同じ時期に、2003 年までABET認定を取得しませんでした。[38] 1997 年、インドのコインバトールにある PSG カレッジ オブ テクノロジーは、ソフトウェア エンジニアリングの 5 年間の総合理学修士課程を開始した最初の大学でした。[要出典]

それ以来、ソフトウェア工学の学士号が多くの大学に設置されています。ソフトウェア工学の学士号を取得するための標準的な国際カリキュラムSE2004は、 Association for Computing MachineryIEEE Computer Societyからの資金提供を受けて、2001 年から 2004 年にかけて運営委員会によって定義されました2004 年の時点で、米国では約 50 の大学がソフトウェア エンジニアリングの学位を提供しており、コンピュータ サイエンスとエンジニアリングの原則と実践の両方を教えています。最初のソフトウェア工学修士号がシアトル大学に設置されましたそれ以来、大学院のソフトウェア エンジニアリングの学位は、より多くの大学から取得できるようになりました。同様に、カナダでは、 Canadian Council of Professional Engineerの Canadian Engineering Accreditation Board (CEAB) が、いくつかのソフトウェア エンジニアリング プログラムを認定しています。

1998 年、米国海軍大学院(NPS)は、世界で最初のソフトウェア エンジニアリングの博士課程を設立しました。[要出典]さらに、カリフォルニア州立大学フラートン校のコンピューター科学および工学部を通じて提供されるソフトウェア エンジニアリング (MSE) の理学修士号など、ソフトウェア エンジニアリングの多くのオンライン上級学位が登場しましたSteve McConnell は、ほとんどの大学がソフトウェア エンジニアリングではなくコンピューター サイエンスを教えているため、真のソフトウェア エンジニアが不足していると述べています。[39] ETS (École de technologie supérieure) 大学とUQAM(Université du Québec à Montréal) は、IEEE によって Software Engineering Body of Knowledge ( SWEBOK ) の開発を委任されました。これは、ソフトウェア エンジニアがカバーする知識体系を記述する ISO 標準となっています。[40]

職業

プロのソフトウェア エンジニアのライセンスまたは認定に関する法的要件は、世界中で異なります。英国では、ソフトウェア エンジニアの肩書を引き受ける、または使用するためのライセンスまたは法的要件はありません。アルバータ州、ブリティッシュ コロンビア州、オンタリオ州、[41]およびケベック州など、カナダの一部の地域では、ソフトウェア エンジニアは、プロフェッショナル エンジニア (P.Eng) の指定および/または情報システム プロフェッショナル (ISP) の指定を保持できます。ヨーロッパでは、ソフトウェア エンジニアはヨーロピアン エンジニア(EUR ING) プロフェッショナル タイトルを取得できます。

米国では、2013 年以来、ソフトウェア エンジニアリング向けのNCEES プロフェッショナル エンジニア試験が提供されており、ソフトウェア エンジニアのライセンスと認定が可能になっています。[42] NCEES は参加者不足のため、2019 年 4 月以降に試験を終了します。[43]強制ライセンスは、現在でも大部分が議論されており、議論の余地があると認識されています。[要出典]テキサスなど米国の一部の地域では、「エンジニア」という用語の使用は法律で規制されており、プロフェッショナル エンジニアライセンスを持つ個人のみが使用できます。[要出典]

IEEE Computer SocietyACMは、米国に本拠を置くソフトウェア エンジニアリングの2 つの主要な専門組織であり、ソフトウェア エンジニアリングの専門家向けのガイドを発行しています。IEEE のSoftware Engineering Body of Knowledge のガイド – 2004 年版( SWEBOK ) は、この分野を定義し、IEEE が実際のソフトウェア エンジニアに期待する知識を説明しています。最新の SWEBOK v3 は更新されたバージョンであり、2014 年にリリースされました。[44] IEEE は「ソフトウェア エンジニアリング倫理規定」も公布しています。[45]

雇用

米国労働統計局(BLS) は、2018 年に米国で職を持っているソフトウェア開発者を1,365,500 人数えました、多くのソフトウェア エンジニアがコンピュータ サイエンスの学位を取得しています。[47] BLS は、2014 年から 2024 年にかけて、コンピューター ソフトウェア エンジニアリングが 17% 増加すると推定しています。[48]これは、2012 年から 2022 年にかけて BLS が推定したソフトウェア エンジニアリングの 22% から減少しています。[49] [48]そして、2010 年から 2020 年の BLS 推定値の 30% からさらに下がっています。[50]この傾向により、雇用の伸びは過去 10 年間ほど速くはない可能性があります。米国ではコンピューター ソフトウェア エンジニアが担当していたはずの仕事が、代わりにインドやその他の外国のコンピューター ソフトウェア エンジニアに外部委託されるようになったためです。[51] [52]さらに、BLS Job Outlook for Computer Programmers, 2014–24 は -8% (彼らの言葉では減少) [51]を予測し、[51] Job Outlook, 2019-29 は - 9%、[53]、2021 年から 2031 年にかけてコンピューターをプログラムする人は 10% 減少します。[54] [55]さらに、他の工学分野と比較して、多くのソフトウェア分野の女性も年々減少しています。[56]ただし、この傾向は、今後数十年で 米国市場の現在のソフトウェア エンジニアの多くが職業を離れたり、市場から退去したりするため、変化するか、または遅くなる可能性があります

多くのソフトウェア エンジニアは、従業員または請負業者として働いています。ソフトウェア エンジニアは、企業、政府機関 (民間または軍事)、および非営利組織と協力します。一部のソフトウェア エンジニアは、フリーランサーとして独立して働いています。一部の組織には、ソフトウェア開発プロセスの各タスクを実行する専門家がいます他の組織では、ソフトウェア エンジニアがそれらの多くまたはすべてを行う必要があります。大規模なプロジェクトでは、人々は 1 つの役割だけに特化する場合があります。小規模なプロジェクトでは、人々が同時にいくつかまたはすべての役割を担うことがあります。多くの企業がインターンを採用しています。多くの場合、大学生や大学の学生は夏休みに、またはインターンシップに参加しています。専門分野には、アナリストアーキテクトが含まれます開発者テスターテクニカル サポートミドルウェア アナリストプロジェクト マネージャー教育者、および研究者

ほとんどのソフトウェア エンジニアとプログラマーは週 40 時間働いていますが、2008 年にはソフトウェア エンジニアの約 15% とプログラマーの 11% が週に 50 時間以上働いていました[ 52] 。コンピューター端末の前に座ってキーボードでタイピングしているエンジニアやプログラマーは、眼精疲労、背中の不快感、手根管症候群などの手や手首の問題にかかりやすくなっています。[57]

認定

Software Engineering Instituteは、セキュリティ、プロセス改善、ソフトウェア アーキテクチャなどの特定のトピックに関する認定を提供しています[58] IBMマイクロソフト、およびその他の企業も、独自の認定試験を後援しています。多くのIT 認定プログラムは特定のテクノロジを対象としており、これらのテクノロジのベンダーによって管理されています。[59]これらの認定プログラムは、これらの技術を使用する人々を雇用する機関に合わせて調整されています。

一般的なソフトウェア エンジニアリング スキルの広範な認定は、さまざまな専門団体を通じて入手できます。2006 年の時点でIEEEは 575 人を超えるソフトウェア プロフェッショナルをCertified Software Development Professional (CSDP) として認定しています。[60] 2008 年に、Certified Software Development Associate (CSDA) として知られる初級レベルの認定を追加しました。[61] ACMは 1980 年代初頭に専門的な認定プログラムを持っていた[出典]興味がなかったために中止されました。ACM は 1990 年代後半にソフトウェア エンジニアの専門的認定の可能性を検討しましたが、最終的に、そのような認定はソフトウェア エンジニアリングの専門的な産業慣行には不適切であると判断しました。[62]

英国では、British Computer SocietyがChartered IT Professional (CITP)と呼ばれる法的に認められた専門資格を開発し、資格のあるメンバー ( MBCS ) が利用できます。ソフトウェア エンジニアは、Institute of Engineering and Technology の会員になる資格があるため、認定エンジニアの資格を得ることができます。カナダでは、Canadian Information Processing SocietyがInformation Systems Professional (ISP)と呼ばれる法的に認められた専門資格を開発しました[63]カナダのオンタリオ州で、 Canadian Engineering Accreditation Board (CEAB)を卒業したソフトウェア エンジニア認定プログラムを取得し、PEO ( Professional Engineers Ontario ) の Professional Practice Examination (PPE) を正常に完了し、少なくとも 48 か月の許容可能なエンジニアリング経験を持っている場合、Professional Engineers Ontarioを通じてライセンスを取得する資格があり、 Professional Engineers P.Eng になることができます。[64]ただし、PEO はオンラインまたは遠隔教育を認めていません。また、コンピュータ サイエンスのプログラムとソフトウェア エンジニアリングのプログラムとの間には大きな重複があるにもかかわらず、それらを同等であるとは見なしていません。これは論争と認証戦争を引き起こしました. また、専門職の P.Eng 保有者の数を非常に低く抑えています。この分野で働く専門家の大多数は、SE ではなく CS の学位を取得しています。SE 以外の学位の保持者にとって難しい認定パスを考えると、ほとんどの場合、わざわざライセンスを追求することはありません。

グローバル化の影響

アウトソーシングの初期の影響と、第三世界の発展途上国における国際的な人的資源のコストが比較的低いことにより、ソフトウェア開発活動が北米とヨーロッパの企業からインドへ、そしてその後、中国、ロシア、およびその他の発展途上国へと大規模に移行しました。このアプローチにはいくつかの欠陥がありました。主に距離/タイムゾーンの違いであり、クライアントと開発者の間の人間のやり取りと大規模な仕事の移動を妨げていました。これは、ソフトウェア エンジニアリングの専門職の多くの側面に悪影響を及ぼしました。たとえば、先進国の一部の学生は、オフショア アウトソーシング(他の国からソフトウェア製品またはサービスを輸入すること) や、他の国に取って代わられることを恐れて、ソフトウェア エンジニアリングに関連する教育を避けています。外国人ビザ労働者[65]統計は現在、ソフトウェア エンジニアリング自体に対する脅威を示していませんが。関連するキャリアでは、コンピューター プログラミングが影響を受けたようです。[66] [67]それにもかかわらず、フォローザサンのワークフローを介してオフショアおよびニアショアのリソースをスマートに活用する機能により、多くの組織の全体的な運用能力が向上しました。[68]北アメリカ人が仕事を辞める時、アジア人はちょうど仕事に就いています。アジア人が仕事を辞める時、ヨーロッパ人は仕事に来る。これにより、残業代を支払ったり、主要な人的資源である睡眠パターンを混乱させたりすることなく、1 日 24 時間、ビジネスに不可欠なプロセスを人間が監視する継続的な機能が提供されます。

グローバルなアウトソーシングにはいくつかの利点がありますが、グローバルな (そして一般的には分散型の) 開発は、開発者間の距離が原因で深刻な問題に直面する可能性があります。これは、地理的、時間的、文化的、およびコミュニケーション (さまざまな場所でのさまざまな言語や英語の方言の使用を含む) として特定されている、この種の距離の重要な要素によるものです。[69]過去 15 年間にわたってグローバルなソフトウェア開発の分野で研究が行われ、複雑な活動に関連する利点と問題を強調する広範な関連研究が公開されています。ソフトウェア エンジニアリングの他の側面と同様に、この分野および関連分野の研究が進行中です。

賞品

ソフトウェア工学の分野にはいくつかの賞があります: [70]

  • Codie アワードは、ソフトウェア業界における優れたソフトウェア開発に対して、Software and Information Industry Association が毎年発行する賞です。
  • Jolt Awardsは、ソフトウェア業界の賞です。
  • Stevens Awardは、Wayne Stevens を記念して贈られるソフトウェア エンジニアリング賞です。
  • ハーラン ミルズ賞は、「ソフトウェア エンジニアリングに焦点を当てた、情報科学の理論と実践への貢献」に対して贈られました。

批判

ソフトウェア エンジニアリングは、実践者を、明確に定義されたエンジニアリング アプローチに従って問題を解決する個人と見なします。これらのアプローチは、さまざまなソフトウェア エンジニアリングの本や研究論文で指定されており、常に予測可能性、精度、リスクの軽減、プロフェッショナリズムを意味しています。この視点は、[誰によって? ]技術知識を広め、この分野を成熟させるためのメカニズムとして、ライセンス供与、認証、体系化された知識体系について。

ソフトウェア エンジニアリングはエンジニアリングを拡張し、エンジニアリング モデル、つまりエンジニアリング プロセス、エンジニアリング プロジェクト管理、エンジニアリング要件、エンジニアリング設計、エンジニアリング構築、およびエンジニアリング検証を利用します。この概念は非常に新しいためほとんど理解されておらず、ソフトウェア エンジニアリングの教科書、論文、プログラマーやクラフターのコミュニティなどで広く誤解されています。

ソフトウェア エンジニアリングの主要な問題の 1 つは、そのアプローチが十分に経験的でないことです。これは、アプローチの実際の検証が通常存在しないか非常に限られているため、ソフトウェア エンジニアリングは「理論的な環境」でのみ実行可能であると誤解されることが多いためです。

今日のソフトウェア開発で使用されている多くの概念の創始者であるEdsger Dijkstraは、2002 年に亡くなるまで「ソフトウェア エンジニアリング」の概念を否定し、それらの用語は彼がコンピューター サイエンスの「急進的な新規性」と呼んだものとの類似性が低いと主張しました。 :

これらの現象の多くは、「ソフトウェア エンジニアリング」という名前でバンドルされています。経済学が「惨めな科学」として知られているように、ソフトウェア エンジニアリングは「運命の学問分野」として知られるべきです。もちろん、ソフトウェア エンジニアリングは別の価値ある原因として提示されますが、それは目障りです。その文献を注意深く読み、その信奉者が実際に何をしているかを分析すると、ソフトウェア エンジニアリングがその憲章として受け入れていることがわかります。 ." [71]

も参照

勉強と実践

役割

専門的な側面

参考文献

引用

  1. ^ a b c d e f アブランら。2004年、1~1ページ
  2. ^ ACM (2007). 「コンピューティングの学位とキャリア」 . ACM 2010 年 11 月23 日閲覧
  3. ^ ラプラント、フィリップ (2007). ソフトウェア エンジニアリングについてすべてのエンジニアが知っておくべきことボカラトン:CRC. ISBN 978-0-8493-7228-5. 2011 年1 月 21 日閲覧
  4. ^ a b c d e 「ソフトウェア エンジニアリング知識体系 (SWEBOK バージョン 3)、2014」(pdf) . www.swebok.orgIEEE コンピュータ ソサエティ2016年 5 月 24 日閲覧
  5. ^ 「コーディングとソフトウェア エンジニアリングの歴史」 . www.hackreactor.com 2021-05-06取得
  6. ^ エッティンガー、AG (1966). 「ACM会員への会長の手紙」 . 通信します。ACMコンピューティング機械協会。9 (8): 545–546. ドイ: 10.1145/365758.3291288ISSN 0001-0782 . S2CID 53432801 .  
  7. ^ 「「ソフトウェア工学」の起源" . 2013 年 4 月 4 日2017 年11 月 17 日閲覧。
  8. ^ ランドール、ブライアン. 「1968/69 NATO ソフトウェア エンジニアリング レポート」. 2017年11月17日閲覧
  9. ^ ソフトウェア マガジン「「ソフトウェア エンジニアリング」という用語を発明した科学者について知っておくべきこと" . 2018 年 11 月 24 日時点のオリジナルよりアーカイブ2019 年2 月 12 日閲覧
  10. ^ Sommerville 2008、p。26
  11. ^ ピーター、ナウル; ランデル、ブライアン(1968 年 10 月 7 ~ 11 日)。ソフトウェア エンジニアリング: NATO 科学委員会が主催する会議のレポート(PDF)ドイツ、ガルミッシュ: NATO の科学問題課2008 年12 月 26 日閲覧
  12. ^ ランデル、ブライアン(2001 年 8 月 10 日). 「1968/69 NATO ソフトウェア エンジニアリング レポート」 . ブライアン ランデル大学のホームページニューキャッスル大学のコンピューター サイエンス学部2008年 10 月 11日閲覧第 1 回 NATO ソフトウェア エンジニアリング カンファレンスのアイデア、特に当時はほとんど知られていなかった「ソフトウェア エンジニアリング」という用語を (意図的に挑発的な) タイトルとして採用したアイデアは、もともとFritz Bauer教授から来たものだと思います。
  13. ^ 40 周年とソフトウェア エンジニアリングの 50 周年を祝う 2018 ソフトウェア エンジニアリングに関する国際会議。「ICSE 2018 – 本会議 – フレッド・ブルックス」 . ユーチューブ2018年8月9日閲覧
  14. ^ 40 周年とソフトウェア エンジニアリングの 50 周年を祝う 2018 ソフトウェア エンジニアリングに関する国際会議。「ICSE 2018 – 本会議 – マーガレット ハミルトン」 . ユーチューブ2018年8月9日閲覧
  15. ^ "ISO/IEC TR 19759:2005" . 2012年 4 月 1 日閲覧
  16. ^ 「コンピューティング カリキュラム 2005 の合同タスク フォース」(PDF) . 2014-10-21。2014-10-21 のオリジナルからのアーカイブ(PDF) 2020-04-16取得
  17. ^ システムおよびソフトウェア工学 - 語彙 ISO / IEC / IEEE std 24765:2010(E)、2010.
  18. ^ IEEE Standard Glossary of Software Engineering Terminology IEEE std 610.12-1990、1990.
  19. ^ Sommerville, Ian (2007) [1982]. 「1.1.2 ソフトウェア工学とは?」. ソフトウェア工学(第8版)。イングランド、ハーロウ: ピアソン教育。p。7.ISBN _ 978-0-321-31379-9. ソフトウェア工学は、システム仕様の初期段階から使用後のシステムの保守まで、ソフトウェア制作のあらゆる側面に関係する工学分野です。この定義には、次の 2 つのキー フレーズがあります
    。 1.エンジニアリング分野エンジニアは物事を機能させます。彼らは、理論、方法、およびツールが適切な場合に適用します[. . .] エンジニアは、組織的および財政的な制約に対処しなければならないことも認識しています。[。. .]
    2.ソフトウェア制作のすべての側面ソフトウェア工学は、ソフトウェア開発の技術的プロセスだけでなく、ソフトウェア プロジェクト管理や、ソフトウェア生産をサポートするためのツール、方法、および理論の開発などの活動にも関係しています。
  20. ^ 「ソフトウェア工学」. 情報処理71 : 530–538.
  21. ^ 「ソフトウェアエンジニアリングの定義」 . www.merriam-webster.com 2019-11-25取得
  22. ^ ウィンターズ、タイタス​​。マンシュレック、トム。ライト、ハイラム (2020)。「序文、時間をかけたプログラミング」. Google でのソフトウェア エンジニアリングO'Reilly Media, Inc. pp. xix–xx、6–7。ISBN 978-1-492-08279-8. 「ソフトウェア エンジニアリング」には、コードを記述する行為だけでなく、組織がそのコードを長期にわたって構築および維持するために使用するすべてのツールとプロセスが含まれることを提案します。ソフトウェア組織は、長期にわたってコードの価値を維持するためにどのようなプラクティスを導入できますか? エンジニアがコードベースをより持続可能にし、ソフトウェア エンジニアリングの規律自体をより厳格にするにはどうすればよいでしょうか?
  23. ^ Akram I. Salah (2002-04-05). 「ソフトウェア工学の学術プログラムのエンジニアリング」(PDF) . 第 35 回年次中西部教育およびコンピューティング シンポジウム2006 年9 月 13 日閲覧 : 「一部の人にとって、ソフトウェア エンジニアリングはプログラミングの美化された名前に過ぎません。あなたがプログラマーなら、名刺に「ソフトウェア エンジニア」と書くかもしれませんが、決して「プログラマー」ではありません。
  24. ^ Mills、Harlan D.、JR Newman、および CB Engle、Jr.、「ソフトウェア工学の学部カリキュラム」、 Deimel、Lionel E. (1990 年)。ソフトウェア エンジニアリング教育: SEI Conference 1990、ピッツバーグ、ペンシルバニア、米国、4 月 2 ~ 3 日スプリンガー。ISBN 978-0-387-97274-9.p。26 : 「実際問題として、私たちはソフトウェア エンジニアリングを実践、ソフトウェア開発、保守の専門家にとって必要な準備と見なしています。コンピュータ科学者はさらなる理論研究の準備をしています...」
  25. ^ デビッド・バジェン; パールブレトン; バーバラ・キッチハム; スティーブン リンクマン (2004-12-14)。「エビデンスに基づくソフトウェアエンジニアリングの実現」 . 2006 年 12 月 17 日のオリジナルからアーカイブ2006 年10 月 18 日閲覧: 「ソフトウェア エンジニアリングは、現在の擁護と分析への依存から脱却することによってのみ、エンジニアリング分野として進歩できると信じています....」
  26. ^ ローレンス、スナイダー (2017). 情報技術の流暢性 : スキル、概念、および機能([第 7 版] ed.)。ニューヨーク、ニューヨーク。ISBN 978-0134448725. OCLC  960641978
  27. ^ パーナス、デビッド L. (1998). 「ソフトウェア エンジニアリング プログラムはコンピュータ サイエンス プログラムではありません」 . ソフトウェア工学の年表6 : 19–37. ドイ: 10.1023/A:1018949113292 . S2CID 35786237 . 、p。19: 「ソフトウェア エンジニアリングをコンピュータ サイエンスのサブフィールドとして扱うのではなく、{土木工学、機械工学、化学工学、電気工学、...} というセットの要素として扱います。」
  28. ^ パーナス、デビッド L. (1998). 「ソフトウェア エンジニアリング プログラムはコンピュータ サイエンス プログラムではありません」 . ソフトウェア工学の年表6 : 19–37. ドイ: 10.1023/A:1018949113292 . S2CID 35786237 . 、p。20: 「この論文は、伝統的な工学分野のプログラムをモデルにしたソフトウェア エンジニアリングの認定された専門プログラムの導入が、教育によって十分に準備された卒業生の質と量の両方を増加させ、信頼できる能力を開発するのに役立つと主張しています。ソフトウェア製品。」
  29. ^ マコーネル、スティーブ(2003 年 8 月). 専門的なソフトウェア開発: スケジュールの短縮、プロジェクトの改善、優れた製品、キャリアの向上マサチューセッツ州ボストン: Addison-Wesley。ISBN 0-321-19367-9.、p。39: 「私の意見では、その質問に対する答えは明らかです。プロフェッショナルなソフトウェア開発はエンジニアリングであるべきです。そうですか?いいえ。しかし、そうあるべきでしょうか?疑いなく、はい。」
  30. ^ クヌース、ドナルド(1974). 「芸術としてのコンピューター・プログラミング」(PDF) . ACM の通信17 (12): 667–673. ドイ10.1145/361604.361612S2CID 207685720 .  1974 年のチューリング賞講演の書き起こし。
  31. ^ ダイクストラ、エドガー W ; Mario Béland による転記 (2004 年 11 月 23 日) [1993 年 12 月 3 日初版]。「まだ戦争が続いている(原稿オースティン、1993 年 12 月 3 日)」 . 東西ダイクストラ アーカイブ. テキサス大学オースティン校、コンピューター サイエンス学部20072 月 17 日閲覧この用語が 1968 年にミュンヘン工科大学の FL バウアーによって造られたとき、私はそれを歓迎しました。[。. .] 私は、「ソフトウェア工学」という用語の導入を、ソフトウェア システムの設計が数学エンジニアにとって卓越した活動であるという事実を適切に反映していると解釈しました。[。. .]. この用語が米国に到着するとすぐに、そのすべての技術的内容から解放されました。本来の意味では、それはまったく受け入れられない[. . .] その間、ソフトウェア エンジニアリングはほとんど空虚な用語になりました。これは、Data General が一晩ですべてのプログラマーを「ソフトウェア エンジニア」という高い地位に昇進させたことでうまく実証されました。
  32. ^ 「ソフトウェア工学 | ソフトウェア要件の分類」 . GeeksforGeeks2018-06-19 . 2021-05-06取得
  33. ^ 「ソフトウェア エンジニアリング | ソフトウェア設計プロセス」 . GeeksforGeeks2019-05-24 . 2021-05-06取得
  34. ^ 「ソフトウェア保守とは? ソフトウェア保守の定義、ソフトウェア保守の意味」 . エコノミック・タイムズ2021-05-06取得
  35. ^ アブラン、アラン、編。(2005) [2004]。「第 1 章: ガイドの紹介」 . ソフトウェア エンジニアリング知識体系へのガイドLos Alamitos: IEEE コンピュータ ソサエティ。ISBN 978-0-7695-2330-9. 2010 年9 月13 日閲覧引用された文献の総量は、学部教育の修了と 4 年間の経験を通じて習得するのに適していることを意図しています。
  36. ^ 「SE2014 ソフトウェア工学カリキュラム」(PDF) .
  37. ^ Cowling, AJ 1999. ソフトウェア工学の学士号プログラムの最初の 10 年。アン。ソフト 英文 6、1–4 (1999 年 4 月)、61–90。
  38. ^ 「ABET認定エンジニアリングプログラム」 . 2007 年 4 月 3 日20074 月 3 日閲覧
  39. ^ マコーネル、スティーブ (2003 年 7 月 10 日). 専門的なソフトウェア開発: スケジュールの短縮、製品の高品質化、プロジェクトの成功、キャリアの向上. ISBN 978-0-321-19367-4 . 
  40. ^ Software Engineering — Guide to the software engineering body of knowledge (SWEBOK)、International Organization for Standardization、2015 年、 2020 年1 月 11 日に取得
  41. ^ ニューサウスウェールズ州ウィリアムズ (2001 年 2 月 19 ~ 21 日)。「プロフェッショナル エンジニア オンタリオのライセンス ソフトウェア エンジニアリング プラクティショナーへのアプローチ」. ソフトウェア エンジニアリングの教育とトレーニング、2001 年議事録。に関する第 14 回会議ノースカロライナ州シャーロット: IEEEpp.77–78。
  42. ^ 「NCEES ソフトウェア エンジニアリング試験の仕様」(PDF) . 2013-08-27にオリジナル(PDF)からアーカイブ2012年 4 月 1 日閲覧
  43. ^ "NCEES が PE ソフトウェア エンジニアリング試験を廃止" . 工学および測量のための審査官の国民評議会。2018 年 3 月 13 日2018年8月6日閲覧
  44. ^ 「SWEBOK ガイド バージョン 3」. 2015 年3 月 9 日閲覧
  45. ^ ソフトウェア エンジニアリング倫理規定(PDF) . 2012 年3 月 25 日閲覧
  46. ^ 「ソフトウェア開発者」 . 職業展望ハンドブック米国労働統計局。2019 年 9 月 4 日2019年12月11日閲覧
  47. ^ 「コンピューティング分野と専攻」(PDF) . ACM 2019年9月6日閲覧
  48. ^ a b "ソフトウェア開発者: 職業展望ハンドブック" . 米国労働統計局。
  49. ^ 「コンピュータ ソフトウェア エンジニア」 . 労働統計局。2010 年 3 月 19 日。 2013 年 7 月 26 日に元の場所からアーカイブされました2012年7 月 20 日閲覧
  50. ^ 「ソフトウェア開発者」 . 労働統計局。2014 年 1 月 8 日2012年7 月 21 日閲覧
  51. ^ a b "コンピューター プログラマー: 職業展望ハンドブック" . 米国労働統計局。
  52. ^ a b ローゼンタール、レイチェル (2020 年 8 月 4 日)。「テクノロジー企業は、アメリカにはスキルのギャップがあると信じてもらいたい」 . ブルームバーグ202110月8日閲覧{{cite web}}: CS1 maint: url-status (link)
  53. ^ 「コンピューター プログラマー: 職業展望ハンドブック: : 米国労働統計局」 . www.bls.gov .
  54. ^ 「出版物によるアーカイブ: 数字を超えて: 米国労働統計局」 . www.bls.gov .
  55. ^ 「間もなく消滅する組み込みソフトウェア エンジニア」 . designnews.com2018 年 5 月 10 日。
  56. ^ "hp の開発者ポータル | HP International Women's Week: 1980 年代以降、コンピューター サイエンスの女性が減少" . developers.hp.com
  57. ^ 「コンピューター ソフトウェア エンジニアおよびコンピューター プログラマー」. 2009 年12 月17 日閲覧
  58. ^ 「SEI認証ページ」 . Sei.cmu.edu 2012 年3 月 25 日閲覧
  59. ^ Wyrostek、ウォーレン (2008 年 3 月 14 日)。「2008 年の IT 認定に関する上位 10 の問題」 . お知らせします。2009 年3 月 3 日閲覧
  60. ^ IEEE コンピュータ協会. 「2006 年 IEEE コンピュータ ソサエティの IFIP 総会への報告」(PDF) . 2007年 4 月 10 日閲覧
  61. ^ IEEE。「CSDA」2010 年 4 月20 日閲覧
  62. ^ ACM (2000 年 7 月 17 日)。「認可されたエンジニアリング専門職としてのソフトウェア エンジニアリングに関する ACM の立場の概要」(PDF) . コンピューティング機械協会 (ACM)。2008 年 5 月 17 日にオリジナル(PDF)からアーカイブされました2009 年3 月 3 日閲覧2000 年 5 月の会議で、理事会はさらに、もともと土木技術者向けに開発された認可された専門技術者の枠組みは、ソフトウェア エンジニアリングの専門的な産業慣行と一致しないと結論付けました。そのようなライセンス供与の慣行は、たとえ知識体系が成熟していたとしても、能力の誤った保証を与えるでしょう。また、有能なソフトウェア エンジニアの多くがライセンスを取得できなくなる可能性があります。
  63. ^ カナダ情報処理協会. 「ISP指定」. 2007 年3 月 15 日閲覧
  64. ^ 「プロフェッショナル エンジニア オンタリオ: PEO の Web サイトへようこそ」 . Peo.on.ca。_ 2012 年3 月 25 日閲覧
  65. ^ ティボドー、パトリック (2006-05-05). 「アウトソーシングが勢いを増すにつれて、コンピューター サイエンスへの関心は薄れます」 . Computerworld.com 2016 年12 月 6 日閲覧
  66. ^ 「コンピューター プログラマー」 . Bls.gov . 2012 年3 月 25 日閲覧
  67. ^ マリンズ、ロバート (2007-03-13). 「北米ではソフトウェア開発者の成長が鈍化」 . インフォワールド2009-04-04のオリジナルからのアーカイブ2012 年3 月 25 日閲覧
  68. ^ 「ガートナー マジック クアドラント」(PDF) . Cognizant.com . 2012 年3 月 25 日閲覧
  69. ^ ケーシー、バレンタイン (2010-08-20). 「仮想ソフトウェア チームのプロジェクト管理」 . ブラジルのコンピューター協会のジャーナル16 (2): 83–96. ドイ: 10.1007/s13173-010-0013-3 . S2CID 14383734 . 
  70. ^ いくつかの外部リンク:
  71. ^ ダイクストラ、EW (1988). 「コンピューティング サイエンスを実際に教えることの残酷さについて」. 2014 年1 月 10 日閲覧

ソース

  • アブラン、アラン。ムーア、ジェームズ・W。ブルク、ピエール。デュピュイ、ロバート。トリップ、レナードL.(2004)。ソフトウェア エンジニアリング知識体系へのガイドIEEE。ISBN 978-0-7695-2330-9.
  • Sommerville、イアン (2010)。ソフトウェア工学(第7版)。ピアソン教育。ISBN 978-81-7758-530-8. 2013年1月10日閲覧

さらに読む

外部リンク