收藏 分享(赏)

教学与管理平台1.2.ppt

上传人:hwpkd79526 文档编号:7625326 上传时间:2019-05-22 格式:PPT 页数:84 大小:821.50KB
下载 相关 举报
教学与管理平台1.2.ppt_第1页
第1页 / 共84页
教学与管理平台1.2.ppt_第2页
第2页 / 共84页
教学与管理平台1.2.ppt_第3页
第3页 / 共84页
教学与管理平台1.2.ppt_第4页
第4页 / 共84页
教学与管理平台1.2.ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

1、软件工程导论,教育科学学院,第一章 软件危机和软件工程(3),软件危机的表现开发成本难以控制,进度不可预计;软件系统的质量和可靠性很差,难以满意;软件文档相当缺乏,软件系统不可维护;软件开发生产率很低,软件产品供不应求。软件产品成本十分昂贵。,软件危机产生的原因 软件本身的特点: - 软件是一种逻辑实体,而不是具体的物理实体,具有高度的抽象性;- 软件是一个逻辑上复杂而规模上庞大的系统,涉及技术、管理等多方面的问题;- 软件的生产方式与硬件明显不同:产品的质量控制在设计和制造阶段的不同;产品的生产方式不同;设计和制造阶段的资金和人力投入、 技术复杂度不同;- 软件的运行和维护阶段,没有传统意义

2、上的机械磨损、老化问题。- 软件与硬件有关,对软件有可移植性的要求。- 软件工作涉及许多社会因素。 对软件开发与维护存在许多错误认识和做法:忽视软件需求分析的重要性;对软件与程序的概念不清;轻视软件维护。 软件开发与维护的方法不正确:对系统需求没有清楚和准确的认识就进入开发阶段,忽视对软件开发过程的管理;,1.1 软件危机,磨合调整,磨损用坏,t,失效率,硬、软件产品失效率曲线,软件的定义(Boehm):软件是程序以及开发、使用和维护程序需要的所有文档。,早,中,晚,引入同一变动付出的代价随时间变化的趋势,改正一个问题的估计费用(美元),改正一个问题的估计工作量(人天),20,200,1000

3、,2000,0.05,0.5,2.5,5.0,RA,SD,DD,CD,IT,ST,RT,Bell 实验室统计结果(US),软件产品需要分阶段的定义、设计和开发,严格的产品质量控制,完整的文档记录。,50,60,70,80,90,硬件,软件,解决软件危机的途径将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的 工程项目。 研究和推广成功的软件开发技术和方法。开发和使用好的软件工具。 基本概念: 软件生命周期:软件所经历的定义、开发、使用和维护直到废弃所经历的时期。程序设计环境:源程序编辑,编译或解释,链接,调试和运行工具的集合。软件工程环境:软件定义,设计和实现,测试和维护等各个

4、阶段所使用的软件工具的集合。,1.2 软件工程,软件工程的基本原理 用分阶段的生命周期计划严格管理6类计划 项目概要计划,里程碑计划,项目控制计划,产品控制计划,验证计划,运行维护计划。 坚持进行阶段评审1)经验数据说明,大部分错误是在编码之前造成的,在整个软件设计错误中,设计错误占63%,而编码错误占37%。2)错误发现和改正得越晚,所需付出的代价就越高。 实行严格的产品控制主要实行基准配置管理。软件配置成分: 软件开发各个阶段产生的文档和代码。基准配置: 经过评审后的软件配置成分。 采用现代程序设计技术 提高开发和维护的效率,如结构化分析SA和结构化设计SD技术。 结果应能清楚地审查 开发

5、小组的人员应少而精1)软件开发的进度并非与参与开发人员的数量成正比,有时恰恰相反。2)软件产品的质量绝对与开发人员的素质相关。 承认不断改进软件工程实践的必要性,1.2 软件工程(续1),2. 软件工程的传统途径生命周期方法学生命周期方法学的基本内容从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。生命周期方法学的应用方法从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发;前一个阶段任务的完成是后一个阶段工作的前提和基础,而后一个阶段任务通常是使前一阶段提出的解法更进一步的具体化,加进了更多的实现细

