第5章 详细设计与编码
软件工程导论(第5章)

11
5.1.2 选取若干个合理的方案
至少选取低成本、中等成本和高成本三种方案。
每种方案准备四份资料:
系统流程图; 组成系统的物理元素清单; 成本/效益分析; 实现这个系统的进度计划。
12
5.1.3 推荐最佳方案
分析员应该综合分析对比各种合理方案的利
弊,推荐一个最佳的方案,并且为推荐的方 案制定详细的实现计划。
发出较高质量的软件系统。
7
第一部分:设计过程 第二部分:设计原理 第三部分:启发原则 第四部分:软件结构图 第五部分:面向数据流的设计方法
8
5.1 设 计 过 程
总体设计过程通常由两个主要阶段组成: 系统设计:确定系统的具体实现方案。 结构设计:确定软件结构。 9个步骤: ① 设想供选择的方案 ② 选取合理的方案 ③ 推荐最佳方案 ④ 功能分解 ⑤ 设计软件结构 ⑥ 设计数据库 ⑦ 制定测试计划 ⑧ 书写文档 ⑨ 审查和复审
和理解; 可以使软件容易测试和调试,因而有助于提高软 件的可靠性; 能够提高软件的可修改性; 有助于软件开发工程的组织管理。
32
模块化五条标准
模块可分解性
把问题分解为子问题 模块可组装性 可复用 模块可理解性 无需参考其他模块,易于构造和修改 模块连续性 微小修改只导致对个别模块 模块保护性 异常影响局限在模块内部
“隐蔽”意味着模块彼此间仅仅交换那些为了完成系统功能而 必须交换的信息。 “局部化”是指把一些关系密切的软件元素物理地放得彼此靠 近。局部化有助于实现信息隐蔽。
设计和确定模块时,使得一个模块内包含的信息(过程和 数据)对于不需要这些信息的模块来说,是不能访问的。 模块内部的数据与过程,应该对不需要了解这些数据与过 程的模块隐藏起来。只有那些为了完成软件的总体功能而 必需在模块间交换的信息,才允许在模块间进行传递。
大学计算机基础第5章

时期 阶段
任务
文档
需求分析 系统的目标及应完成的工作 需求规格说明书
开发
总体设计 软件设计
详细设计 软件编码 编写程序代码
总体设计说明书 详细设计说明书 程序、数据注释
黑盒测试、白盒测试、单元 测试后的软件、
软件测试 测试、集成测试、确认测试、大纲、方案与结
系统测试
果
运行 软件维护 运行和维护
维护后的软件
1)软件生命周期模型:是描述软件开发过程 中各种活动如何执行的模型。 2)常见的软件生命周期模型有:瀑布模型、 增量模型、螺旋模型、喷泉模型、变换模型及 基于知识的模型等。
上图是软件生存周期的瀑布模型。
5、软件工具与软件开发环境
软件工具:就是帮助开发软件的软件。 软件开发环境(或称软件工程环境):是全面支 持软件开发全过程的软件工具的集合,这些软 件工具按照一定的方法和模式组合起来,共同 支持软件生命周期内的各个阶段和各项任务的 完成。
结构化方法的软件开发过程
软件计划后 结构化分析
结构化设计
编码并测试 结构化程序设计
面向对象方法的软件开发过程
软件计划后 面向对象分析
面向对象设计
软件测试 面向对象编程
1、结构化分析方法
1)结构化分析(简称SA)方法是面向数据流 进行需求分析的方法。该方法使用简单易读 的符号,运用抽象的概念模型,根据软件内 部数据传递、变换的关系,自顶向下逐层分 解,描绘出满足功能要求的软件模型
DFD图的数据流可分为两种类型:变换流和事务流 变换流:信息沿着输入通路进入系统,同时将信息的外
部形式转换成内部形式,通过变换中心处理之 后,再沿着输出通路转换成外部形式输出 事务流:信息沿着输入通路到达一个事务中心,事务中 心根据输入信息的类型在若干个动作序列中选 择一个来执行,这种信息流称为事务流
软件工程 第4版 第5章 详细设计

