ソフトウェア工学の歴史

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

ソフトウェアエンジニアリングの歴史は1960年代に始まります。ライティングソフトウェアソフトウェアの品質を最大化するための最善の方法とそれを作成する方法に関係する職業に進化しました。品質とは、ソフトウェアの保守性、安定性、速度、使いやすさ、テスト容易性、読みやすさ、サイズ、コスト、セキュリティ、欠陥または「バグ」の数、および優雅さ、簡潔さ、顧客などの測定しにくい品質を指します。他の多くの属性の中でも、満足度。高品質のソフトウェアを作成するための最善の方法は、ソフトウェア設計の原則、コードを記述するためのいわゆる「ベストプラクティス」、および最適なチームサイズ、プロセス、ソフトウェアを時間どおりに提供するための最善の方法などのより広範な管理の問題をカバーする、別個の物議を醸す問題です。そして、可能な限り迅速に、職場の「文化」、雇用慣行など。これはすべて、ソフトウェアエンジニアリングの幅広いルーブリックに該当します[1]

概要

ソフトウェアエンジニアリングの進化は、多くの分野で注目に値します。

  • 職業としての出現:1980年代初頭までに、ソフトウェアエンジニアリングはすでに善意の 職業として出現していました。[2]、コンピュータサイエンスと伝統的な工学の傍らに立つこと。[要出典]
  • 女性の役割:1970年以前は、より権威があり、より高額なハードウェアエンジニアリングの役割を果たしている男性は、ソフトウェアの作成を女性に委任することが多く、グレースホッパーマーガレットハミルトンなどの伝説が多くのコンピュータープログラミングの仕事を果たしてました。[3] [4]
    今日、ソフトウェアエンジニアリングで働く女性は他の職業よりも少なく、その原因は明確に特定されていません。多くの学術および専門組織[誰?]この状況は不均衡であると考え、それを解決するために懸命に努力しています。[5]
  • プロセス:プロセスはソフトウェアエンジニアリングの大きな部分になっています。彼らはソフトウェアを改善する可能性があることで歓迎されていますが、プログラマーを制限する可能性があることで鋭く批判されています。[要出典]
  • ハードウェアのコスト:ソフトウェアとハ​​ードウェアの相対的なコストは、過去50年間で大幅に変化しています。メインフレームが高価で大規模なサポートスタッフが必要な場合、メインフレームを購入する少数の組織には、大規模で高価なカスタムソフトウェアエンジニアリングプロジェクトに資金を提供するためのリソースもありました。コンピュータは今やはるかに多く、はるかに強力であり、ソフトウェアにいくつかの影響を及ぼします。より大きな市場は、 Microsoftなどの企業が行っているように、市販のソフトウェアを作成するための大規模なプロジェクトをサポートできます。安価なマシンにより、各プログラマーはかなり迅速なコンパイルが可能な端末を持つことができます。問題のプログラムは、ガベージコレクションなどの手法を使用できます、これにより、プログラマーがより簡単かつ迅速に記述できるようになります。一方、大規模なカスタムソフトウェアプロジェクトにプログラマーを採用することに関心を持っている組織ははるかに少なく、代わりに市販のソフトウェアを可能な限り使用しています。[要出典]

1945年から1965年:起源

ソフトウェアエンジニアリングという用語の推定上の起源には、ACM社長のAnthony Oettingerからの1965年の手紙、[6] [7] 1950年代のMITでのダグラスT.ロス による講演が含まれます。 [8] マーガレット・H・ハミルトンは、「その分野に正当性を与える方法として、ソフトウェアエンジニアリングという分野に名前を付けるというアイデアを思いついた人です。」[9] [10]

NATOの科学委員会は、 2つの会議後援[11](1968年ソフトウェア工学上のガルミッシュ-を参照して、ドイツは会議報告書をフィールドにその最初のブーストを与えた)と1969年、。多くの人が、これらの会議がソフトウェアエンジニアリングの専門職の正式な始まりを示したと信じています。[6] [12]

