系统建模简介
建模定义
建模是对现实世界的简化与抽象,旨在让复杂的概念变得更容易理解。通过抽象和简化的方式,对现实世界中的系统、过程或概念进行描述和表达,以便更好地理解、分析、设计和实现软件系统。建模是软件开发过程中非常关键的一步,它帮助开发人员和利益相关者清晰地表达需求、设计结构、定义行为,并为后续的实现和维护提供指导。
为什么要建模
- 一图胜千言:图形化的表达方式更便于理解和沟通
- 贯穿软件工程各阶段:从需求分析时的用例图和概念领域模型,到开发阶段的类图、活动图、架构图,再到上线的部署图,建模无处不在
- 抽象与简化:将复杂的现实问题抽象为易于理解和处理的形式
- 沟通与交流:为开发人员、用户、项目经理等不同角色提供一个共同的语言和可视化工具
- 文档与规范:形成系统设计的文档化表达,便于后续开发和维护
建模注意事项
- 使用通用的符号:在绘制流程图时,尽量使用通用的符号,如菱形表示分支而不是处理步骤,以避免混淆。
- 区分不同的功能、领域和层次:利用不同的形状和颜色来区分不同的功能、领域和层次,就像思维导图那样工作。
- 注意图表的布局和配色:良好的布局和配色方案可以提高图表的可读性和美观度。
- 使用UML但不要迷信:虽然UML是一种有效的沟通工具,但我们的重点是交付软件,而不是模型。因此,不创建不必要的模型,也不维护不重要的模型,保持敏捷。
- 结合其他设计工具:例如,在设计 UI 时,UI 流程图可能比 UML 更合适。
- 保持箭头语义一致:对于非UML图,要特别注意箭头在整个图表中的语义一致性,通常用于表示数据流向、服务调用或提供支撑等。
- 坚持敏捷建模:建模过程应遵循敏捷开发的原则,拥抱变化,保持快速反馈,并不断迭代改进。
UML建模
UML并不是软件建模的唯一选择,但它作为一种通用的图形表示方法,能够有效减少沟通成本。1997年,OMG组织发布了统一建模语言(UML),旨在为开发团队提供一套标准的设计语言,以便更好地构建计算机应用。UML提出了一套IT专业人员期待多年的统一的标准建模符号。通过使用UML,这些人员能够更高效地交流系统架构和设计规划,就像建筑工人多年来所使用的建筑设计图一样。
UML分为结构型和行为型两种类型的建模图形,其分类如下图所示:
UML包含12种图形,但常用的包括以下五种,下面分别做下简单介绍。
结构型图形
- 类图:类图是最常使用的UML图形之一,适用于面向对象和领域建模。关系类型包括关联、泛化、实现等。其中,关联关系可以细分为普通关联、组合聚合和依赖关系。
关联关系
表示类和类之间是有关联的、有关系的,可以是单向的,也可以是双向的。关系的表示上可以用multiplicity label 和 role进行辅助描述,选择合适的label很重要确保可以顺畅的描述关系。
组合与聚合关系
在面向对象编程及UML建模中,组合(Composition)和聚合(Aggregation)是两种用来表示整体与部分之间关系的形式。
- 聚合(Aggregation) :用空心菱形表示,代表了一种“has-a”的关系,意味着一个类拥有另一个类的对象作为其成员。这种关系通常表示一种较弱的整体与部分的关系,其中被包含的部分可以在不依赖于整体的情况下独立存在。例如,大学与其课程之间的关系可以被视为聚合,因为即使没有特定的大学,课程本身仍然有意义。
- 组合(Composition) :用实心菱形表示,是一种更强形式的聚合关系,除了表达“has-a”关系外,还强调了部分对于整体的依赖性。在这种情况下,如果整体不存在了,那么它的部分也没有意义或无法存在。例如,汽车与发动机之间的关系就是组合关系,因为一旦汽车不再存在,它的发动机也就失去了意义或功能
1)组合:一所大学是有多个学院组成的,学院不可以脱离学校独立存在。
2)聚合:学院里会有很多教授,即使学院没有了,教授仍然可以独立存在。
依赖关系
类和类之间最弱的联结关系,依赖总是单向的,语言中体现为局部变量、方法的参数或者对静态方法的调用。
行为型图形
- 用例图:用例图概述了角色与系统之间的关系,描述了系统的功能需求、角色与系统的交互以及系统的反应。
- 活动图:活动图描述的是对象活动的顺序关系及其规则,强调系统的行为而非处理过程
- 状态图:状态图展示了实体基于事件反应的动态行为,显示了实体如何根据当前状态对不同事件做出反应。
- 顺序图:顺序图的主要用途之一是将用例表达的需求转化为更正式的详细表达,帮助细化和记录现有系统的交互逻辑。
领域建模 + 数据建模
领域建模(及后续的数据建模)是日常业务开发的核心。一个合理抽象、关系清晰且具有良好扩展性的领域模型几乎是项目成功的一半。这个过程虽然不易,但有一套系统的方法论支持,并且是开放的、不断迭代调整的过程。
简单来说,敏捷建模过程可以分为以下四步:
- 获取用户需求,编写用户故事。
- 关注用户故事中的名词,建立领域词汇表,对领域概念进行抽象,建立领域模型。
- 对领域模型进行细化,建立数据库表结构。
- 根据对需求理解的深入或调整,迭代重复前面三步。
Oinone模型设计器
模型设计器是Oinone平台中的一个核心组件,通过可视化配置的方式为用户提供快速设计模型的功能;
Oinone一切从模型出发,模型是数据及对行为的载体,是对应用中所需描述的实体进行必要的简化,并用适当的变现形式或规则把它的主要特征描述出来的系统模仿品。
联系Oinone
- 官网:www.oinone.top
- 邮箱:oinone@shushi.pro
- 微信公众号: