软件工程之系统建模篇【设计系统类模型】
类模型是面向对象分析的核心,系统类模型用包图描述,前面的文章我们分析了实体类、接口类、接口控制类和用例控制类,本章我们将介绍系统类模型的设计,首先简要介绍类模型的设计方法,然后设计子系统的类模型,最后设计系统类模型。
1、设计方法
设计系统类模型,要明确子系统或系统的组成,及各个组成部分之间的关系,子系统的划分和前面介绍过的接口类包的划分相同,主要包括:发文办理、收文办理、会议管理、档案管理、公告管理、个人助理、系统管理、用户登录8个子系统,无论是子系统模型还是系统类模型,都包含接口类包、接口控制类包、用例控制类包以及有关系的实体类包。在前面我们知道,接口类依赖接口控制类、接口控制类依赖于用例控制类、用例控制类又依赖于实体类,它们之间都是依赖关系。
2、子系统类模型
我们依然以发文办理做讲解,介绍发文办理子系统模型的设计。与发文办理子系统有关系的实体类是SFilePack包、Archive包和Pending类,各类型之间存在依赖关系,即接口类UISFilePack包中的UIDraftSFilePack、UIAuditSFilePack、UICheckSFilePack、UISignSFilePack、UIEnreSFilePack和UISendSFilePack包分别依赖于接口控制类UICSFilePack包中的UICDraftSFilePack、UICAuditSFilePack、UICCheckSFilePack、UICSignSFilePack、UICEnreSFilePack和UICSendSFilePack包,接口控制类包中的UICDraftSFilePack、UICAuditSFilePack、UICCheckSFilePack、UICSignSFilePack、UICEnreSFilePack和UICSendSFilePack包又分别依赖于用例控制类UCSFilePack中的UCDraftSFile、UCAuditSFile、UCCheckSFile、UCSignSFile、UCEnreSFile和UCSendSFile类,用例控制类UCSFilePack包中的每一个类都分别依赖于实体类SFile和Pending,用例控制类UCDraftSFile和UCEnreSFile都依赖于实体类EnreSFile,用例控制类UCSendSFile依赖于实体类SFileArchive。
3、系统类模型
建立好各个子系统类模型后,就可以建立系统类模型了,通过系统类模型,可以从总体上了解各个子系统之间的关系。前面已经对系统的实体类、接口类和两个控制类分别建立了类模型,我们将加入它们之间的关系,得到系统类模型,在接口类包UISystem中,UISFilePack、UIRFilePack、UIMeetingPack、UIArchivePack、UINoticePack、UIAssistantPack、UISystemPack和FrmLogin8个包,分别依赖于接口控制类包UICSystem中的UICSFilePack、UICRFilePack、UICMeetingPack、UICArchivePack、UICNoticePack、UICAssistantPack、UICSFilePack和UICLogin,接口控制类包UICSystem中UICSFilePack、UICRFilePack、UICMeetingPack、UICArchivePack、UICNoticePack、UICAssistantPack、UICSystemPack和UICLogin8个包,又分别依赖于用例控制类包中的UCSFilePack、UCRFilePack、UCMeetingPack、UCArchivePack、UCNoticePack、UCAssistantPack、UCSystemPack和UCLogin8个包。用例控制类UCSFilePack包依赖于实体类SFilePack包,用例控制类UCRFilePack包依赖于实体类RFilePack包,用例控制类UCMeetingPack包依赖于实体类MeetingPack包,用例控制类UCSFilePack、UCRFilePack、UCMeetingPack、UCArchivePack和UCAssistantPack包都依赖于实体类ArchivePack包,用例控制类UCNoticePack包依赖于实体Notice,用例控制类UCSFilePack、UCRFilePack、UCMeetingPack、UCNoticePack和UCAssistantPack包都依赖于实体类Pending,而用例控制类UCAssistantPack、UCSystemPack包和UCLogin包都依赖于实体类User。下面是系统类模型图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?