6、节。阶段过渡方法每一个阶段的开始和结束都有严格标准,前一阶段结束的标准是后一阶段工作开始的标准。 技术审查和管理复审。基本概念 文档及其作用。生命周期各阶段的基本任务问题定义可行性研究 需求分析 总体设计(概要设计) 详细设计 编码和单元测试 综合测试 软件维护。,1.2 软件工程(续2),4. 瀑布模型,问题定义,特点:1) 阶段间具有顺序性和依赖性2) 推迟实现的观点3) 质量保证的观点。,可行性研究,需求分析,总体设计,详细设计,编码与单元测试,综合测试,软件维护,软件定义时期,软件开发时期,软件维护时期,1.2 软件工程(续3生命周期各阶段的基本任务),问题定义,可行性研究,需求分析,

7、总体设计,详细设计,编码与单元测试,综合测试,软件维护,要解决的问题是什么?,问题性质、工程目标和规模的报告,分析员:实际用户+负责人,是否有解决办法?,分析员,高层逻辑模型,准确和具体的工程规模和目标,成本/效益分析等可行性报告,为了解决的问题,目标系统必须做什么?准确确定系统的功能,系统的逻辑模型 (数据流图+数据字典+简要算法),如何解决这些问题,模块划分软件结构,如何具体地实现系统:每个模块的流程图 (程序的详细规格说明),通过各种类型的测试,使软件达到预定的要求,写出正确的容易理解和容易维护的程序模块,通过各种必要的维护活动使系统持久地满足用户的需要,1.3 技术审查和管理复审,必要

8、性 管理复审和技术复审 错误传播模型,原始要求,正确的规格说明 错误的规格说明,正确的设计 错误的设计 对错误说明的设计,正确编码 错误编码 对错误设计的编码 对错误说明的编码,正确功能 可改正的错误 不可改正的错误 潜伏的错误,需求分析,设计,编码,测试,错误的扇形传播模型,第二章 可行性研究,2.1 可行性研究的任务,用最小的代价在尽可能短的时间内确定问题是否能够解决。,问题定义,可行性研究,问题定义 正 确 ?,问题定义阶段,审查,系 统 的逻辑模型,技术可行性,经济可行性,操作可行性,实 际 的物理系统,否,是,系统实现方案若干,可行性研究需要的时间长短取决于工程的规模,一般来说,其成

9、本只能占预期的工程总成本的5%10%.,可行性研究的结论,可行性研究阶段任务(示意图),2.2 可行性研究的步骤,复查系统的规模和目标,研究现正在 使用的系统,新系统的高层逻辑模型,重新定义问题,导出和评价 供选择的解法,推荐行动方针,草拟开发计划,书写文档提交审查,用户,分析员,是否符合系统目标,逻辑模型表达了系统分析员对新系统必须作什么工作、完成什么任务的理解.,1. 是否继续该工程的开发的建议2. 所选择解决方案的解法的说明3. 比较仔细的成本/效益分析,2.2 可行性研究的步骤(续),进厂载重汽车进厂后至称重计量点称出货物毛重。计量人员读出称重仪表上的重量指示,数据 ,开具相应的流 转

10、单 (货物、毛重、车号、收发货单位名称等的凭据 )。货主持此流转单将货物送到接收单位 ,验收合格后签章以示有效 ,卸空后空车返回称重计量点称出皮重 ,计量人员。计算出净重以后收回流转单 ,出具计量单作为正式结帐凭据 ,货主即可开车离厂。结帐付款一般在财务处定期核对进行。,研究目前正在使用的系统,这个计量流程存在以下问题 :1 该计量点日平均过车 (仅进厂 ) 1 50 0多辆 ,如果每车都要返回称重去皮 ,则称重工作量成倍增加 ,经常引起严重的交通堵塞问题。2 由于是用汽车衡称量 ,人工看表读数 ,手工验车开票 ,所以工作效率十分低 ,有时竟引起长达 1公里的堵车现象 ,难以满足日车流量的要求

