type
status
date
slug
summary
tags
category
icon
password

面向对象的系统设计

系统设计概述

  • 系统设计是将分析模型变换到系统设计模型。
  • 系统设计后得到的是一个包括子系统分解和每个策略的清晰描述模型。
 
系统设计由一些活动组成,每一活动都专注于整个问题中某一个部分的系统分解,这些活动是:
  • 标识系统目标。开发者标识并区分应进行优化的各种系统属性的优先次序。
  • 设计初始子系统分解。根据用例和分析模型,开发者将系统分解成一些小部分。在此活动中,开发者将标准体系结构的设计作为设计工作的起始点。
  • 求精子系统分解以对应设计目标。初始分解大都不满足全部的设计目标。开发者必须不断分解求精,直到所有的设计目标都满足为止。
 
系统的构建主要包括系统设计、对象设计和实现三个活动。
在系统设计过程中,我们将注意力放在实现系统所必需考虑的过程、数据结构和软硬件构件上面。许多彼此有冲突的准则和约束,在分解系统的时候必须得到折衷。
 
分析所得到的结果即需求模型,需求模型包括如下内容:
  • 一个描述非功能需求和约束的集合,其内容涉及:最大响应时间、最小吞吐量、可靠性、操作系统平台等等;
  • 一个用例模型,从参与者的视角描述了系统功能
  • 一个对象模型,描述了系统所操纵的多个实体;
  • 每一个用例对应一个序列图,展示了参与用例的对象之间的交互顺序。
 
设计目标通过非功能需求获取。当需要在多个设计问题之间做权衡时,设计目标可以指导开发者做出正确的决策。
分解子系统构成了系统设计的主要内容。开发者将系统分解为多个容易管理的部分,以控制系统开发过程中的复杂性:每个子系统分配给一个团队,由该团队独立实现该子系统。
notion image
 

系统设计概念

系统设计的主要活动是进行子系统分解,并在此基础上定义子系统/构件之间的接口。

(1)子系统与类

为降低解域的复杂性,我们将一个系统分解成多个子系统,这些子系统由若干个表示解域的类构成。子系统与一定数量的任务相对应,这些任务由单个程序员或单个开发团队来处理。
notion image

(2)包图

大系统将问题复杂化。“攻克”复杂问题的经典方法是“分而治之”。结构化方法采用功能分解来解决这个问题。
面向对象技术解决这个问题的基本思路是将许多类集合成一个高内聚、低耦合的类的集合UML把这种分组机制称为包。不仅类可以运用包的机制,任何模型元素都可运用包的机制。
包图是在 UML 中用类似于文件夹的符号表示的模型元素的组合。系统中的每个元素都只能为一个包所有,一个包可嵌套在另一个包中。使用包图可以将相关元素归入一个系统。一个包中可包含附属包、图表或单个元素。
UML指导将类组成包的原则是依赖性:设有两个元素X、Y,如果修改(语法的或语义的)元素X的定义引起对元素Y的定义的修改,则称元素Y依赖于元素X。
notion image
包图关系中的依赖性
  • 包图显示类的包以及这些包之间的依赖关系。它们都是类图中的元素,因此包图是另一种类图。
  • 如果两个包中的任意两个类之间存在依赖关 系,则这两个包之间存在依赖关系。
  • 但包的依赖是不传递的。
一个包图可以是任何一种的UML图组成,通常是UML用例图或UML类图。 包是一个UML结构,它使得你能够把诸如用例或类之类模型元件组织为组。
包图的可见性
  • 当一个包包含子包时,指向该包的依赖可采用构造型<<transparent>>和<<opaque>>来表明嵌套包的可见性。
  • 一个指向该包的子包的依赖能看见该包中的公有类、这些类的公有方法以及该子包的类及其方法。
  • 将包中与外界有联系的操作组成一个表示包的公有行为的类,以减小包与外界接口。
  • 包有助于发现在何处存在依赖。然后,通过分组打包等手段来减少依赖关系。
 

(3)服务与子系统接口

子系统的特征是由该子系统提供给其他子系统的服务来刻画。
一个服务是一组有着公共目的相关操作。例如,负责提供通知服务的子系统往往定义了发送通知的操作。供其他子系统调用的某个子系统的操作集合就是子系统接口。
子系统接口包括操作名、操作参数、类型及其返回值。
当编写子系统接口的文档时,应该注意尽量减少有关子系统实现的细节信息。
 

(4)分层与划分

某个系统的层次分解将产生层次的有序集合。
层是指一组提供相关服务的子系统,它多半是通过使用另一层的服务来实现本层的功能。
层一定是有序组织的,每一层仅依赖于它的下一层,而且对其上层情况是一无所知的。
层次分解中每一层至少包含一个称为垂直切片子系统的某个系统分解子集。
在一个封闭体系结构中,每一层只能访问与其相邻的下一层。在开放体系结构中,每一层还可以访问比与其相邻下一层更低的层次。
notion image
 

系统设计活动:从对象到子系统

系统设计是从分析模型到设计模型的转换,这中间还需要考虑在需求分析文档中描述的非功能属性。我们通过车辆路程规划系统来展示系统设计活动。
  • 持久性数据的生命周期要长于系统的一次执行周期。例如,一天要结束时,一位作者用字处理器来将他一天的工作存储到一个文件中。这个文件在以后可以被再次打开。
  • 数据在系统中的存储位置和存储方式将会影响到系统分解。在一些情况下,一个子系统能够被完全地划分出来进行数据存储。对特定数据库管理系统的选择也会对全局控制策略和并发管理产生影响。
Relate Posts
软件工程:面向对象的需求获取与需求分析
Lazy loaded image
软件工程:软件测试
Lazy loaded image
软件测试:面向对象的测试
Lazy loaded image
软件测试:测试驱动开发
Lazy loaded image
软件工程:面向对象的概念和记号
Lazy loaded image
软件测试:系统测试
Lazy loaded image
OpenGauss 数据库环境配置软件工程:面向对象的需求获取与需求分析
Loading...
Koreyoshi
Koreyoshi
一个无可救药的乐观主义者
Latest posts
编译原理:文法和语言
2025-6-3
智能体开发与接口调用
2025-6-3
软件工程:面向对象设计
2025-6-3
软件工程:面向对象的需求获取与需求分析
2025-6-3
软件工程:软件测试
2025-6-3
编译原理:语法制导翻译技术和中间代码生成
2025-6-3
Announcement
🎉写给自己的2025心愿🎉
保研
国奖
完善博客
学一门乐器
发表一篇论文
拍摄人生照片
去3个城市旅游
专业课知识视频
拍摄毕业季视频
----- 2025 ------
👏希望我们一起变好👏