第2章软件质量评价.ppt_第1页
第2章软件质量评价.ppt_第2页
第2章软件质量评价.ppt_第3页
第2章软件质量评价.ppt_第4页
第2章软件质量评价.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章 软件质量评价,软件工程Software Engineering,思考?,什么是好的软件? 软件质量好坏如何评价?,第二章软件质量评价,什么是好的软件?有何特点? 软件评价的标准如何? 什么是软件结构?什么是良软件结构? 什么是模块化? 模块设计时应遵循的标准是什么?,一、软件质量评价标准,有效可靠 结构清晰 用户角度:达到需求、界面友好、简单易学 开发人员角度:良结构、易测试、易维护、可移植 文档齐全,二、软件结构,软件的各个组成部分之间的关系,同一个问题P的三种不同的软件结构,基本概念,块:可以独立命名和编址的单元 扇出:直接由一个块所控制的块数 扇入:直接调用它的上级块数目 深度:

2、控制的总层数 宽度:跨度最宽层的跨度数,1. 良软件结构,具有层次性,无回路块调用的软件结构。,非良结构的调整,合并循环节点,良结构,AB,模块内部 复杂性增加了,2. 模块化(modularity),模块(module):又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合。 模块化 把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。 “模块化”有助于复杂问题的求解,模块化的依据,c(x):问题 x 的复杂程度 E(x):解决问题 x 需要的工作量(时间) 对于两个问题P1和P2 if C(P1) C(P

3、2) then E(P1) E(P2) 根据人们求解问题的经验,有规律:C(P1+P2) C(P1)+C(P2) 则有 E(P1+P2) E(P1)+E(P2) 即“分而治之”有助于复杂问题的求解。,如果把软件无限细分, 会出现什么样的情况?,块的划分与总工作量之间的关系,模块划分的合理性。模块两个定性的标准:内聚和耦合。,模块的重要特征,抽象(abstraction) 我们在考虑问题时,集中考虑和当前问题有关的方面,而忽略和当前问题无关的方面,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。 在对软件系统进行模块设计时,可以有不同的抽象层次。 忽略细节,分层理解问题,自顶

4、向下层层细化 信息隐藏(information hiding) 细节隐藏 可理解性 修改副作用小 错误副作用小,例:开发一个CAD软件,实现一个二维绘图系统的全部功能,供低级计算机辅助设计使用。,抽象层次I 用问题环境的术语来描述这个软件 该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个CAD软件实现,模块化的抽象特征,模块化的抽象特征,抽象层次II 任务需求的描述,列出“What”而不是“How” CAD SOFTWARE TASKS: user intera

5、ction task; 2-D drawing creation task; graphics display task; drawing file management task; END,模块化的抽象特征,抽象层次III 程序过程表示 (以2-D绘图生成任务为例) PROCEDURE 2-D drawing creation REPEAT UNTILE (drawing creation task terminates) DO WHILE (digitizer interaction occurs) Digitizer interface task; DETERMINE drawing r

6、equest 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: auxiliary view task; Section: cross sectioning task; END; END REPETITION; END PROCEDURE.

7、,3. 模块独立性(Module independence),好设计的关键: 每个模块完成一个相对独立的子功能,并且与其它模块间的接口简单。 独立性的度量(Yourdon & Constantine,1978) 耦合(Coupling) 块间联系 内聚(Cohesion) 块内联系,(1)耦合(Coupling),对一个软件结构内不同模块之间互连程度的度量,零耦合(uncoupling),彼此完全独立,这意味着模块间无任何连接,耦合程度最低,A,B,数据耦合(Data Coupling),一个模块访问另一个模块时,彼此间通过参数交换信息,而且交换的信息仅仅是数据, The most desir

