プログラムの高レベルのアーキテクチャを文書化するための標準はありますか?


10

私はアマチュア開発者であり、これまでのすべてのプログラムは、コード内に文書化できるほど単純でした。コードを読んでいる間、私が何をしているのか、そのようなアクションは明らかでした(私の標準的なテストは、6か月後にコードを見て、最初に読んだときにすべてを理解することでした-私は短いメモリスパンを持っています)。

私は今、プログラム間のさまざまな相互作用を覚える能力を超えてプログラムに直面しています。

  • コード自体
  • データベース内のインデックス
  • さまざまなモジュール間の相互作用(「ワーカー」コアコードと「ライブラリ」モジュール)

私の現在のドキュメントはホワイトボードで、コード、データベースインデックス、実行中のアクション、状態変化などを指すあらゆる種類のボックスと矢印があります。参考までに、混乱の断片:

ここに画像の説明を入力してください

私の質問は、より複雑な製品のドキュメント化のための標準または名前付きのベストプラクティスのセット(これは特定の名前でグループ化された一連のプラクティスであるという意味で名前が付けられている)があるかどうかです。

私が探す必要があるキーワードは何ですか(「ドキュメントソフトウェアアーキテクチャ標準」での一般的な試みと同様のバリエーションは、通常、ワークフローまたはビルディングアーキテクチャCADシステム用のソフトウェアにつながりました)。

また、高レベルの説明には一般的なベストプラクティスがなく、誰もが独自の哲学を構築することも期待しています。


um UMLと通常のプレーンテキスト
jk。

ドイツ語が読める場合は、arc42.de / template / index.htmlをご覧ください。ソフトウェアアーキテクチャを文書化するためのガイドラインがいくつか示されています。
Bernhard Hiller

8
「まったく気にしない」がおそらく標準に最も近い。
whatsisname

回答:


13

誰もが遵守している基準は1つではありません。ソフトウェアプロジェクトは大きく異なる可能性があります(helloworld.pyとスペースシャトルのコードを比較してください)。

非常に一般的な方法の1つは、4 + 1モデルを使用することです。すべてを単一のスタイルのドキュメントに詰め込もうとする代わりに、この方法論は設計を5つのコンポーネントに分割します。

  • 開発ビュー
  • 論理ビュー
  • 物理ビュー
  • プロセスビュー
  • シナリオ

さまざまなビューは、4つの異なる視点から製品を説明しています。シナリオはユースケースが存在する場所であり、他のビューの相互作用を説明します。

注:これは概念モデルであり、特定のツールに関連付けられていません。

あなたはここでもっと読むことができます:

  1. 4 + 1建築ビューモデル(ウィキペディア)
  2. アーキテクチャの青写真—ソフトウェアアーキテクチャの「4 + 1」ビューモデル(IEEE論文-pdf)

これは非常に良いアプローチです、ありがとう。一歩下がると、それはかなり明白だと思われるかもしれませんが、1つのグラフで私がすべて持っていたさまざまな4 + 1ピースを切り離すことは多くの助けになります。
WoJ

4

IMHO UMLは、実際のソフトウェアのアーキテクチャを文書化するために適切に機能するツールではありません。クラス図は便利ですが、この目的には低すぎることが多い抽象化レベルを使用します。ユースケース図は一般的に「高レベル」であり、特定の側面を見逃しています。他のUMLダイアグラムタイプにも同様の問題があります(公平に言うと、パッケージダイアグラム、デプロイメントダイアグラム、コンポーネントダイアグラムは、特定のアーキテクチャーの側面を文書化できますが、個人的にはあまり有用だとは思いませんでした)。

高レベルのアーキテクチャを文書化する実用的で実用的な方法を探している場合は、データフロー図に慣れることをお勧めします。これらは理解しやすく、抽象化のさまざまなレベルに拡張できるという利点があります。さまざまな種類のシステムを文書化するのに最も役立つことがわかりました。UMLへの道を見つけられなかったのは残念ですが、それにもかかわらず、これらの図を作成するためのツール(DiaやDrawIOなどの無料のツールでさえ)がたくさんあります。

補足として、高レベルのドキュメントに「データベースのインデックス」が必要なのはなぜですか?(リレーショナル?)データモデルの実装の詳細であると思います。それらを追加するかどうかは、私の経験では、パフォーマンスと最適化の問題です。


パッケージ図?配置図?コンポーネント図?
Nick Keighley

3
正直なところ、矢印の付いたボックスの束は、多くのデザイン機能を伝えるために不思議に働くことができます。コンポーネントダイアグラムはそのカテゴリに該当すると思いますが、クライアントはメインビットを表すボックスでデータフローを理解しています。Doc Brownに同意します。UMLの形式は、意図された目的でマークを逃します。
Berin Loritsch

@NickKeighley:私の編集を参照してください。
Docブラウン

@BerinLoritsch:IMHO「矢印の付いたボックスの束」は、Nick Keighleyが言及した図のタイプを特徴付けています。ただし、データフロー図は、データまたはデータのグループ/クラスターと、これらのデータを転送または変換するプロセスまたはコンポーネントとの間の明確な正式な区別を行います。それは、UMLダイアグラムで簡単に表現できるものではありません。
Doc Brown

1
データフロー図、特にストアを許可する図に時々頼ることを認めなければなりません。実際、私たちのシステムを説明する最上位の図は本質的にDFDです。クラス図とパッケージはまだある程度は有用だと思います。UMLの「正式な」部分にはあまり注意を払っていません。
Nick Keighley

0

統一モデリング言語(UML)は、ソフトウェアエンジニアリングの分野における汎用の開発モデリング言語であり、システムの設計を視覚化する標準的な方法を提供することを目的としています。


正式な仕様はomg.org/spec/UML/2.5にありますが、Webにはよりわかりやすいチュートリアルがたくさんあります。
Simon B

2
この回答は質問の一部にすぎません。UMLはモデル化するための正しいツールですが、これだけでは完全なドキュメントにはなりません
Walfrat

3
誰かがUMLを頻繁に使用しますか?
Panzercrisis 2017

だらだら。リバースエンジニアリング。
Nick Keighley 2017

1
@Walfrat。それは...ですか?本当に?私には疑問があります。
Docブラウン

-3

以前はもっとうまくやったと思います。UMLは、赤ちゃんを風呂の水で捨てたようです。統一モデリング言語を提供することで、アーキテクチャと実装の区別がなくなりました。または、それが意図していなかった場合、効果があるように思われました。

私はいくつかの怪物のUMLモデルを見てきましたが、率直に言って、コードが実行できなかったことを何も実行せず、より適切に実行します。


3
質問への回答はありませんが、おそらくSuperGirlの回答へのコメントとしてより適切です。
ニュートピア

1
それは質問に対処します。質問に対する答えは、以前よりも「いいえ」であると主張しています。
Nick Keighley
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.