软件设计-设计说明书图表

基本困惑

来源:某软件设计说明书提纲:
1> 模块层次关系,用图表和文字描述模块内部各层次之间的控制与被控制关系。
2> 模块流程,用流程图表示模块的主要控制流程、处理流程及数据流程。

但是,我一直怀疑这个软件设计说明书模板是个“假的”,不知道从哪里鼓捣来的!当然自身水平欠佳,不能很好的使用该模块也是有很大可能的!
好久的一个后来,验证了上边的那个所谓的模板的确是一个“太面向过程的模板”,而我要做的是面向对象设计,本来就是菜鸟,又被指错了路,回想起来感觉“我太难了”。再后来我将更多的精力放在了UML学习上,并总结了一句话 “设计(说明书)不优美,必定谈不上是好设计!”。

零散概念

数据流和控制流的区别是什么 仅做部分参考,与要讨论的问题关系不大。
在软件设计或设计文档的编写过程中,你需要哪些图表来表述自己的设计思路呢?一个结构化的软件设计它的设计文档应该长什么样子?数据流图?程序流程图?UML活动图状态图?UML类图?UML交互图?

数据流图

数据流程图数据流图,我认为他们是一个东西,但可爱的是在百科上他们却各占词条。在学习初期读过一位大哥的总结,也有所启发,后来结合百科等其他资料,理解大约如下。总的来说
数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。在结构化开发方法中,数据流图是需求分析阶段产生的结果。
在大多软件设计资料中,不区分数据流程和数据流程图的含义,她们都是“数据流图”。如果非要区分,那么数据流程图应该是一种传统意义上的流程图,更偏向于visio中的那种基本流程框图。
数据流图不是传统的流程图或框图,数据流也不是控制流。数据流图是从数据的角度来描述一个系统,而框图是从对数据进行加工的工作人员的角度来描述系统。
DFD显示系统将输入和输出什么样的信息,数据如何通过系统前进以及数据将被存储在何处。它不显示关于进程计时的信息,也不显示关于进程将按顺序还是并行运行的信息,而不像传统的关注控制流的结构化流程图,或者UML活动工作流程图,它将控制流和数据流作为一个统一的模型。

软件工程数据流图画法,请参考。

层次图

Here,我们先不讨论要求在层次图中构建控制关系是否合理,先谈个小纠结,当给一个小小的字模块绘制层次图时,可能需要将子模块接口的概念体现到层次图中 ! 但这么做,层次图与类图相差无几啦!
类结构与层次关系,有这么一种情况:两个类在处理上是针锋相对的,如读操作和写操作,但常常他们是放在同一个目录下的,这样在绘制层次图时,我也很愿意将他们放置在一层,但有个问题,关系将变得很难表示,尤其是很难表示控制关系!

面向过程设计

Here主要谈下面向过程设计与面向对象设计的区别,目的在于理解“模板让你用图表描述系统内部各层次之间的控制与被控关系”。这里"层次"一词,是否在面向独享设计中,是一个偶尔或是完全不合群的词?

  • 以五子棋的实现为例,试图说明谈一个设计的流程和层次的最佳场景…-

面向过程的设计思路就是分析问题步骤:开始游戏,黑子先走,绘制画面,判断输赢,轮到白子,绘制画面,判断输赢,返回步骤2,输出最后结果。
面向对象设计的基本思路则是,整个五子棋系统可以分为如下类或对象:黑白双方,负责接受用户输入。棋盘系统,负责绘制画面。规则系统,负责判定诸如犯规输赢等。
面向过程把每个步骤分别用函数实现,整个设计的“流程性”、“层次性”都是很直接的,也很容易理解。但是对于面向对象设计来说,上述两种性质,并不那么明显。OO方法采用对现实世界的自然映射,当现实业务流程变化时,软件有强大的应对需求变化的能力。

  • 再来看下边一段官话(from UML活动图)

活动图被引入 UIML 中是有争议的,因为活动图实际上描述的是业务流程,是一种过程化的分析方法。《UML大象P105》因为在面向对象的眼中是没有业务流程这种东西的,所谓流程只不过是在某个外部力量推动下对象之间相互交流的一个过程,它只是“瞬时”的。如果从活动图的观点来描述业务,实际上是不能直接看到对象是如何发挥作用的。

泳道流程图,这里并不是要说UML活动图,而是流程图范畴的泳道图,它使用VISIO-跨职能流程图形状,来进行绘制。第一次研究到这里想用它,是为了表述一种跨(任务)线程的任务调度、交互关系,及任务间共享资源的竞争处理(尽管这可能不太合适,但当时就这么用了)。