8、able,控制耦合(Control Coupling),指一个模块调用另一个模块时,传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现),控制耦合增加了理解与编程及修改的复杂性。,公共环境耦合(Common Coupling),两个或多个模块通过一个公共数据环境相互作用,问题:复杂程度随耦合模块的个数增加而增加 公共部分的数据存取无法控制 公共部分的改动将影响所有调用它的模块,可维护性差,内容耦合(Content Coupling),一个模块访问另一个模块的内部数据 一个模块不通过正常入口而转到另一个模块的内部 两个模块有一部分程序代码重叠(只可能出现在汇编程序中) 一个模块有多个入

9、口, The least desirable,内容耦合,例1.A访问C的内部数据或不通过正常入口而转入C的内部。,内容耦合,耦合度与软件结构,原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。,思考题,模块接口描述,已知模块A、E和F更新同一个数据库, 请确定模块之间的耦合类型。,(2)内聚(Cohesion),Goal: as cohesive as possible!,一个模块内各个元素彼此结合的紧密程度 理想内聚的模块只做一件事情 模块内的高内聚往往意味着模块间的松耦合 内聚更重要!,偶然内聚(Coincidental cohesion),Unrelated

10、 functions, processes, or data are found in the same module (for convenience),A,B,语句相同,逻辑内聚(Logical Cohesion),Logically related functions or data are placed in the same module,逻辑内聚,时间内聚(Temporal cohesion),The functions are related only by the timing involved,initial x Initial y,过程内聚(Procedural cohes

11、ion),Functions are grouped together in a module to ensure a certain order of performance,通信内聚(Communicational cohesion),All the functions in a module operate on or produce the same data set,X 从文件file读出数据 由数据产生日报表 由数据产生单项产品报表,顺序内聚(Sequential cohesion),The output from one part of a module is the input

12、 to the next part,X 输入系数 求根 打印方程的根,功能内聚(Functional cohesion),Every processing element is essential to the performance of a single function,X 报表打印,内聚度与软件结构,设计时力争做到高内聚 !不要低内聚!,三、软件度量,度量(metrics) 测量(measure) 估算(estimation),软件度量的根本目的是为了管理的需要。利用度量来改进软件过程。,软件度量,软件复杂性度量 规模 文本复杂性 控制结构的复杂性 软件可靠性度量 系统故障率 软件修复

13、与软件有效性 软件可靠性估算,1. 软件复杂性度量,规模:程序代码的规模软件复杂度 文本复杂性 控制结构的复杂性,(1)规模度量(Size-Oriented Metrics),代码行(Lines of code,LOC)度量,LOC 乐观值a 一般值m 悲观值b,LOC的期望值,代码行(Lines of code,LOC) 生产率(LOC per person-month)= 代码行数/工作量 Pl = L / E 每行代码的平均成本($ per LOC)=总成本/代码行数 Cl = S / L 代码出错率(Errors per kLOC)=总错误数/代码行数 EQRl = Ne / L,某软

14、件项目记录,Pl = 12.1 kLOC / 24 PM = 504 LOC/PM Cl = $168000 / 12.1 kLOC = $13.88/LOC EQRl = 29个 / 12.1 Kloc = 2.4个/kLOC,代码行数估算软件规模的特点,优点:简单易行 缺点: 软件程序 不能刻画算法的难易程度 开发前或初期估算困难 依赖于语言 只适用于过程式语言,不适用于4GL,(2)文本复杂性度量,程序语言符号长度 N = N1 + N2 N1:程序中操作符个数n1:程序中不同操作符个数 N2:程序中操作数个数n2:程序中不同操作数个数 估算公式 N = n1log2n1 + n2log2n2 程序量 V = N log2(n1 + n2),(3)控制结构的复杂性度量,1976,T. J. McCabe 基于程序拓扑结构的软件复杂性度量模型 巡回秩数V(G) V(G) = e n + 2 = 边数 结点数 + 2 可以证明: V(G) = 有界或无界的封闭区域个数,程序控制结构的复杂性,2. 软件可靠性度量,软件的可靠性 在某个给定时间间隔内,程序按照规格说明成功运行的概率,软件修复与软件有效性,有效性函数A(t) 系统在t时刻正常运行的概率 可靠性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论