ソースコードを失うことはどれほど深刻ですか?[閉まっている]


9

ソフトウェア会社が販売している製品の1つにソースコードを紛失した場合、一般の人に説明できるとしたら、それはどれほど深刻なことでしょうか。「重大な過失」という言葉は強すぎますか?または「総無能」?明らかに誰も殺されなかったが、人々が刑務所の時間を過ごすためのいくつかの経済的過失ほど深刻ではないか?

編集: それは、ディスクドライブがクラッシュしたり、自然災害が発生したりするようなものではないとしましょう。彼らはそれを誤って置きました。


37
この質問には裏話がありますので、聞きたいです。Daily WTFに表示されるのを待ちます。
BlairHippo

4
@ジョシュK-悪いアナロジー!子供の交換はできません。ソースコードはできます。(そして、source_code == kidだと思ったら、私は真剣に動揺しています)。しかし、私はあなたが(まだ)持っていないことを推測しています。
2010年

6
@ルーク:なぜそれが悪いアナロジーなのか?ソースコードを正確に置き換えることはできません。同じように複製することしかできません。これは子供を失うほど極端ではありませんが、まねがいはまだ健全です。
Josh K

6
@Rook:1つ(子供)が明らかソースコードよりもはるかに重要である一方で、両方の所有が依然として非常に大切にされているという点を逃しています。子供がより重要であるので、ソースコードはYahoo! グーグルはとても大きいので、検索会社として。私のポイントは、両方が巨大であるということです。1つは意味のある/重要なものとして〜10倍であり、もう一方は重要ではないという事実です。何を言って、会社のメインアプリケーションのリポジトリ(およびコードのすべてのコピー)を緩めて、5〜10で私に連絡してください。
Josh K

5
そもそも「見当違い」のコピーが1つしかなかったのではないかと思いますか。私は通常、自分が取り組んでいる修正、更新、およびパッチのさまざまな段階で、少なくとも2つまたは3つのコピーを自分で持っています。私の同僚は自分のコピーを持っているでしょう。最悪の場合、ソースリポジトリの履歴が失われる可能性があります(バックアップのない中央リポジトリを使用している場合)...これがどのように可能
ディーンハーディング

回答:


27

MSがWindows Phone 7のソースを失ったとしましょう。人々は、開発に要した推定4億ドル未満で殺されました。

商品によっては「強すぎる」とは思えない言葉があります。


1
彼らがソフトウェアを販売していて、そのソースコードがない場合、はい、それは無能です。しかし、カスタムソフトウェア開発者として、開発を外部委託し、販売しているソフトウェアのソースコードのビルド可能なコピーすら持っていなかった非プログラマーによって経営されている小さな会社に私がどれほど頻繁に出会ったかは驚くべきことです。
ボブマーフィー

1
そして、それを行うのは中小企業だけではありません。私のコンサルティング会社はInformixのために多くの仕事をしていました、それはかつてオラクルにとって実行可能な競争相手でした。彼らは私たちのプロジェクトの1つをインドのアウトソーシング会社にシフトすることを決定し、ある日マネージャーが私たちに電話をかけました:「あなたは私たちにソースを送っていませんでした!」「はい、ありました。X日付(約1年前)で、FedExの追跡番号です。紛失しましたか?」「いいえ、もちろん違います。」「アーカイブから取得できるので大丈夫ですが、手数料がかかります。」「いいえ、気にしないでください。」私達は後で彼らが実際にそれを失っていることを知りました。
ボブ・マーフィー

18

会社にとって、これは王冠の宝石を失うようなものです。プロセッサーが組み込まれた製品の場合、製品を「そのまま」製造し続けることができますが、製品を改善したり、問題を修正したりする能力は失われます。

今日の市場で同社は、ISそれのIP。それを失うと、それは廃業します。


13

他の人が指摘しているように、これは「すべてに依存する」という見出しに該当する可能性が高いため、いくつかのシナリオ:

ディスクベースのコンソールビデオゲームのソース - ディスクに書き込まれた後はゲームに変更を加えない傾向があるため、会社への影響はほとんどありません。彼らが再開発しなければならないライブラリー・コードがある場合、彼らはある程度の時間を失うかもしれないとすれば、それはそれほど悪くはないでしょう。

