软件可信性度量1/30高级软件工程第四讲软件可信性度量软件可信性度量2/30高级软件工程可信性是软件性质的子集软件性质的静态判定问题本质上是不完备的(图灵机的判定)我们能做的是在一定约束条件下对一些重要的性质给出较准确的度量Onefaultper1,000LOCis4.59sigma,6sigmawouldbe3.4faultsper1,000,000LOC.软件可信性度量3/30高级软件工程内容一、软件可信性度量二、如何度量软件的可信性?软件可信性度量4/30高级软件工程一、软件可信性度量1、测量、度量与指标2、度量什么?3、刻度是什么?4、软件缺陷软件可信性度量5/30高级软件工程1、测量、度量与指示测量(Measure)是一个过程,用于对产品或者过程的某个属性的范围、数量、维度、容量或大小提供“一个”“定量的指示”;获取了一个数据!度量(Metric)是对软件产品进行范围广泛的测度,它给出一个系统、构件或过程的某个给定属性的“度”的定量测量;指示(Indicator)是一个度量或一组度量的组合,采用易于理解的形式,对软件过程、项目或产品质量提供更全面、深入的评价和了解,以利于过程和质量的分析。软件可信性度量6/30高级软件工程“Youcan'tcontrolwhatyoudon'tmeasure”TomDeMarco,ControllingSoftwareProjects,1982Whattomeasure?LengthRulerMeter/Centimeter/…TimeClockDay/Hour/Minute/…WeightBalanceGram/Kilogram/…TemperatureThermometerCentigrade/…Humidity,brightness,……area,volume,velocity,density,software:LOC,DensityofDefect,MTTF,……软件可信性度量7/30高级软件工程2、度量什么?软件“可信性”的属性仍然从“质量”的性质开始!外部测量内部质量属性外部质量属性使用质量属性过程质量过程过程测量内部测量使用质量的测量软件产品软件产品的效用使用条件影响影响影响依赖依赖依赖目前主要关注产品质量!服务时的内部质量?软件可信性度量8/30高级软件工程外部和内部质量功能性可靠性易用性效率维护性可移植性适合性准确性互操作性保密安全性功能性的依从性成熟性容错性易恢复性可靠性的依从性易理解性易学性易操作性吸引性易用性的依从性时间特性资源利用性效率的依从性易分析性易改变性稳定性易测试性维护性的依从性适应性易安装性共存性易替换性可移植性的依从性***的依从性:软件产品遵循与***相关的标准、约定或法规以及类似规定的能力软件可信性度量9/30高级软件工程软件可信性功能性可靠性安全性高效性维护性可用性正确性准确性(精度、不少、不多)成熟性容错性易恢复性机密性完整性抗抵赖性时间特性资源利用性易分析性易改变性稳定性易测试性软件可信性度量10/30高级软件工程3、刻度(依据、标准)是什么?度量对象不同,度量刻度也不同!Product(Artifact)AnalyzingDesigningCodingCompilingDeployingDevelopingProcessMaintaining软件可信性度量11/30高级软件工程产品(Product)与制品(Artifact):产品:最终交付给用户的软件(主要是代码)制品:软件生命周期中,所有各个阶段的人工产物包括:产品以及开发过程中产生的设计模型分析模型等等In-houseartifactIn-processproduct刻度分别是什么?软件可信性度量12/30高级软件工程为什么要度量早期制品?问题要尽早发现、尽早解决!以降低总的可信性保障开销但越往前也越困难用户需求不够清晰制品形态不够清晰自动成分较少,人工方式更多软件可信性度量13/30高级软件工程产品度量之后呢?对服务进行度量!–服务提供者–服务使用者–第三方刻度也很多!软件可信性度量14/30高级软件工程软件可信性度量问题转化为:在软件生命周期的不同阶段模型、代码、服务是否与刻度有偏差?存在缺陷?软件可信性度量15/30高级软件工程4、软件缺陷1)什么是软件缺陷缺陷、错误、故障、失败–错误(error)人–缺陷(defect)制品(模型、数据、程序)–故障(fault)运行结果(内部,局部)–失败(failure)总体后果(外部)软件可信性度量16/30高级软件工程Asystemfailureoccurswhenthedeliveredserviceisadjudgedtohavedeviatedfromfulfillingthesystemfunction.Anerroristhatpartofthesystemstatewhichisliabletoleadtosubsequentfailure:anerroraffectingtheserviceisanindicationthatafailureoccursorhasoccurred.Theadjudgedorhypothesisedcauseofanerrorisafault.(Note:errorsdonotnecessarilyleadtofailures–thismaybeavoidedbychanceordesign;componentfailuresdonotnecessarilyconstitutefaultstothesurroundingsystem–thisdependsonhowthesurroundingsystemisrelyingonthecomponent).Thesethreeconcepts(anevent,astate,andacause)mustbedistinguished,whatevernamesyouchoosetouseforthem.Prof.BrianRandell:软件可信性度量17/30高级软件工程IBMODC(OrthogonalDefectClassification)DefectRemovalActivitiesActivitythatwasbeingperformedatthetimethedefectwasdiscoveredTriggersTheenvironmentorconditionthathadtoexistforthedefecttosurfaceImpactTargetRepresentsthehighlevelidentityoftheentitythatwasfixedDefectTypeRepresentstheactualcorrectionthatwasmadeQualifierCapturestheelementofanonexistent,wrongorirrelevantimplementationMissing,Incorrect,ExtraneousAge/StateBase,New,Rewritten,ReFixed2)软件缺陷分类软件可信性度量18/30高级软件工程ActivitiesDesignReviewCodeInspectionUnittestFunctionTestSystemTest软件可信性度量19/30高级软件工程TriggersDesignConformanceLogic/FlowBackwardCompatibilityLateralCompatibilityConcurrencyInternalDocumentLanguageDependencySideEffectRareSituationsSimplePathComplexPathCoverageVariationSequencingInteractionWorkload/StressRecovery/ExceptionStartup/RestartHardwareConfigurationSoftwareConfigurationBlockedTest软件可信性度量20/30高级软件工程ImpactInstallabilityServiceabilityStandardsIntegrity/SecurityMigrationReliabilityPerformanceDocumentationRequirementsMaintenanceUsabilityAccessibilityCapability软件可信性度量21/30高级软件工程二、如何度量软件的可信性?1、基本步骤2、不同技术软件可信性度量22/30高级软件工程TheIEEEqualitymetricsmethodology:EstablishqualityrequirementsIdentifyqualitymetricsImplementqualitymetricsAnalyzeresultsofthemetricsValidatethemetricsTrustworthymetricsmethodology:EstablishtrustworthyrequirementsIdentifytrustworthymetricsImplementtrustworthymetricsAnalyzeresultsofthemetricsValidatethemetrics1、基本步骤质量度量:ISO9126-2:外部度量ISO9126-3:内部度量ISO9126-4:使用质量的度量软件可信性度量23/30高级软件工程不同阶段度量对象不同:–早期的制品:发现偏差–发布的产品:发现缺陷–提供的服务:发现异常方法自然不同软件可信性度量24/30高级软件工程经典的软件缺陷度量缺陷密度——软件缺陷在规模上的分布如:每KLOC或每个功能点(或类似功能点的度量——对象点、数据点、特征点等)的缺陷数缺陷率——缺陷在时间上的分布如:对应用软件的角度来说,90%以上的缺陷是在发布后两年内被发现出来。整体缺陷清除率在软件开发过程中发现的所有缺陷数/发现的总缺陷数阶段性缺陷清除率软件可信性度量25/30高级软件工程2、不同阶段的缺陷度量1)需求模型缺陷度量2)设计模型缺陷度量3)代码缺陷度量4)在线服务缺陷度量软件可信性度量26/30高级软件工程1)需求模型缺陷度量软件是否考虑了足够多的可信属性?是否有足够多的预案?表述是否合理?是否与用户做了足够多的沟通?需求度量方法?软件可信性度量27/30高级软件工程2)设计模型缺陷度量模型中是否描述了足够的可信属性?是否与需求中的内容一致?设计模型度量方法–模型检测重要且困难软件可信性度量28/30高级软件工程3)离线代码缺陷度量是否遵守编程语言规范?编译技术是否遵循低层库的正确使用方式?静态分析重点介绍!是否与用户需求一致?动态测试软件可信性度量29/30高级软件工程4)在线服务缺陷度量服务提供者(内部)最终用户(外部):CapabilityUsabilityPerformanceReliabilityInstallabilityMaintainabilityDocumentationAvailabilityCapability●●●●●Usability●○○○○○Performance●●●○●○Reliability●○●○○○Installability○○○●○Maintainability●○●○●○○Documentation●○○Availability●○○○○●:Conflictwithoneanother,○:Supportoneanother,Blank:Unrelated软件可信性度量30/30高级软件工程讨论度量的能力–不同可信性质的需求不同?–度量的边界?哪些