11、。3 为了克服车流量大而引起的工作量繁重的问题 ,对一部分送货单位的车型、车号相对固定的车实行定期称量空车 ,这样虽然减少了一定的称重工作量 ,但易引起车型车号不符、皮重不实的问题 ,在管理上也有漏洞存在。,4 在验票、开票等过程中大量存在人工干预 ,往往会出现计量差错、人情重量、违法乱纪乃至犯罪的情况 ,给企业造成非常严重的经济损失。原系统的工作流程如图 2。,2.2 可行性研究的步骤(续),系统要求,自动称量,提高工作效率;自动除皮;自动去杂和去水;数据自动汇总;任意点均可称量;,2.2 可行性研究的步骤(续),财务处,计量点,整个称重点采用两台汽车衡、分布在公路两侧 ,物理上将进厂和出厂

12、的车流分开 ,实行一侧称重 ,而另一侧回皮。实现称重过程微机全过程自动化处理(免除人工操作 ) ,保证称重数据的客观公正和有效准确性 ,称重重量 ,车号等数据自动存储 ,实现多个称重点按权限共享和引用。能对称重 ,计量数据的物资品种 ,供货单位 ,接收单位 ,供货车号均可分工作班次 ,日 ,旬 ,月进行分类查询和统计处理。一方面进一步减轻工作人员的负担 ,另一方面也使管理人员时时可掌握各种有关数据。如果一侧称重点出现故障 ,另一侧称重点也可用微机称重和计量 ,进行以上工作。可以随时将计量数据转发到计控处管理机 ,进入企业管理计算机网。,技术问题称量自动化的程度:车号识别,杂质处理数据通信方式:

13、有线,无线开票处理:,2.2 可行性研究的步骤(续),2.3 系统流程图,系统流程图:描绘物理系统的工具,其基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达的是信息在系统各部件之间流动的情况。,常用符号,处理,输入/输出,连接,换页连接,数据流,文档,磁带,联机存储,磁盘,显示,人工输入,人工操作,2. 例子,事务,库存清单程序,定货信息,报告生成程序,定货报告,某装配厂有一座存放零件的仓库,仓库中现有各种零件的数量和每种零件的库存临界值等数据存放在库存清单主文件中。当仓库中零件数量有变化时,应及时修改库存清单主文件,如果哪种零件的库存量少于

14、它的库存量临界值,则应该报告给采购部门以便定货,规定每天向采购部门送一次定货报告。,3. 分层(略),库存清单主文件,(复杂系统),2.4 数据流图,数据流程图:描绘系统的逻辑模型,图中没有具体的物理元素,只是描绘信息在系统中流动和处理的情况。设计数据流图只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体的实现这些功能。,1. 符号(四种基本符号),数据的源点或终点,数据处理,数据存储,数据流,一些附加符号(略),仓 库 管理员,定货 系统,采购员,D1: 库存清单,仓 库 管理员,1 处理 事务,2 产生 报表,采购员,D2: 定货信息,2. 例子,基本系统模型,功能级数据流图,事务

15、,定货报表,事务,定货报表,定货信息,定货信息,库存清单,2.4 数据流图(续1),仓 库 管理员,1.1 接收 事务,1.2 更新库 存清单,1.3 处理 定货,2 产生 报表,采购员,D1: 库存清单,D2: 定货信息,事务,事务,库存信息,定货信息,定货信息,定货报表,3. 命名,为数据流(或数据存储)命名为处理命名,4. 用途,交流信息的工具分析和设计的工具进一步设计的依据,库存清单,2.5 数据字典,数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合,1. 数据字典的内容,数据流数据流分量数据存储处理,数据处理:用 IPO图或PDL描述比较方便直观。 数据元

16、素的别名:,2. 定义数据的方法,由数据元素组成数据的方式的三种基本类型 顺序 +: 以确定次序连接两个或多个分量 a+b+c 选择 |, : 从两个或多个可能的元素中选取一个 a | b | c 重复 : 把指定的分量重复零次或多次 a 可选:一个分量是可有可无的(重复零次或一次), (a),3. 例子,定货报表=零件编号+零件名称+定货数量+目前价格+主要供应者+次要供应者 零件编号=8字符8 定货数量=1数字5,需求分析示例教材购销管理系统(1),问题描述:学校教材科根据业务的需要,建立一个学校教材购销管理系统,提高教材采购、销售和信息管理的效率。,学生,张秘书,购书申请,王会计,李出纳