ダウンロード可能なビデオゲームのソース -バグが修正されることを顧客が期待している可能性が高いので、これはおそらく悪くなるでしょう。そうすることができない場合、顧客は会社への信頼を失い、将来のリリースに悪影響を及ぼす可能性があります。

開発中のゲームのソース -ほとんどのビデオゲーム会社は、開発サイクルの極端に早い段階(つまり、数日、場合によっては数週間)でない限り、現在開発中のゲームのコードを失うわけにはいきません。小規模な会社の場合、ソースを失う彼らの旗艦リリースは彼らが廃業する可能性があるため。

リリース対象者が限定されている小規模ビジネスアプリケーションのソース -カップルの顧客を失う可能性がありますが、会社に問題を引き起こす可能性はほとんどありません。

リリース対象者が限定されている大規模なビジネスアプリケーションのソース -顧客からの信頼が失われたために会社が廃業する可能性がある別の状況。ほとんどの小さな市場でさえ、複数の企業が運営する傾向があり、企業が競争相手に移行するにはこれで十分かもしれません。

大企業からの主要なアプリケーションのソース -これは、実際にすべてが依存し、非常に狭いケースバイケースである可能性が高い場所です。フラッグシップ製品(Microsoft Windowsなど)には、通常、サポート契約が関連付けられており、製品をサポートできないと、契約訴訟の違反につながる可能性があります。見積もりを出さなければならないのであれば、コードの喪失に関与した人々の上級指導者に至るまでのほとんどの人々は、新しい雇用を探す必要があるかもしれないと言うでしょう。

とはいえ、コードを失った人は新しい仕事を探している(そして、仕事を見つけるのが難しいかもしれません!)と会社からの訴訟に直面している可能性があります。


次のゲームを開発するとき、特にその続編を開発するときは、以前にリリースされたゲームのソースコードの大部分を再利用するのが一般的です。ただし、ゲームスタジオの寿命が比較的短いことを考えると、過去数十年の間にゲームソースの損失について耳にすることは珍しくありません。
wip

3

それが激変である可能性がある場合は確かにありますが、それがそうでない場合はたくさんあると思います(少なくともソフトウェア会社の観点から)。

法的影響があるかどうかについて一義的に答えるにはあまりにも多くの変数があると思いますが、それを決定する際に考慮すべきいくつかの質問が含まれます。

  • プログラムの性質は何ですか?それのようなアプリが十数セントで重要ではないために彼らが失ったものであるなら、それは何ですか?それが会社の主力商品である場合、彼らは本当に自分自身に危害を加えているだけです。それが彼らが構築するように契約されているカスタムソフトウェアであるならば、それはそれが面白いことができるところですが、彼らはあなたが尋ねなければなりません...
  • コードの著作権は誰が所有していますか?(お客様が著作権を保持している場合、その所有物は間違いなく失われている/破壊されている)
  • コードの消失により、顧客は積極的に被害を受けていますか?
  • コードの消失の結果、違反される将来の開発に関する契約はありましたか?
  • 既存のソフトウェアを再作成できることはどれほど重要ですか?保守作業を行うシェルスクリプトのようなものである場合、ソフトウェア会社は同じことを行う新しいスクリプトを作成するのにかかる時間を費やします。それがオフィススイートである場合、履歴書をほこりから払います。

そして、他にも考慮すべき要素はたくさんあると思います。気軽に追加してください。

さて、私は「ソフトウェア会社の観点から」と言いました。変更、拡張などの計画があったために、顧客の心に壊滅的な影響を与える可能性があります。そのようなものの契約または著作権の所有にもかかわらず、それは顧客に深刻な怒りを与える可能性がありますが、顧客との良好な関係を維持するためにできることを除いて、開発者の側に義務はありません。


そして、「顧客の視点」のビットをさらに拡大するために、私が得ているのは、質問の背後にあるストーリーが何であるかはわかりませんが、顧客が持っていると考えるのは前例のないことではありません。導入後3年間にお客様が変更や追加作業を要求しなかった場合、開発者はFort Knoxのようにソースコードが保護されることを期待する権利。
Blumer

顧客に深刻な怒りを与えることは、契約違反にもなり、法的措置を取る可能性があることに注意してください。また、お客様から不満が出ることもあります。
David Thornley、

3

ああ、(コメントで)あなたからこの説明を与えられて:

