详细设计

  • 结构化程序设计
  • 结构化程序
    • 控制结构(三种节点)
      • 正规程序
      • 基本程序
        • 封闭结构
        • 结构化定理
  • 人机界面设计
    • 设计问题
    • 设计过程
    • 过程设计工具
      • 程序流程图
      • 盒图
        • 特点
      • PAD图
      • 判定表
      • PDL(伪代码)
  • 面向数据结构的设计方法
    • Jackson图
    • 改进
    • 和层次图的区别
    • Jackson方法
    • 例子:统计文本中,每一行空格的个数
      • 要求
      • 1.画出输入输出两个独立的jackson图,并找出联系
      • 2.导出程序结构图
  • 程序复杂定量
    • McCabe(流图)
      • 例子
      • 环形复杂度
        • 例子
    • Halstead方法

结构化程序设计



结构化程序

控制结构(三种节点)





正规程序



正规子程序:正规程序中,仍是正规程序的部分

基本程序

封闭结构



并行用;串行用-

前面提到的三种基本控制结构(顺序结构、选择结构、循环结构)和两个扩充控制结构(多分支结构、UNTIL循环结构)都是基本程序。


复合程序由基本程序组成,因此满足单入单出结构,这样的程序叫做结构化程序。

结构化定理

人机界面设计

设计问题

1.用户响应时间
2.用户帮助(集成的实时提示,附加的用户手册)
3.出错处理(友好程序,正当反馈,合理提示)
4.命令交互(命令宏输入,一致性)

设计过程

1.一般交互指南(全局性)
2.信息显示指南(提示信息的不同显示方法)
3.数据输入指南

过程设计工具

程序流程图

1.易于理解
2.忽略全局控制,不符合逐步求精思想
3.控制流不受约束
4.不易表示数据结构

盒图

特点

1.功能域(一个控制结构的作用域)明确,就是一个盒子内。
2.控制不可转移,只能逐步转化。
3.根据嵌套关系可以看出全局和局部数据。
4.嵌套关系和模块化易于表述。

PAD图

1.二维树形结构图,表示的一定是结构化程序。
2.向右扩展的层次结构,竖线条数等于层数。
3.易于表述数据结构和逻辑,支持自顶向下,逐步求精。
4.是面向高级程序语言的,每种高级语言有对应的符号,因此PAD图可以快速转化成高级程序。

判定表

左上是变量集合,左下是行为集合,右上是变量的组合,右下是采取的操作。

PDL(伪代码)

适合简单的逻辑结构,不如图形表示直观。

面向数据结构的设计方法

Jackson图



改进

为了解决转移和判定条件不能显示在图上的问题。

和层次图的区别

1.层次图的方框表示模块,Jackson图的方框只有几个语句。
2.层次图整体表示调用关系,一个模块不仅调用下层模块,还完成其他操作。Jackson图表示组成关系,一个方框仅由下层组成,这里需要一张图,字符串空格处理的。

Jackson方法

1.分析输入输出数据的逻辑,结构,描绘两个独立的Jackson图。
2.找输入与输出有关系的数据结构,包括有直接因果的,可以同时处理的(数据结构相同,循环次数和条件相同)。
3.利用三条规则从数据结构Jackson图导出程序Jackson图。
A:为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框;
B:C:在输入和输出结构中剩余数据单元所在的层次,在结构图中画一个相应的框。

4.列出所有操作,条件,填入程序结构图。

例子:统计文本中,每一行空格的个数

要求

1.画出输入输出两个独立的jackson图,并找出联系

2.导出程序结构图


1.正文文件+输出表格=统计空格(程序)
2.表格体=程序体
3.(接受)字符串+(打印)串信息=处理字符串
4.调整一下输出格式和顺序,over。

程序复杂定量

McCabe(流图)


1.流图的圆表示结点,汇点也表示结点(因为流图的一条边必须终止于一个节点)
2.判定条件可以和操作合并,顺序操作可以合并。

例子


环形复杂度

等于区域数,等于边数-结点数+2,等于判定节点数+1

例子


Halstead方法



