软件工程复习提纲,期末、考研的学霸笔记

第五章——详细设计

第五章详细设计

  1. 详细设计阶段的根本目标:确定应该怎样具体地实现所要求的系统。
  2. 结构程序设计:

1)如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每

个代码块只有一个入口一个出口,则称这个程序是结构化的。

2)三种基本的控制结构:

  1. 人机界面设计:

1)在设计人机界面的过程中,有下述4个问题:

系统响应时间:从用户完成某个控制动作到软件给出预期的响应之间的这段时间。

用户帮助设施:常见的帮助设施可分为集成的和附加的两类。

出错信息处理:(无)

命令交互:菜单+键盘输入。

  1. 过程设计工具:

1)程序流程图:

优点:直观、容易掌握,且历史“久”, 使用广泛。

缺点:本质上不具备逐步求精的特点;用箭头代表控制流,转移控制太方便;

不易表示数据结构。

 2)盒图(N-S图):

概念:是一种符合结构化程序设计原则的图形描述工具,用方框图代替传统的流程图。

特点:(1) 功能域明确,可以从盒图上一眼就看出来。

(2) 不可能任意转移控制。

(3) 很容易确定局部和全程数据的作用域。

(4) 很容易表现嵌套关系,也可以表示模块的层次结构。

   3)PAD图(问题分析图):

 概念:用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。

 优点:(1) 使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。

(2)  PAD图所描绘的程序结构十分清晰。

(3) 用PAD图表现程序逻辑,易读、易懂、易记。

(4) 容易将PAD图转换成高级语言源程序。

(5) 即可用于表示程序逻辑,也可用于描绘数据结构。

(6)  PAD图的符号支持自顶向下、逐步求精方法的使用。

   4)判定表:

 概念:当算法中包含多重嵌套的条件选择时,判定表能够清晰地表示复杂的条件组合与

应做的动作之间的对应关系。

  5)判定树:它是判定表的变种。

判定树和判定表的优缺点:

注:判定表与判定树并不适用于作  为一种通用的设计工具,通常用于辅助测试。

  1. 面向数据结构的设计方法:

 1) 定义:根据数据结构设计程序处理过程的方法。

 目标:得出对程序处理过程的描述。

 步骤:使用面向数据流的方法设计软件结构——使用面向数据结构的方法来设计每个模块

的处理过程。

 代表:Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法。

 2) Jackson图:

(1)优点:a. 便于表示层次结构,而且是对结构进行自顶向下分解的有力工具。

b. 形象直观可读性好。

c. 既能表示数据结构也能表示程序结构。

 (2)三种类型:

 (3)Jackson方法的步骤:

①分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。

②找出输入数据结构和输出数据结构中有对应关系的数据单元。

③从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。

④列出所有操作和条件,并且把它们分配到程序结构图的适当位置。

⑤用伪码表示程序。

 3)程序复杂程度的定量度量:

 (1)概念:程序的复杂性主要指模块内程序的复杂性。

(2)McCabe方法:根据程序控制流的复杂程度定量度量程序的复杂程度。其结果称为程序

的环形复杂度。

①方法:先画出流图,然后用该图的环路数作为程序复杂性的度量值。

②流图组成:  圆:结点(一个圆代表一条或多条语句)。

箭头线:边。

③计算环形复杂度的方法:

a. 环形复杂度=流图中的区域数。

b. 环形复杂度V(G)=E-N+2,其中E是边数,N是结点数。

c. 环形复杂度V(G)=P+1,其中P是判定结点数。

④例子:

【【【实践表明,模块规模以V(G)≤10为宜,V(G)=10是模块规模的一个更科学

更精确的上限。】】】

  3)Halstead方法:根据程序中可执行代码行的运算符和操作数(运算对象)的个数来计

算程序的复杂性。

①n1:程序中不同运算符的个数

n2:程序中不同操作数(运算对象)的个数

N1:程序中实际出现的运算符总个数

N2:程序中实际出现的操作数(运算对象)总个数

N(程序长度)=N1+N2

H(程序预测长度)=n1log2n1+n2log2n2

E:预测程序中包含错误的个数

E=Nlog2(n1+n2)/3000