17、,赵保管,学生,购书证明,购书申请,购书申请,书,学生,审 查有效性,购书单,开发票,开领书单,发书,学生,有 效购书单,发票,领书单,书,学生,审查并开发票,购书单,开领书单,发书,学生,发票,领书单,书,2)去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型,1)通过对现实环境的调查研究,获得当前系统的具体模型,3)分析当前系统与目标系统的差别,建立目标系统的逻辑模型。,需求分析示例教材购销管理系统(2),学生,审查并开发票,购书单,开领书单,学生,发票,领书单,无效书单,4)对目标系统进行补充和完善,并写出完整的需求说明。,学生,1 审查并开发票,购书单,2 开领书单,学生,发票,领书

18、单,无效书单,各班学生用书表,教材存量表,5)对需求说明进行复审,直到确认文档齐全,并且符合用户的全部需求为止,需求分析示例教材购销管理系统(3),学生,教材购销管理系统,书 库保管员,1. 教材购销管理系统的顶层DFD,学生,书 库 保管员,2. 第二层DFD图教材购销系统,购书单,领书单,缺书单,进书通知,购书单,领书单,1 销 售,2 采购,进书通知,F2: 缺书登记表,F1: 教材存量表,缺书单,进书通知,需求分析示例教材购销管理系统(4),1.1 审 查有效性,1.2 开发票,有效 购书单,1.3 领书并 开领书单,发票,1.4 登记缺书,1.5 补售教材,F2: 缺书登记表,学生,

19、学生,无效书单,领书单,领书单,F3: 各班学生用书表,F4: 售书登记表,补售书单,暂缺书单,采购,3. 第三层DFD图销售子系统,F1: 教材存量表,需求分析示例教材购销管理系统(5),2.3 修改教材库存和待购量,2.1 按 书 号 汇总缺书,F2: 缺书登记表,销售 子系统,书库 保管员,F1: 教材存量表,进书通知,3. 第三层DFD图采购子系统,2.2 按出版社 统计缺书,F5: 待购教材表,F6: 教材一览表,进书通知,需求分析示例教材购销管理系统(6),数据字典(Data Directory-DD) 领书单 = 学院+专业+班级+学号+姓名+书号+书名+数量+日期 有效购书单

20、= 领书单 发票= 学号+姓名+书号+书名+单价+数量+总价+书费合计 教材存量表 = 书号+单价+数量 暂缺书单 = 学号+姓名+ 书号+数量 补售书单 = 学号+姓名+ 书号+数量,2.5 成本效益分析,1. 成本估计,代码行技术 。自动估计成本技术任务分解技术,典型环境下各个开发阶段需要使用的人力的百分比,第三章 需求分析,1. 需求分析的任务,需求分析是软件定义的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。对目标系统提出完整、准确、清晰、具体的要求。确定对系统的综合要求(四个方面)系统功能要求 系统性能要求响应时间,所需存储容量及后援存储,安全性和简便性。运行要

21、求-系统运行环境将来可能提出的要求分析系统的数据要求导出系统的逻辑模型(数据流图+数据字典+主要的处理算法)修正系统开发计划开发原型系统,2. 分析过程,结构化分析方法(SA方法)-面向数据流自顶向下逐步求精进行需求分析的方法。,沿数据流图回朔,用户复查,细化数据流图,修正开发计划,书写文档,审 查和复审,3. 概念模型和规范化,用户的数据要求-需要哪些数据,数据之间有哪些联系,数据本身有哪些性质,数据的结构 等)。用户的处理要求-对数据进行哪些处理,每个处理的逻辑功能。概念性模型(信息模型)-一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。表示概念性数据模型的最常用方法是实体-联

22、系方法,采用用 ER图的方式,这种表示又称为ER模型。,ER模型,实体: 客观世界中存在的且可区分的事物。联系: 客观事物之间的联系(三类-1:1,1:N,M:N)属性: 实体或联系所具有的性质。,教师,姓名,性别,职称,职务,教师号,教,1,课程,N,课程号,课名,学时,学分,学,M,学生,N,学号,姓名,性别,系,年级,成绩,范式,通常用范式定义消除数据的冗余度(略),4. 图形工具,层次方框图: 用树形结构的一系列多层次的矩形框描绘数据的层次结构。,产 品,硬 件,软 件,服 务,处理机,存储器,外部设备,系统软件,应用软件,软件服务,硬件维修,培训,操作系统,编译程序,软件工具,层次方