1965年から1985年:ソフトウェア危機

ソフトウェアエンジニアリングは、1960年代、1970年代、および1980年代のいわゆるソフトウェア危機によって刺激され、ソフトウェア開発の問題の多くが特定されました。多くのプロジェクトが予算とスケジュールを超えて実行されました。いくつかのプロジェクトは物的損害を引き起こしました。いくつかのプロジェクトは人命の損失を引き起こしました。[13]ソフトウェア危機は、もともと生産性の観点から定義されていましたが、品質を重視するように進化しましたソフトウェア危機という用語を使用して、十分な資格のあるプログラマーを雇うことができないことを指す人もいます。[要出典]

Peter G. Neumannは、ソフトウェアの問題と災害の最新のリストを保持しています。[15]ソフトウェア危機は、長期間(20年以上)危機モードにとどまることが心理的に非常に困難であるため、視界から消えつつあります。それにもかかわらず、ソフトウェア、特にリアルタイムの組み込みソフトウェアはリスクが高く、普及しているため、自己満足に屈しないことが重要です。過去10〜15年間、Michael A. Jacksonはソフトウェアエンジニアリングの性質について広範囲にわたって執筆し、その問題の主な原因を専門性の欠如として特定し、彼の問題フレームが「通常の慣行」の基礎を提供することを示唆しました。ソフトウェア工学の、ソフトウェア工学が工学科学になるための前提条件。[16]

1985年から1989年:「特効薬なし

何十年もの間、ソフトウェアの危機を解決することは、ソフトウェアツールを製造する研究者や企業にとって最優先事項でした。1980年代のソフトウェアの所有と保守のコストは、ソフトウェアの開発の2倍でした。[要出典]

  • 1990年代に、所有と保守のコストは1980年代に比べて30%増加しました。
  • 1995年の統計によると、調査対象の開発プロジェクトの半分は運用可能でしたが、成功したとは見なされていませんでした。
  • 平均的なソフトウェアプロジェクトは、スケジュールを半分上回っています。
  • 顧客に提供されるすべての大規模なソフトウェア製品の4分の3は、まったく使用されていないか、顧客の要件を満たしていない障害です。

ソフトウェアプロジェクト

どうやら、1970年代から1990年代までのすべての新しいテクノロジーと実践は、ソフトウェアの危機を解決するための特効薬として打ちのめされました。ツール、規律、形式手法、プロセス、およびプロフェッショナリズムは、特効薬として宣伝されました。[要出典]

  • ツール:特に強調されたのは、構造化プログラミングオブジェクト指向プログラミングICLのCADES CASEシステムなどのCASEツール、 [17] Adaドキュメント、および標準が特効薬として宣伝されたツールです。
  • 規律:一部の専門家は、ソフトウェアの危機はプログラマーの規律の欠如によるものであると主張しました。
  • 形式手法:形式手法がソフトウェア開発に適用される場合、ソフトウェアの生産は他の工学部門と同じように予測可能な業界になると考える人もいます。彼らは、すべてのプログラムが正しいことを証明することを提唱しました。
  • プロセス:多くの人が、機能成熟度モデルのような定義されたプロセスと方法論の使用を提唱しました。
  • プロフェッショナリズム:これは、倫理、ライセンス、およびプロフェッショナリズムのコードに取り組むことにつながりました。

1986年に、フレッド・ブルックスは彼の特効薬の記事を発表し、個々の技術や実践が10年以内に生産性を10倍向上させることはないと主張しました。[要出典]

銀の弾丸についての議論は、次の10年にわたって激怒しました。Adaコンポーネント、およびプロセスの支持者は、彼らのお気に入りのテクノロジーは銀の弾丸であると何年にもわたって主張し続けました。懐疑論者は同意しませんでした。最終的に、ほとんどの人が特効薬が見つからないことを受け入れました。それでも、銀の弾丸についての主張は、今日でも何度も現れます。[要出典]