软件工程第六章——详细设计相关推荐

  1. 软件工程 第六章:状态图

    第六章:状态图 概述 状态图定义:状态图描述了一个对象或交互过程在它的生命周期中对**一系列外界激励的所呈现出的不同状态以及它相应的响应和活动.**状态图描述了一个状态机. 状态机定义:根据当前事件, ...

  2. 软件工程 | 第六章 系统集成与测试

    软件工程 系列为本学期(2020春季)软件工程以及软件工程实践课程笔记整理~ 转眼间6月份快要到来了,考试要临近了~ 问题:一个软件经过各种测试后没问题,但到用户电脑上无法运行,给出解决方案?(预计会 ...

  3. 软件工程 | 第五章 详细设计与实现

    软件工程 系列为本学期(2020春季)软件工程以及软件工程实践课程笔记整理~ 需求文档已经交了,设计文档还会远吗?从理论到实践,果然还有很多东西需要掌握 整理这部分笔记时想起了毕设学长的话,代码要让自 ...

  4. 现代软件工程 第六章 【敏捷流程】练习与讨论

    6.3.1  什么时候适合选择敏捷 我们看了这么多方法论之后,一些同学一定比较困惑,到底选择哪一种开发方法比较好呢? 这在实践中不是难题,有学者还列出了一些简单的问题来帮助人们做决定[i]: 表6-3 ...

  5. 软件工程导论 06章详细设计

    1.结构程序设计经典定义:如果一个程序的代码块仅仅通过顺序.选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的.(尽可能少使用GOTO语句,最好只在检测 ...

  6. 现代软件工程第六章作业

    软件测试工程师的发展前景 软件测试工程师目前正在成为IT行业中一个新亮点,不仅其从业人员薪水高.人员需求增加快而广受关注,而该行业未来良好的发展前景也受到肯定.在IT业处于发展的初级阶段时,由于大多数 ...

  7. 软件工程 第六章 模块设计

    6 模块设计 面向对象的设计原则 单一职责原则 定义: 在软件系统中一个类只负责一个功能领域的相应职责 一个类承担的指责越多,被复用的可能性就越小. 类的指责体现在两个方面:数据职责.行为职责 高内聚 ...

  8. 软件工程导论 1-13章 重点定义及解释

    软件工程导论 第一章 概述 第二章 可行性研究 第三章 需求分析 第五章 总体设计 第六章 详细设计 第七章 实现 第八章 维护 第九章 面向对象方法学引论 第十章 面向对象分析 第十一章 面向对象设 ...

  9. 软件工程第六版全书总结笔记

    软件工程 (!!!重在理解基本原理和概念,不要陷于工具的细节!!!) 第一章软件工程学概述 软件工程诞生的背景:为了更有效的开发与维护软件. 软件危机:计算机软件的开发和维护过程中所遇到的一系列严重问 ...

最新文章

  1. R语言广义线性模型Logistic回归模型C Statistics计算
  2. 2020上半年收集到的优质AI文章 – AI+和+AI
  3. 测带宽的工具_iperf:服务端吞吐量测试工具
  4. python基础教程:懒惰属性(延迟初始化)
  5. PL/SQL块结构和组成元素
  6. iOS 键盘风格详解UIKeyboardType
  7. 基于Jenkins Pipeline的ASP.NET Core持续集成实践
  8. java 线程变量put_Java线程(篇外篇):线程本地变量ThreadLocal
  9. 4.5 第九讲 函数展开成幂级数及其应用
  10. 第8章 离不开的数据库
  11. Gin:路由抽离与分组
  12. 每天学命令deleteRow
  13. 给 30 岁左右程序员,4 个突破内卷的破局建议!
  14. ftp安装包windows版_连接远程Linux系统的免费SSH与FTP软件介绍
  15. 35岁程序员人群被公司优化,你觉得合理吗?
  16. 手机投屏不是全屏怎么办_手机投屏怎样才能全屏
  17. T-SNE可视化高维数据,亮瞎审稿人
  18. conductor介绍
  19. 电子商务-任务分配背景会议
  20. [kuangbin带你飞]专题五 并查集 题解+总结

热门文章

  1. java代码获取本周的开始日期和结束日期,并动态获取前几周的或者后几周的开始日期和结束日期。
  2. Proximal Policy Optimization (PPO)
  3. javascript contains方法
  4. 既可加边也可删边的动态最小生成树
  5. PHP - Laravel 视图模板(blade.php) 循环便利
  6. R与Excel之数据分析
  7. Wowza 的Http扩展 (Publish State)
  8. UGUI sprite editor九宫切图用法
  9. Mac最好用的截图软件Xnip
  10. autoware 1.14 lgvsl simulator仿真