23、框图的一个例子,注意:层次方框图即可以表示数据的层次结构,也可以表示程序的层次结构,4. 图形工具(续),Warnier 图: 用树形结构描绘数据的层次结构。,软件 产品,系统软件,操作系统(P1),编译程序 (P2),软件工具,编辑程序(P3),测试驱动程序(P4),设计辅助程序(P5),应用软件,4. 图形工具(续),IPO 图: 输入/处理/输出图的简称-IBM。,旧的主文件,事务文件,1、校验主记录,2、校验事务记录,3、更新主记录,1、校验主记录,2、有效的事务记录,3、更新后的主文件,改进的IPO图的形式(P47),5. 验证软件需求,从哪几个方面验证软件需求的正确性(四个方面),

24、一致性: 任何一条需求不能和其他需求互相矛盾。 完整性: 规格说明书应该包括用户需要的每一个功能和性能。 现实性: 指定的需求是用现有的硬件、软件技术可以实现的。 有效性: 需求是正确有效的,确实能解决用户面对的问题。,验证软件需求的方法,一致性:人工审查-形式化描述软件需求,软件工具自动验证。 现实性: 参考以往的开发经验,分析,仿真或模拟 完整性和一致性:原型系统,第四章 总体设计,0 总体设计的两项任务:,划分出组成系统的物理元素-程序、文件、数据库、人工过程和文档设计软件的结构-确定每个程序的模块组成及模块之间的相互关系。,1 总体设计的过程(两个主要阶段):,系统设计:确定系统的具体

25、实现方案。结构设计:确定软件结构。,设想供选择的方案,选 取 合理的方案,推荐最佳方案,功能分解,设计软件结构,数据库设 计,制订测试计划,书写文档,数据流图,系统流程图组成系统的物理元素清单成本/效益分析实现系统的进度计划,系统说明用户手册测试计划详细的实现计划数据库设计结果,审查和复 审,2 软件设计的概念和原理,模块是数据说明、可执行语句等程序对象的说明。,模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的功能。,C(P1+P2) C(P1)+C(P2) E(P1+P2) E(P1)+E(P2),成本,模块数目,成本/模

26、块,接口成本,最小成本区,抽象信息隐蔽和局部化模块独立-每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单。,耦合:一个软件结构内不同模块之间互连程度的度量。 数据耦合:模块之间通过参数交换数据信息。 控制耦合:模块之间传递的参数含有控制信息。 公共环境耦合:两个或多个模块通过一个公共数据环境相互作用。 内容耦合:。,设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合,完全不用内容耦合。,模块化和软件成本,数据耦合,控制耦合,公共环境耦合,内容耦合,低,高,2 软件设计的概念和原理 - 耦合,非直接耦合 数据耦合 特征耦合 控制耦合 外部耦合 公共耦合 内容耦合,弱耦合,

27、中耦合,较强耦合,强耦合,模块1,模块2,模块3,模块4,数据耦合 通过简单变量交换数据,特征耦合 通过数据结构交换数据,非直接耦合 模块之间没有信息传递,模块A,模块B,模块C,模块D,模块L,模块N,全局性数据结构 公共耦合,Flag=1?,S1,S2,模块1,控制耦合 模块之间传递的是控制信息,T,F,全 局 性简单变量 外部耦合,模块A,模块B,内容耦合访问其它模块的内部数据直接跳到其他模块内部执行,2 软件设计的概念和原理(续1),内聚:一个模块内各个元素彼此结合的紧密程度。 偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。 逻辑内聚:若干个逻辑功能类似的任务组成一个

28、模块。 时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。,低内聚,中内聚,高内聚,过程内聚:模块内的处理元素是相关的,且必须以特定次序执行。 通信内聚:模块中所有元素都使用同一个输入数据,和/或产生同一个输出数据。,顺序内聚:模块中所有处理元素和同一个功能密切相关,且这些处理必须顺序执行。 功能内聚:所有处理元素属于一个整体,完成一个单一的功能。,模块A,模块B,模块C,S1; S2;,模块A,模块B,模块C,模块A,模块B,模块C,模块D,2 软件设计的概念和原理(续2),改进软件结构提高模块独立性模块规模应该适中深度、宽度、扇入、扇出都应适当模块的作用域应该在控制域之内力争降低模

