软件工程导论之详细设计总结

详细设计的目的
完成模块设计(为SC中的每个模块确定采用的算法和块内的数据结构,用某种选定的工具来给出详细清晰的描述)更重要的是便于维护
详细设计的主要内容:
1.为每个模块确定采用的算法
2.确定每个模块使用的内部数据结构
3.确定模块的接口细节
4.指定模块的测试计划
6.1 结构程序设计
结构程序设计:采用自顶向下逐步求精的方法和单入口和单出口的控制结构
使用结构程序设计的好处:
1.提高软件的开发工程的成功率和生产率
2.系统有清晰的层次结构,易于理解和阅读
3.单入口和单出口的控制结构易于纠正
4.模块化可以使得软件重用
5.程序结构逻辑清晰,有利于程序正确性的验证
结构程序设计的几种类型:
a.经典结构设计:只能用顺序、选择和循环结构。

b.扩展的结构设计:支持以上三种基本结构设计后还支持do_case,和do_while

c.修正的结构设计:支持以上五种和break等结构
流程图经常有三种节点组成,三种基本控制结构组成
结点:函数结点(一进一出)、谓词结点(一个结点一个入口两个出口,根据谓词的不同有不同的出口不改变程序数据项的值)、汇点(两个或多个入口,且不执行任何运算只有一个出口)
基本控制结构:顺序、选择、循环(while)。
扩展结构:多分支结构(case)、util循环结构(do-while循环)
正规程序定义:1 具有一个入口线和一个出口线,2 每个结点都有一条从入口先到出口线的的通路通过该结点, 正规程序可以抽象成一个函数结点

基本程序: 封闭结构
两个结点之间所有没有重复结点的通路组成的结构称为封闭结构
1,不包括多于一个结点的正规子程序,即它是一种不可再分解的(程序本身不能被视为子程序)
2.如果存在封闭结构,封闭结构都是正规程序
满足以上两个条件的程序叫做基本程序
基集合:用于构造程序的基本程序集合称为基集合,(基本结构就是基集合)
复合程序:一个基本程序的函数结点用另一个基本函数程序替换,产生新的正规程序称为复合程序
结构化程序:由一基本程序的一个固定的基集合构造出的复合程序称为结构化程序
结构化定理:
结构化和非结构化的转换:
人机界面设计:人机界面设计指南:1 一般交互指南,2信息显示指南,3数据输入指南
过程设计工具
1 .程序流程图:是一种控制程序结构和指令执行情况的有向图 ,是最早出现的且使用较为广泛的算法表达工具之一,能够有效的描述问题求解过程中的程序逻辑结构
缺点:
(1)程序流程图本质上不是一个逐步求精的工具,诱使程序员过早地考虑程序的控制流程而不考虑程序的全局结构
(2)程序流程图中的箭头代表控制流,程序员可以没有任何约束,不顾程序结构设计的精神随意转换控制
(3)程序流程图不易表示数据结构
2 盒图: 为了保证结构化程序设计的一种图形工具

盒图的特点: 功能明确,不能随意转移控制,很容易确定局部和全局数据的作用域,很容易表现嵌套关系也可以表示模块的层次结构
PAD图:问题分析图:

PAD图的优点:pad图是结构化程序,所描绘的图像很清晰,图中最左的竖线是程序的主线,即第一层结构,随着程序层次的增加,pad图每增加一层就在向右扩展一条竖线,PAD图中的总竖线是程序的层次数,用pad图表现程序通俗易懂从左上开始执行,自上而下,从左至右顺序执行,遍历所有节点,将pad图转换成高级语言程序可用工具完成,可用于描绘数据结构,支持自顶向下、逐步求精的方法
判定表,判定树,过程设计语言(伪代码)
面向数据结构的设计方法
Jackson图:








jackson的目标是:得出对程序处理过程的详细描述
Jackon方法从目标系统的输入、输出数据结构入手,导出程序框架结构再补充细节可得到完整的程序结构图
Jackson结构程序设计方法的组成:
1.分析并确定输入和输出数据的逻辑结构,使用Jackson描绘这些结构
2.找出输入数据和输出数据中有对应关系的数据单元
3.用三条规则描绘数据结构的Jackson图导出描绘程序结构的Jackson图
a.为每对有对应关系的数据单元,按照他们在数据结构图中的层次在程序结构图相应层次画一个处理框
b.根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次中分别为其画上对应的处理框
c:根据输出的数据结构的剩余的每个数据单元所处的层次,在程序结构图中的相应层次中分别为其画上对应的处理框
4.列出所有的操作和条件,并把他们分配到程序结构图中适当的位置
5.用伪码表示程序
程序复杂度的定量度量
1. 定量度量的作用
a:把程序的复杂程度乘以适当常数可估算软件中错误的数量及软件开发的工作量
b:度量的结果可用来比较不同的设计或不同的算法优劣
c:程序复杂度可作为模块规模的限度
McCabe 方法:根据程序控制的复杂程度定量度量程序的复杂程度,这样度量的结果成为环形复杂度
1.流图:退化的程序流程图,只描绘程序的控制流程,不表现对数据的具体操作及循环、选择的条件
计算环形复杂度的方法
1、环形复杂度V(G)=流图中的区域数,
2、环形复杂度V(G)=E(流图中边的数量)-N(流图中结点的数量)+2
3、环形复杂度V(G)=P(流图中判定结点的数量)+1
环形复杂度的用途
对测试难度的一种度量,也可以对软件的可靠性给出某种预测 V<=10 最好



你可能感兴趣的:(软件工程导论)