何人か[誰? ]解釈[なぜ? ] ソフトウェアエンジニアリングが失敗したことを意味する特効薬はありません。 [説明が必要]しかし、さらに読むと、ブルックスは次のように述べています。「今後40年間で確実に大幅な進歩を遂げます。40年間で桁違いに魔法をかけることはほとんどありません...」[要出典]

成功への単一の鍵の検索は決してうまくいきませんでした。既知のすべてのテクノロジーとプラクティスは、生産性と品質を段階的に改善しただけです。それでも、他の職業にも特効薬はありません。他の人は特効薬をソフトウェアエンジニアリングが最終的に成熟した証拠として解釈し、ハードワークのためにプロジェクトが成功することを認識しました。 [要出典]

ただし、実際には、軽量の方法論(「プロジェクト管理」を参照)、スプレッドシート計算機、カスタマイズされたブラウザ、インサイト検索エンジン、データベースレポートジェネレータ、統合設計など、さまざまな特効薬があるとも言えます。 -テストコーディング-メモリ/相違点/取り消しを備えたエディタ、および完全にカスタマイズされたWebサイト開発の数分の1のコストで情報Webサイトなどのニッチなソフトウェアを生成する専門店。それにもかかわらず、ソフトウェアエンジニアリングの分野は、単一の「銀の弾丸」ではほとんどの問題を改善するには複雑すぎて多様であるように見え、各問題はすべてのソフトウェア問題のごく一部しか占めていません。[要出典]

1990年から1999年:インターネットの卓越性

インターネットの台頭により、ワールドワイドウェブ上の国際的な情報表示/電子メールシステムの需要が急速に伸びました。プログラマーは、イラスト、地図、写真、その他の画像に加えて、これまでにない速度で簡単なアニメーションを処理する必要があり、画像の表示/保存を最適化するためのよく知られた方法(サムネイル画像の使用など)はほとんどありませんでした。[要出典]

ハイパーテキストマークアップ言語(HTML)で実行されるブラウザーの使用の増加により、情報の表示と取得の編成方法が変わりました。広範なネットワーク接続は、MS Windowsコンピュータでの国際的なコンピュータウイルスの成長と防止につながり、スパム電子メールの膨大な拡散は、電子メールシステム、通信チャネルの氾濫、および半自動の事前スクリーニングの必要性における主要な設計上の問題になりました。 。キーワード検索システムはWebベースの検索エンジンに進化し、検索エンジンの最適化に応じて、国際的な検索のために多くのソフトウェアシステムを再設計する必要がありました。(SEO)。情報の流れを複数の外国語に翻訳するためには、人間の自然言語翻訳システムが必要でした。多くのソフトウェアシステムは、人間の翻訳者の設計コンセプトに基づいて、多言語で使用できるように設計されています。典型的なコンピュータユーザーベースは、数百または数千のユーザーから、多くの場合、数百万の国際的なユーザーになりました。[要出典]

2000年から2015年:軽量の方法論

多くの小規模な組織でソフトウェアの需要が拡大するにつれ、安価なソフトウェアソリューションの必要性により、要件から展開まで、より迅速かつ簡単に実行中のソフトウェアを開発する、よりシンプルで高速な方法論が成長しました。ラピッドプロトタイピングの使用は、エクストリームプログラミングなどの軽量な方法論全体に進化しました(XP)は、増大する膨大な数の小さなソフトウェアシステムの要件収集や信頼性テストなど、ソフトウェアエンジニアリングの多くの領域を簡素化しようとしました。非常に大規模なソフトウェアシステムは、ドキュメントセットに多くのボリュームがあり、依然として多くのドキュメント化された方法論を使用していました。ただし、小規模なシステムでは、ソフトウェアの計算とアルゴリズムの開発と保守、情報の保存/取得、および表示を管理するための、よりシンプルで高速な代替アプローチが採用されていました。[要出典]

ソフトウェア工学の現在の傾向

ソフトウェアエンジニアリングは若い分野であり、まだ発展途上です。ソフトウェアエンジニアリングが開発している方向性は次のとおりです。[要出典]