29、块接口的复杂程度设计单入口单出口的模块模块的功能应该可以预测,3 启发式规则,4 图形工具,层次图和HIPO图 层次图用来描述软件结构,层次图+IPO图= HIPO图,正文加工系统,输入,输出,编辑,加标题,存储,检索,编目录,格式化,添加,删除,插入,修改,合并,列表,结构图 方框之间的箭头表示模块的调用关系,带注释的箭头表示模块间来回传递的信息:空心圆数据,实心圆控制信息。,结构图还可以表示模块的选择调用或循环调用 参见:P64,5 面向数据流的设计方法,概念 1) 变换流 2) 事务流 3) 设计过程,时间,输入流,输出流,变换流,事务,外部表示,内部表示,信息,T,事务中心,活动通路,

30、事务中心 T 完成下述任务: 接受输入数据(事务) 分析每个事务以确定它的类型 根据事务类型选取一条活动通路,5 面向数据流的设计方法(续),精化数据流图,流类型,区分事务中心和数据接收通路,映射成事务结构,区分输入和输出分支,映射成变换结构,用启发式设计规则精化软件结构,导出接口描述和全程数据结构,复查,详细设计,事务分析,变换分析,5 面向数据流的设计方法(续),变换分析: 汽车数字仪表板功能: 1) 通过A/D 转换实现传感器和微处理器接口,2) 在发光二极管面板上显示数据,3) 指示每小时英里数(mph),行驶的里程,每加伦油行驶的英里数(mpg)等等。4) 指示加速或减速;5) 超速

31、警告:如果车速超过55英里/小时,则发出超速警告铃声。,A/D,转数计数器,流量传感器,微处理机,里程表,车速表,油效表,油管系统,加速/减速指示,超速报警,5 面向数据流的设计方法(续),读旋转信号,收集和求平均,转换成转/分( rpm),计算里程,确定加速 / 减速,产生加速/减速显示,产生里程显示,计算mph和超速值,计算燃料消耗,发出铃声,产生mph显示,产生 mpg显示,读和校核,计算gph,旋转信号,信号/秒 SPS,SPS,SPS,rpm,rpm,箭头指示,上箭头,水平线,下箭头,英里,超速值,显示,铃声,mph,mph,mpg,gph,燃料流,燃料流传感器信号,Mpg 显示,数

32、字仪表板 控 制,接受传感器 信 号,数据转换控制,驱动仪表 板,输入控制,变换控制,输入控制,5 面向数据流的设计方法(续),设计步骤:,复查基本系统模型,复查并精化数据流图,确定数据流图具有变换特性还是事务特性,确定输入流和输出流的边界,划分变换或事务中心,完成 “第一级分解”,Cm,Ca,Ct,Ce,第一级分解的方法,5 面向数据流的设计方法(续),A,D,B,C,Cm,Ca,C,B,D,A,接受传感器 信 号,转换成rpm,收集SPS,读旋转信号,计算gph,读燃料流,数字仪表板 控 制,确 定加/减速,计算mph,计算gpg,计算里程,驱动仪表板,加速/减速显示,显示mpg,显示mp

33、h,显示里程,发出铃声,发光二极管显示,5 面向数据流的设计方法(续),数字仪表板 控 制,接受传感器 信 号,转换成rpm,读旋转信号,计算gph,读燃料流,数字仪表板 控 制,确 定加/减速,计算mph,计算gpg,计算里程,驱动仪表板,加速/减速显示,显示mpg,显示mph,显示里程,发出铃声,发光二极管显示,数字仪表板软件系统经过调整后的结构图,注意:红色模块的位置有所调整,5 面向数据流的设计方法(续),事务分析,4,3,2,总 控,接收通路,C通路,B通路,A通路,调 度,A_CTL,1,4,2+1,3,2,1,B_CTL,C_CTL,设计优化 先使系统工作起来,然后使它快起来。,

