失敗したソフトウェア開発のアイデアやテクニックの良い例は何ですか?


9

具体的には、大衆のアイデアが間違っている場所の例は何ですか。なぜ人々はなぜそもそもアイデアにとらわれたのですか?そして、なぜアイデアは却下されたのですか?あるいは、アイデアはまだ健在で、もしそうならなぜですか?

たとえば、CORBA(および他の同様のテクノロジ)を、ソフトウェアのコンポーネント間の通信の問題を解決しようとしたものと説明する場合があります。多くの人が、さまざまなコンポーネント間の契約を定義する必要があると感じました。最終的に、HTTP + JSONは大衆の問題を解決し、ThriftやProto-bufなどのさまざまなRPCメカニズムがポップアップしました。


1
EXXXXXXXXXXXXXXXXXXXXTREEEEEEEEEEEEEMEEプログラミングを見てください...
狂気の

「大衆のアイデア」はなく、人気になるアイデアだけであり、大衆に普及するのに十分に長く使用されている何かを行う方法についてのアイデアは、明らかに「間違っている」とは思わないいくつかの問題を解決する必要があります。
Michael Borgwardt、2011

2
CORBAは、それはまだ使用中です。..何の故障ではありません
オイノーネー

@oenone、それは一般に相互運用性の問題を解決するという本来の約束を果たせなかったという意味で失敗であり、現在はニッチな技術です。
ペーテルTörök

HTTP JSONはWebサービスの問題を解決しましたが、ソフトウェアの他の領域では実際には解決しませんでした!
sarat

回答:


11

基本的に、コンピューターの外の世界と同じように、アイデアやテクノロジーは、注目を集めたり、活用したりするために競います。しばらくの間は勝者のように見える人もいれば、次のビッグシングの登場で曖昧になっていく人もいます。それは実際に良い方とは関係ないかもしれません。VHS vs Betamax、またはさまざまなDVDフォーマット間の最近の戦争を目撃してください。

CORBAは巨大で扱いにくく、使いづらいものでしたが、当時は一部の人々が発明できる最高のものでした(World Wide Web(およびHTTP、Java、XMLなど)が広く知られるようになる前に設計されたことに注意してください)。また、委員会によるデザインの典型的な例でもあり、すべてのアイデアを満たして皆を満足させ、最終的には無駄に肥大化しました(少なくとも今日の目では見られます)。その価格は言うまでもありません。FOSSの登場により、すぐに法外な価格になりました。

最終的に、HTTP + JSONは大衆の問題を解決しました

少なくとも、いくつかの同様の「最終的な解決策」が上昇し、最終的には下降しないのを見ている人にとっては...当時、CORBAについて同様の感情があったことを覚えておいてください;-)

CORBAの上昇と下降から引用するのがふさわしいと思います。

CORBAの歴史はコンピューティング業界で何度も見られてきたものであり、現在のミドルウェアの取り組み、特にWebサービスが同様の歴史を再現する可能性は高いと思われます。[...]

全体として、OMGのテクノロジー採用プロセスは、CORBAが衰退する主な理由と見なす必要があります。このプロセスは、委員会による設計と政治的操縦を奨励し、技術的卓越性は言うまでもなく、技術的平凡を達成するのが困難になるところまで行きます。さらに、バラバラな機能を追加すると、建築のビジョンが徐々に侵食されます。[...]

OMGのような民主的なプロセスは、優れたソフトウェアを作成する上で非常に不適切です。しかしながら、既知の手続き上の問題にもかかわらず、業界はテクノロジーを生み出すために大規模なコンソーシアムに依存することを好みます。現在のミドルウェアの特効薬であるWebサービスは、OMGと非常によく似たプロセスを使用しており、多くのアカウントで、内紛、断片化、アーキテクチャーの一貫性の欠如、委員会による設計、機能の肥大化に悩まされています。WebサービスがCORBAと非常によく似た歴史を制定することは避けられないようです。


ここで別の角度から:「大衆のアイデア」という用語を読んだとき、CORBAや他の標準とは非常に異なるものについて考えました。これらは通常、1人または小さなグループのアイデアです。「カウボーイコーディング」、「コードと祈り」、「自分のマシンで機能する」など、悪名高い習慣/見方について考えました。これらは、ほとんどすべての初心者の方法であるため、私見の本当の「大衆のアイデア」です。開発者は直感的にコードを書き始めます。そして、それらは空間でも時間でもスケーリングされないため、間違っています。この方法では、保守可能で拡張可能な大規模なプログラムを作成することはできません。しかし、残念ながら、世界中の専門店でこの方法で仕事をすることは、例外ではなく、今でも当たり前のことだと思います。

