管理技术与软件质量、质量保证zhhf08_第1页
管理技术与软件质量、质量保证zhhf08_第2页
管理技术与软件质量、质量保证zhhf08_第3页
管理技术与软件质量、质量保证zhhf08_第4页
管理技术与软件质量、质量保证zhhf08_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

软件质量和软件质量保证的基本概念质量度量模型软件复杂性软件可靠性软件评审与软件容错技术,第十三章软件项目管理,管理技术与软件质量保证,软件工程管理是对软件生命周期中的一切活动的管理,尤其是对软件开发过程的管理。软件工程管理涉及到很多学科,如:系统工程学、标准化、管理学、逻辑学、数学等。软件工程管理涉及到诸多方面的内容,如软件工程项目计划、制定软件工程规范、软件开发成本估算、软件项目进度安排、软件配置管理、软件工程标准化等。软件工程管理的具体内容包括对开发人员、组织机构、用户、过程控制,文档资料等方面的管理。,软件开发成本估算,p276,EffortEstimation,SeveraltypesofcostsFacilitiesStaffMethodsToolsThebiggestcomponentofcostisEffortStaffseffortrepresentedbystaff-daysWemustestimateeffortasearlyaspossible,EffortEstimationMethods,ExpertJudgmentRandDelphitechniqueWolverton(1974)costmodelAlgorithmicMethodsWalstonandFelix(1977)BoehmsConstructiveCostModel(COCOMO)Machine-LearningMethod,Rand公司Delphi技术的步骤:,组织者发给每位专家一份规格说明书和一张估算表。专家研究规格说明书。可召集小组会议,就估算问题进行讨论专家提出三个不同的估算值:最小值x,最大值y,最可能值z。并无记名填表,说明理由。计算:召集会议,对大的变动之处进行讨论。基于讨论再一次估算再次无记名填表。从(4)到(6)适当重复几次,最终获得一个多数专家公认的软件规模(KLOC),软件项目计划,在软件项目管理过程中一个关键的活动是制定项目计划,它是软件开发工作的第一步。项目计划的目标是为项目负责人提供一个框架,使之能合理地估算软件项目开发所需资源、经费和开发进度,并控制软件项目开发过程按此计划进行。本节主要软件项目计划的内容、软件开发成本估算与风险分析、软件项目的进度安排。,软件项目计划内容,范围。对该软件项目的综合描述,定义其所要做的工作以及性能限制,它包括:项目目标、主发功能、性能限制、系统接口、特殊要求、开发概述。资源。包括:人员资源、硬件资源、软件资源等。进度安排。进度安排的主要工具有:工程网络图、Gantt图、任务资源表。成本估算。保证项目能在预算内按时完成。培训计划。为用户各级人员制定培训计划。,EstimatingCompletion,CriticalPathMethod(CPM)RealtimeoractualtimeAvailabletimeSlacktimeSlacktime=availabletime-realtimeCalculateslacktimeforeachactivityCriticalpath,ProjectPersonnel,StaffrolesandcharacteristicWorkStylesProjectorganization,StaffRolesandCharacteristic,AbilitytoperformtheworkInterestintheworkExperiencewithsimilarapplicationsExperiencewithsimilartoolsorlanguagesExperiencewithsimilartechniquesExperiencewithsimilardevelopmentenvironmentTrainingAbilitytocommunicationwithothersAbilitytoshareresponsibilitywithothersManagementskills,WorkStyles,FourcommunicationstylesExtrovert:Whencommunicatingideas,theydirectlytellotherstheirthoughtsIntrovert:Whencommunicatingideas,theyaskforsuggestionsfromothersbeforeforminganopinionIntuitive:TheybasetheirdecisiononfeelingaboutandemotionalreactionstoaproblemRational:Theydecideprimarilybyexaminingthefactsandcarefullyconsideralloptions,WorkStyles,Intuitive,Rational,Extrovert,Introvert,IntuitiveExtrovert:TellsothersAcknowledgesfeels,IntuitiveIntrovert:AsksothersAcknowledgesfeels,RationalIntrovert:AsksothersDecideslogically,RationalExtrovert:TellsothersDecideslogically,我是这样克服羞怯和恐惧的我一个劲地让自己出丑,直到习以为常。萧伯纳,一句名言,软件开发的组织机构,三种组织结构主程序员组织机构专家组织机构民主组织机构TochooseanappropriatestructureintermofThebackgroundsandworkstylesofteammembersThenumberofpeopleontheteamThemanagementstylesofthecustomersanddevelopers,主程序员组织机构,由一位高级工程师(主程序员)主持计划、协调和复审全部技术活动;一位辅助工程师协助主程序员工作,并在必要时代替主程序员工作;若干名技术人员负责分析和开发活动;可以有一位或几位专家和一位资料员协助软件开发机构的工作。资料员非常重要,负责保管和维护所有的软件文档资料,帮助收集软件的数据,并在研究、分析、评价文档资料的准备方面进行协助工作。主程序员组织机构突出了主程序员的领导,责任集中在少数人身上,减少了人员之间的通信量,有利于提高软件质量。,专家组织机构,专家组织机构是由若干专家组成一个开发机构,强调每个专家的才能,充分发挥每专家的作用。这种组织机构虽然能发挥所有工作人员的积极性,但往往有可能出现协调上的困难。,民主组织机构,民主组织机构由从事各方面工作的人员轮流担任组长。很显然,这种组织机构对动积极性和个人的创造性是很值得称道的。但是由于过多的进行组长的信息“转移”,人员之间的通信量大,不符合软件工程化的方向,一般不适合大型项目的开发。,Chiefprogrammerteamorganization,ComparisonofOrganizationalStructure,软件质量定义,软件质量定义为:1)与所确定的功能和性能需求的一致性。2)与所成文的开发标准的一致性。3)与所有专业开发的软件所期望的隐含特性的一致性,质量定义反映了以下三个问题,软件需求是度量软件质量的基础。有符合需求的软件就不具备质量。专门的标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。往往会有一些隐含的需求没有明确地提出来。例如,软件应具备良好的可维护性。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。,软件质量的度量和评价,影响软件质量的因素可以分为两大类:()可以直接度量的因素,如单位时间内千行代码(KLOC)中所产生的错误数。()只能间接度量的因素,如可用性或可维护性。Boehm软件质量度量模型McCall软件质量度量模型(P291图13-6)ISO的软件质量评价模型,软件质量保证,软件质量保证就是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量的活动,即确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。,软件质量保证包括的主要功能,质量方针的制定;质量保证方针的质量保证标准的制定;质量保证体系和建立和管理;明确各阶段的质量保证工作;各阶段的质量评审;确保设计质量;重要质量问题的提出现分析;总结实现阶段的质量保证活动;整理面向用户的文档、说明书等;产品质量鉴定、质量保证系统鉴定;质量信息的收集、分析和使用。,质量保证的主要任务,正确定义用户要求。开发和应用新软件的方法。最普遍公认的成功方法就是软件工程学的方法。提高软件开发的工程能力。在软件开发环境或软件工具箱的支持下,运用先进的开发技术、工具和管理方法提高开发软件的能力。提高软件的复用率和软件的可重用性。发挥每个开发者的能力。明确规定进度管理、质量管理、交接检查、维护体制等方面的要求,建立跟踪检查的体制。改善对外部协作部门的开发管理。排除无效劳动。最大的无效劳动是因需求规格说明有误、设计有误而造成的返工。另一种较大的无效劳动是重复劳动,即相似的软件在几个地方同时开发。提高计划和管理质量。,软件评审,设计质量设计的规格说明书符合用户要求的程度。程序质量把程序按照设计规格说明所规定的情况正确执行的程度。软件的规格说明分为外部规格说明和内部规格说明外部规格说明是从用户角度来看的规格内部规格说明是为了实现外部规格的更详细的规格,即软件模块结构与模块处理过程的设计。设计质量是由外部规格说明决定的,程序质量是由内部规格说明决定的。,设计质量的评审内容,评价软件的规格说明是否合乎用户的要求。评审可靠性,即是否能避免输入异常、硬件失效及软件失效所产生的失效,一旦发生应能及时采取代替手段或恢复手段。评审保密措施实现情况,即是否提供对使用系统资格进行检查;对特定数据的使用资格、特殊功能的作用资格进行检查,在查出有违反使用资格情况后,能否向系统管理人员报告有关信息;是否提供对系统内重要数据加密的功能等。评审操作特性实施情况,即操作命令和操作信息的恰当性,输入数据与输入控制语句的恰当性;输出数据的恰当性;应答时间的恰当性等。评审性能实现情况,即是否达到所规定性能的目标值。评审软件是否具有可修改性、可扩充性、可互换性和可移植性。评审软件是否具有可测试性。评审软件是否具有复用性。,程序质量的评审内容,程序质量评审主要是对软件结构、与运行环境的接口、变更影响而进行的评审活动。软件结构的评审主要针对软件的功能结构功能的通用性模块层次模块结构处理过程的结构等与运行环境的接口的评审主要检查项目与硬件的接口。包括与硬件的接口约定,即根据硬件的使用说明等所做出的规定;硬件故障时的处理和超载时的处理。与用户的接口。包括与用户的接口约定;输入数据的结构;输出数据的结构;异常输入时的处理;超载输入时的处理;用户存取资格的检查等。,软件容错技术,容错软件的四种定义:)规定功能的软件,在一定程度上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件为具有容错功能的软件,即容错软件。)规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称之为容错软件。)规定功能的软件,在因错误而发生错误时,仍然能在一定程度上完成预期的功能,则把该软件称为容错软件。)规定功能的软件,在一定程度上具有容能力,则称之为容错软件。,容错的一般方法,实现容错技术的主要手段是冗余。冗余是指实现系统规定功能是多余的那部分资源,包括硬件、软件、信息和时间。由于加入了这些资源,有可能使系统的可靠性得到较大的提高。通常冗余技术分为四类结构冗余信息冗余时间冗余冗余附加技术,结构冗余三种工作方式,静态冗余通过表决和比较来屏蔽系统中出现的错误,常用的有:三模冗余和多模冗余。三模冗余是对三个功能相同但由不同的人采用不同的方法开发出来的模块的运行结果通过表决,以多数结果作为系统的最终结果。由于无需对错误进行特别的测试,也不必进行模块的切换就能实现容错,故称为静态容错。动态冗余的主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来顶替它并重新运行。由于必须具有检测、切换和恢复过程,故称其为动态冗余。每当一个出错被其备用模块顶替后,冗余系统相当于进行了一次重构。各备用模块在其待机时,可与主模块一样工作,也可不工作。前者叫做热备份系统,后者叫做冷备份系统。混合冗余兼有静态冗余和动态冗余的长处。,信息冗余,信息冗余是指为检测或纠正信息在运算或传输中的错误而另外增加一部分信息。在通信和计算机系统中,信息常以编码的形式出现。采用奇偶码、循环码等冗余码制式就可以发现甚至纠正这些错误。为了达到此目的,这些码(统称误差校正码)的码长远远超过不考虑误差校正时的码长,增加了计算量和信道占用的时间。,时间冗余,时间冗余是指以重复执行指令(指令复执)或程序(程序复算)来消除瞬时错误带来的影响。对于复执不成成功能情况,通常的处理办法是发出中断,转入错误处理程序,或对程序进行复算,或重新组合系统,或放弃处理。,冗余附加技术,冗余附加技术是指为实现上述冗余技术所需的资源和技术。在屏蔽硬件错误的冗错技术中,冗余附加技术包括:关键程序和数据的冗余存储和调用检测、表决、切换、重构、纠错和复算的实现。在屏蔽软件错误的冗错系统中,冗余附加构成包括:冗余备份程序的存储及调用实现错误检测和错误恢复的程序实现容错软件所需的固化程序,容错软件的设计步骤,按照设计任务要求进行常规设计,尽量保证设计的正确性。按常规设计得到非容错结构,它是容错系统构成基础。在结构冗余中,不论是主模块还是备用模块的设计和实现都要在费用许可的条件下,用调试的方法尽可能提高可靠性。对可能出现的错误分类,确定实现容错的范围。按照“成本效率”最优原则,选用某种冗余手段(结构、信息、时间)来实现对各类错误的屏蔽。分析或验证上述冗余结构的容错效果。如果没有达到预期的程度,则应重新进行冗余结构设计。如此反复,直到有一个满意的结果为止。,PlanningandManagingtheProject,TrackingprojectprogressProjectpersonnelandorganizationEffortandscheduleestimationRiskmanagementUsingprocessmodelingwithprojectplanning,TrackingProjectProgress,CustomersquestionsDoyouunderstandmyproblemandneedsCanyoudesignthesystemHowlongwillittakeHowmuchwillitcostProjectscheduleDescribethesoftwaredevelopmentcyclebyEnumeratingthephasesorstagesBreakingthestagesintodiscreteactivitiesortasks,Activity,Milestone,andDeliverable,ActivityAnactivityisapartoftheprojectthattakesplaceoveraperiodoftime.MilestoneAmilestoneisthecompletionofanactivity,itisaparticularpointintime.MilestonesinBuildingaHouse(P81)DeliverableTheitemsthatcustomerexpectstoseeduringdevelopment,itmaybeDocumentsDemonstrationsoffunction,subsystems,accuracy,reliability,security,orperformance,Agoodprojectplanincludesthefollowingitems:,ProjectscopeProjectscheduleProjectteamorganizationTechnicaldescriptionProjectstandards,procedures,andproposedtechniquesandtoolsQualityassuranceConfigurationmanagementplanDocumentationplanDatamanagementplanResourcemanagementplanTestplanTrainingplanSecurityplanRiskmanagementplanMaintenanceplan,TechnicalDescriptionIncludes,HardwareSoftware-Compilers,interfacesFunctionalityPerformance-executiontime,responsetime,securityAlsoIncludesAnyStandardsorMethodsofAlgorithmsToolsRevieworinspectiontechniquesDesignlanguagesorrepresentationCodinglanguagesTestingtechniques,软件配置管理,软件配置管理SCM是一组管理整个软件生存期各阶段中变更的活动,其主要目标是:标识变更;控制变更;确保变更正确地实现;报告有关变更。使用配置管理技术,使变更所产生的错误达到最小并最有效地提高生产率。,基线,基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果。基线的特征唯一的标识具体的内容正式的审批严格的变更控制,软件配置项SCI(SoftwareConfigurationItem),软件配置项是软件工程中产生的信息项,它是配置管理的基本单位。,软件开发环境,软件开发环境是由软件开发工具集和环境集成机制构成的,是支持软件开发而提供的一组工具软件系统。IEEE和ACM的定义:软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成。美国国防部在STARS计划中定义:软件工程环境是一组方法、过程及计算机程序(计算机化的工具)的整体化构件,它支持从需求定义、程序生成直到维护的整个软件生存期。,具有相同或类似含义的环境名称,(1)软件开发环境SDE(SoftwareDevelopmentEnvironment)。(2)软件工程环境SEE(SoftwareEngineeringEnvironment)。(3)软件支持环境SSE(SoftwareSupportEnvironment)。(4)项目支持环境PSE(ProjectSupportEnvironment)。(5)自动开发环境ADE(AutomatedDevelopmentEnvironment)。(6)集成化程序设计环境IPE(IntegratedProgrammingEnvironment)。(7)工具盒Toolbox。(8)工具箱Toolkit。,对软件开发环境的要求,(1)软件开发环境应是高度集成的一体化的系统。(2)软件开发环境应具有高度的通用性。(3)软件开发环境应易于定制、裁剪或扩充。(4)软件开发环境不但可应用性要好,而且是易使用的、经济高效的系统。(5)软件开发环境应由辅助开发向半自动开发和自动开发逐步过渡的系统。,软件开发环境的分类,按解决的问题分类程序设计环境系统合成环境项目管理环境按软件开发环境的演变趋向分类以语言为中心的环境工具箱环境基于方法的环境,软件工具,软件工具是可用来帮助和支持软件需求分析、软件开发、测试、维护、模拟、移植或管理而编制的计算机程序或软件系统。软件工具通常由工具、工具接口和工具用户接口三部分构成。,软件工具发展的特点,(1)软件工具由单个工具向多个工具集成化方向发展。如将编辑、编译、运行结合在一起构成集成工具。注重工具间的平滑过渡和互操作性。(2)重视用户界面的设计。交互式图形技术及高分辩率图形终端的发展,为友好方便的用户图形提供了物质基础。多窗口管理、鼠标器使用、图形资源的表示等技术,极大地改善了用户界面的质量,改善了软件的感观。(3)不断地采用新理论和新技术。如许多软件工具的研制中采用了数据库技术、交互图形技术、网络技术、人工智能技术和形式化技术等。(4)软件工具和软件产业的发展相互推动,促进了软件工具的商品化进程。,软件工具的分类,Reifer和Trattner将软件工具分为六类模拟工具开发工具测试和评估工具运行和维护工具性能测量工具程序设计支持工具。,Westinghouse公司(1992)的13类软件工具分类标准:,系统模拟和模型工具需求追踪需求分析设计编码与单元测试测试与集成文档项目管理配置管理质量保证度量软件再用其他:数据管理、通讯、电子公告牌等。,计算机辅助软件工程,CASE是一组工具和方法的集合,以辅助各个阶段的软件开发。从学术研究角度讲

温馨提示

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

评论

0/150

提交评论