软件工程复习提纲——第五章相关推荐

  1. 软件工程复习提纲——第十一章

    软件工程复习提纲,期末.考研的学霸笔记 第十一章--软件项目管理 第十一章 软件项目管理 事件4的最早时刻为:EET=max{2+3,6+0}: 事件9的最迟时刻为: LET=21-1=20: 事件8 ...

  2. 软件工程复习提纲——第七章

    软件工程复习提纲,期末.考研的学霸笔记 第七章--维护 第七章维护 1.维护的定义:软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程. 1)四类维护活动: (1)改正性维护 (2)适应 ...

  3. 软件工程复习提纲——第四章

    软件工程复习提纲,期末.考研的学霸笔记 第四章--总体设计 第四章总体设计 1.总体设计/概要设计/初步设计的目的:"概括地说,系统应该如何实现?"How to do?   启发规 ...

  4. 软件工程复习提纲——第三章

    软件工程复习提纲,期末.考研的学霸笔记 第三章--需求分析 第三章需求分析 需求分析的任务:1)确定对系统的综合要求2)分析系统的数据要求(通常采用建立数据模型的方法): 即:准确地回答:" ...

  5. 软件工程复习提纲——第九章

    软件工程复习提纲,期末.考研的学霸笔记 第九章--面向对象分析设计 顺序图.用例图等图形的作法: 1)顺序图:顺序图是描述对象之间的动态交互的情况,着重表示对象间消息传递的时间顺序. 纵向是时间轴,时 ...

  6. 软件工程复习提纲——第二章

    软件工程复习提纲,期末.考研的学霸笔记 第二章--可行性研究 第二章可行性研究 1.可行性研究的任务:可行性研究的目的不是解决问题,而是用最小的代价在尽可能短的时间内确 定问题是否能够解决,是否值得去 ...

  7. 软件工程复习提纲——第一章

    软件工程复习提纲,期末.考研的学霸笔记 第一章--软件工程基本概念 第一章软件工程基本概念 软件危机的概念:指在计算机软件的开发和维护过程中所遇到的一系列严重问题. 软件危机包含两方面的问题:1)如何 ...

  8. 软件工程复习提纲——第八章

    软件工程复习提纲,期末.考研的学霸笔记 第八章--面向对象方法学引论 第八章面向对象方法学引论 面向对象方法学的要点.优点:   1)传统方法和面向对象方法的比较:   动态模型:(第三章已介绍状态图 ...

  9. 软件工程复习提纲——第十章

    软件工程复习提纲,期末.考研的学霸笔记 第十章--面向对象的实现 第十章面向对象的实现  

最新文章

  1. ubuntu设置root用户密码
  2. mysql 前缀索引 语法_PHP 之Mysql优化
  3. jsf集成spring_Spring和JSF集成:分页
  4. linux wifi ip,Linux环境下使用WIFI模块:使用DHCP工具动态获得IP地址
  5. 打印工资条怎么做到每个人都有表头明细_一分钟生成500人的工资条?还有2种方法?...
  6. [Node.js] 基于NodeJS+Express+mongoDB+Bootstrap的博客系统实战
  7. 建议把英语改成选修的计算机老师,中小学“变动”,英语改为副科?老师没意见家长却愁眉不展...
  8. java删除指定文件_java删除指定目录下指定格式文件的方法
  9. Vue插件_自己封装插件_以及使用自定义插件---vue工作笔记0017
  10. python plt 画图
  11. Telink BLE MESH开发|ble mesh开发教程《二》telink_sig_mesh增加调试信息打印
  12. 2021-2027全球与中国微机械角速率传感器市场现状及未来发展趋势
  13. MSP430编译MLX90614失败
  14. 《Android开发艺术探索》超详细笔记【转载】
  15. 分分搞懂c#中的委托
  16. Kotlin入门与进阶:语法(二)类成员,运算符,语句,表达式
  17. 什么是低代码平台 low-code?
  18. 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标
  19. 联拓生物任命钱江担任中国区总经理
  20. MySQL 连接为什么挂死了?

热门文章

  1. JAVA中for循环写杨辉三角_java使用for循环输出杨辉三角
  2. 会计准则应用指南2020pdf_如何提高企业会计准则体系的学习效率和效果
  3. 在线生成艺术字_生成艺术:如何修改绘画
  4. 美国 otc 数字货币_美国数字公共图书馆的免费藏书量是第一年的三倍
  5. VSCode自定义代码片段7——CSS动画
  6. js+css实现验证码框,前端实现6位验证码输入框效果
  7. html按钮绑定点击事件无效,jquery添加的html元素按钮为何不执行类样式绑定的click事件...
  8. Git笔记(3) 安装配置
  9. CAN笔记(2) CAN特点
  10. android getresponsecode -1,getHttpResponseCode()在android 2.2中返回-1