これのもう1つの極端は、CMM、RUP、ウォーターフォールなどのビッグM方法論で表される、SW開発への「正しいアプローチ」に関する多くの管理者および理論家のアイデアです。これらすべての背後にあるアイデアは、必要なのは適切なプロセス、そして開発者が実際に誰であるかに関係なく、決定論的な方法で高品質のソフトウェアを自動的に生成し始めます。同じゲームがアジャイルメソッドを使用してプレイできることにも注意してください。これは単なるラベルの変更です。自分の開発チームに適切なメンバーを選択(および維持)することが開発プロセスよりも重要ではないと考えているマネージャーは、そのプロセスがどちらであっても失敗します。しかし、プロセスに対するこの信念は依然として蔓延しているようです-おそらくそれはまだ管理学校で教えられているのでしょうか?


そのリンクを経由して読む:彼らがいたので、V1 EJBがそれに取って代わった場合親愛なる神、CORBAは恐ろしいされている必要がありますシンプルな ...
マイケルBorgwardt

Michi Henningが開発を続けた製品は、CORBAの多くの欠点を修正しました。
Blrfl 2011

13

よく失敗する人のよくある例は、ウォーターフォールモデルです。これは、Winston Royceの論文「Managing the Development of the Development of Large Software Systems」にも記載されているステレオタイプのウォーターフォールモデルの図です。

ウィンストンロイスのウォーターフォールモデル

この画像の後には次のテキストが続きます。

私はこの概念を信じていますが、上記の実装は危険で失敗を招きます...開発サイクルの最後に発生するテストフェーズは、タイミング、ストレージ、入出力、転送などの最初のイベントです。分析されたものとは異なる経験です。これらの現象は正確には分析できません。それらは、例えば、数理物理学の標準的な偏微分方程式の解ではありません。しかし、これらの現象がさまざまな外部制約を満たせない場合、不変の大きな再設計が必要になります。孤立したコードの単純な8進パッチまたはやり直しでは、このような種類の問題は修正されません。必要な設計変更は非常に破壊的である可能性が高く、設計の基礎となり、すべての根拠を提供するソフトウェア要件に違反します。要件を変更する必要があるか、設計に大幅な変更が必要です。事実上、開発プロセスは原点に戻り、スケジュールおよび/またはコストで最大100%の超過が予想されます。

このホワイトペーパーの後半で、Royceは、現在のフェーズと前のフェーズの間の反復、および要件分析と設計の間のサイクルと、設計コードとテストの間の別のサイクルを含む代替プロセスモデルを示します。彼はまた、いくつかのドキュメントを特定し、どのフェーズで完了する必要があるかを特定し、顧客の関与と各フェーズ内の複数のウォーターフォールを提唱して、関連するすべてのアーティファクトの分析、テスト、および使用法を含めます。実際には、Royceが論じていることは、アジャイル手法への初期のアプローチと見なされる可能性があります。ただし、計画主導型ですが、アジャイル運動の基礎となっています。

なぜ人々が最初の滝に引っ掛かったのか、私にはわかりません。彼らはリスクを取って失敗を招くのが好きだと思います。


6
これは40階建ての超高層ビルの建設などの土木プロジェクトと非常に似ているため、人々は最初のウォーターフォール方式を採用しました。超高層ビルを構築するとき、要件と制約は非常に痛いほど明確であり、見逃すことはできません。分析と設計(アーキテクチャ)は、完全で完全なもので、解釈の余地がないものでなければなりません。建物は仕様に合わせて建設する必要があり、最後に検査官が立ち入り、完成品を認定する必要があります。ソフトウェアがこれを明確にすることはほとんどないため、Waterfallモデルが失敗するのはなぜですか。
maple_shaft

2
@maple_shaft私は興味深いことに気づきました。ソフトウェアプロジェクトでこのモデルを使用することについて話し合い、今日誰もが知っている図を作成したのはウィンストンロイスだったからです。ソフトウェアプロジェクトで使用する。アイデアを最初に書いた人が悪いアイデアだと言って、理由だけでなく、それを正しく行う方法を述べたら、なぜ人々はとにかくそれをつかむことを選ぶのでしょうか?数学や電気工学のバックグラウンドを持つ最初のソフトウェアエンジニアと関係があるのでしょうか。EEでは、このアプローチは機能しますか?
Thomas Owens

