个人成果,妥善保存,请勿传播软件工程岐兵Email:qib@epsoft.com.cn个人成果,妥善保存,请勿传播可行性研究需求分析概要设计详细设计实现集成测试确认测试使用与维护退役软件定义软件开发软件使用与维护软件生命周期个人成果,妥善保存,请勿传播软件设计的任务从工程管理的角度来看,软件设计分两步完成–总体设计(概要设计),将软件需求转化为数据结构和软件的系统结构。–详细设计,即过程设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。个人成果,妥善保存,请勿传播软件设计的任务一般交互式软件系统的设计内容–体系结构设计–数据设计–接口设计–人机界面设计–过程设计个人成果,妥善保存,请勿传播课程内容提纲第6章:“详细设计”–详细设计任务–结构程序设计–人机界面设计–过程设计工具–面向数据结构的设计方法–程序复杂程度的定量度量个人成果,妥善保存,请勿传播详细设计的任务ProgramDesign≠Coding为SC图的每个模块确定算法和数据结构进行详细设计的原则–在保证正确可靠前提下,尽量提高算法可读性–采用结构化设计方法,改善控制结构,降低程序复杂度,提高可测试性和可维护性自顶向下逐步求精;具有单入、单出的控制结构(取消GOTO语句)–用工具无二义的描述模块算法个人成果,妥善保存,请勿传播详细设计的任务详细设计过程1.确定每个模块的算法选择适当工具表达算法执行过程2.确定每一个模块的数据组织3.为每一个模块设计一组测试用例输入数据、预期输出结果4.编写《详细设计说明书》5.设计评审个人成果,妥善保存,请勿传播详细设计的任务详细设计内容–用图表列出系统的每个程序,包括每个模块和子程序名称、标识符、层出结构关系–对程序的功能、性能、输入、输出、算法、流程、接口等进行描述–内容包括程序描述:程序简要描述,意义和特点功能:程序应具备的功能性能:精度、灵活性和时间特性等输入项输出项个人成果,妥善保存,请勿传播详细设计的任务详细设计内容–内容包括算法:具体的计算步骤和过程接口:模块的隶属关系、调用方式和参数、与模块直接关联的数据结构(如数据库表、文件等)存储分配(根据需要)注释设计:程序注释说明限制条件:程序运行中所受的限制条件个人成果,妥善保存,请勿传播详细设计的任务详细设计优化–在不考虑时间因素的前提下开发并精化软件结构–选出最耗时的模块,仔细设计处理算法–孤立出大量占有处理机资源的模块–必要时重新设计或用依赖于机器的语言重写大量占有资源的模块个人成果,妥善保存,请勿传播课程内容提纲第6章:“详细设计”–详细设计任务–结构程序设计–人机界面设计–过程设计工具–面向数据结构的设计方法–程序复杂程度的定量度量个人成果,妥善保存,请勿传播结构程序设计1结构程序设计的提出–结构程序设计概念最早1965年由E.W.Dijkstra提出“可以从高级语言中取消GOTO语句”“程序的质量与程序中所包含的GOTO语句的数量成反比”–1966年bohm和Jacopini证明了:只用三种基本的控制结构能实现任何单入口单出口的程序–1968年人们认识要创立一种新的程序设计思想以显著地提高软件生产率和降低软件维护代价个人成果,妥善保存,请勿传播结构程序设计1结构程序设计的提出–1971年IBM公司成功地使用了结构程序设计技术纽约时报信息库管理系统美国宇航局空间实验室飞行模拟系统–1972年IBM公司的Mills进一步补充了结构程序设计的规则结构程序设计是尽可能少用GOTO语句的程序设计方法。最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向GOTO语句个人成果,妥善保存,请勿传播结构程序设计2结构程序设计分类–只允许使用顺序、IF-THEN-ELSE分支和DO-WHILE型循环这三种基本控制结构,称为经典的结构程序设计–还允许使用DO-CASE多分支结构和DO-UNTIL循环结构,称为扩展的结构程序设计–如果再加上允许使用LEAVE(或BREAK)结构,称为修正的结构程序设计个人成果,妥善保存,请勿传播课程内容提纲第6章:“详细设计”–详细设计任务–结构程序设计–人机界面设计–过程设计工具–面向数据结构的设计方法–程序复杂程度的定量度量个人成果,妥善保存,请勿传播人机界面设计人机界面的设计四个方面–系统响应时间–用户帮助设施–出错信息处理–命令交互1.系统响应时间–系统响应时间指从用户完成某个控制动作(例如,按回车键或点击鼠标),到软件给出预期响应(输出信息或做动作)之间的时间个人成果,妥善保存,请勿传播人机界面设计1.系统响应时间系统响应时间有两个重要属性–响应长度系统响应时间过长,用户就会感到紧张和沮丧系统响应时间过短,会迫使用户加快操作节奏,从而可能会犯错误–易变性(系统响应时间的更重要的属性)指系统响应时间相对于平均响应时间的偏差响应时间易变性低也有助于用户建立起稳定的工作节奏–例如,稳定在1秒的响应时间比从0.1秒到2.5秒变化的响应时间要好个人成果,妥善保存,请勿传播人机界面设计2.用户帮助设施–常见的帮助设施可分为集成的和附加的两类–集成的帮助设施从一开始就设计在软件里面它对用户工作内容是敏感的可缩短用户获得帮助的时间,增加界面的友好性–附加的帮助设施是在系统建成后再添加到软件中的实际是一种查询能力有限的联机用户手册人们普遍认为,集成的帮助设施优于附加的帮助设施个人成果,妥善保存,请勿传播人机界面设计设计帮助设施时必须解决下述问题(1)交互期间是否在任何时候都能获得关于任何功能的帮助?有两种选择:提供功能的帮助信息和提供全部功能的帮助信息(2)用户怎样请求帮助?有3种选择:帮助菜单,特殊功能键和HELP命令(3)怎样显示帮助信息?有3种选择:在独立的窗口中,指出参考某个文档和在屏幕固定位置显示简短提示(4)用户怎样返回到正常的交互方式中?有两种选择:屏幕上的返回按钮和功能键(5)怎样组织帮助信息?有3种选择:平面结构(所有信息都通过关键字访问),信息的层次结构(用户可在该结构中查到更详细的信息)和超文本结构个人成果,妥善保存,请勿传播人机界面设计3.出错信息处理–出错信息和警告信息是出现问题时交互式系统给出的“坏消息”–一般说来,交互式系统给出的出错信息或警告信息,应该具有下述属性:(1)应该用用户可以理解的术语描述问题(2)应该提供有助于从错误中恢复的建设性意见个人成果,妥善保存,请勿传播人机界面设计(3)信息应该指出错误可能导致哪些负面后果(4)信息应该伴随着听觉上或视觉上的提示–例如,在显示信息时同时发出警告铃声–或者信息用闪烁方式显示–或者用明显表示出错的颜色显示(5)信息不能带有指责色彩–也就是说,不能责怪用户个人成果,妥善保存,请勿传播人机界面设计4.命令交互–在提供命令交互方式时,必须考虑下列设计问题(1)是否每个菜单选项都有对应的命令?(2)采用何种命令形式?–有3种选择:控制序列(例如,Ctrl+P),功能键和键入命令。(3)学习和记忆命令的难度有多大?忘记了怎么办?(4)用户是否可以定制或缩写命令?个人成果,妥善保存,请勿传播人机界面设计人机界面设计过程–用户界面设计是一个迭代的过程创建设计模型-再用原型实现这个设计模型-由用户试用和评估-根据用户意见进行修改–用于界面设计和原型开发的软件工具用户界面工具箱或用户界面开发系统–用户界面的评估周期如下所述完成初步设计之后就创建第一级原型;用户试用并评估该原型,向设计者表述对界面的评价设计者根据用户意见修改设计并实现下一级原型个人成果,妥善保存,请勿传播人机界面设计人机界面设计过程–运用下述评估标准对设计进行早期复审:(1)系统及其界面的规格说明书的长度和复杂程度–预示了用户学习使用该系统所需要的工作量(2)命令或动作的数量、命令的平均参数个数或动作中单个操作的个数–预示了系统的交互时间和总体效率(3)动作、命令和系统状态的数量–预示了用户学习使用该系统时需要记忆的内容的多少(4)界面风格、帮助设施和出错处理协议–预示了界面的复杂程度及用户接受该界面的程度个人成果,妥善保存,请勿传播人机界面设计人机界面设计指南–一般交互指南涉及信息显示、数据输入和系统整体控制(1)保持一致性–应该为人机界面中的菜单选择、命令输入、数据显示以及众多的其他功能,使用一致的格式(2)提供有意义的反馈–应向用户提供视觉的和听觉的反馈,以保证在用户和系统之间建立双向通信。(3)在执行有破坏性的动作之前要求用户确认个人成果,妥善保存,请勿传播人机界面设计人机界面设计指南1一般交互指南(4)允许取消绝大多数操作–UNDO或REVERSE功能曾经使众多终端用户避免了大量时间浪费。(5)减少在两次操作之间必须记忆的信息量–不应该期望用户能记住在下一步操作中需使用的一大串数字或标识符(6)提高对话、移动和思考的效率–应该尽量减少用户击键的次数–设计屏幕布局时应该考虑尽量减少鼠标移动的距离–应该尽量避免出现用户问“这是什么意思?”的情况个人成果,妥善保存,请勿传播人机界面设计人机界面设计指南1一般交互指南(续上页)(7)允许犯错误–系统应该能保护自己不受严重错误的破坏。(8)按功能对动作分类,并据此设计屏幕布局–设计者应该尽力提高命令和动作组织的“内聚性”(9)提供对用户工作内容敏感的帮助设施(10)用简单动词或动词短语作为命令名个人成果,妥善保存,请勿传播人机界面设计人机界面设计指南2信息显示指南(1)只显示与当前工作内容有关的信息–用户在获得有关功能的信息时,不必看到与之无关的数据、菜单和图形。(2)不要用数据淹没用户–应该用便于用户迅速吸取信息的方式来表示数据–例如,可以用图形或图表来取代庞大的表格。(3)使用一致标记、标准的缩写和可预知的颜色–显示的含义应该非常明确,用户无须参照其他信息源就能理解。个人成果,妥善保存,请勿传播人机界面设计人机界面设计指南2信息显示指南(续上页)(4)允许用户保持可视化的语境(5)产生有意义的出错信息(6)使用大小写、缩进和文本分组以帮助理解(7)使用窗口分隔不同类型的信息(8)使用“模拟”显示表示信息,以使信息更容易被用户提取(9)高效率地使用显示屏个人成果,妥善保存,请勿传播人机界面设计人机界面设计指南3数据输入指南(1)尽量减少用户的输入动作–最重要的是减少击键次数(2)保持信息显示和数据输入之间的一致性–显示的视觉特征(例如文字大小、颜色和位置)应与输入域一致(3)允许用户自定义输入(4)交互应该是灵活的,并且可调整成用户最喜欢的输入方式个人成果,妥善保存,请勿传播人机界面设计人机界面设计指南3数据输入指南(续上页)(5)使在当前动作语境中不适用的命令不起作用(6)让用户控制交互流–用户应该能够跳过不必要的动作–改变所需做的动作的顺序(在应用环境允许的前提下)–以及在不退出程序的情况下从错误状态中恢复正常(7)对所有输入动作都提供帮助(8)消除冗余的输入–不要要求用户指定输入数据的单位–尽可能提供默认值–绝对不要要求用户提供程序可以自动获得或计算出来的信息。个人成果,妥善保存,请勿传播课程内容提纲第6章:“详细设计”–详细设计任务–结构程序设计–人机界面设计–过程设计工具–面向数据结构的设计方法–程序复杂程度的定量度量个人成果,妥善保存,请勿传播过程设计工具在详细设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。表达过程规格说明的工具叫做详细设计工具,它可以分为以下三类:图形工具表格工具语言工具个人成果,妥善保存,请勿传播过程设计工具1.程序流程图–在40年代末到70年代中期,程序流程图一直是软件设计的工具–它以对控制流程的描绘直观、易于掌握而被设计人员青睐依据国家标准(GB1526-89),列出有关程序流程图的基本符号个人成果,妥善保存,请勿传播过程设计工具[数据处理待处理准备判断循环上、下界连接端点符注解符流线虚线省略符并行方式多出口判断换页连接控制流个人成果,妥善保存,请勿传播过程设