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

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

3.1 系统边界

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

image

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

相关文章
|
存储 SQL 缓存
Hadoop入门(一篇就够了)
Hadoop入门(一篇就够了)
30130 4
Hadoop入门(一篇就够了)
|
自然语言处理 网络安全 Python
【Python】已解决:nltk.download(‘punkt’) [nltk_data] Error loading punkt: [WinError 10060] [nltk_data]
【Python】已解决:nltk.download(‘punkt’) [nltk_data] Error loading punkt: [WinError 10060] [nltk_data]
3775 1
|
11月前
|
缓存 Java Maven
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法!在处理Maven项目问题时,首先检查Maven配置是否正确。接着通过“File--Invalidata Caches”清除IDEA缓存并重启。使用Maven命令`mvn dependency:purge-local-repository`和`mvn dependency:resolve`清除本地依赖缓存。最后,在Terminal中输入`mvn clean install`完成构建。
3306 1
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法
|
存储 前端开发 JavaScript
软件设计文档编写指南
软件设计文档编写指南
|
SQL XML JavaScript
【若依Java】15分钟玩转若依二次开发,新手小白半小时实现前后端分离项目,springboot+vue3+Element Plus+vite实现Java项目和管理后台网站功能
摘要: 本文档详细介绍了如何使用若依框架快速搭建一个基于SpringBoot和Vue3的前后端分离的Java管理后台。教程涵盖了技术点、准备工作、启动项目、自动生成代码、数据库配置、菜单管理、代码下载和导入、自定义主题样式、代码生成、启动Vue3项目、修改代码、以及对代码进行自定义和扩展,例如单表和主子表的代码生成、树形表的实现、商品列表和分类列表的改造等。整个过程详细地指导了如何从下载项目到配置数据库,再到生成Java和Vue3代码,最后实现前后端的运行和功能定制。此外,还提供了关于软件安装、环境变量配置和代码自动生成的注意事项。
27803 73
|
JavaScript Java 测试技术
基于SpringBoot+Vue的知识管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的知识管理系统的设计与实现(源码+lw+部署文档+讲解等)
185 0
|
Kubernetes 架构师 Java
史上最全对照表:大厂P6/P7/P8 职业技能 薪资水平 成长路线
40岁老架构师尼恩,专注于帮助读者提升技术能力和职业发展。其读者群中,多位成员成功获得知名互联网企业的面试机会。尼恩不仅提供系统化的面试准备指导,还特别针对谈薪酬环节给予专业建议,助力求职者在与HR谈判时更加自信。此外,尼恩还分享了阿里巴巴的职级体系,作为行业内广泛认可的标准,帮助读者更好地理解各职级的要求和发展路径。通过尼恩的技术圣经系列PDF,如《尼恩Java面试宝典》等,读者可以进一步提升自身技术实力,应对职场挑战。关注“技术自由圈”公众号,获取更多资源。
|
Java Maven Spring
如何在idea中创建Springboot项目? 手把手带你创建Springboot项目,稳!
文章详细介绍了在IDEA中创建Spring Boot项目的过程,包括选择Spring Initializr、配置项目属性、选择Spring Boot版本、导入依赖、等待依赖下载以及项目结构简介。
14057 1
|
数据可视化 uml
UML图讲解(关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系)
UML图讲解,关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系。
6228 0
UML图讲解(关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系)