34、数据流图,软件结构,第五章 详细设计,详细设计阶段的目标: 确定应该怎样具体地实现所要求的系统。 精确地描述整个目标系统,从而在编码阶段可以把这个描述翻译成用某种程序设计语言书写的程序。,结构程序设计E. W. Dijstra与Goto语句,1966,Bohm 和 Jacobini 证明了只要顺序、选择、循环这三种基本结构就能实现任何单入口单出口的程序。,B,exp,A,A,B,exp,A,A,exp,T,F,T,T,F,F,顺序结构,选择结构,循环结构,1)“当”型循环,2)直到型循环,结构程序设计:一种程序设计技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。,1 结构程序设

35、计,经典的结构程序设计:顺序,选择,当型循环扩展的结构程序设计:顺序,选择+多分支,当型循环+直到型循环修正的结构程序设计:顺序,选择+多分支,当型循环+直到型循环,break结构,详细设计的工具 程序流程图,开始或停止,准备,选择,多分支选择,注释,预先定义的处理,子程序,循环下界,循环上界,处理,控制流,2 详细设计的工具-盒图(N_S图),S1,S2,S3,条件,F,T,Else 部分,Then 部分,Case 条件,值1,值2,。,值n,Case 1 部分,Case 2 部分,Case n 部分,循环条件,Do-While部分,循环条件,Do-Until部分,A,特点:1)功能域(既一

36、个特定控制结构的作用域)明确2)不可能任意转移控制3)很容易确定局部和全程数据的作用域4)很容易表现嵌套关系,也可以表示模块的层次结构,Nassi & Shneiderman,2 详细设计的工具 - PAD 图,P1,P2,P1,P2,条件C,Pn,P2,P1,WHILE C,P,UNTIL C,P,def,顺序,选择,Case 型多分支选择,当型循环,直到型循环,语句标号,定义,2 详细设计的工具 - PAD 图,P1,P2,P3,P4,C,P5,P2,def,P6,P3,P8,C,Until C3,UNTIL C2,P9,P10,PAD图的主要优点: 使用PAD符号设计的程序必然是结构化的

37、程序. PAD图所描绘的程序结构十分清晰. 用PAD图表现程序逻辑,易读,易记,易懂. 容易将PAD图 转换成高级语言源程序.可用软件工具实现自动转换. 即可以表示程序逻辑,也可以描绘数据结构. 支持自顶向下,逐步求精方法的使用.,2 详细设计的工具 - 判定表,程序流程图、N-S图、PAD图或过程设计语言(PDL)都不易清楚的描述含有多重嵌套的条件选择。判定表可以清晰的表示复杂的条件组合与其对应的处理之间的关系。,例子 假设某航空公司规定,乘客可以免费托运重量不超过30公斤的行李。当行李重量超过30公斤时,对头等舱的国内乘客超重部分每公斤收费 4 元,对其它舱的国内 乘客超重部分每公斤收费

38、6 元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定表来表示与上述每种条件组合相对应的动作。,所有条件,条件组合矩阵,与每种条件组合 所对应的动作表,所有可能的 动作列表,国内乘客,头 等 舱,残疾乘客,行李30kg,免费,(W-30)*2,(W-30)*3,(W-30)*4,(W-30)*6,(W-30)*8,(W-30)*2,T,T,T,F,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,2 详细设计的工具 - 判定树,行李费 算 法,行李重量W30,国内乘客,外国乘客

39、,头等舱,其它舱,残疾乘客 - (W-30)*2,正常乘客 - (W-30)*4,残疾乘客 - (W-30)*3,正常乘客 - (W-30)*6,头等舱,其它舱,残疾乘客 - (W-30)*4,正常乘客 - (W-30)*8,残疾乘客 - (W-30)*6,正常乘客 - (W-30)*12,行李重量W30,免费,5 详细设计的工具 - 程序复杂度的定量度量,利用软件设计的基本原理和概念可以定性的衡量软件模块的质量。但定量的度量 程序复杂程度的方法很有价值:估算程序中软件故障的数量;估算软件开发的工作量;比较两个不同的设计或两个不同算法的友劣;作为模块规模的精确上限。 程序定量度量方法是一个有待

