软件建模与UML
软件建模通过抽象来表示系统,这些抽象捕捉了系统的结构和行为,而统一建模语言(UML)是表达此类模型的标准图形符号。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
软件建模是构建软件系统的抽象表示以进行分析、设计和沟通,而UML是一种标准化的通用建模语言,为这些表示提供了一套统一的图表类型。
Scope
本主题涵盖结构模型,如类图、组件图和部署图;行为模型,如用例图、序列图、活动图和状态机图;模型在分析、设计和沟通中的作用;模型驱动工程和代码生成;以及特定项目适当的建模严谨程度。
Core questions
- 结构模型与行为模型分别捕捉了系统的哪些方面?
- 主要的UML图表类型如何表示设计?
- 特定项目适当的建模严谨程度是多少?
- 何时从模型自动生成代码是值得的?
Key theories
- 系统的多视图
- 系统从互补的视角进行建模——静态结构、交互、状态行为和部署——每个视角都由适当的图表类型捕捉,因为没有单一视图能传达所有相关的设计信息。
- 模型驱动工程
- 模型可以作为主要的开发工件,通过转换从中部分或全部生成实现,从而提高抽象级别并将设计直接与代码关联起来。
Clinical relevance
模型使设计意图明确,在代码存在之前支持分析,并为团队提供共享语言;其价值取决于使用适当的建模量,因为过度或过时的模型会带来成本而无益处。
Evidence & guidelines
OMG UML规范定义了标准符号和语义,相关的OMG标准如SysML和MOF将建模扩展到系统工程和元建模。
History
UML于1990年代中期从Booch、OMT和Objectory方法的统一中出现,于1997年被采纳为OMG标准,并通过UML 2演进;模型驱动方法和轻量级草图与关于形式化建模回报的争论并存。
Debates
- 重量级模型驱动开发与轻量级草图
- 模型是驱动代码生成的权威工件还是用于沟通的非正式草图存在争议;模型即程序(model-as-program)的愿景承诺一致性,而以草图为导向的使用则重视低开销和适应性。
Key figures
- Grady Booch
- James Rumbaugh
- Ivar Jacobson
- Martin Fowler
Related topics
Seminal works
- booch2005
- omg2017uml
- fowler2003
Frequently asked questions
- UML在敏捷开发中仍然相关吗?
- 是的,尽管通常使用得更轻量。敏捷团队倾向于将UML图用作非正式草图,用于沟通和推理设计,而不是作为详尽的规范,只进行足够的建模以澄清当前问题。
- 建模需要UML吗?
- 不需要。UML是标准化程度最高的符号,但建模可以使用其他符号或领域特定语言;核心思想是结构和行为的抽象,而UML是其中一个受良好支持的选择。