1
ウォーターフォールモデルは完全に間違っているわけではありません。ソフトウェアプロジェクトの開発における一般的なフェーズを正しく識別し、それらを論理的に順序付けます。認められていないのは、ソフトウェアプロジェクトは反復的かつモジュール的に記述できるため、ウォーターフォールモデルが記述する手順は、システム全体の個々の反復やコンポーネントのさまざまな構成で実行できるということです。
tdammers

3
@Thomas Owens、「アイデアを最初に書いた人が悪いアイデアだと言って、理由だけでなく、それを正しく行う方法を述べたら、なぜ人々はとにかくそれをつかむことを選ぶのですか?」近代資本主義の父であるアダム・スミスは、自由で純粋な市場に関するマニフェストを書きましたが、その後、彼の本の中で、企業の概念がいかに危険であるか、そして彼らが政府に利益をもたらすように政府に影響を与える方法について話します。便利なことに、人々は理解していない概念の部分を無視するか、何が正しいかについての先入観の概念に反します。
maple_shaft

2
「なぜ人々が最初の滝に引っ掛かったのか、私には分からない。彼らはリスクを引き受けて失敗を誘うのが好きだと思う。」私見それは正反対です。一般的に人々は自分たちが状況を管理していると感じたいと思います。プロセス図と複雑な方法論は、彼らに安心感を与えます。他の地域の多くでは、彼らはそれがあまりにもSW開発でも同じようにうまくいくことを(誤ってこのケースでは)想定する前に、それらのプロセスやチャートは...彼らを助けたので
ペーテルTörök

4

より高い抽象化レベルからのコードの自動生成、または自動プログラミング

ウィキペディアの記事には履歴情報がいくらか不足していますが、プログラマーがコンピューターよりも高価になったときから、これはマネージャーの夢​​でした。

FortranやCobolなどの高水準言語の開発後、レポート作成などの特別なドメイン用の言語の開発が始まりました。 EasytrieveSASはその例です。

1980年代には、CASEツールが大流行しました。CASEは、コンピュータ支援ソフトウェアエンジニアリングの略です。エンジニアリングの原則を厳密に適用することで、ソフトウェア開発がより速くなると考えられていました。これらのツールが費用に加えて追い付かなかった主な理由は、ツールが効果的に機能するために必要な高レベルのデータ標準化でした。

1990年代にインターネットが顕著になった。インターネットが促進したプログラミングの種類は爆発的に増加しました。プログラマーは、イラスト、マップ、写真、その他の画像に加えて、簡単なアニメーションを、これまでにない速度で、いくつかのよく知られた方法で処理する必要がありました。これらのオブジェクトを生成するテクノロジーの数は倍増しました。自動プログラミングの夢は薄れました。

より安価な場所へのプログラミングのアウトソーシングは、プログラマーのコストを削減するために残っている数少ない方法の1つです。アウトソーシングの問題には、通信の問題と仕様の問題があります。


1
また、SQLとVisual Basic。どちらもプログラマー以外のユーザーがプログラムを作成できるように宣伝されています。
Sean McMillan

2

形式的な方法

むかしむかし、ソフトウェアが正しいことが証明できると提案されました。(テストではエラーがないことを示すことはできませんが、証明は可能です。)残念ながら、プログラムの証明を考案することにはいくつかの大きな欠点があります。

  • プログラムを書くよりも困難で時間がかかります。
  • プログラム全体をカバーする必要があります。つまり、ライブラリ、OSなどの証明が必要です...
  • これらのバグは偶然の原因である可能性があるため、バグがないことを証明するものではありません。

このコンセプトは70年代に非常に人気がありました。

リンケージ:http : //en.wikipedia.org/wiki/Formal_methods http://c2.com/cgi/wiki?ProofOfCorrectness http://c2.com/cgi/wiki?PractitionersRejectFormalMethods


3
形式的な方法には、単なる証明以上のものがあります。UMLとOCLを使用したモデリングとZでの正式な仕様の作成を含むより軽量な方法に言及する、非常に数学的で使用の定理の証明の範囲です。はい、任意のレベルの正式なメソッドを導入すると、時間とコストが追加されますが、ペースメーカーから航空機、ミサイルまで、人を殺したり怪我をしたりする可能性のあるソフトウェアで、できる限り多くの時間と労力をかけて検証および検証することは、生と死の違いを意味する可能性があります。
トーマスオーエンス

@トーマス:良い点。そして、正式な方法は、死が近づいているプロジェクトで採用されています。しかし、それらはバグのないソフトウェアの特効薬ではありませんでした。
Sean McMillan

もちろんです。彼らは、システムに応じてさまざまな程度で、使命および生命にかかわるソフトウェアでの地位を占めています。結局のところ、特効薬はありません。
トーマス・オーエンス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.