《面向对象分析与设计》一3.1 系统边界

简介: 本节书摘来自华章出版社《面向对象分析与设计》一书中的第3章,第3.1节,作者 麻志毅,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.1 系统边界

在系统尚未存在时,如何描绘用户需要一个什么样的系统?如何规范地定义用户需求?
我们可以首先把系统看作一个黑箱,看它对外部的现实世界发挥什么作用,描述它的外部可见的行为。这里所说的系统是指被开发的计算机软件系统,而不是泛指问题域中的全部事物所构成的现实系统。用OO方法所开发的系统是通过对现实世界的抽象而产生的。问题域中的某些事物(如使用系统的一些人员)位于系统边界之外,作为系统的外部实体处理,而系统内的成分(简称系统成分)是指在OOA和OOD中定义的那些系统元素。
系统边界是一个系统所包含的所有系统成分与系统以外各种事物的分界线。如图31所示,系统是由一条边界包围起来的未知空间,系统只通过边界上的有限个接口与外部的系统使用者(人员、设备或外系统)进行交互。

image

把系统内外的交互情况描述清楚了,就确切地定义了系统的功能需求。若最终实现的系统就具有这样的功能,那这个系统也就是用户所需要的,即用户就是通过这样的交互使用系统。
现实世界中的事物与系统的关系包括如下几种情况:
1)某些事物位于系统边界内,作为系统成分。如超市中的商品,抽象为超市商品销售管理系统内的类“商品”。
2)某些事物将是与系统进行交互的参与者,系统中没有相应的成分作为它们的抽象表示,它们位于系统边界以外。如商场中的收款员,可以作为位于系统边界外与系统进行交互的参与者(若系统内设置了“收款机”对象),而不在系统中设立相应的“收款员”对象,这意味着系统并不关注收款员本身的信息和功能,而只关注销售与收款。
3)某些事物可能既有一个对象作为其抽象描述,而本身(作为现实世界中的事物)又在系统边界以外与系统进行交互。还是以超市中的收款员为例,他本身是现实中的人,作为系统的使用者;在系统边界内,又可有一个相应的“收款员”对象来模拟其行为或管理其信息,作为系统成分。这种做法注重收款员本身的信息和功能。
4)某些事物即使属于问题域,也与系统责任没有什么关系。如超市中的保安员,在现实中与超市有关系,但与所开发的系统“超市商品销售管理系统”没有关系。这样的事物既不位于系统边界内,也与系统无关。
认识清楚了上述事物之间的关系,也就确定出了系统边界。

相关文章
|
10月前
|
数据采集 存储 算法
终于有人把数据挖掘讲明白了
在大数据时代,许多企业面临一个难题:数据存储量庞大,却难以从中挖掘真正价值。本文深入探讨了数据挖掘的核心概念与实践方法,解析了其与普通数据分析的区别,并通过真实案例展示了如何通过数据挖掘发现隐藏的业务规律。文章还详细介绍了数据挖掘的六个步骤及三大关键点,强调了业务理解与数据质量的重要性,帮助企业在实际应用中少走弯路,真正实现数据驱动决策。
终于有人把数据挖掘讲明白了
|
数据可视化 uml
UML图讲解(关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系)
UML图讲解,关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系。
6792 0
UML图讲解(关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系)
|
人工智能 安全 API
新手指南:Claude 3.5/4.0国内怎么使用?精选3种使用方法!
更强的上下文理解能力: Claude 在处理长文本和复杂对话时简直是王者
11893 2
|
Ubuntu Linux
在Linux中,如何升级系统内所有已安装软件包?
在Linux中,如何升级系统内所有已安装软件包?
|
计算机视觉
CVPR 24:ETH Zurich等团队:重新定义小样本3D分割任务,新基准开启广阔提升潜力!
【7月更文挑战第1天】ETH Zurich团队提出了重新定义小样本3D点云分割任务,聚焦于前景泄漏和稀疏点分布问题。他们提出COSeg方法,利用类特定多原型相关性(CMC)和超相关性增强(HCA),以解决现有方法的局限。此外,通过基础原型校准(BPC)改善模型对基础类的敏感性。实验显示COSeg在性能上有显著提升,但其泛化能力和计算需求仍待优化,且遮挡和噪声等挑战仍有待解决。[论文链接](https://arxiv.org/abs/2403.00592)
498 13
|
Unix API Apache
一站式解决 python打包代码,发布到pypi
本文是一份全面的Python项目打包并发布到PyPI的教程,涵盖了从PyPI账户注册、配置双因素认证、生成API Token,到准备代码、编写setup.py、选择LICENSE、构建包、上传包至PyPI,以及上传后的测试和库更新的详细步骤。
|
JavaScript Java 测试技术
基于SpringBoot+Vue的旅游管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的旅游管理系统的设计与实现(源码+lw+部署文档+讲解等)
416 1
|
消息中间件 调度 Android开发
Android经典面试题之View的post方法和Handler的post方法有什么区别?
本文对比了Android开发中`View.post`与`Handler.post`的使用。`View.post`将任务加入视图关联的消息队列,在视图布局后执行,适合视图操作。`Handler.post`更通用,可调度至特定Handler的线程,不仅限于视图任务。选择方法取决于具体需求和上下文。
534 0

热门文章

最新文章