数据流程图
01
数据流程图表示 求解某一问题的 数据通路,同时 规定了处理的主 要阶段和所用的 各种数据媒体
程序流程图
02
程序流程图表示 程序中的操作顺 序
系统流程图
03
系统流程图表示 系统的操作控制 和数据流
程序网络图
04
程序网络图表示 程序激活路径和 程序与相关数据 流的相互作用
系统资源图
05
系统资源图表示 适用于一个问题 或一组问题求解 的数据单元和处 理单元的配置
5.1.3 PAD
01 PAD 的基本符号
OPTION
➢ 顺序结构 ➢ 条件结构 ➢ CASE 型多分支结构 ➢ 先检测循环条件的WHILE 型循环结构 ➢ 后检测循环条件的UNTIL 型循环结构 ➢ 语句标号 的特点
OPTION
用PAD 表示的程序从最左边的竖线的上端开始,自上而 下、自左向右执行 用PAD 设计的软件结构必然是结构化的程序结构
图1
图2
5.1.1 流程图
04 流程图的3 种基本结构
OPTION
流程图的3 种基本结构为顺序结构、条件 结构和循环结构,如图1所示,图中的C 是判 定条件。顺序结构如图(a)所示。条件结构 可分为两种,一种是IF...THEN...ELSE 型条件 结构,如图(b)所示;另一种是CASE 型多 分支结构,如图(c)所示。
应的应做的工作。
2 判定表中的符号
右上部用T 表示条件成立,用F表示条件不 成立,空白表示条件成立与否不影响。
右下部画× 表示在该列上面规定的条件下做 该行左边列出的那项工作,空白表示不做该 项工作。
5.1.5 判定树
判定树和判定表一样,也能表明复杂的条件组 合与对应处理之间的关系。判定树是一种图形表示 方式,更易被用户理解。
第5章 详细设计案例

软件工程详细设计案例[案例1] 高等学校工资管理系统(详细设计)详细设计阶段的根本目标是确定应该怎样具体地实现所需求的系统,也就是说,经过这个阶段的设计工作,得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成某种程序设计语言的代码。
在图4-5 中可以看到工资管理系统已表示成由若干模块组成的层次结构。
每个模块代表一组详细的处理逻辑。
为了更好地描述模块的处理逻辑,应对每一个模块用一张IPO 图进行细节描述,例如,工资管理主控模块的IPO 图可示意如下(参见图5-1)。
最后设计出各个模块的程序流程图(或N-S 图)。
图5-1 工资管理主控模块的I PO 图[案例2] 电子名片管理系统(详细设计报告)1 引言1.1 编写目的随着社会发展的日新月异,商业来往日渐广泛,人们之间的交往也日益频繁,于是,人们手中便出现了名目繁多的通讯录、名址录、名片夹等对交友或客户进行管理的工具,但是一张张名片上的信息虽然不多,却占据了很大的空间;同时,这些传统的手动管理方式存在着不易更新、不易存放、容易丢失、难以备份等重大缺陷;而建立自己的电子文档对名片进行管理虽然克服了以上的缺点,但查询效率低下,特别是当数据量十分庞大时,劣势更加明显。
随着商务通的出现,虽然实现了可构造查询条件的名片电子化管理,但价格昂贵,难以在广大客户中进行全面普及。
因此开发一个既可以存储信息,又可以进行更新、查询等功能,同时价格又能为广大消费者接受的多功能电子通讯录就显得十分必要。
本报告读者对象为研发中心领导和主管技术人员,以及项目设计和开发人员。
1.2 项目背景项目名称初步定为:电子名片管理系统(ECMS,Electronic Card Management System)。
分为4 个子功能模块:密码管理模块、更新模块、查询模块和数据导入/导出模块。
本项目的任务提出者为北京ECM&ZW 软件开发有限公司,开发者和主管部门为ECM&ZW 软件开发研制中心。
软件工程各章名词解释