それはずっと前に開発され、ソース管理なしで、彼らはずっとそれを販売してきました、そして今彼らは突然それを更新する必要があります

、この特定の状況、私はそれはおそらく、世界の終わりではないと言うでしょう。彼らがソースコードを必要とせずに何年もの間ソフトウェアを販売していることを考えると、更新を要求しているこの1人の顧客に「申し訳ありませんができない」とだけ言うことができます。

誤解しないでください。コードを失うことはよくありません。元のバージョンを書き直したり、リバースエンジニアリングしたりすることは、会社にとって非常にコストがかかります(そうすることを決定した場合)。しかし、それは世界の終わりではありません。彼らは明らかにコードを必要とせずに長い間生き残ってきたので、おそらくそれなしでも生き続けます。

もちろん、これは彼らが販売しているソフトウェアはビジネスのごく一部に過ぎないと想定しています。私が推測しているのは事実だと思います...


はい、それは彼らが販売する多くの製品の1つに過ぎません
JoelFan

1人のお客様だけではありません... OSの最新リリースでは動作しません
JoelFan

1

彼らが商品を売ることができる限り、私は彼らが困っているとは思いません。現在、彼らが製品を拡張し、次のバージョンで特定の新機能を提供することをクライアントと契約している場合、契約ペナルティの違反に対して彼らを設定しているので、それははるかに深刻です。しかし、コード自体を失うことに法的な問題があるとは思いません。

これは、会社にとって絶対的な災害ではないという意味ではありません。しかし、それは経済的災害です。合法ではありません。私はおそらく「総無能」という言葉から始め、そこから自分の道を歩んでいきます。


-1:「問題ないと思います」Microsoftがオペレーティングシステムを「アップグレード」するときに、バグの修正、パッチの適用、変更を行うことはできません。彼らは急速に減少する顧客ベースに完全に運命づけられており、唯一の新しい販売は馬鹿を完了することです。(人口はゼロではありませんが、ソフトウェアに多くのお金を費やすことはありません。)
S.Lott

@ S.Lott:さらに重要なことは、再コンパイルすらできないことです。お客様の環境に何か変化があった場合、ソフトウェアは動作しません。
David Thornley

1

正直なところ、使用する言語に依存すると思います。C#コードベースを失うと、非常に簡単に逆コンパイルできますが、C ++コードベースを失うと、それはさらに悪化します。


ビルドして実行できるようになるまで逆コンパイルしましたが、それでも保守可能でしょうか?
ジェイ

3
あなたが良いコーディングの習慣に従っているなら、ぜひともはい。メソッドとフィールドの名前はすべて、プライベートのものも含めて保持されます。メソッドが短い場合、ローカル変数の目的は明白です。匿名メソッドやイテレータのようなコンパイラトリックは威圧的に見えるかもしれませんが、(必要であれば)いくつかの作業で元に戻すことができます。アセンブリが難読化されていても、どこかにデバッグバージョンが残っているはずです。
自分への注意-

あなたが持っている唯一のコードが難読化されていない限り、その場合、それはちょっとした苦痛になるでしょう。
MIA

1

その言葉が出た場合、かなり広範囲に及ぶ災害以外の方法でソースコードを失う可能性のあるベンダーは、明らかに健全な開発慣行のようなものに従っておらず、信頼されていません。私は、それが一見したところ企業の無能の非常に強力な証拠であると考えています。

「信じられないほどの愚かさ」はどうですか?


0

アイテムの組み立てを必要とする他の仕事にそれをお願いします。おそらく何か物理的。たとえば、建築家が建てられた建物の計画を失った場合。自動車会社が車のモデルの計画を失った場合; 仕立て屋が彼らが作った服のパターンを失った場合; 等

ソフトウェアの作成と同じように物理的に比較できる仕事はたくさんあります。


ただし、計画は通常それほど重要ではありません。建築家が計画を失った場合でも、別の人が建物の変更を監督できます。自動車会社が計画を失っても、その自動車はまだ新しく開発された舗装のある道路を走行することができます。ソースコードを紛失した場合、プログラムを大幅に変更することはできません。また、プログラムを再コンパイルして、新しいオペレーティングシステムまたはライブラリの新しいバージョンで実行することもできません。
David Thornley、

