《软件设计的风险.ppt》由会员分享,可在线阅读,更多相关《软件设计的风险.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件体系结构软件体系结构4.4.软件设计的风险软件设计的风险12/4/2022112/4/202221.1.程序员写出自认为没有程序员写出自认为没有程序员写出自认为没有程序员写出自认为没有BugBug的代码。的代码。的代码。的代码。2.2.软件测试,发现了软件测试,发现了软件测试,发现了软件测试,发现了2020个个个个BugBug。3.3.程序员修改了程序员修改了程序员修改了程序员修改了1010个个个个BugBug,并告诉测试组另外,并告诉测试组另外,并告诉测试组另外,并告诉测试组另外1010个不是个不是个不是个不是BugBug。4.4.测试组发现其中测试组发现其中测试组发现其中测试组发现其中
2、5 5个改动根本无法工作,同时又发现了个改动根本无法工作,同时又发现了个改动根本无法工作,同时又发现了个改动根本无法工作,同时又发现了1515个新个新个新个新BugBug。5.5.重复重复重复重复3 3次步骤次步骤次步骤次步骤3 3和步骤和步骤和步骤和步骤4 4。6.6.鉴于市场方面的压力,为了配合当初制定的过分乐观的发布时间表,产品终于鉴于市场方面的压力,为了配合当初制定的过分乐观的发布时间表,产品终于鉴于市场方面的压力,为了配合当初制定的过分乐观的发布时间表,产品终于鉴于市场方面的压力,为了配合当初制定的过分乐观的发布时间表,产品终于上市了。上市了。上市了。上市了。7.7.用户发现了用户发
3、现了用户发现了用户发现了137137个新个新个新个新BugBug。8.8.已经领了项目奖金的程序员不知跑到哪里去了。已经领了项目奖金的程序员不知跑到哪里去了。已经领了项目奖金的程序员不知跑到哪里去了。已经领了项目奖金的程序员不知跑到哪里去了。9.9.新组建的项目组修正了差不多全部新组建的项目组修正了差不多全部新组建的项目组修正了差不多全部新组建的项目组修正了差不多全部137137个个个个BugBug,但又发现了,但又发现了,但又发现了,但又发现了456456个新个新个新个新BugBug。10.10.最初那个程序员从斐济给饱受拖欠工资之苦的测试组寄来了一张明信片。整最初那个程序员从斐济给饱受拖欠
4、工资之苦的测试组寄来了一张明信片。整最初那个程序员从斐济给饱受拖欠工资之苦的测试组寄来了一张明信片。整最初那个程序员从斐济给饱受拖欠工资之苦的测试组寄来了一张明信片。整个测试组集体辞职。个测试组集体辞职。个测试组集体辞职。个测试组集体辞职。11.11.公司被竞争对手恶意收购。收购时,软件的最终版本包含公司被竞争对手恶意收购。收购时,软件的最终版本包含公司被竞争对手恶意收购。收购时,软件的最终版本包含公司被竞争对手恶意收购。收购时,软件的最终版本包含783783个个个个BugBug。12.12.新新新新CEOCEO走马上任。公司雇了一名新程序员重写该软件。走马上任。公司雇了一名新程序员重写该软件
5、。走马上任。公司雇了一名新程序员重写该软件。走马上任。公司雇了一名新程序员重写该软件。13.13.程序员写出自认为没有程序员写出自认为没有程序员写出自认为没有程序员写出自认为没有BugBug的代码。的代码。的代码。的代码。12/4/2022312/4/202243、Hoperun公司软件过程改进公司软件过程改进 一、概述一、概述1任务HOPERUN企业在进行软件过程改进时,考虑到从企业当前的发展要求来看,软件开发的质量及交货已不是主要矛盾,基本上可以满足用户的要求。但是,如何提高软件开发的生产率,使软件开发能做到增加效益,则对企业显得极为迫切。为了提高软件开发的生产率及提高开发效益,成立了软件
6、过程小组(software engineering process group,SEPG)负责软件过程改进。具体任务有三:(1)鼓励开发人员进行软件过程改进;(2)对当前正在进行的软件开发工作的软件过程作出正确而详细的描述及定义;(3)提出一种可行的工作计划,让开发人员遵循,以求改进软件过程。12/4/202253、Hoperun公司软件过程改进公司软件过程改进 2步骤步骤 SEPG采取的过程改进步骤如下:(1)对开发人员调研当前正在进行的软件开发工作,用Petri net描述其软件过程。Petri net中的transition表示软件开发活动,token表示产品,place表示过程等待执行
7、活动的状态。(2)深入分析Petri net所代表的当前的软件过程流图,制定工作计划,并估计在严格执行工作计划后,可能得到的效益。其后,工作计划及效益估计都要经开发人员认可,认同其可行性,有效性。(3)按工作计划对实际项目进行实施。(4)最后,分析实际效果后,肯定了“在测试阶段总的工作量减少10。”可以得出肯定过程改进有效果的结论。12/4/202263、Hoperun公司软件过程改进公司软件过程改进 二、项目概况二、项目概况该公司是进行一系列服务类外包软件的开发。这些软件有类似的结构,其基本结构如图所示。整个系统可分为基本部分和应用部分两大块。其中对各个不同项目说来,实时管理及IO部分是共同
8、的,很少修改;对B,C,D,E,F,G模块,在各个不同项目中只须对其进行少量修改;而模块A和H,则要对其大部分进行修改。12/4/202273、Hoperun公司软件过程改进公司软件过程改进 12/4/202283、Hoperun公司软件过程改进公司软件过程改进 三、调查发现三、调查发现(1)企业的主要问题是如何减少开发费用。对质量及交付日期,目前用户已基本满意,所以不作主要改进的考虑。且数年来,管理人员已对如何减少费用进行不少改进,但收效甚微,所以这次过程改进应主要考虑这一点。(2)从企业管理的要求上来说,技术上决定采用瀑布模型。但发现实际执行时,有些阶段是平行的。要分析原因并解决管理要求与
9、实际执行之间的不一致问题。12/4/202293、Hoperun公司软件过程改进公司软件过程改进 四、软件过程改进工作方法概况四、软件过程改进工作方法概况SEPG的软件过程改进工作分三个阶段,六个步骤,第一阶段:描述当前的与改进的过程第一步:软件开发过程包含许多活动,且相互交互作用,必须精确而形式化地描述。第二步:从当前软件开发过程中收集的数据中指出费用、质量及进度方面的问题。例如,哪些活动需要大量费用,哪些影响质量(即导致许多出错)都一一标出。SEPG与开发组讨论原因。第三步:根据第二步的问题制定工作计划:改进的过程流图及改进的过程流中每一个活动的详细实施方针。前者也用Petri net描述
10、,后者制定成文档。此时各种新的软件工程技术(如设计方法,评审技术,测试技术)引进工作计划,还采用一些过去的过程改进的经验,如CMM的实践等。12/4/2022103、Hoperun公司软件过程改进公司软件过程改进 四、软件过程改进工作方法概况四、软件过程改进工作方法概况SEPG的软件过程改进工作分三个阶段,六个步骤,第二阶段:定量估计工作计划的效益第四步:在执行工作计划前进行效益分析,评估对工作计划的影响,若有几个活动计划,应提出对当前软件开发最合适的计划。12/4/2022113、Hoperun公司软件过程改进公司软件过程改进 四、软件过程改进工作方法概况四、软件过程改进工作方法概况SEPG
11、的软件过程改进工作分三个阶段,六个步骤,第三阶段:与开发人员协同工作进行改进活动第五步:开发者执行新的软件开发过程,此时SEPG对过程进行细致而经常性监管。第六步:新的项目完成后,评估工作计划。12/4/2022123、Hoperun公司软件过程改进公司软件过程改进 具体的改进工作:第一步:精确而形式化地描述开发过程。SEPG对PRl,PR2项目开发人员进行访问,构成项目开发过程的图a所示的Petri Net(SEPG花了3个月进行这项工作)。其中FT&VT可细画为图(b)。实际上SEPG并没有能够直接得到这一过程流图,因在开始时,开发者只是说出管理部门规定他们应该如何做的情况,但不是实际上开
12、发人员所做的情况。所以SEPG花了三个月反复与开发人员讨论,收集开发人员的工作数据每项工作的人日数。了解在每个项目PRl、PR2上如何查出错误及错误的数目。再反映到图上,画出来给开发人员看。讨论每个阶段中开发人员做了什么,没有做什么。最后,经开发人员同意:实际情况确实如图上所呈现的那样,才得到此过程流图。12/4/2022133、Hoperun公司软件过程改进公司软件过程改进 第二步:分析当前开发过程,指出问题。SEPG经分析,发现黑盒测试阶段工作量极大。即在交付前的功能测试与验证测试(FT&VT)是难于控制且极其混乱。在PRl、PR2中开发人员为处理这种混乱经常日以继夜工作。为了度量这些问题
13、,SEPG用三个公式来度量黑盒测试状态。12/4/2022143、Hoperun公司软件过程改进公司软件过程改进 对两个项目的数据进行分析后,得到下表的过程状态的度量值。对两个项目的数据进行分析后,得到下表的过程状态的度量值。上表中M2一栏中的全部错误数指PG阶段及以后的错误,可以看到 M1:开发工作的一半工作量用于黑盒测试。M 2:大部分错误(90以上)是用黑盒测试发现的,说明开发效率十分低,从而产品质量可能很差。M 3:数值相当大。说明质量并没有达到一定的水平。系统中还存在大量错误时,在可以允许停止测试前,就开始了验证测试VT。这说明对管理人员及开发人员来说,交付日期压力太大,所以结果是只
14、能日以继夜工作。12/4/2022153、Hoperun公司软件过程改进公司软件过程改进 为了了解问题发生的根源和制定解决问题的计划,SEFG反复调查下列问题:(1)在黑盒测试中所修正的和发现的错误是哪一阶段产生的。(2)如何复查源代码。(3)如何进行白盒测试。经分析后,SEPG认为要改进以下问题:(1)大部分错误是在PG中造成的,是由黑盒测试发现错误且纠正错误。但在源码审查时只查出极少错误。(2)在白盒测试时没有查出或查出极少错误且白盒测试无记录。主要原因是从管理上没有明确严格的要求。白盒测试只是在FT阶段开始前的业余时间内进行的。(3)虽然大多数人知道必须进行代码审查及白盒测试,但因为准时
15、交付的压力太大,使他们不能正常执行这些活动。12/4/2022163、Hoperun公司软件过程改进公司软件过程改进 第三步:制定工作计划。(SEPG用了约2个星期)过程改进的工作计划包括新的过程流图和进行工作的详细指导原则。新的过程流图如图所示。12/4/202217提出的详细指导原则强调了代码审查,白盒测试等。具体内容如下:(1)坚决执行实际有用的代码审查,具体规定:1)每个人都要履行审查员的作用。2)以每个小时审阅代码100一200行的速度进行审查,以保证代码审查的质量。3)所有新编的或更动过的代码行都必须审查。(2)引进单元测试工具,并对单元测试阶段所发现的问题一律写入报告。具体要求:
16、1)所有新的及更动过的代码都必须用工具测试。2)在UT阶段,对发现及纠正过的错误也都必须记录。(3)按软件系统的结构进行集成测试。为了改进FT&VT阶段,IT阶段的具体要求为:1)按过程图定义的次序完成IT阶段的活动。2)在工作前必须明确地定义每个IT的测试项。3)在IT阶段中发现及排除的错误必须记录。(4)为了使代码审查及UT阶段的项目进度可控,负责人应对每个开发人员作以下要求:1)在代码审查及UT阶段中每个模块的进展及发现错误数都必须记录。2)定期向有关负责人员报告记录内容。12/4/202218第四步:分析新计划的效益:即如何节省开发费用。为了估计新的工作计划的效益,用“实际PRl”代表
17、真实的PRl,用“改进PRl”表示如果执行改进工作计划后的效果。为了比较两者的区别,作如下假定:(1)“改进PRl”在PG及测试阶段发现的错误与“实际PRl”在PG及测试阶段发现的错误数全同。(2)在PG中进行代码审查将查出全部错误的526(数字根据文献给出)。(3)通过白盒测试将查出全部错误的264(数字根据文献给出)。(4)通过FT将查出全部错误的159(数字根据文献给出)。(5)通过VT将查出全部错误的51(数字根据文献给出)。再按下述公式计算每个阶段的效果:表示产品在阶段i需要的总工作量 i为PG,UT,IT,FT及VT之一 12/4/202219表示产品在阶段i需要的总工作量 i为P
18、G,UT,IT,FT及VT之一 12/4/202220对比上述两个表,得到“1-108312700.147”。即可节省147的工作量。因此此方案得到认可。决定按此执行。12/4/202221第五步:执行,监管工作计划及结果。SEPG向开发组详细解释存在的问题,工作计划及其效益。项目管理人员批准按新的计划启动PR3,每个开发人员都很好理解工作目的(通过与SEPG许多非正式会议)。按此工作计划完成后,计算M1,M2,M3,结果如表35所示。从表中发现:首先PR3的Ml改进比期望的小,但要注意在PR3中其他阶段的工作量(即分母)也减小了。在M2上有极大改进,即差不多一半的错误在前面阶段已查出。即在前
19、一阶段进行了质量保证,所以纠错工作量可望减少。而在PR 3中,从M 3的值可看到VT开始时,质量是有保证的,软件可按时交付。从实际数据中得到:在项目的测试阶段,PR3的测试效率及生产率都比PRl有极大改进。总的效益约改进10。12/4/202222第六步:为了更好说明软件过程改进的效果,用“实际PR3”的数据与假定不执行工作计划的“想象PR3”进行比较。为此,作如下假定:(1)在PG以后及测试阶段所发现的错误数相同。(2)“实际PR3”在PG及UT发现的所有错误(对“想象PR3”来说),在FT时已发现且已纠正。(3)“想象PR3”中不进行代码审查及UT。计算公式如前,而按“实际PR3”中的真实
20、数据,结果如表36。二者比较,得到“1-105111920.118”。即改进了11.8。考虑到FT&VT阶段可能发生的混乱情况,改进的实际效益可能更大,应接近于以前的估计。12/4/202223五、五、HOPERUN公司软件过程改进工作小结公司软件过程改进工作小结在进行软件改进过程中,开发人员及管理人员都进行很好的合作,且互有好评,并且大家都理解到:(1)管理人员真正地理解到需要改进软件过程。(2)由于SEPG与全体开发组经常进行许多非正式会议及讨论,思想一致,才能真正做到改进软件过程。(3)全体开发人员认为真正实现了软件过程的改进。如:1)在交付前的混乱状态真正消除了;2)由于许多错误在早期得到纠正,所以软件过程及软件质量更可靠;3)可以想象在PR3中余留的错误会少多了。六、结论六、结论这是一个公司的实际过程改进经验,可以看出:(1)过程改进是需要根据实际情况具体分析,具体处理,不可能只拿一个本本照抄就能执行。要一步一步走,针对问题,解决问题,逐步改进成成熟的开发组织。(2)过程改进是有效益的。12/4/202224