名词解释一个三分 五个十五分第一章 绪论1. 软件2. 文档3. 软件工程4. 软件工程过程5. 软件生存周期6. 软件生存周期模型第二章 软件可行性研究与项目开发计划1. 投资回收2. 纯收人第三章 软件需求分析1. 需求分析2. 数据流3. 数据字典4. 加工5. 数据流图第四章 软件概要设计1. 模块2. 模块化3. 抽象4. 信息隐蔽5. 模块独立性6. 耦合性7. 无直接耦合8. 数据耦合9. 标记耦合10. 控制耦合11. 公共耦合12. 内容耦合13. 内聚性14. 偶然内聚15. 逻辑内聚16. 时间内聚17. 通信内聚18. 顺序内聚19. 功能内聚第五章 软件详细设计1. PAD2. 过程设计语言(PDL)第六章 软件编码1. 程序设计风格2. 程序可移植性第七章 软件测试1. 语句覆盖2. 判定覆盖3. 条件覆盖4. 判定/条件覆盖5. 条件组合覆盖6. 路径覆盖7. 环路复杂性8. 黑盒测试9. 白盒测试10. 驱动模块11. 桩模块12. 单元测试13. 集成测试14. 确认测试15. 调试第八章 软件维护1. 维护2. 校正性维护3. 适应性维护4. 完善性维护5. 预防性维护6. 软件可维护性第九章 软件开发的增量模型1. 原型第十章 面向对象的方法1. 对象2. 类3. 消息4. 方法5. 继承性6. 单重继承7. 多重继承8. 多态性9. 抽象10. 信息隐藏11. 链12. 关联第十一章 软件质量与质量保证1. 软件可靠性2. 效率3. 可维护性4. 可移植性5. 可互操作性6. 适应性7. 可重用性8. 软件设计质量9. 软件程序质量10. 冗余第十二章 软件工程管理1. 软件配置管理2. 软件配置项3. 基线4. 文档第十三章 软件开发环境1. 软件开发环境2. 软件工具3. CASE4. CASE生存期5. CASE工作台软件工程自考名词解释答案第一章 绪论1. 计算机程序及其说明程序的各种文档.2. 文档是有关计算机程序功能,设计,编制,使用的方案或图形资料.3. 用科学知识和技术原理来定义,开发,维护软件的一门学科.4. 软件工程过程规定了获取,供应,开发,操作和维护软件时,要实施的过程,活动和任务.5. 软件生存周期是指一个软件从得出开发要求开始直到该软件报废为止的整个时期.6. 软件生存周期模型是描述软件开发过程中各种活动如何执行的模型.第二章 软件可行性研究与项目开发计划1. 投资回收期就是使累计的经济效益等于最初的投资费用所需的时间.2. 在整个生存周期之内的累计经济效益(折合成现在值)与投资之差.第三章 软件需求分析1. 需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非不甘落后将用户非不甘落后 需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程.2. 数据流是数据在系统内传播的路径,因此由一组成分固定的数据项组成.3. 数据字典(Data Dic onary, 简称DD)就是用来定义数据流图中的各个成分的具体含义的,它以一种准确的,无二义性的说明方式为系统的分析,设计及维护提供了有关元素的一致的定义和详细的描述.4. 加工又称为数据处理,是对数据流进行某些操作或变换.5. 数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程.第四章 软件概要设计1. 模块在程序中是数据说明,可执行语句等程序对象的集合,或者是单独命名和编址的元素,在软件的体系结构中,模块是可组合,分解和更换的单元.2. 模块化是指解决一个复杂问题自顶向下逐层把软件系统划分成若干模块的过程.每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个要求的功能.3. 抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素.4. 信息隐蔽指在设计和确定模块时,使得一个模块内包含信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的.5. 模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单.6. 耦合性也称块间联系.指软件系统结构中各模块间相互联系紧密程序的一种度量.7. 无直接耦合指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息.8. 数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递.9. 标记耦合指两个模块之间传递的是数据结构,如高级语言的数组名,记录名,文件名等这些名字即为标记,其实传递的是这个数据结构的地址.10. 控制耦合指一个模块调用另一个模块时,传递的是控制变量(如开关,标志等),被调模块通过该控制变量的值有选择地执行块内某一功能.11. 公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合.公共数据环境可是是全程变量或数据结构,共享的通信,内存的公共覆盖区及任何存储介质上的文件,物理设备等(也有将共享外部设备分类为外部耦合).12. 当一个模块直接使用另一个模块的内部数据,或通过非正常口转入另一个模块内部,这种模块之间的耦合为内容耦合.13. 内聚块又称块内联系指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量.14. 偶然内聚指一个模块内的各处理元素之间没有任何联系.15. 逻辑内聚指模块内执行个逻辑上相似的功能,通过参数确定该模块完成哪一个功能.16. 把需要同时执行的动作组合在一起形成的模块为时间内聚模块.17. 通信内聚指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据.18. 顺序内聚指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入.19. 功能内聚指模块内所有元素共同完成一个功能,缺一不可.因此模块不能再分割.第五章 软件详细设计1. PAD图指问题分析图(Problem Analysis Diagram),是一咱算法描述工具,它是一种由左往右展开的二维树型结构.PAD图的控制流程为自上而下,从左到右地执行.2. 过程设计语言(Process Design Language,简称PDL),也称程序描述语言(Program Descrip on Language),又称为伪码.它是一种用于描述模块自法设计和处理细节的语言.第六章 软件编码1. 程序设计风格指一个人编制程序时所表现出来的特点,习惯逻辑思路等.2. 指程序从一个计算机环境移值到另一个计算机环境的容易程序.第七章 软件测试1. 语句覆盖是指设计足够的测试用例,使被测程序中每个语句至少执行一次.2. 判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次”真”和”假”值,从而使程序的每一个分支至少都通过一次.3. 条件覆盖指设计足够的测试用例,使得判定表达工中每个条件的各种可能的值出现一次.4. 判定/条件覆盖标准指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次.5. 条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次.6. 路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径.7. McCabe定义程序图的环路为程序图中区域的个数.区域个数为边和结点圈定的封闭区域数加上图形外的区域数1.8. 黑盒测试是功能测试又称为功能测试或数据驱动测试.9. 白盒测试是对程序中尽可能多和逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致.10. 驱动模块是用来模拟被测模块的上级调用模块的模块,功能要比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被模块,接收被测模块的测试结果并输出.11. 桩模块用来代替被测试模块所调用的模块它的作用是返回被测模块所需的信息.12. 单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误.13. 集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行测试,故也称组装测试或联合测试.14. 确认测试又称有效性测试.是为了检查软件的功能与性能是否与需求规格说明书中确定的指标相符合所进行的测试.15. 调试是为了确定错误的原因和位置,并改正错误所进行的工作,因此调试也称为纠错.第八章 软件维护1. 在软件运行/维护阶段对软件产品所进行的修改就是维护.2. 为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护.3. 随着计算机的飞速发展,计算机硬件,软件及数据环境在不断发生变化,为了使应用软件适应这种变化而修改软件的过程称为适应性维护.4. 在犯罪分子件运行时期中,用户往往会对软件提出新的功能要求与性能要求.这种增加软件功能,增强软件性能,提高软件运行效率而进行的维护活动称为完善性维护.5. 为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护.6. 软件可维护性是指软件能够被理解,校正,适应及增强功能的容易程度.第九章 软件开发的增量模型1. 软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性.第十章 面向对象的方法1. 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则,计划或事件.2. 具有相同或相似性质的对象的抽象就是类具有相同或相似性质的对象的抽象就是类3. 对象之间进行通信的构造叫做消息.4. 类中操作的实现过程叫做方法,一个方法有方法名,参数,方法体.5. 继承性是子类自动共享父类数据结构和方法的机制这是类之间的一种关系.6. 在类层次中,子类只继承一个父类的数据结构和方法,称为单重继承.7. 在类层次中,子类继承了多个父亲的数据结构和方法,称为多重继承.8. 多态性是指相同的操作或函数,过程可作用于多用户种类型的对象上并获得不同结果.不同的对象收到同一消息可以产生不同的结果,这种现象称为多态性.9. 抽象是指强调实体的本质,内在的属性,忽略一些无关紧要的属性.10. 信息隐蔽是指所有软件部件内部都有明确的范围以及清楚的外部边界每个软件部件都有友好的界面接口,软件部件的内部实现与外部可访问性分离.11. 链表示对象间的物理与概念联结.12. 关联表示类之间的一种关系,就是一些可能的链的集合.第十一章 软件质量与质量保证1. 软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度.2. 为了完成预定功能,软件系统所需的计算机资源和程序代码数量的程度.3. 找到并改正程序中的一个错误所需代价的程度.4. 将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需的工作量.5. 将一个系统耦合到另一个系统所需的工作量.6. 修改或改进一个已投入运行的软件所需工作量的程度.7. 一个软件能再次用于其他相关应用的程度.8. 设计的规格说明书要符合用户的要求.9. 程序要按照设计规格说明所规定的情况正确执行.10. 冗余是指实现系统规定功能是多余的那部分资源,包括硬件,软件,信息和时间.第十二章 软件工程管理1. 软件配置管理,简称SCM,是一组管理整个软件生存期各阶段中变更的活动是一组管理整个软件生存期各阶段中变更的活动2. 软件配置项是软件工程中产生的信息项,它是配置管理的基本单位.3. 基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果.4. 文档是指某种数据媒体和其中所记录的数据.在软件工程中,文档用来表示对需求,工程或结果进行描述,定义,规定,报告或认证的任何书面或图示的信息.它们描述和规定了软件设计和实现的细节,说明使用软件的操作命令.第十三章 软件开发环境1. 软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成.2. 软件工具是指为支持计算机软件的开发,维护,模拟,移植或管理而研制的程序系统.3. CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发.4. 一个组织中的CASE系统从被始需求到完全废弃这一生存期.5. 一个CASE工作台是一组工具集,支持像设计,实现或测试等特定的软件开发阶段.。
【课程练习】习题解答-第五章 详细设计

