バックグラウンド:
私はSAPに多額の投資をしている会社で働いています。また、数十の大規模な.NETシステム(主にエンジニアリングシステム用)とJavaプラットフォーム(主に外部Webアプリケーション用)もあります。そのため、ABAP、C#、およびJavaEEに大規模な開発ショップがあります。
質問:
つまり、商用の既成(COTS)ソフトウェアをいつ使用するか、また、独自の開発者をいつ活用するかを決定するためのより良い方法が必要です。
基準:
この質問に役立つベストプラクティスに基づいて決定木を構築したいと思います。
最高レベルでは、JeffAtwoodの関連記事はそれをうまくまとめています。最高のコードはコードがまったくないということです。
もう少し深く、次のような基準を見たいと思います。
ほとんどの要件を満たすCOTSシステムを利用できますか?(はいの場合、COTSシステムは良いオプションかもしれません:(車輪の再発明を避けてください))
- もしそうなら、完全に公開されたAPIは利用できますか?(これは統合/カスタマイズに不可欠です)
- もしそうなら、ソースコードは利用できますか?(これは、深い統合/カスタマイズに不可欠です)
システムはコアビジネス機能を満たすように設計されていますか/競争上の優位性を生み出していますか?(もしそうなら、カスタム開発は良いオプションかもしれません:Joel Sposkyの:In Defense of Not-Invented-Here Syndromeを参照してください)
- もしそうなら、カスタム開発は将来/他のシステムでコードの再利用を可能にしますか?(既存のコードを再利用することには多くの利点があります)
カスタムアプリケーションとCOTS製品のTCOはどのくらいですか?
カスタム開発では満たすことができなかった時間の制約はありますか?(はいの場合、COTSシステムが良いオプションかもしれません)