Webアプリケーションの終わりを決定する方法は? [閉まっている

StackOverflow https://stackoverflow.com/questions/2105304

  •  21-09-2019
  •  | 
  •  

質問

この質問は多くの意見をテーブルにもたらす可能性がありますが、私が得たいのは、私と私の会社が私たちが販売する製品の終わりを決定するのに役立つ一連の対策です。

CMSシステムを販売しています。このシステムでは、いくつかのサブ製品を作成します

  • ウェブサイト
  • 提案作成者
  • マーケティングキャンペーントラッカー

私たちは道路計画を開始する準備ができており(2010年と2011年)、アプリケーションの寿命がいつ終わるかを理解しようとしています。あなた方の何人かは非常によく建てられたアプリケーションだと思うかもしれません (私たちのアプリケーションがよく建築されているとは思わない) 人生を終わらせる必要はありませんが、私たちが使用しているこのアプリは少なくとも6〜7年前にさかのぼり、ドキュメント(実際の生活)がほとんどありません。現時点では、コア機能を変更する方法を知っているのは1人だけです(恐ろしい)。

ご意見をお聞かせください、

ジオ


ありがとうございます!このトピックに関するあなたのコメント、意見、考えに本当に感謝しています。

以下のリストのバックバックの質問のいくつかに対処します

  • 製品のコア機能を維持できる開発者が1つあります。 (唯一の1つだけ)
  • 機能を特定のポイントに増やすことができる2つの開発者がいます。両方の開発者は、コア製品の制限に制約されており、どちらもそれらの制限内で作業する必要があります。
  • 非常に重要なメモ。私たちが終末期に置くことを検討している製品は、ほとんどの場合、請負業者によって構築されています。請負業者は、コア機能を維持できる唯一の開発者です。請負業者のフレームワークの上にのみ開発します。

私はあなたのすべての応答を読んでいる間、私は答えを追加し続けます。

役に立ちましたか?

解決

アプリケーションは非常によく建築されているため、退職したくないかもしれません。

これが私の提案です:

  • ジュニア開発者にこの現在の開発者に参加してもらいます。
  • ジュニア開発者の将来の更新のほとんどをダンプします(Sr。Developerの支援を受けて)
  • ジュニア開発者に彼の仕事のドキュメントをするように頼む
  • Sr.開発者にドキュメントを確認するように依頼してください

しばらくの間、このアプリケーションをサポートできる別の人がいます。また、それも文書化されます。今、あなたはあなた自身の手であなた自身の非常によく建てられたアプリケーションを殺す必要はありません。

.

Jeffereyの提案でこのソリューションを以下に拡張します(「時々書き換えは良い投資です。」)

それでも現在のアプリケーションをドロップして書き直したい場合は、既存のシステムを文書化し、それに基づいて新しいシステムの要件を作成する必要があります。

現在および提案されているシステムのドキュメントを使用して、モジュールアップグレード(再ライテ)コンポーネントごとに徐々にモジュールができるかどうかを確認することができます。これは、アプリケーションが非常によくアーキテクチャされている場合に可能です。


(Geo)コメントに従って

Geoの組織には、カスタムサードパーティ(1つの契約開発者が1つだけ)CMSアプリケーションがあり、ビジネス要件を下回り、コードのサポートと使用のためにライセンス料を支払います。

  • CMSのビジネス要件
  • ウェブサイト
  • 提案作成者
  • マーケティングキャンペーントラッカー

これが私の提案です

  • このプロジェクトのモジュールでモジュールの詳細なユースケースドキュメントを作成します。開発者はこれを行うことができます。または、同じビジネスアナリストを持つことに理想的です。
  • Sr.開発者を雇って、オープンソースCMSがすべてまたはほとんどの要件(Joomla、Drupalなど)を処理できるかどうかを評価します。
  • ここで最も重要なことは、既存のデータを新しいシステムに移行する能力です。これを行うには、既存の契約開発者からの支援が必要になる場合があります。
  • 新しいシステムを使用するには、ビジネスプロセスまたはワークフローを更新する必要がある場合があります。
  • オープンソースCMSを使用して実装できないモジュールは、カスタムWebサイトを使用して実装する必要がある場合があります。

その多くは、既存の契約開発者とライセンス契約とのビジネス関係にも依存しています。あなたが直面しているのは、シナリオのベンダーロックです。このベンダーのロックを排除するために、ソリューションに関するさらに調査することをお勧めします。

他のヒント

これは私の意見ですが、これがあなたが販売している製品である場合、それはすべてビジネスの見通しに要約されます。製品が販売されていない場合は、ドロップしてください。製品に未来がある場合は、それに投資し、リファクタリング、書き換え、またはしなければならないことで、できる限り最高のソフトウェアにします。忠実な顧客や強力なブランドがある場合、それは保護する価値があります。

現在のソフトウェアがコピーできるデザインを成功させ、強力なブランドを持っている場合、そしてそれが正しく行われる場合、他のテクノロジーですべてを書き直すことは良い投資であることがあります。

アプリケーションは、ドキュメントの種類なしで出荷された瞬間に終末期に達しました。今すぐ開発を開始してください。元のシステムを知っている人の交換を検討することをお勧めします。彼らがいかなる種類のドキュメントも作成せずに6/7年を過ごした場合、彼らはあなたがあなたの会社で望んでいる人ではありません。

システムの寿命を延ばす唯一の種類のドキュメントは、テストスイート、自己診断ツール、コードコメント、インターフェースなどの宣言的契約、自動的に生成されたドキュメントなど、システムが生涯にわたって変化するにつれて一貫性を保つものです。

マニュアル、開発者ガイド、アーキテクチャドキュメント、データ形式など、その他の手動で管理されたドキュメントアーティファクトは、ドキュメントの量に比例して時代遅れになる傾向があります。これらを、あなたがそれらを維持するためのコストをすでに考慮していない限り、あなたのアプリケーションの平均余命を増やす要因として数えません。

アプリケーションを確実に維持するために開発者の冗長性を「余裕がある」場合は、ドキュメントを最新の状態に保つ余裕がありません。ドキュメントの欠如は、おそらく無意識のうちにあなたが決定した技術的な負債です。より長いライフサイクルが要件である場合、そのコストはその要件を満たすことを考慮しなければなりません。

長い話を短くするために:私は同等の状況にあります。

  • このアプリケーションはCashCowのようなものであるが、会社は新しいアプリケーションを開発する余裕がない(または意図する)ことはできないため、顧客がより新鮮なシステムを購入することを決定する前に死にません。

  • (文書化された)要件なしで書き換えることはほとんど不可能です。

  • 少なくとも専門部門の経験は、さらなる開発に役立つ方法で文書化されるべきです。

  • このアプリケーションを維持する必要がある場合は、全体的な複雑さを減らすために、モジュール間のインターフェイスを導入する必要があります。そのため、古いモジュールがメッシーであっても、新しい機能をプラグインする必要があるかどうかは気にしないでください。

たとえそれが非常にうまく設計され、機能していても、それはドキュメントがなく、その生涯にわたって一人の人に依存するという事実は、製品が非常に適切に入力できないことを意味します。これは良い兆候ではありません。私は製品が長い間「終末期」を過ぎていることに同意します

これらは、システムが「終末期」になっているかどうかを決定する際に考慮するかもしれないものです。

このシステムが提供する機能は、エンドユーザーがより安価、より信頼性、または使いやすいフォームで利用可能ですか?今ではない場合、これはいつの可能性がありますか?したがって、この製品は長期的に実行可能ですか?

これは、顧客が製品にインターフェイスするのが厄介であるか、「時代遅れの」プラットフォームを実行する必要があるため、顧客が逃げるテクノロジーで書かれていますか?それはあなたの会社がそうであるという印象を潜在的な顧客に与えるでしょうか 大幅 時代の背後には、VB6はおそらく2010年であってもまだ大丈夫ですが、Win16の互換性が必要ではないでしょう。

基礎となる技術プラットフォームをリーズナブルなコストで知っている善良な人々を雇うことができますか?古い技術では、プラットフォームを知っているが、それを行き止まりと見なし、彼らのキャリアがそれに取り組んでいる間、彼らのキャリアが低迷している場合、プレミアム給与を求める人がたくさんいるかもしれません。

それがあなたにとって重要な場合、開発プラットフォームはまだベンダーによってサポートされていますか?ベンダーがそれを更新しなくなった場合、どのハードウェアまたはOSを実行できるかについて制約されますか?同様に、プラットフォームに更新する必要があるセキュリティホールはありますか?ニッチなオープンソース製品でさえ、これに苦しむ可能性があります。製品が好まれなくなり、コア開発者が新鮮なプロジェクトに移行すると、コミュニティが修正することは困難になる可能性があります。

それがサポートされている場合、ベンダーはあなたに古いプラットフォームをサポートするためのプレミアムを請求していますか?今ではない場合、彼らがするまでどれくらいかかりますか?

新しいテクノロジーをそれに統合して、エンドユーザーに充実した機能を提供して競争力を維持する現在の傾向を活用することはどれほど難しいですか?あなたはこれを気にしますか?本質的に閉じたシステムを実行しているかどうかは関係ないかもしれません。

広範囲の「ショットガン」がシステム全体に波及することなく、機能的な変化を放出することはどれほど難しいですか?これは、システムがそもそもモジュラーに設計されていることに戻ります。競合他社が機能を市場に出すことで悪くない場合は、おそらく大丈夫です。

システムを書き直すコストはいくらですか?これは、販売収益を維持または増加させることがどれほど安いかと比較してどうですか?再び書き直しを行うことは経済的に実現可能ではないかもしれません。開発プラットフォームが健全な場合は、リファクタリングアプローチをもっと試すことができます。これは、優れたテストスイートとドキュメントを持つことが役立つ場所です。

私は似たようなプロセスを経験しました。ほぼ8年間実行されていたWebアプリがありました。その間、多くのメンテナンスが行われ、私たちが想像していなかった方法でそれを拡張しました。しかし、コアは良好で、まだ伸びることができました。

私たちを押しのけたのは、メンテナンスコストでした。適切なスキルセットを持つ人々を見つけることは8年前簡単でした。今日、誰もこれらの環境で働きたいとは思わない。私たちでさえありません:)

分析後、12か月以内に同一の機能を置き換えることができ、今回の費用がすぐに報われることを知っていました。

そのため、機能要件としてスクリーンショットを使用し、ルックアンドフィールを刷新し、機能を向上させることさえできました。また、使用データを検討して、めったに使用されない、または使用していない部品を特定し、それらをトリミングし、使用されたパーツにより多くの注意を集中させました。

最終的に、私たちは成功しました。一部には、チームの全員が新しいテクノロジーに精通していたため、学習の必要性はほとんどなかったからです。他の貢献要因には、よく考え抜かれたデザインが含まれていました。何かを書く前に、私たちはデザインに3か月を費やしたと思います。

最後の要因は、アプリがモジュール式であることです。そのため、各成果物の間にダウンタイム /分析期間を備えた短い配信スケジュールの組み合わせを組み合わせることができるほど小さいサイズでそれをチャンクすることができました。これにより、あらゆる段階で正しい道を歩んでいることが保証されました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top