アスペクト

アスペクトは、ソースコードの多くの領域からボイラープレートコードを追加または削除するツールを提供することにより、ソフトウェアエンジニアが品質属性を処理するのに役立ちますアスペクトは、特定の状況ですべてのオブジェクトまたは関数がどのように動作するかを記述します。たとえば、アスペクト、特定のタイプのすべてのオブジェクトにデバッグロギング、またはロック制御を追加できます。研究者は現在、アスペクトを使用して汎用コードを設計する方法を理解するために取り組んでいます。関連する概念には、生成プログラミングテンプレートが含まれます

実験的

実験的ソフトウェア工学は、ソフトウェアに関する実験の考案、実験からのデータの収集、およびこのデータからの法則と理論の考案に関心のあるソフトウェア工学の一分野です。この方法の支持者は、ソフトウェアの性質は、実験を通じてのみソフトウェアに関する知識を進歩させることができるようなものであると主張しています[要出典]

ソフトウェア製品ライン

ソフトウェア製品ライン、別名製品ファミリーエンジニアリングは、完全に個別の製品の連続を作成するのではなく、ソフトウェアシステムのファミリを作成する体系的な方法です。この方法は、ソフトウェア開発プロセスの工業化を試みるために 、広範囲にわたる体系的で正式なコードの再利用を強調しています。

ICSE2000で開催されたFutureof Software Engineering会議(FOSE)は、2000年のSEの最新技術を文書化し、今後10年間で解決すべき多くの問題をリストしました。ICSE 2000 [18]およびICSE2007 [19]会議でのFOSEトラックも、ソフトウェアエンジニアリングの最先端を特定するのに役立ちます。[要出典]

今日のソフトウェアエンジニアリング

職業はその境界と内容を定義しようとしています。ソフトウェア工学知識体系SWEBOKは、2006年にISO標準として認定されました(ISO / IEC TR19759)。[要出典]

2006年、Money MagazineSalary.comは、成長、給与、ストレスレベル、時間と作業環境の柔軟性、創造性、そしてこの分野への参入と進歩のしやすさの点で、ソフトウェアエンジニアリングをアメリカで最高の仕事と評価しました。[20]

サブディシプリン

人工知能

多種多様なプラットフォームにより、 Cycなどのエキスパートシステムからディープラーニングフレームワーク、オープンインターフェイスを備えたRoombaなどのロボットプラットフォームに至るまで、AIのさまざまな側面を開発することができました。 [21]ディープ人工ニューラルネットワークと分散コンピューティングの最近の進歩により、 Deeplearning4jTensorFlowTheanoTorchなどのソフトウェアライブラリが急増しています

2011年のマッキンゼーグローバルインスティテュートの調査では、高度に訓練された150万人のデータとAIの専門家および管理者が不足していることがわかり[22] 、データインキュベーターなどの無料プログラムや総会などの有料プログラムなど、多くの民間ブートキャンプがその需要を満たすプログラムを開発しました。 [23]

言語

初期のシンボリックAIは、初期のAIプログラミングを支配していたLispPrologに影響を与えました。最近のAI開発では、PythonC ++などの主流言語[24]や、 Wolfram言語などのニッチ言語を使用することがよくあります[25]

ソフトウェア工学の歴史の中で著名な人物

も参照してください

