基本困惑

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

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

零散概念

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

数据流图

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

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

层次图

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

面向过程设计

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

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

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

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

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

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

软件设计-设计说明书图表相关推荐

  1. “消灭选择困难症”软件设计规格说明书

    "消灭选择困难症"软件设计规格说明书 本文在石墨文档中发布 "消灭选择困难APP"软件设计规格说明书 转载于:https://www.cnblogs.com/s ...

  2. 《食堂远程下单系统》设计规格说明书

      <食堂远程下单系统> 设计规格说明书 课程名称:软件需求工程与建模 指导老师:汤世平 小组成员: 姓名:金晨   学号:1120161943 姓名:方姝曼 学号:1120161940 ...

  3. 安卓--记账软件课程设计

    安卓课程设计 记账软件课程设计 目录 1 引言............................................................................. ...

  4. 软件测试用例设计方法(一)

    目录 软件测试用例设计之等价类划分法 一.等价类划分法的定义 二.等价类划分法的术语 三.等价类划分原则 四.实例演示(三角形问题和档案管理系统问题) 软件测试用例之边界值分析法 一.边界值分析法定义 ...

  5. 20万套机械、模具、数控、工艺夹具、减速器、机器人、液压系统、车辆工程、PLC 、单片机……毕业设计、课程设计、说明书 论文、二维图、三维图、开题报告、任务书、ppt、文献翻译……分享……持续更新!

    部分清单如下: 自动立体车库结构设计(说明书 CAD图纸 开题报告 任务书 外文翻译--) 玉米秸秆粉碎机毕业设计 论文 车床主轴箱课程设计 R175柴油机机体自动加工线上多功能液压机械手设计(说明书 ...

  6. 基于Android的应用市场软件的设计

    基于Android的应用市场软件的设计 摘 要 随着智能手机的普及,人们越来越依赖手机进行一系列操作. 由于Android系统是一款免费的操作系统,导致了使用Android系统的手机占到7成左右.为了 ...

  7. 软件框架设计的艺术----读书总结

    总结 软件开发的艺术 理想主义,经验主义和无绪 文艺复兴时期,现代科学产生了两个重量级理论: 理性主义和经验主义. 理性主义认为理智是信息的首要来源.给出一个假设,只要通过思考就能理解和描述这个世界, ...

  8. 走近酷点KoolPoint,让我们深度挖掘网管软件的设计细节

    企业需要哪些管理功能   "企业需要哪些管理功能"这是中小企业的网管最应该注意的问题.网管软件都是价格不菲的,所以在为企业选择网管软件时一定要考虑到目前与未来企业网络环境发展的需要 ...

  9. 连载12:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...

    信息熵观点 针对软件设计来说,我们可以将所有的设计通过结构化来表达,于是我们的所有的设计信息都可以表达成结构熵的处理.那么如果系统的结构熵越大,系统就越不稳定,系统的有序化就越小. 那么是否结构化就表 ...

  10. 软件测试用例设计实用经验之谈

    概述 软件测试用例设计最重要的前提是掌握业务知识,加上一定的测试用例设计方法,软件测试的工作实际就非常简单了,多测试几个实际项目技能就自然提高了. 我把软件测试用例设计分成4个部分: ·测试类型 ·设 ...

最新文章

  1. 剑指offer 算法 (举例让抽象具体化)
  2. spring resttemplate 中文参数_SpringBoot使用RestTemplate访问第三方接口
  3. Delphi编程注意事项
  4. java正则 找出数字,Java顶用正则表达式找出数字
  5. SAP UI渲染模式:客户端渲染 VS 服务器端渲染
  6. Linux编程 3 (初识bash shell与man查看手册)
  7. matlab里面连接器是什么,连接器
  8. promise用法_图解 Promise 实现原理(四):Promise 静态方法实现
  9. python读取大文件的坑_Python读取大文件的坑“与内存占用检测
  10. Spring MVC学习总结(13)——Spring MVC集成Swagger时文档无法排序问题
  11. Go36-13-结构体及其方法
  12. linux队列运行任务查看,Linux work queue工作队列小结与使用
  13. 蜗牛星际D款安装黑群晖教程
  14. 佳能 6D Mark II与 90D 对比评测
  15. SEO怎么做?从排名和关键字优化入手
  16. sql 查询结果随机排序
  17. 木马专杀软件测试自学,5款免费杀软“紫狐”木马查杀测试
  18. Ubuntu找不到wifi适配器问题及解决办法
  19. 【Kepware与S71500连接 返回协议错误0X81解决方案】
  20. Git学习之回退撤销

热门文章

  1. qualcomm QSD MSM APQ区别
  2. 二极管、稳压二极管、发光二极管电路测试
  3. iText7-pdfoffice-office文件转pdf
  4. android调用dll程序,安卓手机如何打开.dll文件?
  5. js验证银行卡身份证手机号中文数字金额等
  6. python gzip_Python之gzip模块的使用
  7. 任务分解法[WBS]
  8. 酒店客房管理系统(JAVA,JSP,SERVLET,MYSQL)
  9. 如何练就DOTA绝世神功宝典(转)
  10. iOS游戏开始者从零开始 6个月的学习编程经历