第五章详细设计1.详细设计的基本任务是什么?有哪几种描述方法?详细设计的基本任务:(1)为每个模块进行详细的算法设计。
(2)为每个模块内的数据结构进行设计。
(3)对数据库进行设计,即确定数据库的物理结构。
(4)其他设计:a.代码设计b.输入/输出格式设计。
c.人机对话设计。
(5)编写详细设计说明书。
(6)评审。
描述方法(三种):a.程序流程图b.PAD图 C.过程设计语言2.结构化程序设计基本要求要点是什么?a.采用自顶向下、逐步求精的程序设计方法b.使用三种基本程序控制结构构造程序1).用顺序方式对过程分解,确定各部分的执行顺序。
2).用选择方式对过程分解,确定某个部分的执行条件。
3).用循环方式对过程分解,确定某个部分重复的开始和结束的条件。
c.主程序员组的组织形式。
3.简述Jackson 方法的设计步骤。
Jsp 方法一般通过以下5个步骤来完成设计:a.分析并确定输入/出数据的逻辑结构,并用Jackson 结构图表示这些数据结构。
b.找出输入数据结构和输出数据结构中有对应关系的数据单元。
c.按一定的规则由输入、输出的数据结构导出程序结构。
d.列出基本操作与条件,并把它们分配到程序结构图的适当位置。
e.用伪码写出程序。
4.请使用流程图、PAD图各PDL语言描述下列程序的算法。
(1)在数据A(1)-A(10)中求最大数和次大数。
(2)输入三个正整数作为边长、判断该三条边构成的三角形是等边、等腰或一般三角形。
答:(1)1)流程图:2)PAD图3)PDL语言定义n1=n2=0输入A(1).......A(10)n1=n2=A(1)while i>10if A(i)>=n1n2=n1n1=A(i)end while5.用PAD图描述下面问题的控制结构。
有一个表A(1)、A(2)、........A(n),按递增顺序排列。
给定一个Keyw值,在表中用折半查找。
若找到将表位置i送入x,否则将零送到x,同时将Key值插入表中。
软件工程导论知识点总结(整理)

