に関してベストプラクティスの管理の複雑性/可視化コンソフトウェア?
-
08-07-2019 - |
質問
ま築ツールの鉱山からの情報。についてなど
- クロールからのデータはウェブ
- 情報の抽出に基づくテンプレート&ビジネスルール
- 解析結果をデータベース
- 適正常化&フィルタリング規則
- などがあります。
問題は困問題&良い"高レベルの絵"において何が起こる。
どの技術もなか複雑なプロセス?
- 利用ワークフローツールウインドウのようなワークフロー財団
- 封止に別の機能をコマンドラインツール用スクリプティングツールとリンク
- 書のドメイン固有の言語(DSL)指定をもとに実現されなければならな高いレベル。
でも興味のある人はどのようお得に応じた個別アドバイスを受けるシステムは多くの相互作用ます。私たちのような文書を理解しどのようにシステムより高い水準でトレースのソースコード。
解決
コードは、各段階で何が起こるかを示しています。 DSLを使用するのは便利ですが、独自のスクリプト言語やコンパイラを作成するコストがかかる場合は、おそらくそうではありません。
高レベルのドキュメントには、各ステップで何が起こるかの詳細を含めないでください。手順の概要とそれらがどのように関連しているかを提供する必要があります。
良いヒント:
- データベーススキーマの関係を視覚化します。
- プロセスの概要(プロジェクトの仕様に属しているもの)には、visioまたは他のツール(使用したことのないツールなど)を使用します。
- コードが適切に構造化/区分化されていることなどを確認してください
- ある種のプロジェクト仕様(または、システムが抽象レベルで行うことを説明する他の「一般」ドキュメント)があることを確認してください。
実際に使用する場合を除き、コマンドラインツールの構築はお勧めしません。使用しないツールをメンテナンスする必要はありません。 (それは役に立たないと言っているのと同じではありませんが、あなたがすることのほとんどは、外部プロセスを実行するのではなく、ライブラリに属しているように聞こえます。)
他のヒント
私はAT& Tの有名な Graphviz を使用します。これはシンプルで、うまく機能します。 Doxygenが使用するのと同じライブラリ。
少し努力すれば、見栄えの良いグラフを取得できます。
言及するのを忘れて、私はそれを使用する方法は次のとおりです(GraphvizはGraphvizスクリプトを解析するため)、私はGraphviz形式でイベントをログに記録するために代替システムを使用するので、Logsファイルを解析して素敵なグラフを取得します
依存関係構造マトリックスは、アプリケーションの構造を分析するのに役立つ方法です。 lattix のようなツールが役立ちます。
プラットフォームおよびツールチェーンによっては、アプリケーションのサブシステムまたはコンポーネント間の関係を文書化するのに役立つ、非常に便利な静的分析パッケージが多数あります。 .NETプラットフォームの場合、 NDepend が良い例です。他のプラットフォームには他にもたくさんあります。
システムを構築する前に適切な設計またはモデルを用意することは、アプリケーションの構成方法をチームに理解させる最良の方法ですが、前述のようなツールは、アーキテクチャルールの実施に役立ち、多くの場合、コードをトロールするだけではできない設計。
んで使用するツールを使って制御されます。
必要なものを描く高いレベルの図のように鉛筆をすることができます。
私はデザインのプラットフォームの異なるモジュールをやってもいいところ-わるいところをご指摘いデザインにこできるようにして多くのインスタンス毎にモジュールの走行を行なった。
私の考えを複数のキューのための
- Urlの耐震性の低い住宅では、倒壊
- 這ページからウェブ
- 抽出された情報に基づくテンプレート&ビジネスルール
- 解析結果
- normalizationed&フィルタの結果
という単純なくコマンドラインUIプログラムからデータを読み込むためのキューに挿入データを一つ以上のキュー(クローラーが供給するの "Url耐震性の低い住宅では、倒壊" や "這ページからウェブ")ここでは、この構造をどう使用す:
- Webクローラー
- データ抽出器
- パーサ
- A normalizerとfilterer
これらのもとに行列ができますが、実は多くのコピーがこれらの別々のPcをこめます。
最後のキューできるfrbへの別のプログラムが実際に投稿すべてのデータベースを実際に利用します。
私の主要なコンポーネントごとに機能仕様を書いています。各仕様は共通の形式に従い、必要に応じてさまざまな図と写真を使用します。当社の仕様には、機能的な部分と技術的な部分があります。機能部分は、コンポーネントが高レベルで実行すること(理由、解決する目標、実行しないこと、やり取りすること、関連する外部ドキュメントなど)を説明します。技術的な部分では、コンポーネントの最も重要なクラスと高度なデザインパターンについて説明します。
テキストは、最も汎用性が高く、更新が簡単なため好まれます。これは大したことです-すべての人がVisioまたはDiaの専門家(またはまともな)であるわけではなく、それが文書を最新の状態に保つための障害になる可能性があります。仕様をwikiに記述して、各仕様間(および変更の追跡)を簡単にリンクできるようにし、システム内の非線形ウォークを可能にします。
トップダウン設計は非常に役立ちます。間違いの1つは、トップダウンデザインを神聖にすることです。トップレベルの設計は、コードの他のセクションと同様にレビューおよび更新する必要があります。
これらのコンポーネントをソフトウェア開発ライフサイクル(設計時間、開発時間、テスト、リリース、ランタイム)全体で分割することが重要です。図を描くだけでは不十分です。
マイクロカーネルアーキテクチャを採用すると、「分割して獲得」が本当に役立つことがわかりました。この複雑さ。マイクロカーネルアーキテクチャの本質は次のとおりです。
- プロセス(各コンポーネントは分離されたメモリ空間で実行されます)
- スレッド(各コンポーネントは個別のスレッドで実行されます)
- 通信(コンポーネントは単一の単純なメッセージパッシングチャネルを介して通信します)
使用しているシステムに似たかなり複雑なバッチ処理システムを作成しました:
各コンポーネントは.NET実行可能ファイルにマップします 実行可能ライフタイムは、Autosysを介して管理されます(すべて同じマシン上で) TIBCO Rendezvousを介して通信が行われます
実行時イントロスペクションを提供するツールキットを使用できれば、さらに良いでしょう。たとえば、Autosysでは、実行中のプロセス、発生したエラーを確認できますが、TIBCOでは、実行時にメッセージキューを検査できます。
NDependを使用して、複雑な.NETコードベースをリバースエンジニアリングします。このツールには、次のような優れた視覚化機能がいくつか付属しています。
依存グラフ:
依存関係マトリックス:
ツリーマッピングによるコードメトリックの視覚化: