《软件定义需求分析精品文稿.ppt》由会员分享,可在线阅读,更多相关《软件定义需求分析精品文稿.ppt(99页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件定义需求分析第1页,本讲稿共99页需求分析的需求分析的任务任务 1、确定对系统的综合要求、确定对系统的综合要求 1)系统功能要求)系统功能要求 2)系统性能要求)系统性能要求 3)运行要求)运行要求 4)将来可能提出的要求)将来可能提出的要求 2、分析系统的数据要求、分析系统的数据要求 数据结构表示数据元素之间的逻辑关系数据结构表示数据元素之间的逻辑关系3、导出系统的逻辑模型、导出系统的逻辑模型 导出系统的详细的逻辑模型,通常用数据流导出系统的详细的逻辑模型,通常用数据流 图、图、数据字典和主要的处理算法描述这个逻辑模型。数据字典和主要的处理算法描述这个逻辑模型。4、修正系统开发计划、修正
2、系统开发计划5、开发原型系统、开发原型系统第2页,本讲稿共99页需求分析的特点需求分析的特点 1、问题的复杂性。2、交流障碍 3、不完备性和不一致性 4、需求易变性 需求分析的原则需求分析的原则 1、必须能够表达相理解问题的数据域和功能域。2、可以把一个复杂问题按功能进行分解并可逐层细化3、建模第3页,本讲稿共99页需求分析的方法需求分析的方法1、功能分解方法2、结构化分析方法3、信息建模方法4、面向对象分析方法第4页,本讲稿共99页需求说明书的主要内容需求说明书的主要内容 (1)前言:说明项目的目的、范围,所用的术语的定义;用到的缩略语和缩写词;资料。(2)项目概述:产品的描述;产品的功能;
3、用户的特点,一般的约束等。(3)具体需求:说明每个功能的输入、处理和输出;外部接口需求,包括用户接口、软件接口、硬件接口相通信接口;性能需求;设计约束;共他需求,包括数据库、操作等第5页,本讲稿共99页第二节第二节 SA分析过程分析过程 结构化分析方法(简称SA方法)就是面向数据流自顶向下逐步求精进行需求分析的方法。1、沿数据流图回溯2、用户复查3、细化数据流图4、修正开发计划5、书写文档6、审查和复审第6页,本讲稿共99页需求分析示例教材购销管理系统(1)问题描述:学校教材科根据业务的需要,建立一个学校教材购销管理系统,提高教材采购、销售和信息管理的效率。学生张秘书购书申请王会计李出纳赵保管
4、学生购书证明购书申请购书申请书学生审 查有效性购书单开发票开领书单发书学生有 效购书单发票领书单书学生审查并开发票购书单开领书单发书学生发票领书单书2)去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型1)通过对现实环境的调查研究,获得当前系统的具体模型3)分析当前系统与目标系统的差别,建立目标系统的逻辑模型。第7页,本讲稿共99页需求分析示例教材购销管理系统(2)学生审查并开发票购书单开领书单学生发票领书单无效书单4)对目标系统进行补充和完善,并写出完整的需求说明。学生1 审查并开发票购书单2 开领书单学生发票领书单无效书单各班学生用书表教材存量表5)对需求说明进行复审,直到确认文档齐全,
5、并且符合用户的全部需求为止第8页,本讲稿共99页需求分析示例教材购销管理系统(3)学生学生教材购销教材购销管理系统管理系统书书 库库保管员保管员1.教材购销管理系统的顶层DFD学生学生书书 库库保管员保管员2.第二层DFD图教材购销系统购书单领书单缺书单进书通知购书单领书单1销 售2采购进书通知F2:缺书登记表F1:教材存量表缺书单进书通知第9页,本讲稿共99页需求分析示例教材购销管理系统(4)1.1 审 查有效性1.2 开发票有效 购书单1.3 领书并 开领书单发票1.4 登记缺书1.5 补售教材F2:缺书登记表学生学生无效书单领书单领书单F3:各班学生用书表F4:售书登记表 补售书单 暂缺
6、书单采购3.第三层DFD图销售子系统F1:教材存量表第10页,本讲稿共99页需求分析示例教材购销管理系统(5)2.3 修改教材库存和待购量2.1 按 书 号 汇总缺书F2:缺书登记表销售子系统书库保管员F1:教材存量表进书通知3.第三层DFD图采购子系统2.2 按出版社 统计缺书F5:待购教材表F6:教材一览表进书通知第11页,本讲稿共99页需求分析示例教材购销管理系统(6)数据字典(Data Directory-DD)领书单=学院+专业+班级+学号+姓名+书号+书名+数量+日期有效购书单=领书单发票=学号+姓名+书号+书名+单价+数量+总价+书费合计教材存量表=书号+单价+数量暂缺书单=学号
7、+姓名+书号+数量补售书单=学号+姓名+书号+数量第12页,本讲稿共99页第三节第三节 概念模型和规范化概念模型和规范化 用户的数据要求-需要哪些数据,数据之间有哪些联系,数据本身有哪些性质,数据的结构 等)。用户的处理要求-对数据进行哪些处理,每个处理的逻辑功能。概念性模型(信息模型)-一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。表示概念性数据模型的最常用方法是实体-联系方法,采用用 ER图的方式,这种表示又称为ER模型。ER模型 实体:客观世界中存在的且可区分的事物。联系:客观事物之间的联系(三类-1:1,1:N,M:N)属性:实体或联系所具有的性质。教师姓名性别职称职务教
8、师号教1课程N课程号课名学时学分学M学生N学号姓名性别系年级成绩 范式通常用范式定义消除数据的冗余度(略)第13页,本讲稿共99页ER关系图与数据库映射关系描述第14页,本讲稿共99页关系数据库关系数据库数据以2维表的形式进行表示,每个表的列表示字段、行表示数据库表的一个记录 Primary key(主键)(主键):字段的唯一标识字段的唯一标识wForeign key(外键)(外键):其它表的主键在该表的其它表的主键在该表的参考参考SQL(结构化查询语言):可以进行数据库表记录的操作.第15页,本讲稿共99页ER 与数据库映射与数据库映射E-R模型映射为数据库表:属性的映射w每个实体映射为一个
9、表每个实体映射为一个表w实体的每个属性映射为一个字段实体的每个属性映射为一个字段w每个实体的个体映射为数据库的一个记录每个实体的个体映射为数据库的一个记录wN:M关系映射为一个单独的表关系映射为一个单独的表w1:N关系利用外键进行映射关系利用外键进行映射第16页,本讲稿共99页例子:例子:ER 关系模型与数据库表的映射关系模型与数据库表的映射 ICitycityNameAirportairportCodeairportName*ServescityNameHoustonAlbanyMunichHamburgCity TablecityNameHoustonHoustonAlbanyMunich
10、HamburgServes TableairportCodeIAHHOUALBMUCHAMAirport TableairportCodeIAHHOUALBMUCHAMairportNameIntercontinentalHobbyAlbany CountyMunich AirportHamburg AirportPrimary KeyN:M(多对多关系):将关系映射为单个表Separate Table第17页,本讲稿共99页例子:例子:ER 关系模型与数据库表的映射关系模型与数据库表的映射 II 会议会议transactionID职员职员portfolioID.NportfolioID .P
11、ortfolio TabletransactionIDTransaction TableportfolioIDForeign Key1:N 或N:1关系:隐藏外键的处理1第18页,本讲稿共99页例子:例子:ER 关系模型与数据库表的映射关系模型与数据库表的映射 doordoorIDskyskyID.*doorIDTransaction TabledoorID1-To-1 关系门与钥匙关系第19页,本讲稿共99页 习题教师姓名性别职称职务教师号教1课程N课程号课名学时学分学M学生N学号姓名性别系年级成绩第20页,本讲稿共99页第四节第四节.图形工具图形工具 层次方框图:用树形结构的一系列多层次的
12、矩形框描绘数据的层次结构。产 品 硬 件 软 件 服 务 处理机 存储器外部设备系统软件应用软件软件服务硬件维修培训操作系统编译程序软件工具层次方框图的一个例子 注意:层次方框图即可以表示数据的层次结构,也可以表示程序的层次结构第21页,本讲稿共99页4.图形工具(续)Warnier Warnier 图图:用树形结构描绘数据的层次结构。软件 产品系统软件操作系统(P1)编译程序(P2)软件工具编辑程序(P3)测试驱动程序(P4)设计辅助程序(P5)应用软件第22页,本讲稿共99页4.图形工具(续)IPO 图:输入/处理/输出图的简称-IBM。旧的主文件事务文件1、校验主记录2、校验事务记录3、
13、更新主记录1、校验主记录2、有效的事务记录3、更新后的主文件改进的IPO图的形式(P47)第23页,本讲稿共99页5.验证软件需求 从哪几个方面验证软件需求的正确性(四个方面)一致性:任何一条需求不能和其他需求互相矛盾。完整性:规格说明书应该包括用户需要的每一个功能和性能。现实性:指定的需求是用现有的硬件、软件技术可以实现的。有效性:需求是正确有效的,确实能解决用户面对的问题。验证软件需求的方法一致性:人工审查-形式化描述软件需求,软件工具自动验证。现实性:参考以往的开发经验,分析,仿真或模拟完整性和一致性:原型系统第24页,本讲稿共99页第四章第四章 总体设计总体设计总体设计的基本目的基本目
14、的就是回答“概括地说,系统应该如何实现系统应该如何实现?”这个问题。总体设计总体设计又称为概要设计概要设计或初步设计初步设计,其任务:(1)划分出组成系统的物理元素划分出组成系统的物理元素-程序、文件、数据库、人程序、文件、数据库、人工过程和文档工过程和文档 通过这个阶段的工作将划分出组成系统的物理元素程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。(2)总体设计阶段的另一项重要任务是设计软件的结构)总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。第2
15、5页,本讲稿共99页1 总体设计的过程(两个主要阶段):系统设计:确定系统的具体实现方案。结构设计:确定软件结构。设想供选择的方案选 取 合理的方案推荐最佳方案功能分解设计软件结构数据库设 计制订测试计划书写文档数据流图 系统流程图 组成系统的物理元素清单 成本/效益分析 实现系统的进度计划 系统说明 用户手册 测试计划 详细的实现计划 数据库设计结果 审查和复 审第26页,本讲稿共99页2 软件设计的概念和原理模块是数据说明、可执行语句等程序对象的说明。(1)模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的功能。C(P1+
16、P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)成本模块数目成本/模块接口成本最小成本区(2)抽象(3)信息隐蔽和局部化 信息隐蔽原理信息隐蔽原理指出:使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。所谓局部化局部化是指把一些关系密切的软件元素物理地放得彼此靠近。模块化和软件成本第27页,本讲稿共99页耦合:一个软件结构内不同模块之间互连程度的度量,耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。数据耦合:模块之间通过参数交换数据信息。控制耦合:模块之间传递的参数含有控制信息。公共环境耦合:两个或多个模块通过一
17、个公共数据环境相互作用。内容耦合:如果出现下列情况之一,两个模块间就发生了内容耦(1)一个模块访问另一个模块的内部数据;2)一个模块不通过正常入口而转到另一个模块的内部;3)两个模块有一部分程序代码重叠4)一个模块有多个入口。设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合,完全不用内容耦合。数据耦合 控制耦合 公共环境耦合 内容耦合低高(4)模块独立-每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果,独立的优点:(1)有效的模块化的软件比较容易开发 (2)独立的模块比较容易测试和维护模块的独立程度两个定性
18、标准度量:内聚和耦合耦合衡量不同模块彼此间互相依赖的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。第28页,本讲稿共99页2 软件设计的概念和原理-耦合1.非直接耦合2.数据耦合3.特征耦合4.控制耦合5.外部耦合6.公共耦合7.内容耦合弱耦合中耦合较强耦合强耦合模块1模块2模块3模块4数据耦合通过简单变量交换数据特征耦合通过数据结构交换数据非直接耦合模块之间没有信息传递模块A模块B模块C模块D模块L模块N全局性数据结构公共耦合Flag=1?S1S2模块1控制耦合模块之间传递的是控制信息TF全 局 性简单变量外部耦合模块A 模块B内容耦合 访问其它模块的内部数据 直接跳到其他模块内
19、部执行第29页,本讲稿共99页2 软件设计的概念和原理(续1)内聚:一个模块内各个元素彼此结合的紧密程度。偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。逻辑内聚:若干个逻辑功能类似的任务组成一个模块。(如模板函数)时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。低内聚中内聚高内聚过程内聚:模块内的处理元素是相关的,且必须以特定次序执行。通信内聚:模块中所有元素都使用同一个输入数据,和/或产生同一个 输出数据。顺序内聚:模块中所有处理元素和同一个功能密切相关,且这些处理必 须顺序执行。功能内聚:所有处理元素属于一个整体,完成一个单一的功能。模块A模块B模块CS1;S2
20、;模块A模块B模块C模块A模块B模块C模块D第30页,本讲稿共99页2 软件设计的概念和原理(续2)改进软件结构提高模块独立性 模块规模应该适中 深度、宽度、扇入、扇出都应适当扇入扇入:一个模块的扇人表明有多少个上级模块直接调用它,扇入越大则共享该模块的上级模块数目越多。扇出扇出:扇出是一个模块直接控制(调用)的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块。模块的作用域应该在控制域之内模块的作用域作用域:为受该模块内一个判定影响的所有模块的集合。模块的控制域控制域:这个模块本身以及所有直接或间接从属于它的模块的集合。力争降低模块接口的复杂程度 设计单入口单出口的模块 模块
21、的功能应该可以预测3 启发式规则第31页,本讲稿共99页4 图形工具 层次图和HIPO图层次图用来描述软件结构,层次图+IPO图=HIPO图正文加工系统输入输出编辑加标题存储检索编目录格式化添加删除插入修改合并列表 结构图方框之间的箭头表示模块的调用关系,带注释的箭头表示模块间来回传递的信息:空心圆数据,实心圆控制信息。结构图还可以表示模块的选择调用或循环调用参见:P64第32页,本讲稿共99页第33页,本讲稿共99页5 面向数据流的设计方法1)变换流2)事务流3)设计过程时间输入流输出流变换流外部表示内部表示信息变换流变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信
22、息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。当数据流图具有这些持征时,这种信息流就叫作变换流。第34页,本讲稿共99页这种数据流是“以事务为中心的”也就是说,数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流应该划为一类特殊的数据流,称为事务流。事务T事务中心活动通路事务中心 T 完成下述任务:接受输入数据(事务)分析每个事务以确定它的类型根据事务类型选取一条活动通路第35页,本讲稿共99页变换流与事务流三要素变换流三要素变换流三要素 输入、输出、变换中心 事务流三要素事务流三要素 事务、事务中心、活动通路第36页,本
23、讲稿共99页5 面向数据流的设计方法(续)精化数据流图流类型区分事务中心和数据接收通路映射成事务结构区分输入和输出分支映射成变换结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计事务分析变换分析第37页,本讲稿共99页5 面向数据流的设计方法(续)变换分析:汽车数字仪表板功能:1)通过A/D 转换实现传感器和微处理器接口,2)在发光二极管面板上显示数据,3)指示每小时英里数(mph),行驶的里程,每加伦油行驶的英里数(mpg)等等。4)指示加速或减速;5)超速警告:如果车速超过55英里/小时,则发出超速警告铃声。A/D转数计数器流量传感器微处理机里程表车速表油效表油管系统加
24、速/减速指示超速报警第38页,本讲稿共99页5 面向数据流的设计方法(续)读旋转信号收集和求平均转换成转/分(rpm)计算里程确定加速/减速产生加速/减速显示产生里程显示计算mph和超速值计算燃料消耗发出铃声产生mph显示产生 mpg显示读和校核计算gph旋转信号信号/秒 SPSSPSSPSrpmrpm箭头指示上箭头水平线下箭头英里超速值显示铃声mphmphmpggph燃料流燃料流传感器信号Mpg 显示数字仪表板 控 制接受传感器 信 号数据转换控制驱动仪表 板输入控制变换控制输入控制第39页,本讲稿共99页5 面向数据流的设计方法(续)设计步骤:复查基本系统模型复查并精化数据流图确定数据流图
25、具有变换特性还是事务特性确定输入流和输出流的边界,划分变换或事务中心完成“第一级分解”CmCaCtCe第一级分解的方法第40页,本讲稿共99页5 面向数据流的设计方法(续)ADBCCmCaCBDA接受传感器 信 号转换成rpm收集SPS读旋转信号计算gph读燃料流数字仪表板 控 制确 定加/减速计算mph计算gpg计算里程驱动仪表板加速/减速显示显示mpg显示mph显示里程发出铃声发光二极管显示第41页,本讲稿共99页5 面向数据流的设计方法(续)数字仪表板 控 制接受传感器 信 号转换成rpm读旋转信号计算gph读燃料流数字仪表板 控 制确 定加/减速计算mph计算gpg计算里程驱动仪表板加
26、速/减速显示显示mpg显示mph显示里程发出铃声发光二极管显示数字仪表板软件系统经过调整后的结构图注意:红色模块的位置有所调整第42页,本讲稿共99页5 面向数据流的设计方法(续)事务分析432总 控接收通路C通路B通路A通路调 度A_CTL1 4 2+1 3 2 1 B_CTLC_CTL 设计优化设计优化设计优化应该力求做到在有效的模块化的前提下使用最少量的模块,以及在能够满足信息要求的前提下使用最简单的数据结构。数据流图软件结构第43页,本讲稿共99页总体设计说明书的主要内容如下:(1)引言:编写目的,背景,定义,参考资料。(2)总体设计:需求规定,运行环境,基本设计概念和处理流程,结构。
27、(3)接口设计:用户接口,外部接口,内部接口。(4)运行设计:运行模块组合运行控制,运行时间。(5)系统数据结构设计:逻辑结构设计,物理结构设计,数据结构与程序的关系,(6)系统出错处理设计:出错信息,补救措施系统恢复设计。第44页,本讲稿共99页第五章第五章 详细设计详细设计详细设计:过程设计设计方法:结构程序设计结构序设计结构序设计:一种程序设计技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构详细设计阶段的目标目标:确定应该怎样具体地实现所要求的系统。精确地描述整个目标系统,从而在编码阶段可以把这个描述翻译成用某种程序设计语言书写的程序。第45页,本讲稿共99页详细设计的基本
28、任务详细设计的基本任务1算法设计算法设计 用某种图形、表格、语言等工具将每个模块处理过程的详细算法描述出来2数数据结构设计据结构设计 对于需求分析、概要设计确定的概念性的数据类型进行确切的定义。3物理设计物理设计 对数据库进行物理设计,即确定数据库的物理结构。物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所使用的数据库系统。4其他设计其他设计 根据软件系统的类型,还可能要进行以下设计:(1)代码设计;为了提高数据的输入、分类、存储及检索等操作的效率空间,对数据库中的某些数据项的值要进行代码设计。(2)输入输出格式设计。(3)人机对话设计:对于一个实时系统,用户与计
29、算机颠蟹对话,因此要进行对话方式、内容及格式的具体设计。5编写详细设计说明书编写详细设计说明书 详细设计说明书有下列的主要内容:(1)引言:包括编写目的、背景、定义 (2)程序系统的组织结构。(3)程序l(标识符)设计说明:(4)程序2(标识符)设计说明。(5)程序N(标识符)设计说明6评审评审第46页,本讲稿共99页结构程序设计顺序、选择、循环三种基本结构BexpAABexpAAexpTFTTFF顺序结构选择结构循环结构1)“While”型循环2)Do.Until 型循环第47页,本讲稿共99页结构程序设计技术好处:(1)自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律。(2)先全局后局
30、部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,容易阅读和理解。(3)不使用Go To语句仅使用单入口单出口的控制结构使得程序的静态结构和它的动态执行情况比较一致。(4)控制结构有确定的逻辑模式,编写程序代码只限于使用很少几种直截了当的方式,因此源程序清晰流畅,易读易懂而且容易测试。(5)程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。(6)程序的逻辑结构清晰,有利于程序正确性证明。第48页,本讲稿共99页习题1.For(int i=0;in;i+)A 2.while(i100)A 3.Do A While(i30国内乘客外国乘客头等舱其它舱残疾乘
31、客-(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免费第56页,本讲稿共99页过程设计语言(PDL)PDL应该具有下述特点:(1)关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的待点。为了使结构清晰和可读性好,通常在所有可能嵌套使用的控制结构的头和尾都有关键字,例如:iffi(或endif)等等。(2)自然语言的自由语法,它描述处理待点。(3)数据说明的手段。应该既包括简单的数据结构(例如纯量和数组),
32、又包括复杂的数据结构(例如,链表或层次的数据结构)。(4)模块定义和调用的技术,应该提供各种接口描述模式。第57页,本讲稿共99页PDL作为一种设计工具的优点:(1)可以作为注释直接插在源程序中间。这样做能促使维护人员在修改程序代码的同时也相应地修改PDL注释,因此有助于保持文档和程序的一致性,提高了文档的质量。(2)可以使用普通的正文编辑程序或文字处理系统,很方便池完成PDL的书写和编辑工作。(3)已经有自动处理程序存在,而且可以自动由PDL生成程序代码。PDL的缺点缺点是不如图形工具形象直观,描述复杂的条件组合百动作间的对应关系时,不如判定表清晰简单。第58页,本讲稿共99页Jackson
33、程序设计方法特点:面向数据结构数据结构的设计方法,也就是用数据结构作为程序设计的基础方法:首先需要分析确定数据结构,并且用适当的工具清晰地描绘数据结构。第59页,本讲稿共99页Jackson图数据元素彼此间的逻辑关系只有顺序、选择和重复三类顺序结构 顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。第60页,本讲稿共99页选择结构 选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。第61页,本讲稿共99页重复结构重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。Jackson图优点:图优点:便于表示层次结构,而且是对结
34、构进行便于表示层次结构,而且是对结构进行自顶向下分解的有力工具;自顶向下分解的有力工具;形象直观可渎性好;形象直观可渎性好;既能表示数据结构也能表示程序结构既能表示数据结构也能表示程序结构第62页,本讲稿共99页改进的Jackson图第63页,本讲稿共99页Jackson方法Jackson结构程序设计方法基本上由下述五个步骡组成:1分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。2找出输入数据结构和输出数据结构中有对应关系的数据单元。3用下述三条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson:第一,为每对有对应关系的数据单元,按照它们在数据结
35、构图中的层次在程序结构图的相应层次画一个处理框 第二,根据输入数据结构中剩余的每个数据单元所处的层次,分别为它们面上对应的处理框;第三,根据输出数据结构中剩余的每个数据单元所处的层次,次分别为它们画上对应的处理框。总之,描绘程序结构的Jackson图应该综合输入数据结构和输出数据结构的层次关系而导出来。4.列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。5用伪码表示程序。第64页,本讲稿共99页例子:一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串
36、之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。第65页,本讲稿共99页第66页,本讲稿共99页第67页,本讲稿共99页第68页,本讲稿共99页第69页,本讲稿共99页5 详细设计的工具-程序复杂度的定量度量 利用软件设计的基本原理和概念可以定性的衡量软件模块的质量。但定量的度量程序复杂程度的方法很有价值:估算程序中软件故障的数量;估算软件开发的工作量;比较两个不同的设计或两个不同算法的友劣;作为模块规模的精确上限。程序定量度量方法是一个有待进一步研究的重要领域。1)McCabe 方法程序图 把程序流程图中每个处理符号都退化成一个点,原来连接不同处理符号 的箭头变成连接不同
37、点的有向弧,这样得到的有向图就称为程序图。程序图仅仅描述程序内部的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。入口点:程序图中开始点后面的那个节点。出口点:程序图中停止点前面的那个节点。用McCabe方法度量得出的结果称为程序的环形复杂度。程序的环形复杂度=强连通图中线性无关的有向环的个数。第70页,本讲稿共99页5 详细设计的工具-程序复杂度的定量度量2)环形复杂度的计算方法 在一个强连通的有向图中,线性无关环的个数由以下公式确定:V(G)=m n+p 其中:V(G)-有向图 G 中的环数。m-有向图 G 中的弧数。n-有向图 G 中的节点数。p-有向图 G 中的分离部分的
38、数目。(对于正常的程序,p=1)一般来说,由于程序图不是强连通的,要直接应用以上结论到程序图中还不行,因此要对程序图进行扩展,从其出口点到入口点增画一条虚弧,则原程序图必然成为强连通图。这样就可以应用以上公式来计算环形复杂度。3)环形复杂度的用途:程序的环形复杂度与程序控制流的复杂程度,也就是与程序结构的复杂程度有关。程序内分支数或循环个数增加时,环形复杂度就增加,因此它是对测试难度的一种度量,也能对软件最终的可靠性给出某种预测。McCabe 发现:环形复杂度高的程序往往是最困难、最容易出问题的程序。实践表明:模块规模以 V(G)10 为宜。也就是说,V(G)=10 是模块规模的一个更科学更精
39、确的上限。第71页,本讲稿共99页5 详细设计的工具-程序复杂度的定量度量开始K=0 L=0TOTAL=0输入ADo while TOTAL 1000 and A 0A0TOTAL=TOTAL+AK=K+1输入AL=L+1输出K,L,TOTAL停止abcdefghijkabcdefghjikV(G)=13-11+1=313 条弧11 个节点1 个独立部分第72页,本讲稿共99页第六章 编码1.程序设计语言:人与计算机通信的基本工具,指挥计算机按人的意志工作。19461954:机器语言和汇编语言,与计算机硬件操作一一对应。1954:第一个高级语言 FORTRAN 语言。高级语言的种类:基础语言-
40、Fortran,Basic,Cobol,Algol 结构化语言-Pl/1,Pascal,C,Ada 专用语言-特殊应用如 LISP,Prolog.程序设计语言的特点:名字说明:类型说明:初始化:程序对象(语句,存储,过程)的局部性:程序模块:循环控制结构:分支选择结构:异常处理:独立编译:选择程序设计语言的原则:系统用户的要求;可以使用的编译程序;可以使用的软件工具;工程规模;程序员的知识;软件可移植要求;软件的应用领域。在这个阶段的任务是:把软件设计的结果翻译成计算机可以“理解”的形式 用计算机语言表示的程序。第73页,本讲稿共99页第六章 编码(续)2.程序设计途径写程序的风格程序内部的文
41、档-恰当的意义明确的标识符,注解,程序的视觉组织(语句布局).数据说明-次序标准化,归类化.语句构造-每个语句的构造应该简单、直接和易于理解。一般不要为了节省纸张多个语句写在一行;避免复杂的条件测试;减少对“非”条件的测试;避免大量使用循环嵌套和条件嵌套;利用括号使逻辑表达式或算术表达式的运算次序清晰直观。输入/输出-效率-程序运行时间、存储器效率、输入和输出的效率。程序设计方法论程序设计自动化-三种途径(用户需求形式化精确定义,组件技术,范型)程序设计工具-编译程序 代码管理系统第74页,本讲稿共99页第七章 测 试1.基本概念软件测试的目标或定义(G.Myers):1)测试是为了发现程序中
42、的错误而执行程序的过程。2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。3)成功的测试是发现了至今为止尚未发现的错误的测试。黑盒测试和白盒测试黑盒测试:已经知道了软件产品应该具有的功能,通过测试来检验是否每个 功能都能正常使用。这种测试方法又称功能测试。白盒测试:知道软件产品内部的工作过程,通过测试来检验产品内部动作是否 按照规格说明书的规定正常进行。这种测试方法又称结构测试。不论是每个功能或每个逻辑控制通路,如果对所有的情况都进行测试,这样的测试成为穷尽测试。穷尽测试在一般情况下是实际不可行的。例一、Sum(int a,int b,int c)return(a+b+c);假定
43、int 类型为16位整数。需要测试216*216*216次。每次1ms,约要1万年循环20次各种组合,约520种例二:白盒测试第75页,本讲稿共99页7.1 基本概念(1)软件测试的步骤:模块测试子系统测试系统测试平行运行 目的:保证每个模块作为一个单元能够正确运行,又称为单元测试集成测试、组装测试、联合测试;重点在于测试模块之间的接口;将经过测试的子系统装配成一个完整的系统来测试;发现设计和编码的错误,验证系统是否满足需求说明所定义的功能及其动态特性;也称为集成测试。同时运行新旧两个系统,并且对处理的结果进行比较,以确定新系统是否满足相关性能指标。验收测试 有用户参加的系统测试;验证是否满足
44、用户的需要。第76页,本讲稿共99页7.1 基本概念(2)测试阶段的信息流:测试测试软件配置测试配置测试结果预期结果评价评价错误错误率数据调试调试可靠性可靠性模型模型正确可靠性预测测试与软件开发各个阶段的关系测试与软件开发各个阶段的关系测试与软件开发各个阶段的关系测试与软件开发各个阶段的关系 软件开发过程是一个自顶向下,逐步细化的过程软件开发过程是一个自顶向下,逐步细化的过程软件开发过程是一个自顶向下,逐步细化的过程软件开发过程是一个自顶向下,逐步细化的过程 软件计划阶段定义软件作用域软件计划阶段定义软件作用域软件计划阶段定义软件作用域软件计划阶段定义软件作用域 软件需求分析建立软件信息域、功
45、能和性能需求、约束等软件需求分析建立软件信息域、功能和性能需求、约束等软件需求分析建立软件信息域、功能和性能需求、约束等软件需求分析建立软件信息域、功能和性能需求、约束等 软件设计软件设计软件设计软件设计 把设计用某种程序设计语言转换成程序代码把设计用某种程序设计语言转换成程序代码把设计用某种程序设计语言转换成程序代码把设计用某种程序设计语言转换成程序代码 测试过程是依相反顺序安排的自底向上,逐步集成的过程。测试过程是依相反顺序安排的自底向上,逐步集成的过程。测试过程是依相反顺序安排的自底向上,逐步集成的过程。测试过程是依相反顺序安排的自底向上,逐步集成的过程。包括需求说明书、设计说明书、源程
46、序清单等包括测试计划和测试方案第77页,本讲稿共99页7.1 基本概念(3)测试与软件开发各个阶段的关系测试与软件开发各个阶段的关系测试与软件开发各个阶段的关系测试与软件开发各个阶段的关系(示意图)(示意图)(示意图)(示意图)第78页,本讲稿共99页7.2 单元测试(1)单元测试又称模块测试,是针对软件设计的最小单位 程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。1.1.单元测试的内容单元测试的内容在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解在单元测试时,测试者
47、需要依据详细设计说明书和源程序清单,了解该模块的该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应不合理的输入,都能鉴别和响应。(1)模块接口测试在单元测试的开始,应对通过被测模块的数据流进行测试。测试项在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括:目包括:调用本模块的输入参数是否正确;调用本模块的输入参数是否正确;本模块调用子模块时输入给子模块的参数是否正确;本模块调用子模块时输入给子模
48、块的参数是否正确;全局量的定义在各模块中是否一致;全局量的定义在各模块中是否一致;模块接口模块接口 局部数据结构局部数据结构 重要的执行通路重要的执行通路 出错处理通路出错处理通路 影响上述各方面特性影响上述各方面特性 的边界条件的边界条件第79页,本讲稿共99页7.2 单元测试(2)n 在做内外存交换时要考虑:u文件属性是否正确;u OPEN与CLOSE语句是否正确;u 缓冲区容量与记录长度是否匹配;u 在进行读写操作之前是否打开了文件;u 在结束文件处理时是否关闭了文件;u 正文书写输入错误,u IO错误是否检查并做了处理。(2)局部数据结构测试局部数据结构测试不正确或不一致的数据类型说明
49、使用尚未赋值或尚未初始化的变量错误的初始值或错误的缺省值变量名拼写错或书写错不一致的数据类型全局数据对模块的影响(3)路径测试路径测试选择适当的测试用例,对模块中选择适当的测试用例,对模块中重要重要重要重要的执行路径的执行路径的执行路径的执行路径进行测试。进行测试。应当设计测试用例查找由于应当设计测试用例查找由于错误的计算、错误的计算、错误的计算、错误的计算、不正确的比较不正确的比较不正确的比较不正确的比较或或不正常的控制流不正常的控制流不正常的控制流不正常的控制流而导致的而导致的错误。错误。对基本执行路径和循环进行测试可以发对基本执行路径和循环进行测试可以发现大量的路径错误现大量的路径错误.
50、(4)错误处理测试错误处理测试n 出错的描述是否难以理解n 出错的描述是否能够对错误定位n 显示的错误与实际的错误是否相符n 对错误条件的处理正确与否n 在对错误进行处理之前,错误条件 是否已经引起系统的干预等第80页,本讲稿共99页7.2 单元测试(3)(5)边界测试边界测试n 注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。n 如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素2.2.单元测试的步骤单元测试的步骤代码审查:组长代码审查:组长+程序设计、编写、测试者程序设