软件设计说明书 版本:V1.0 文 档 编 号 保 密 等 级 作 者 最后修改日期 审 核 人 最后审批日期 批 准 人 最后批准日期 修订记录 日期 版本 修订说明 修订人 目 录 1 引言 1 1.1 文档控制 1 1.2 目的 1 1.3 范围 1 1.4 定义、首字母缩写词和缩略语 1 1.5 参考资料 1 1.6 概述 1 2 整体说明 1 2.1 业务背景 1 2.2 功能模型 1 2.3 用例模型概述 1 2.3.1 子系统一 1 2.4 假设和依赖关系 1 3 包1:出入库 2 3.1 冲补帐务-样例1 2 3.1.1 系统用例 2 3.1.2 类关系图 2 3.1.3 类图 3 3.1.4 顺序图 4 3.2 冲补入库单-样例2 4 3.2.1 入库单冲账 4 3.2.2 入库单补账 6 引言 文档控制 目的 范围 定义、首字母缩写词和缩略语 参考资料 概述 整体说明 业务背景 [此小节应说明软件的业务背景,包括组织机构、业务流程等。] 功能模型 [此小节应说明用例包的组织,以用例包的形式来表达软件的功能。] 用例模型概述 子系统一 用例图 [此小节应说明此子系统下的用例图。] 主角列表 [此小节以列表的形式说明此子系统相关的主角。] 用例列表 [此小节以列表的形式说明此子系统相关的用例。] 假设和依赖关系 [本节说明所有重要的技术可行性假设、子系统或构件可用性假设,或者可作为此文档所述软件可行性的基础的其他与项目有关的假设。] 包1:出入库 画出包图、核心业务处理流程、状态转换图来说明核心业务的工作方式。 冲补帐务-样例1 系统用例 类关系图 类图 实体类 边界类 控制类 顺序图 分仓保管帐建帐处理流程 备注: 去掉价位一栏; 收获年限改为“年限“,入库年限改为非必输项; 国别改为必输项; 等级改为非必输项; 增加建帐的修改功能:只能修改等级、入库年限、产地。 冲补入库单-样例2 入库单冲账 前台界面 名称:account_grainin_strike.jsp 界面说明: 序号 界面名称 表 字段 字段含义 备注 1 编号 入库单 RC_RKD_RKDBH 入库单编号 顺序号 入库单 RC_RKD_SXH 顺序号 计划安排表 入库单 RC_RKD_RKJHAPBNM 入库计划安排表内码 需要转化为编号 计划明细 入库单 RC_RKD_JHMXNM 计划明细内码 需要转化为编号 入库通知单编号 入库单 RC_RKD_ZGKRKTZDNM 直管库入库通知单内码 需要转化为编号 客户名称 入库单 RC_RKD_KHNM,RC_RKD_KHMC 客户名称 客户内码 合同号 入库单 RC_RKD_HTNM, RC_RKD_HTH 合同号 合同内码 到库时间 入库登记信息 RC_RKDJXX_DKSJ 到库时间 收获年份 入库单 RC_RKD_NX 年限 等级 入库检验信息 RC_RKJYXX_WLDJNM 物料等级内码 后台服务 功能简介 入库账务服务 包名 com.digitalchina.zcl.stock.account 类名 AccountGraininServer 方法 名称 参数 返回值 描述 入库单补账 前台界面 名称:account_grainin_repair.jsp 界面说明: 序号 界面名称 表 字段 字段含义 备注 1 编号 入库单 RC_RKD_RKDBH 入库单编号 顺序号 入库单 RC_RKD_SXH 顺序号 扣杂 入库检验信息 RC_RKJYXX_KZZ 扣杂质(%) 扣水% 入库检验信息 RC_RKJYXX_KSF 扣水份(%) 备注 入库检验信息 RC_RKJYXX_JYYJBZ 检验意见备注 3 选择类型 入库检验信息 RC_RKJJXX_JJLX 检斤类型 0,称重;1,标准包 毛重 入库检验信息 RC_RKJJXX_MZ 毛重 水分扣量 入库检验信息 RC_RKJJXX_SFKL 水分扣量 杂质扣量 入库检验信息 RC_RKJJXX_ZZKL 杂质扣量 其它扣量 入库检验信息 RC_RKJJXX_QTKL 其它扣量 后台服务 功能简介 入库账务服务 包名 com.digitalchina.zcl.stock.account 类名 AccountGraininServer 方法 名称 参数 返回值 描述 补账 repairAccount 被补入库单内码 入库单补账; 根据被补单据产生一笔单据(RC_RKD): 红单标志为蓝单; 补帐标志为1补帐 补帐单据内码为被补单据内码; 补帐日期为当前日期; 审核标志为未审核; 能否记保管帐为1能; 能否记统计帐为1能; 保管帐记帐标志为未记帐; 统计帐记帐标志为未记帐; 删除标志为未删除; 制单时间为当前时间; 其余要素用户录入;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值