软件⼯程导论知识点总结(整理)《软件⼯程导论》课后习题答案第⼀章软件⼯程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的⼀系列严重问题。
这些问题表现在以下⼏个⽅⾯:(1)⽤户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)⼀般软件很难维护。
(4)软件⽣产效率很低。
(5)软件开发成本越来越⼤。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满⾜不了计算机应⽤的普及与深⼊的需要。
2.为什么会产⽣软件危机?(1) 开发⼈员⽅⾯,对软件产品缺乏正确认识,没有真正理解软件产品是⼀个完整的配置组成。
造成开发中制定计划盲⽬、编程草率,不考虑维护⼯作的必要性。
(2) 软件本⾝⽅⾯,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统⼀的、公认的⽅法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越⼤,复杂程度越来越⾼,原有软件开发⽅式效率不⾼、质量不能保证、成本过⾼、研制周期不易估计、维护困难等⼀系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴⼈类长期以来从事各种⼯程项⽬中积累的⾏之有效的有效原理、概念、技术与⽅法,特别是吸取⼏⼗年来⼈类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努⼒作到良好的组织,严格的管理,相互友好的协作。
(2) 推⼴在实践中总结出来的开发软件的成功的技术和⽅法,并研究更好、更有效的技术和⽅法,尽快克服在计算机系统早期发展阶段形成的⼀些错误概念和作法。
(3) 根据不同的应⽤领域,开发更好的软件⼯具并使⽤这些⼯具。
将软件开发各个阶段使⽤的软件⼯具集合成⼀个整体,形成⼀个很好的软件开发⽀环环境。
总之为了解决软件危机,既要有技术措施(⽅法和⼯具),⼜要有必要的组织管理措施。
4.构成软件项⽬的最终产品:应⽤程序、系统程序、⾯向⽤户的⽂档资料和⾯向开发者的⽂档资料。
5.什么是软件⽣存周期?软件⽣存周期是指从软件定义、开发、使⽤、维护到淘汰的全过程。
第5章 详细设计