参考文献

  1. ^ 「CS302:JaredKingの「ソフトウェアの歴史」" .learn.saylor.org(アメリカ英語)取得日:2018-02-17
  2. ^ 「ソフトウェアエンジニアリング…は最近、それ自体が学問分野として浮上してきました。」 イアン・サマービル(1985)[1982]。ソフトウェア工学アディソン-ウェスリー。ISBN 978-0-201-14229-7
  3. ^ アバテ、ジャネット(2012)。性別の記録マサチューセッツ州ケンブリッジ:MIT Press 頁。  39ISBN 978-0262534536
  4. ^ Ensmenger、ネイサン(2012)。コンピューターボーイズが引き継ぐマサチューセッツ州ケンブリッジ:MIT Press ISBN 978-0262517966
  5. ^ 「エピソード576:女性がコーディングをやめたとき」NPRプラネットマネー2014年10月17日2018年6月27日取得
  6. ^ a b Meyer、Bertrand(2013年4月4日)。「「ソフトウェア工学」の起源" 20161125日取得
  7. ^ Tadre、Matti(2014-12-03)。コンピューティングの科学CRCプレス。p。121. ISBN 978-1-4822-1770-4
  8. ^ マホニー、マイケル。「ソフトウェアエンジニアリングのルーツ」(PDF)CWI四半期ごと3(4):325–334 2015年6月4日取得
  9. ^ ソフトウェア工学の40周年と50年を祝うソフトウェア工学に関する2018年国際会議。「ICSE2018-プレナリーセッション-マーガレットハミルトン」YouTube2018年6月9日取得
  10. ^ Rayl、AJS(2008年10月16日)。「NASA​​のエンジニアと科学者-夢を現実に変える」NASA50周年記念ウェブサイトNASA 2016年11月25日取得
  11. ^ ブライアンランデル(2001)。「NATOソフトウェア工学会議」ncl.ac.uk。_ 2016年11月25日取得
  12. ^ a b c King、Jared(2016)。「JaredKingの「ソフトウェアの歴史」"。CS302 :ソフトウェアエンジニアリング。Saylor.org。 2016年11月25日取得
  13. ^ Therac-25
  14. ^ Leveson、NG; ターナー、CS(1993-07-01)。「Therac-25事故の調査」。コンピューター26(7):18–41。CiteSeerX 10.1.1.372.412土井10.1109 /MC.1993.274940ISSN 0018から9162までS2CID 9691171   
  15. ^ 「リスクリスト:リスクフォーラムダイジェスト」リスクダイジェスト
  16. ^ {Michael Jackson、 "Engineering and Software Engineering" in S Nanz ed、The Future of Software Engineering、Springer Verlag 2010; マイケルジャクソン、問題フレーム:ソフトウェア開発問題の分析と構造化; アディソン-ウェスリー、2001年}
  17. ^ DJPearson「ソフトウェアエンジニアリングシステムの使用と乱用」NationalComputer Conference 1979
  18. ^ 「ICSE2000:参加の呼びかけ」ul.ie。 _
  19. ^ 「ICSE2007:ホーム」ucl.ac.uk。 _
  20. ^ カルワルスキー、タラ; Daphne Mosher; ジャネット・パスキン; ドナ・ロサト(2006)。「アメリカで最高の仕事」マネーマガジンCNN 2006年4月20日取得、「MONEY MagazineとSalary.comは、成長、支払い、ストレスレベルなどの要因を考慮して、何百もの仕事を調査しました。これらのキャリアは最高にランク付けされました。1。ソフトウェアエンジニア...」
  21. ^ 「ルンバのハッキング」hackingroomba.com2009年10月18日にオリジナルからアーカイブされました。
  22. ^ メニーカ、ジェームズ; チュイ、マイケル; Bughin、Jaques; ブラウン、ブラッド; ドブス、リチャード; Roxburgh、チャールズ; Byers、Angela Hung(2011年5月)。「ビッグデータ:イノベーション、競争、生産性の次のフロンティア」マッキンゼーグローバルインスティテュート。2013年3月6日にオリジナルからアーカイブされました2016年1月16日取得 {{cite journal}}引用ジャーナルには|journal=ヘルプ)が必要です
  23. ^ 「NYはデータサイエンティストのための新しいブートキャンプを取得します:それは無料ですが、ハーバードよりも入りにくいですベンチャービート2016年2月15日にオリジナルからアーカイブされました取得した21年2月2016
  24. ^ 「C ++ Java」infoworld.com 2017年12月6日取得
  25. ^ フェリス、ロバート(2016年4月7日)。「スティーブ・ジョブズの友人が数学の世界をどのように変えたか」CNBC 2018年2月28日取得

外部リンク