5

さて、これがあまり広範ではないことを願っていますが、私の好奇心は私を良くしました。私は大手保険会社で働いています。生命保険契約の将来の現金価値の予測を処理するExcelスプレッドシートを作成しています。これらはかなり大きなワークブック(40-50mb)で、大量のシートと列があり、現金の価値を正確に予測するために、非常に多くの変数を考慮に入れる必要があります。

これは、デスクトップまたはビジネスアプリケーションとしてどのように構築されますか?私は初心者にとって.netをかなりよく知っていますが、スプレッドシートの考え方の外で、.netをこのようなものにどのように適用できるかを考えるのに苦労しています。スプレッドシートでそれぞれ1300行に60列の3ページまたは4ページを使用するコードで計算をどのように追跡しますか?年齢、性別、喫煙者/非喫煙者などの入力に基づいて動的に、金利、手数料、およびポリシーに影響を与えるその他のものを変更するだけでなく...

4

8 に答える 8

4

あなたの会社は、すべてExcelスプレッドシートに基づいて、年間10億ドル以上を行っているに違いありません。その中であなたは一人ではありません。

まず、Excelスプレッドシートではなく、問題について考えることから始めます。ビジネス上の問題は何ですか?オブジェクトでモデル化できますか?いくつかのオブジェクトが表示されます。ポリシー、それに付随するすべてのカバレッジおよびクラスの子。性別、喫煙者などの特徴を備えた被保険者-あなたはアイデアを得る。

射影は、変化するいくつかの統計的特性を持つ少数の「whatif」変数があるように聞こえます。あなたの仕事は、サンプルから描画して出力を計算することによって変数を変更するシミュレーションのような多くのモンテカルロを実行することです。結果は、標準偏差と信頼水準を使用した予測平均値になります。

大規模な並列コンピューティングの良い候補になる可能性があります。

計算の基礎は何ですか?共有できる有名なモデルはありますか?多分それはヒントを与えるでしょう。

于 2009-07-08T22:02:38.137 に答える
3

また、お金を伴う計算にはフロートやダブルを使用しないように注意してください。Decimalを使用します。

于 2009-07-08T22:27:55.510 に答える
2

これは本当に単純な質問です...複雑な答えがあります。

あなたは尋ねています:どうすれば複雑なソフトウェアプロジェクトを計画できますか?

あなたの環境を知ってください(あなたはあなたがそうしているように聞こえます):

ソフトウェアエンジニアリングを知っている:

あなたの言語/開発環境を知っている:


  1. 最初のステップは、開発者としてどのように機能するかを理解することです。
  2. 実行する、または実行できる手順を計画します。
  3. すべてを単純化して最小にします。
  4. 何をすべきかのリストを再検討してください。
  5. それをモックアップします。
  6. やれ。

開始することに神経質な場合は、単純な関数プロトタイプを作成します。Balsamiq Mockupsのようなものでプロジェクトを視覚化することから始めて、パズルの各ピースがどのように組み合わされるかを確認できるようにします。

ソフトウェアエンジニアリングの方法を研究するのに数日かかると、何時間も頭痛の種を減らすことができます。あなたがやろうとしていることをすでにやったアルファオタクから私たちに与えられた良い習慣から始めましょう。

于 2009-07-08T22:09:59.727 に答える
1

SpreadsheetGear for .NETを使用すると、Excelを使用せずに.NETアプリケーションでExcelモデルを直接使用でき、ビジネス関係者がモデルを更新するたびにC#またはVBへの変換に多くの時間を費やすことはありません。

自分で試してみたい場合は、ここから無料試用版をダウンロードできます。

免責事項:私はSpreadsheetGearLLCを所有しています

于 2009-07-10T22:21:35.083 に答える
0

一度に1つずつ分解し、データベースの設計から始める必要があります。基礎となるテーブルについて考えてください。各シートをExcelで調べて、関連する情報を取得してデータベーステーブルに入れるとどうなるかを考えることができます。

データベースビューは、多くのテーブルに基づいて計算を実行し、結果を適切な形式で表示できるため、基本的な計算を行うのに最適です。

于 2009-07-08T22:00:11.293 に答える
0

これが私が取るアプローチです:

  • データ(60列/ 1,300行の3〜4ページのもの)をDBまたは他のデータストアに保存します。
  • DB関数(何とかからsum(foo)を選択)、一時テーブル、メモリ内配列などを使用して計算を行います
  • 計算をデータストアに保存します(後で簡単に取得および監査できるようにするため)
于 2009-07-08T22:01:26.187 に答える
0

しばらくの間、speadsheetsが、C#コードよりも高いレベルの抽象化で機能していることを考えてみてください。

したがって、.Netでワークシートを再実装するには、いくつかの幅広いアプローチがあります。

  1. 問題のドメインの周りに多くの狭い特定の機能を備えたカスタムアドホックソリューション
  2. または、スプレッドシートの概念を再実装することもできます。maxtrix値の永続性とビューから、セル間のオプションの依存関係を持つ式のマトリックスを評価する計算エンジンを分割します。好みのデータストア(xml、relationalDB)にデータを保存し、Web /デスクトップアプリを作成して結果を編集および読み取り、カスタムエンジンを使用して評価します。
于 2009-07-08T22:33:23.970 に答える
0

いくつかの詳細を追加するには:

  • セルの値は、データベースの変数またはエントリになります。たとえば、B1の式が= A1 + 2(A1には特定のポリシーのウィジェットの数が含まれる)である代わりに、次のようになります。

    var widgets = (from policy in db.Policies select new {policy.widgets}).First().widgets;
    var moreWidgets = widgets + 2;

  • 関数とマクロが移植されます-たとえば、Round(B1、0)はMath.Round(moreWidgets、0、MidpointRounding.AwayFromZero)になります

  • 関連するデータと機能は、クラスとオブジェクトインスタンスにグループ化されます。
  • シートは、ストレージ用のデータベーステーブル、UI用のタブページ/ダイアログボックス/Webページなどになります。
  • 一度に1つずつ入力/レビューされたデータのフォームを作成できます。

名:[________________]
姓:[________________]
SSN:[________________]

これらすべてを実行することの利点は(うまく実行されていると仮定して)次のとおりです。

  • 再利用/拡張のために機能をより簡単に見つけることができるように組織を改善しました。
  • 改良された性能
  • 現在複数のファイルに分散しているデータの集約を含む、データへの共有されたリアルタイムアクセス。
  • 新しい機能の全世界-おそらくあなたは音声合成やあなたが持っているものを追加したいと思うでしょう。
于 2009-07-08T23:42:59.540 に答える