由用户试用和评估
3. 人机界面设计指南 1)一般交互指南
(1)保持一致性. (1)保持一致性. 保持一致性
应该为人机界面中的菜单选择, 应该为人机界面中的菜单选择, 命令输入, 命令输入,数据显示以及众多的其 他功能,使用一致的格式.举例: 他功能,使用一致的格式.举例: PPT中的菜单 中的菜单, PPT中的菜单,对话框
3. 人机界面设计指南 1)一般交互指南
提供有意义的反馈. (2) 提供有意义的反馈.
应向用户提供视觉的和听觉的 反馈, 反馈,以保证在用户和系统之 间建立双向通信.举例: 间建立双向通信.举例:注册 表单中的错误信息怎样弹出
3. 人机界面设计指南 1)一般交互指南
(3)在执行有较大破坏性的动作之前 (3)在执行有较大破坏性的动作之前 要求用户确认. 要求用户确认.
描述工具
PDL 伪代码
描述程序处理过程的工具 称为过程设计工具, 称为过程设计工具,它们 可以分为图形 表格, 图形, 可以分为图形,表格,和 语言3 语言3类. 不论是哪类工具,对它们 不论是哪类工具, 的基本要求都是能提供对 设计的无歧义的描述. 设计的无歧义的描述.即: 应该能指明控制流程, 应该能指明控制流程,处 理功能,数据组织, 理功能,数据组织,以及 其他方面的实现细节, 其他方面的实现细节,从 而在编码阶段能把对设计 的描述直接翻译成程序代 码.
1.
人机界面设计问题
设计人机界面中的4个问题: 设计人机界面中的4个问题: 1)系统响应时间 2)用户帮助设施 3)出错信息处理 4)命令交互
2.人机界面设计过程 2.人机界面设计过程
用户界面设计是一个迭代的过程. 用户界面设计是一个迭代的过程.
创建设计模型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
某种程序设计语言写成的程序。
5.1 结构化程序设计
• 自顶向下、逐步细化方法举例
用筛选法求100以内的素数。
所谓的筛选法,就是从2到100中去掉2,3,5,7的
倍数,剩下的就是100以内的素数。
5.1 结构化程序设计
首先按程序功能写出一个框架
main () { 建立2到100的数组A[ ],其中A[i]=i;- - - - - 1 建立2到10的素数表B[ ],存放2到10以内的素数;- - 2 若A[i]=i是B[ ]中任一数的倍数,则剔除A[i]; - - 3 输出A[ ]中所有没有被剔除的数; - - - - - - - 4 }
(1) 有固定的关键字外语法,提供全部结构化控制结构、数 据说明和模块特征。外语法的关键字是有限的词汇集,它 们能对伪代码正文进行结构分割,使之变得易于理解。 (2) 内语法使用自然语言来描述处理特性,为开发者提供方 便,提高可读性。 (3) 有数据说明机制,包括简单的(如标量和数组)与复杂 的(如链表和层次结构)的数据结构。 (4) 有子程序定义与调用机制,用以表达各种方式的接口说 明。
5.3 程序设计语言
• 程序设计语言的性能
从软件心理学及软件工程角度对程序设计语言的 性能进行讨论。
5.3 程序设计语言
• 软件心理学的观点
(1) 一致性。表示一种语言所使用符号的兼容程度、 允许随意规定限制,以及允许对语法或语义破 例的程度。 (2) 二义性。虽然语言的编译程序总是以一种机械 的规则来解释语句,但读者则可能用不同的方 式来理解语句。 (3) 简洁性。程序设计语言的简洁性用来表示为了 用该语言编写程序,必须记忆的关于代码的信 息量。
5.3 程序设计语言
• 软件心理学的观点
(4) 局部性。是指程序设计语言的综合特性。在编 码的过程中,由语句组合成模块,由模块组装为 程序系统结构,并在组装过程中实现模块的高内 聚和低耦合,可使程序的局部性加强。 (5) 传统性。人们学习一种新的程序设计语言的能 力受到传统的影响。
5.3 程序设计语言
5.1 结构化,尽量采用自顶向下(Top- Down)、逐步细化(Stepwise Refinement)的原则, 由粗到细,一步步展开。
5.1 结构化程序设计
• 自顶向下、逐步细化的设计过程
主要包括两个方面:
一是将复杂问题的解法分解和细化成由若干个模
5.1 结构化程序设计
上述框架中每一个加工语句都可进一步细化成一个循环语句 main () { /*建立2到100的数组A[ ],其中A[i]=i*/ - - 1 for (i = 2;i <= 100;i++)A[i] = i; /* 建立2到10的素数表B[ ],存放2到10以内的素数*/ - 2 B[1] =2; B[2] = 3; B[3] = 5; B[4] = 7; /*若A[i]=i是B[ ]中任一数的倍数,则剔除A[i]*/ - - 3 for (j = 1; j <= 4; j++)
5.2 过程设计的工具
• 程序流程图的基本控制结构
5.2 过程设计的工具
• 程序流程 图实例
5.2 过程设计的工具
• 程序流程图的标准符号(国家标准)
5.2 过程设计的工具
• 循环的标准符号
5.2 过程设计的工具
• 注解符的使用
5.2 过程设计的工具
• 多选择判断
5.2 过程设计的工具
5.2 过程设计的工具
• 程序流程图的基本控制结构
(1) 顺序型:几个连续的加工步骤依次排列构成。 (2) 选择型:由某个逻辑判断式的取值决定选择两个 加工中的一个。 (3) 先判定(while)型循环:在循环控制条件成立 时,重复执行特定的加工。 (4) 后判定(until)型循环:重复执行某些特定的 加工,直至控制条件成立。 (5) 多情况(case)型选择:列举多种加工情况, 根据控制变量的取值,选择执行其一。
检查A[ ]所有的数能否被B[j]整除并将能被整除的数从A[]中剔除;
/*输出A[ ]中所有没有被剔除的数*/ for (i = 2; i <= 100; i++)
若A[i]没有被剔除,则输出之
- - - - - - - 4
}
5.1 结构化程序设计
自顶向下、逐步求精的方法的优点
(1) 自顶向下、逐步求精方法符合人们解决复杂问题的普遍 规律。可提高软件开发的成功率和生产率。 (2) 用先全局后局部,先整体后细节,先抽象后具体的逐步 求精的过程开发出来的程序具有清晰的层次结构,因此程 序容易阅读和理解。 (3) 程序自顶向下、逐步细化,分解成树形结构。 在同一 层的结点上做细化工作,相互之间没有关系,因此它们之 间的细化工作相互独立。在任何一步发生错误,一般只影 响它下层的结点,同一层的其他结点不受影响。
构化的。
5.1 结构化程序设计
• 结构程序设计的主要原则
(1)使用语言中的顺序、选择、重复等有限的基本控 制结构表示程序逻辑。 (2)选用的控制结构只准许有一个入口和一个出口。 (3)程序语句组成容易识别的块(Block),每块只 有一个入口和一个出口。 (4)复杂结构应该用基本控制结构进行组合嵌套来实 现。 (5)语言中没有的控制结构,可用一段等价的程序段 模拟, 但要求该程序段在整个系统中应前后一致。
• 软件工程的观点
(1) 详细设计应能直接地容易地翻译成代码程序。 (2) 源程序应具有可移植性。 (3) 编译程序应具有较高的效率。 (4) 尽可能应用代码生成的自动工具。 (5) 可维护性。
5.3 程序设计语言
• 程序设计语言的分类
(1)
(2) (3)
从软件工程的角度,根据程序设计语言发展的 历程,可以将程序设计语言大致分为4类。 从属于机器的语言——第一代语言 汇编语言——第二代语言 高级程序设计语言——第三代语言 从20世纪50年代就开始出现,它们的特点是用途 广泛。典型的高级程序设计语言有ALGOL、 FORTRAN、COBOL、BASIC、PASCAL、C、C ++、 Lisp、PROLOG、Ada等。
5.2 过程设计的工具
• 程序流程图
程序流程图也称为程序框图,是软件开发者最熟 悉的算法表达工具。 早期的流程图也存在一些缺点。特别是表示程序 控制流程的箭头,使用的灵活性极大,程序员可 以不受任何约束,随意转移控制,这将不符合结 构化程序设计的思想。 为使用流程图描述结构化程序,必须对流程图加 以限制。
5.2 过程设计的工具
• 伪代码
伪代码是一种介于自然语言和形式化语言之间的 半形式化语言,是一种用于描述功能模块的算法 设计和加工细节的语言,也称为程序设计语言 (Program Design Language,PDL)。 伪码的语法规则分为“外语法”和“内语法”。 外语法应当符合一般程序设计语言常用语句的语 法规则; 内语法可以用英语中一些简单的句子、短语和通 用的数学符号来描述程序应执行的功能。
5.1 结构化程序设计
• 自顶向下、逐步细化的设计过程
在概要设计阶段,我们已经采用自顶向下、逐步
细化的方法,把复杂问题的解法分解和细化成了
由许多功能模块组成的层次结构的软件系统。
在详细设计和编码阶段,我们还应当采取自顶向 下、逐步求精的方法,把模块的功能逐步分解, 细化为一系列具体的步骤,进而翻译成一系列用
5.1 结构化程序设计
• 结构程序设计的主要原则
(6) 严格控制GOTO语句,仅在下列情形才可使用: 用非结构化的程序设计语言去实现结构化的构 造。 若不使用GOTO语句就会使程序功能模糊。 在某种可以改善而不是损害程序可读性的情况 下。例如,在查找结束时,文件访问结束时, 出现错误情况要从循环中转出时,使用布尔变 量和条件结构来实现就不如用GOTO语句来得简 洁易懂。
第2部分 结构化软件开发方法
第5章 详细设计与编码
5.1 结构化程序设计
• 由于软件开发和维护中存在的一系列严重 问题,于20世纪60年代爆发了软件危机。 • 为了克服软件危机,引发了程序设计的一 场革命,诞生了结构化程序设计方法。
5.1 结构化程序设计
• 结构化程序设计的概念与原则
最早由E. W. Dijkstra提出;建议从高级语言中取
块组成的层次结构; 二是将每个模块的功能逐步分解细化为一系列的 处理。
5.1 结构化程序设计
• 自顶向下、逐步细化的设计过程
在处理较大的复杂任务时,常采取“模块化”的
方法,即在程序设计时不是将全部内容都放在同
一个模块中,而是分成若干个模块,每个模块实 现一个功能。
模块分解完成后,下一步的任务就是将每个模块 的功能逐步分解细化为一系列的处理。
• PAD图的基本控制结构
5.2 过程设计的工具
• PAD图的实例
5.2 过程设计的工具
• PAD的扩充控制结构
5.2 过程设计的工具
• PAD的优点 使用PAD符号所设计出来的程序必然是结构化程序。 PAD图描绘程序结构清晰,图中竖线的总条数就是 程序的层次数。 用PAD图表现程序逻辑易读、易懂、易记。 容易将PAD图自动转换为高级语言源程序。 PAD图既可以表示程序逻辑,也可用于描绘数据结 构。 PAD图的符号支持自顶向下、逐步求精方法的使用。
5.2 过程设计的工具
• N-S图的扩展表示
5.2 过程设计的工具
• PAD图
PAD(problem analysis diagram )是日本日立公 司提出,由程序流程图演化来的,用结构化程序 设计思想表现程序逻辑结构的图形工具。 PAD也设臵了5种基本控制结构的图式,并允许递 归使用。