2011-01-21 12 views
2

AmazonまたはGoogleの規模に拡大する可能性のあるWebアプリケーションを設計していることを確認してください(エンタープライズ、アプリケーション、およびデータベース設計モデリング)。初めは、アジャイル開発という名前で、どこかで始めなければならないことを知っているプロジェクトの小さな部分から始めます。たとえば、プロジェクトが始まり、ディレクトリだけでなく、書籍の購入や販売のためのワンストップサイトやその他のあらゆる種類の商品になることを望む簡単な本のディレクトリを作成することもできます。 (これはまったく仮説です)あなたはいつモデル化しますか?

採用するモデリングの種類は何ですか?初めにモデル化する異なる「エンティティ」は何ですか?モデリングの重要性と、モデリングする時期とモデルを決定するためにどのような情報を使用すべきですか?

これまでの質問では、「データ中心の世界観」と「プロセス中心の世界観」が参照されています。論理データモデリングと物理データモデリングを開始する前に、アプリケーションやWebサイト全体で情報フローをモデル化していますか?あるいは、これらのフレーズは何か別のものを指していますか?

さまざまな種類の情報をモデリングするためにどのようなツールを使用できますか?

答えて

3

私のモデリングは、通常、紙またはホワイトボードで行われます。私は徹底したテクニカルデザインを書いていますが、それは役に立たないことがわかりましたあなたが数年または数ヶ月でしたいと思っている機能を先に考えてください。あなたの要件は絶えず変化するので、あなたは '今'のためにプログラムする必要があります。

つまり、モデリングの場合です。

もちろん、あなたの会社が成長した場合にはどうなるのでしょうか?機能ではなく、パフォーマンスだけではどうなるか考えてください。 10回の訪問者、10回の商品、10回の注文...あなたが心配する必要があるもので、2年間で構築しようとしているものではありません。 「スマート」なコードと「拡張可能な」コードを書くすべての試みは、すべてを予見することはできません。あなたが考えなかった場合に比べて2年間でカスタマイズするのがさらに複雑なシステムになります。それはまったくありません。

今すぐ必要なものをビルドし、それをリーンでクリーンに構築して、今後拡張、リファクタリング、または交換することができます。

+0

多くのプログラマーが数ヶ月または数年先の仮説を予想している最大の間違いを追加します。将来あなたが成長するための最善の基盤であると同時に、あなたが今やっていることを何でもしてください。 –

2

今後のモデルの校正は、将来の実装の校正とは異なります。

ここに私が使ったいくつかのモデルがあります。

Data models: 
    Analysis model (conceptual): Entity-Relationship modeling 
    Design model (logical): Relational Data Model 
    Implementation model (physical): DBMS specific model 

Application models: 
    Object Model: governs messaging among component objects. 
    Dynamic Model: governs states, events, and transitions within an object. 
    Functional Model: governs transformations and computations. 

モデルは、彼らが去る何のために重要であるだけでなく、彼らが去る何のため。すべてのものを予測しようとしませんが、どちらかのコーナーに自分自身をペイントしていません。他の人の経験から学び、自分の経験から学ぶ。

1

私の経験では、適切で高度に正規化されたDbデザインから始めることは、道のりの拡張性の鍵です。より多くの原子があなたのエンティティを作ることができれば、未知の「未来の必要性」が収穫されるときに、あなたのシステムはより容易に拡張可能になります。あなたがあなたが追加したいと思っていることを前もって計画することと、時間的制約のために現時点ではできないこと、あるいはおそらく既知の持続時間の(おそらくは)ハードウェアの制限との間に違いがあります。しかし、それは「Google IIになるとどうなるか」を計画することとは異なります。

バックエンドでは、強く高度に正規化されたテーブル構造です。フロントサイドでは、きれいで疎結合のクラスとn層設計が拡張性に向けて長い道のりを歩んでいます。

関連する問題