
系统架构与详细设计ppt课件.ppt
39页1 1确定应该怎样具体地实现所要求的系统详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码2 2结构程序设计的概念最早由E.W.Dijkstra提出1965年他在一次会议上指出:“可以从高级语言中取消GO TO语句”,“程序的质量与程序中所包含的GO TO 语句的数量成反比”1966年Bohm和Jacopini证明了,只用3种基本的控制结构就能实现任何单入口单出口的程序3 33种基本的控制结构4 4如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的5 5如果除了上述3种基本控制结构之外,还允许使用DO-CASE型多分支结构和DO-UNTIL型循环结构,则称为扩展的结构程序设计;如果再加上允许使用LEAVE(或BREAK)结构,则称为修正的结构程序设计6 6图6.2 其他常用的控制结构7 7人机界面设计是接口设计的一个重要的组成部分对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要近年来,人机界面在系统中所占的比例越来越大,在个别系统中人机界面的设计工作量甚至占总设计量的一半以上。
人机界面的设计质量,直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命,因此,必须对人机界面设计给予足够重视8 81.系统响应时间2.用户帮助设施3.出错信息处理4.命令交互9 9一般说来,系统响应时间指从用户完成某个控制动作(例如,按回车键或点击鼠标),到软件给出预期的响应(输出信息或做动作)之间的这段时间系统响应时间有两个重要属性,分别是长度和易变性1010几乎交互式系统的每个用户都需要帮助,当遇到复杂问题时甚至需要查看用户手册以寻找答案大多数现代软件都提供联机帮助设施,这使得用户无须离开用户界面就能解决自己的问题常见的帮助设施可分为集成的和附加的两类1111(1) 在用户与系统交互期间,是否在任何时候都能获得关于系统任何功能的帮助信息?有两种选择:提供部分功能的帮助信息和提供全部功能的帮助信息2) 用户怎样请求帮助?有3种选择:帮助菜单,特殊功能键和HELP命令3) 怎样显示帮助信息?有3种选择:在独立的窗口中,指出参考某个文档(不理想)和在屏幕固定位置显示简短提示1212(4) 用户怎样返回到正常的交互方式中?有两种选择:屏幕上的返回按钮和功能键5) 怎样组织帮助信息?有3种选择:平面结构,信息的层次结构和超文本结构。
1313一般说来,交互式系统给出的出错信息或警告信息,应该具有下述属性1) 信息应该用用户可以理解的术语描述问题2) 信息应该提供有助于从错误中恢复的建设性意见1414(3) 信息应该指出错误可能导致哪些负面后果4) 信息应该伴随着听觉上或视觉上的提示5) 信息不能带有指责色彩1515在多数情况下,用户既可以从菜单中选择软件功能,也可以通过键盘命令序列调用软件功能在提供命令交互方式时,必须考虑下列设计问题1) 是否每个菜单选项都有对应的命令?1616(2) 采用何种命令形式?有3种选择:控制序列(例如,Ctrl+P),功能键和键入命令3) 学习和记忆命令的难度有多大?忘记了命令怎么办?(4) 用户是否可以定制或缩写命令?17171. 一般交互指南一般交互指南涉及信息显示、数据输入和系统整体控制,因此,这类指南是全局性的,忽略它们将承担较大风险2.信息显示指南3.数据输入指南1818(1) 保持一致性2) 提供有意义的反馈3) 在执行有较大破坏性的动作之前要求用户确认4) 允许取消绝大多数操作5) 减少在两次操作之间必须记忆的信息量1919(6) 提高对话、移动和思考的效率。
7) 允许犯错误8) 按功能对动作分类,并据此设计屏幕布局9) 提供对用户工作内容敏感的帮助设施10) 用简单动词或动词短语作为命令名2020(1) 只显示与当前工作内容有关的信息2) 不要用数据淹没用户,应该用便于用户迅速吸取信息的方式来表示数据3) 使用一致的标记、标准的缩写和可预知的颜色4) 允许用户保持可视化的语境2121(5) 产生有意义的出错信息6) 使用大小写、缩进和文本分组以帮助理解7) 使用窗口分隔不同类型的信息(8) 使用“模拟”显示方式表示信息,以使信息更容易被用户提取9) 高效率地使用显示屏2222(1)尽量减少用户的输入动作2) 保持信息显示和数据输入之间的一致性3) 允许用户自定义输入4) 交互应该是灵活的,并且可调整成用户最喜欢的输入方式2323(5) 使在当前动作语境中不适用的命令不起作用6) 让用户控制交互流7) 对所有输入动作都提供帮助8) 消除冗余的输入2424•程序流程图•盒图(N-S图)•PAD图•判定表•判定树252526262727使用PAD图提供的定义功能来逐步求精的例子2828用判定树表示计算行李费的算法2929理论基础在许多应用领域中信息都有清楚的层次结构,层次的数据组织通常和使用这些数据的程序的层次结构十分相似。
最终目标 得出对程序处理过程的描述两种方法Jackson方法和Warnier方法3030p把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量p定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣p程序的定量的复杂程度可以作为模块规模的精确限度pMcCabe方法和Halstead方法31311. 流图McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度为了突出表示程序的控制流,人们通常使用流图(也称为程序图)所谓流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件32323333可以用下述3种方法中的任何一种来计算环形复杂度1) 流图中的区域数等于环形复杂度2) 流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数3) 流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目3434程序的环形复杂度取决于程序控制流的复杂程度,也即是取决于程序结构的复杂程度当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。
3535McCabe研究大量程序后发现,环形复杂度高的程序往往是最困难、最容易出问题的程序实践表明,模块规模以V(G)≤10为宜,也就是说,V(G)=10是模块规模的一个更科学更精确的上限3636Halstead方法是另一个著名的方法,它根据程序中运算符和操作数的总数来度量程序的复杂程度令N1为程序中运算符出现的总次数,N2为操作数出现的总次数,程序长度N定义为:N=N1+N2详细设计完成之后,可以知道程序中使用的不同运算符(包括关键字)的个数n1,以及不同操作数(变量和常数)的个数n2Halstead给出预测程序长度的公式如下:H=n1 log2 n1+n2 log2 n2多次验证都表明,预测的长度H与实际长度N非常接近3737Halstead还给出了预测程序中包含错误的个数的公式如下:E=N log2 (n1+n2)/3000有人曾对从300条到12000条语句范围内的程序核实了上述公式,发现预测的错误数与实际错误数相比误差在8%之内3838详细设计阶段的关键任务是确定怎样具体地实现用户需要的软件系统,也就是要设计出程序的“蓝图”除了应该保证软件的可靠性之外,使将来编写出的程序可读性好、容易理解、容易测试、容易修改和维护,是详细设计阶段最重要的目标。
结构程序设计技术是实现上述目标的基本保证,是进行详细设计的逻辑基础3939。
