《第2章软件质量评价.pptx》由会员分享,可在线阅读,更多相关《第2章软件质量评价.pptx(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、武汉大学武汉大学 计算机学院计算机学院 软件工程课程组软件工程课程组软件工程Software Engineeringn 什么是好的软件?什么是好的软件?n 软件质量好坏如何评价?软件质量好坏如何评价?n 什么是好的什么是好的?有何特点?有何特点?n 软件评价的标准如何?软件评价的标准如何?n 什么是软件结构?什么是良软件结构?什么是软件结构?什么是良软件结构?n 什么是模块化?什么是模块化?n 模块设计时应遵循的标准是什么?模块设计时应遵循的标准是什么?n 有效可靠有效可靠n 结构清晰结构清晰q用户角度:达到需求、界面友好、简单易学用户角度:达到需求、界面友好、简单易学q开发人员角度:良结构、
2、易测试、易维护、可开发人员角度:良结构、易测试、易维护、可移植移植 n 文档齐全文档齐全问题问题P同一个问题P的三种不同的软件结构:直接由一个块所控:直接由一个块所控制的块数制的块数 :直接调用它的上级:直接调用它的上级块数目块数目:控制的总层数:控制的总层数 :跨度最宽层的跨度:跨度最宽层的跨度数数 软件结构软件结构线性型线性型树型树型半序型半序型网络结构网络结构合并循环节点合并循环节点良结构良结构模块内部模块内部复杂性增加了复杂性增加了n模块(模块(module):):n模块化模块化c(x):):问题问题 x 的复杂程度的复杂程度E(x):):解决问题解决问题 x 需要的工作量(时间)需要
3、的工作量(时间)对于两个问题对于两个问题P1和和P2if C(P1) C(P2)then E(P1) E(P2)根据人们求解问题的经验,有规律:根据人们求解问题的经验,有规律:C(P1+P2) C(P1)+C(P2)则有则有 E(P1+P2) E(P1)+E(P2) 即即“分而治之分而治之”有助于复杂问题的求解。有助于复杂问题的求解。如果把软件无限细分,如果把软件无限细分, 会出现什么样的情况?会出现什么样的情况?接口成本接口成本最小成本区域最小成本区域总成本总成本块成本块成本成本成本(工作量)(工作量)模块数模块数Mn 抽象(抽象(abstraction)q我们在考虑问题时,集中考虑和当前问
4、题有关的方面,而忽略和我们在考虑问题时,集中考虑和当前问题有关的方面,而忽略和当前问题无关的方面,这就是抽象。或者说抽象就是抽出事物的当前问题无关的方面,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。本质特性而暂时不考虑它们的细节。q在对软件系统进行模块设计时,可以有不同的抽象层次。在对软件系统进行模块设计时,可以有不同的抽象层次。q忽略细节,分层理解问题,自顶向下层层细化忽略细节,分层理解问题,自顶向下层层细化n信息隐藏(信息隐藏(information hiding)F 细节隐藏细节隐藏 可理解性可理解性 修改副作用小修改副作用小 错误副作用小错误副作用小例:开发一个
5、例:开发一个CAD软件,实现一个二维绘图系统的全部功软件,实现一个二维绘图系统的全部功能,供低级计算机辅助设计使用。能,供低级计算机辅助设计使用。 FF 用问题环境的术语来描述这个软件用问题环境的术语来描述这个软件该软件包括一个计算机绘图界面,向绘图员显该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个和辅助视图都可以用这个CAD软件实现软件实现
6、 FF 任务需求的描述,列出任务需求的描述,列出“What”What”而不是而不是“How”How” CAD SOFTWARE TASKS: user interaction task; 2-D drawing creation task; graphics display task; drawing file management task; END FF 程序过程表示程序过程表示 (以(以2-D2-D绘图生成任务为例)绘图生成任务为例) PROCEDURE 2-D drawing creation REPEAT UNTILE (drawing creation task terminate
7、s) DO WHILE (digitizer interaction occurs) Digitizer interface task; DETERMINE drawing request CASE Line: line drawing task; Rectangle: rectangle drawing task; Circle: circle drawing task; END; DO WHILE (keyboard interaction occurs) keyboard interaction task; PROCESS analysis/computation CASE View:
8、auxiliary view task; Section: cross sectioning task; END; END REPETITION; END PROCEDURE. (Yourdon & Constantine,1978)Great deal of dependenceIndependent Highly coupledLoosely coupledUncoupled Goal: as loose as possible = as independent as possible n彼此完全独立,这意味着模块间无任何连彼此完全独立,这意味着模块间无任何连接,耦合程度最低接,耦合程度最
9、低Uncoupled ABn一个模块访问另一个模块时,彼此间通过一个模块访问另一个模块时,彼此间通过参数交换信息,而且交换的信息仅仅是数参数交换信息,而且交换的信息仅仅是数据据 ABDatan指一个模块调用另一个模块时,传递的信息中有指一个模块调用另一个模块时,传递的信息中有控制信息(尽管有时这种控制信息以数据的形式控制信息(尽管有时这种控制信息以数据的形式出现)出现) ABFlagF2FnF1Flag控制耦合增加控制耦合增加了理解与编程了理解与编程及修改的复杂及修改的复杂性。性。 n两个或多个模块通过一个公共数据环境相互作用两个或多个模块通过一个公共数据环境相互作用Global : V1 V
10、2A:A1=V1+V2B:V1=B1Global : V1 V2A:V1+B:V2=B1+V1问题:问题: 复杂程度随耦合模块的个数增加而增加复杂程度随耦合模块的个数增加而增加 公共部分的数据存取无法控制公共部分的数据存取无法控制 公共部分的改动将影响所有调用它的模块,可维护性差公共部分的改动将影响所有调用它的模块,可维护性差n一个模块访问另一个模块的内部数据一个模块访问另一个模块的内部数据n一个模块不通过正常入口而转到另一个模一个模块不通过正常入口而转到另一个模块的内部块的内部n两个模块有一部分程序代码重叠(只可能两个模块有一部分程序代码重叠(只可能出现在汇编程序中)出现在汇编程序中)n一个
11、模块有多个入口一个模块有多个入口例例1. A访问访问C的内部的内部数据或不通过正数据或不通过正常入口而转入常入口而转入C的内部。的内部。ABCDA:goto C1C:C1: 例例2.部分代码重叠部分代码重叠(常出现在汇(常出现在汇编程序中)编程序中)B A例例3.一个模块有一个模块有多多个入口(功能)个入口(功能)A:entry 1:entry 2:类类 型型耦合度耦合度模块独立性模块独立性软件结构软件结构零耦合零耦合低低高高强强弱弱好好差差数据耦合数据耦合控制耦合控制耦合公共环境耦合公共环境耦合内容耦合内容耦合原则:尽量使用数据耦合,少用控制耦合,限制公共原则:尽量使用数据耦合,少用控制耦合
12、,限制公共环境耦合的范围,完全不用内容耦合。环境耦合的范围,完全不用内容耦合。ABDCFE132456模块互连图模块互连图模块接口描述模块接口描述编号编号输入输入输出输出1飞机类型飞机类型状态标志状态标志2飞机零件清单飞机零件清单3功能代码功能代码4飞机零件清单飞机零件清单5零件编号零件编号零件制造商零件制造商6零件编号零件编号零件名称零件名称c 已知模块已知模块A、E和和F更新同一个数据库,更新同一个数据库, 请确定模块之间的耦合类型。请确定模块之间的耦合类型。Goal: as cohesive as possible! 理想内聚的模块只做一件事情理想内聚的模块只做一件事情模块内的高内聚往往
13、意味着模块间的松耦合模块内的高内聚往往意味着模块间的松耦合内聚更重要!内聚更重要!nUnrelated functions, processes, or data are found in the same module (for convenience) A BA BC语句相同语句相同nLogically related functions or data are placed in the same module A:Read inputsfrom diskfrom tapefrom XYZABCXYZABCSnThe functions are related only by the t
14、iming involvedinitial xInitial ynFunctions are grouped together in a module to ensure a certain order of performanceenter datacheck datamanipulate datanAll the functions in a module operate on or produce the same data setX从文件从文件file读出数据读出数据由数据产生日报表由数据产生日报表由数据产生单项产品报表由数据产生单项产品报表nThe output from one p
15、art of a module is the input to the next partX输入系数输入系数求根求根打印方程的根打印方程的根nEvery processing element is essential to the performance of a single functionX报表打印报表打印软件结构软件结构模块独立性模块独立性内聚度内聚度内聚内聚评分评分差差好好弱弱强强低低偶然内聚偶然内聚0分分逻辑内聚逻辑内聚1分分时间内聚时间内聚3分分中中过程内聚过程内聚5分分通信内聚通信内聚7分分高高顺序内聚顺序内聚9分分功能内聚功能内聚10分分设计时力争做到高内聚设计时力争做到高内
16、聚 !不要低内聚!不要低内聚!n 度量(度量(metrics)n 测量(测量(measure)n 估算(估算(estimation)软件度量的根本目的是为了管理的需要。利软件度量的根本目的是为了管理的需要。利用度量来改进软件过程。用度量来改进软件过程。 n 软件复杂性度量软件复杂性度量q 规模规模q 文本复杂性文本复杂性q 控制结构的复杂性控制结构的复杂性n 软件可靠性度量软件可靠性度量q 系统故障率系统故障率q 软件修复与软件有效性软件修复与软件有效性q 软件可靠性估算软件可靠性估算n 规模:程序代码的规模规模:程序代码的规模软件复杂度软件复杂度n 文本复杂性文本复杂性n 控制结构的复杂性控
17、制结构的复杂性代码行(代码行(Lines of code,LOC)度量)度量n LOCq 乐观值乐观值aq 一般值一般值mq 悲观值悲观值bnLOC的期望值的期望值46cambl代码行(代码行(Lines of code,LOC)c 生产率(生产率(LOC per person-month)= 代码行数代码行数/工作量工作量Pl = L / Ec 每行代码的平均成本(每行代码的平均成本($ per LOC)=总成本总成本/代码行代码行数数Cl = S / Lc 代码出错率(代码出错率(Errors per kLOC)=总错误数总错误数/代码行数代码行数EQRl = Ne / L项目项目工作量工
18、作量PM成本成本($)代码行代码行kLOC文档页数文档页数Pd错误数错误数Ne人数人数Maaa-012416800012.1365293ccc-046244000027.21224865fff-034331400020.21050646Pl = 12.1 kLOC / 24 PM = 504 LOC/PMCl = $168000 / 12.1 kLOC = $13.88/LOCEQRl = 29个个 / 12.1 Kloc = 2.4个个/kLOCn优点:简单易行优点:简单易行n缺点:缺点:q软件软件程序程序 q 不能刻画算法的难易程度不能刻画算法的难易程度q 开发前或初期估算困难开发前或初期
19、估算困难q 依赖于语言依赖于语言q只适用于过程式语言,不适用于只适用于过程式语言,不适用于4GLn 程序语言符号长度程序语言符号长度 N = N1 + N2N1:程序中操作符个数程序中操作符个数n1:程序中不同操作符个数程序中不同操作符个数N2:程序中操作数个数程序中操作数个数n2:程序中不同操作数个数程序中不同操作数个数 估算公式估算公式 FFN = n1log2n1 + n2log2n2n 程序量程序量V = N log2(n1 + n2)n 1976,T. J. McCaben 基于程序拓扑结构的软件复杂性度量模型基于程序拓扑结构的软件复杂性度量模型n 巡回秩数巡回秩数V(G)V(G)
20、= e n + 2 = 边数边数 结点数结点数 + 2可以证明:可以证明:V(G) = 有界或无界的封闭区域个数有界或无界的封闭区域个数R1R2abcdeR3R1顺序结构顺序结构R1R2选择结构选择结构R1R2While结构结构R1R2Repeat结构结构n软件的可靠性软件的可靠性n在某个给定时间间隔内,程序按照规格说在某个给定时间间隔内,程序按照规格说明成功运行的概率明成功运行的概率n有效性函数有效性函数A(t)q系统在系统在t时刻正常运行的概率时刻正常运行的概率n可靠性函数可靠性函数R(t)q系统在系统在0, t时间间隔正常运行的概率时间间隔正常运行的概率A = MTTF / (MTTF
21、+ MTTR)n错误植入模型错误植入模型N:池塘中的鱼尾数池塘中的鱼尾数Nt:植入的带标记的鱼尾数植入的带标记的鱼尾数n:捞出的鱼尾数捞出的鱼尾数nt:捞出的带标记的鱼数捞出的带标记的鱼数ttttNnNnnNNn 软件评价标准软件评价标准 软件结构软件结构 模块化模块化 模块独立性模块独立性 软件度量软件度量n你认为评价软件好坏有哪些标准?你认为评价软件好坏有哪些标准?n在设计软件结构时应遵循哪些原则?在设计软件结构时应遵循哪些原则?n某软件项目如果采用四代语言开发,某软件项目如果采用四代语言开发,LOC度量还有意义吗?为什么?度量还有意义吗?为什么?n一个程序能既正确又不可靠吗?试说明一个程序能既正确又不可靠吗?试说明理由。理由。