@David:あなたは私のアナロジーを理解していないと思います。建築家が計画を建物に失うと、新しい計画を構築するために計画を再作成する必要があります。また、別の建築家が撤退する予定がない場合に、建物の変更をどのように監視できるかについてもわかりません。あなた、自動車の類推を完全に誤用しました。とはいえ、とにかくそれは少し弱い類似点であると指摘しました。
frogstarr78

@ frogstarr78:元の計画なしで建物に変更を加えることは可能です。観察できる建物があります。古い建物を基にすることもできますが、新しい建物を建てるにはおそらく新しい計画が必要になります。車のモデルの計画は、1つのモデル年にのみ必要になります。その後、必要な情報について車を調べることが可能です。物理オブジェクトへの計画を失うことは良いことではありませんが、ソースコードを失うことと同じくらいユーザビリティに影響を与えることはありません。
David Thornley

@David:同意しません。
frogstarr78

@David:家や車のプランの再描画を比較して、実行中のプログラムを見て、それを変更できるようにするのは簡単だと私には思えます。プログラムがコンパイルされている(そしてもちろん、クロスプラットフォームに準拠している)場合、または自動車がすでに構築されている場合、または住宅がすでに構築されている場合は、それらをすべて使用できます。ただし、これらのいずれかを変更する必要がある場合(ここでは車が1週間目の例だと言ったように)、変更する計画が必要になります。これらの例が完璧だと言っているわけではありませんが、ほとんどの人々にとって身近で親しみやすいものの領域にコンセプトを置いています。
frogstarr78

0

コードを逆コンパイルするオプションは別として、会社がソフトウェア製品の販売を続けるつもりなら、これはかなり大きな問題になると思います。それが社内アプリケーションである場合、同じことはそれほど当てはまりません。

ソースコードを復元できない場合、メンテナンス(バグ修正)と拡張を実行できないため、アプリケーションは静的になります。Microsoft、Apple、Apache、またはオペレーティングプラットフォームがコードを変更またはアップグレードしている場合は、古いコンパイル済みコードが機能せず、修正できません。このアプリケーションを外部クライアントに販売している場合、Windows、MAC OSX、iPhone、Webブラウザをいつアップグレードするかを制御できないため、会社の評判に対してかなり大きなリスクがあり、保守契約を結んでいる場合も法的リスクがある可能性があります。クライアントと。

次に、ソースコードは会社の資産を表します。したがって、ソフトウェア会社にとって、それは帳簿上の資産です。これは、製品として販売したり、ソースコードとすべての権利を別のソフトウェア会社に販売したりできるものです。ソースコードを紛失したため、維持できないことがわかっていたクライアントにソフトウェア製品を販売し続けるつもりはありません。さらに、別のソフトウェア会社がその製品をさらに開発できなければ、アプリケーションとすべての権利を購入することはないでしょう。したがって、このアプリケーションの資産価値を削減する必要があります。

社内の社内アプリケーションの場合、アプリケーションのオペレーティングプラットフォームをより詳細に制御できますが、メンテナンスのためにソースコードを使用可能なコードベースに逆コンパイルできない場合は、このアプリケーションの置き換えを検討します。

乾杯、

ケビン

PS私はこれが理論的な質問だけであることを願っています... :)


-1

彼らがバグを修正する必要がない場合、それはおそらくそれほど大きな問題ではありません。たとえば、会社がカスタムActiveXコントロールを作成し、レガシー製品の1つへのソースを失った場合、誰が本当に気にするのでしょうか。製品はおそらく積極的にメンテナンスされておらず、おそらく積極的に販売されていません。人々が32ビットActiveXをまだ使用している限り、彼らはそれを販売し、その後それを忘れます。

それでも、私はそれを重大な過失として分類します。明らかに、ソフトウェアハウスにとっては専門家としての能力がないソースコード管理システムは整っていません。


-1:「バグを修正する必要がない場合」羨ましいレベルの完璧さ。誰がそんなに良いソフトウェアを持っていますか?誰でも?
S.Lott、

1
「バグを修正する必要はありません」!=「バグなし」。多くの企業が、修正するつもりのない既知のバグのリストを記載したEOLソフトウェアを販売し続けています。Win98のUSBドライバーのように、そこにはありますが、おそらく完璧ではありませんが、バグ修正を適用している人はいないでしょう。
TMN、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.