まだ書かれていないアプリケーションへの影響を最小限に抑えることを検討しています。私はサードパーティ製品を避けようとしており、オペレーティングシステム固有の呼び出しを避けることさえしています。誰でも将来のアプリケーションの校正方法を提案することができます。この考え方は、10年または20年で大部分を書き直す必要はなく、メンテナンス(バグ修正)のみを行う必要があります。今後のアプリケーションの校正にはどのようなオプションがありますか?
答えて
あなたのプログラムを(現代のOSで)この種の期間実行し続けるには、純粋なANSI C(またはC++)で書かなくてはならないでしょう。他の何もかもが何年もの間調整する必要がありそうです - 誰も本当に次の10-20年の間に何が起こるかを知っていません。言っ
、ここではこの種の問題を最小限にするためにいくつかのヒントがあります:- は奇妙な依存関係を避けてください。ライブラリに依存する場合は、(または10〜20年のうち少なくとも5年間生き残る可能性が高い)、または少なくともオープンソースなので、自分でフォークできるようにしてください必要なら。
- OS固有の呼び出しを避けてください。 boostまたはQtまたはglibやwhat-have-you - のようなラッパーライブラリを使用できますが、それはそのフロントでの互換性の問題の可能性を高めます。
- すべてを記録します。事実、どんなに頑張っても、このプログラムには互換性の修正とバグの修正が必要であり、おそらく機能の追加も必要です。だから、15年後に来る貧しいメンテナンスプログラマーの人生を楽にしてください。 :)
64ビットを念頭に置いて書きます。現在、サードパーティの依存関係の多くが64ビットをサポートしていないことがわかっているので、問題があります。
128ビットを書き込まないでください); j/k – esac
まだ今日のマシンで動作している10〜20年前のプログラムを掘り起こし、なぜそれらがまだ稼働しているのか、そしてなぜそれらが価値があるのかを見てください。たいていの場合、CやFORTRANで書かれた、他のアプリから呼び出されている計算集約型のコンソールベースのアプリケーションがまだまだ数多くあります。あなたのアプリがたくさんのGUIを持っているなら、何十年もの間に何か価値があると確信していますか?おそらく、UIパラダイムが変化し、進化するにつれて、UIを将来置き換えることができるように、ユーザーインターフェイスをコア機能から分離することを検討してください。非常にモジュラーな方法でシステムを書くと、価値を提供するモジュールは保存できますが、はっきり廃止されたモジュールは置き換えることができます。
テストを自動化することもできます。 あなたのアプリケーションは「校正」されているわけではありませんが、物事が変わったときに何が修正されなければならないかを知っています。
10年後もまだまだ機能しないアプリケーションを構築する最善の方法は、構築されていてまだ10年前から実行されているシステムを見ることです。
私の経験から、大規模なアップグレードを必要としなかったシステムの大部分は、10年前に導入されたのと同じまたは同様のハードウェアで実行し、同じインターフェイスを使用することでそうしています。
メンテナーは、ムーアの法則やユーザビリティの改善によるパフォーマンスの改善を長年にわたりメンテナンスをほとんどまたはまったく受けないようにしました。
私が開発した多くのアプリケーションは、サイクル(例:毎年)で実行されます。彼らが仕事を続けるために最も重要なのは、日付や日付範囲をハードコーディングすることではありません。例:もちろん範囲
のための年
DateSubmitted BETWEEN year(now()) AND DATEADD(year,1,year(now()))
ため
year(now())
、これらは一例です。
- 1. VisualSVNServerHooks.exeにはどのようなオプションがありますか?
- 2. OpenShift Passphrase Lost。どのようなオプションがありますか?
- 3. gcc/g ++にはどのような便利なオプションがありますか?
- 4. 未払いのショッピングカートにはどのようなオプションがありますか?
- 5. UITableViewのheightForRowAtIndexPathにはどのような代替オプションがありますか?
- 6. Windowsイベントログの操作にはどのようなオプションがありますか?
- 7. ビデオのホスティングにはどのような良いオプションがありますか?
- 8. ウェブサイトやウェブアプリケーションにはどのような認証オプションがありますか?
- 9. クロスブラウザ対応オーディオにはどのようなオプションがありますか?
- 10. Akinatorのゲームの後ろにはどのようなアルゴリズムがありますか?
- 11. 私のDroid携帯にはどのようなアプリケーションがありますか?
- 12. wicketアプリケーションのログアウトにはどのような方法がありますか?
- 13. どのような簡単なパスワード保護オプションがありますか?
- 14. Redisサービスとしてのデータベース:どのようなオプションがありますか?
- 15. Androidアプリケーションにはどのようなハードウェア要件がありますか?
- 16. BuidlingとCodeIgniterアプリケーションにはどのようなステップがありますか?
- 17. モバイルアプリの開発...今後どのように選択する必要がありますか?
- 18. どのようなオプションを非正規化テーブルに挿入する必要がありますか
- 19. 学校データベースの正規化は、より良いもパフォーマンスになります
- 20. オプションのようですが非オプションのクラスはありますか?
- 21. プリズムインフラストラクチャプロジェクトにはどのようなものがありますか?
- 22. PHPユーザ認証ライブラリ/フレームワーク...どのようなオプションがありますか?
- 23. 校正/派生を表すMathematicaパッケージはありますか?
- 24. `jqXHR.status`にはどのような値がありますか?
- 25. HerokuにはどのようなWebサーバーオプションがありますか?
- 26. OperatingSystem.Versionにはどのような値がありますか?
- 27. MySQLにはどのようなテーブルがありますか?
- 28. オブジェクトにはどのような関係がありますか?
- 29. Neo4Jアンマネージドエクステンションにはどのようなコードがありますか?
- 30. そこにはどのようなアプリケーションコントローラがありますか?
「これはプログラミング関連ではない」とタグ付けされた理由はわかりません。ソフトウェア設計の決定は、システムの寿命に影響します。 –