40、进一步研究的重要领域。,1)McCabe 方法,程序图 把程序流程图中每个处理符号都退化成一个点,原来连接不同处理符号的箭头变成连接不同点的有向弧,这样得到的有向图就称为程序图。程序图仅仅描述程序内部的控制流程,完全不表现对数据的具体操作以及分 支或循环的具体条件。入口点:程序图中开始点后面的那个节点。出口点:程序图中停止点前面的那个节点。用McCabe方法度量得出的结果称为程序的环形复杂度。程序的环形复杂度 = 强连通图中线性无关的有向环的个数。,5 详细设计的工具 - 程序复杂度的定量度量,2)环形复杂度的计算方法在一个强连通的有向图中,线性无关环的个数由以下公式确定:V(G) = m n

41、 + p其中: V(G) - 有向图 G 中的环数。m - 有向图 G 中的弧数。n - 有向图 G 中的节点数。p -有向图 G 中的分离部分的数目。(对于正常的程序,p = 1),一般来说,由于程序图不是强连通的,要直接应用以上结论到程序图中还不行, 因此要对程序图进行扩展,从其出口点到入口点增画一条虚弧,则原程序图必然成为 强连通图。这样就可以应用以上公式来计算环形复杂度。,3) 环形复杂度的用途:程序的环形复杂度与程序控制流的复杂程度,也就是与程序结构的复杂程度 有关。程序内分支数或循环个数增加时,环形复杂度就增加,因此它是对测试难 度的一种度量,也能对软件最终的可靠性给出某种预测。,

42、McCabe 发现:环形复杂度高的程序往往是最困难、最容易出问题的程序。实践表明: 模块规模以 V( G) 10 为宜。也就是说, V( G)= 10 是模块 规模的一个更科学更精确的上限。,5 详细设计的工具 - 程序复杂度的定量度量,开始,K=0 L=0 TOTAL=0,输入A,Do while TOTAL 1000 and A 0,A0,TOTAL=TOTAL+A,K=K+1,输入A,L=L+1,输出K,L, TOTAL,停止,a,b,c,d,e,f,g,h,i,j,k,a,b,c,d,e,f,g,h,j,i,k,V(G)=13-11+1=3,13 条弧 11 个节点 1 个独立部分,第

43、六章 编码,程序设计语言: 人与计算机通信的基本工具,指挥计算机按人的意志工作。19461954: 机器语言和汇编语言,与计算机硬件操作一一对应。1954: 第一个高级语言 FORTRAN 语言。高级语言的种类: 基础语言-Fortran, Basic, Cobol,Algol结构化语言-Pl/1, Pascal, C, Ada专用语言-特殊应用如 LISP, Prolog.程序设计语言的特点: 名字说明: 类型说明: 初始化: 程序对象(语句,存储,过程)的局部性: 程序模块: 循环控制结构: 分支选择结构: 异常处理: 独立编译: 选择程序设计语言的原则:系统用户的要求;可以使用的编译程序

44、;可以使用的软件工具;工程规模;程序员的知识;软件可移植要求;软件的应用领域。,在这个阶段的任务是: 把软件设计的结果翻译成计算机可以“理解”的形式用计算机语言表示的程序。,程序设计途径 写程序的风格 程序内部的文档-恰当的意义明确的标识符,注解,程序的视觉组织(语句布局). 数据说明-次序标准化,归类化. 语句构造-每个语句的构造应该简单、直接和易于理解。一般不要为了节省纸张多个语句写在一行;避免复杂的条件测试; 减少对“非”条件的测试;避免大量使用循环嵌套和条件嵌套;利用括号使逻辑表达式或算术表达式的运算次序清晰直观。 输入/输出- 效率-程序运行时间、存储器效率、输入和输出的效率 。 程

45、序设计方法论 程序设计自动化-三种途径(用户需求形式化精确定义,组件技术,范型) 程序设计工具- 编译程序 代码管理系统,第七章 测 试,基本概念 软件测试的目标或定义(G.Myers):1)测试是为了发现程序中的错误而执行程序的过程。2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。3)成功的测试是发现了至今为止尚未发现的错误的测试。 黑盒测试和白盒测试 黑盒测试:已经知道了软件产品应该具有的功能,通过测试来检验是否每个功能都能正常使用。这种测试方法又称功能测试。 白盒测试:知道软件产品内部的工作过程,通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。这种测试方法又称结构测试。 不论是每个功能或每个逻辑控制通路,如果对所有的情况都进行测试,这样的测试 成为穷尽测试。穷尽测试在一般情况下是实际不可行的。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报