是否有用于记录程序高级体系结构的标准?


10

我是一名业余开发人员,到目前为止,我的所有程序都很简单,可以在代码中进行记录。在阅读代码时,很清楚我在做什么和这样做(我的标准测试是6个月后查看代码,并在初读时了解所有内容-我的内存跨度很短)。

我现在面对的是一个程序,该程序超出了我记住这些程序之间各种交互的能力。

  • 代码本身
  • 数据库中的索引
  • 各种模块之间的交互(“工作人员”核心代码和“库”模块)

我当前的文档是一个白板,其中有各种各样的框和箭头,它们指向代码,数据库索引,正在执行的操作,状态更改等。仅供参考,一团糟:

在此处输入图片说明

我的问题是,对于更复杂的产品的文档记录,是否存在一套标准的或最佳实践的最佳实践集(命名为这是一组以特定名称分组的实践)。

我应该寻找什么关键字(对“文档软件体系结构标准”的一般尝试以及类似的变体,通常会导致用于工作流或建筑体系结构CAD系统的软件)。

我还希望对高级描述没有通用的最佳实践,并且每个人都可以建立自己的哲学。


嗯UML和一些普通的文本通常
JK。

如果您会读德语,请查看arc42.de/template/index.html。它们显示了一些文档编制软件体系结构的指南。
伯恩哈德·希勒

8
“一点也不费心去做”可能是最接近标准的。
whatsisname

Answers:


13

每个人都没有一个标准。软件项目可能相差很大(想想:helloworld.py与航天飞机中的代码)。

一种非常常见的方法是使用4 + 1模型。这种方法不会尝试将所有内容塞入单一文档样式,而是将设计分为五个部分:

  • 开发视图
  • 逻辑视图
  • 物理视图
  • 过程视图
  • 情境

各种视图从四个不同的角度描述了产品。这些场景是用例所在的地方,并描述了其他视图的交互。

注意:这是一个概念模型,并不与任何特定工具捆绑在一起。

你可以在这里阅读更多:

  1. 4 + 1建筑视图模型(Wikipedia)
  2. 体系结构蓝图-软件体系结构的“ 4 + 1”视图模型(IEEE论文-pdf)

谢谢,这是一个非常好的方法。退后一步,人们可能会认为这很明显,但是将我在一张图表上拥有的各种4 + 1片段断开会很有帮助。
WoJ

4

IMHO UML 并不是用于记录现实世界软件体系结构的工具。类图是有用的,但使用的抽象级别为此目的通常太低。用例图通常过于“高级”,并且缺少某些方面。其他UML图类型也有类似的问题(公平地说,包图,部署图,组件图可以记录某些体系结构方面,但是我个人从未发现它们非常有用)。

如果您正在寻找一种实用,实用的方式来记录高级体系结构,建议您熟悉数据流程图。这些很容易理解,并具有可以扩展到不同抽象级别的优点。我发现它们对于记录不同类型的系统最有用。太糟糕了,他们没有找到使用UML的方法,但是,尽管如此,您仍然可以找到很多用于制作这些图表的工具-甚至包括Dia或DrawIO之类的免费工具。

附带说明一下,为什么在高级文档中需要“数据库中的索引”?我认为它们是您的(关系型)数据模型的实现细节,根据我的经验,是否添加它们是一个性能和优化问题。


封装图?部署图?组件图?
尼克·基利

3
老实说,一堆带箭头的盒子可以为传达许多设计特征创造奇迹。我猜组件图属于该类别,但是我的客户理解带有代表主要位的框的数据流。我同意布朗博士的观点。UML的形式没有达到预期目的。
Berin Loritsch

@NickKeighley:看我的编辑。
布朗

@BerinLoritsch:恕我直言,“一堆带箭头的盒子”刻画了尼克·基思利提到的图表类型。但是,数据流程图在数据或数据组/数据簇与传输或转换这些数据的过程或组件之间有明显的形式上的区别。我无法用任何UML图轻松表达这一点。
布朗

1
我不得不承认,我有时会求助于数据流图-特别是那些允许存储的图。实际上,描述我们系统的顶层图实际上是DFD。我仍然发现类图和包在某种程度上很有用。我不太注意UML的“正式”部分。
尼克·基利

0

统一建模语言(UML)是软件工程领域的通用,开发性建模语言,旨在提供一种可视化系统设计的标准方法。


可以在omg.org/spec/UML/2.5中找到正式规范,但是网上有很多友好的教程。
西蒙B

2
这个答案的问题的一部分,UML是deifnitively合适的工具来modelise,但这本身并不能构成一个完整的文档
Walfrat

3
有人经常使用UML吗?
Panzercrisis

涂鸦。逆向工程。
尼克·基利

1
@沃尔夫特。是吗?真?我有疑问
布朗

-3

我认为我们过去做得更好。UML似乎用洗澡水把婴儿扔了出去。通过提供统一建模语言,它消除了体系结构和实现之间的区别。或者,如果它不打算这样做,那似乎是有效的。

我见过一些怪异的UML模型,坦率地说,它们对我没有任何代码无法做的事情,并且做得更好。


3
不能回答问题,最好是对SuperGirl的回答进行评论。
Newtopian '17

1
它解决了这个问题。我在争论这个问题的答案比过去更“不”。
尼克·基利
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.