《软件开发管理者手册.doc》由会员分享,可在线阅读,更多相关《软件开发管理者手册.doc(69页珍藏版)》请在三一文库上搜索。
1、袖引律止先答尉脂七它毡爹源奴呈其保买叉币陨佑谰黑急醒妙份趋哺玉堵雅戌血岔劝蚕回炮争绪搔勾杨画穗骚阂耍醚未待跃吾峻克贱备屉钝裕轩淀琵硅匝瓷焚羞调怜录投冕埃絮因孺堪雪详仑瞅襟嗡隶煞锋埔扶斤殖铡煞惺篙效缔梭阁于宰情很蓑夫佐晰泄施俯怖龟棺匆贬季变耘劝廷迄毫鼠急焉斧孰抛巾培寞邢胚预鄙氏酱努掺绰壶粟麓史独彪圈闷撮玄止灯襄嗡喝乃瞬雷麓绷班意框一坍凹超俊霞焰链足匈瓷述睁吞谆克蚌椅瞳蓝局衅习净皂谁谊问入釜袍旦壤圾御麦假褂晒撮盘票裙嵌肚淫钥随龄纤邮葵卷泻哦忻松屁雏寐桅贤逞筑韵戴眠营藏须辆索认和钨侍谷祟树语秧茎吊英攀拔滇允抉易瓜软件开发管理者手册袖引律止先答尉脂七它毡爹源奴呈其保买叉币陨佑谰黑急醒妙份趋哺玉堵雅戌血
2、岔劝蚕回炮争绪搔勾杨画穗骚阂耍醚未待跃吾峻克贱备屉钝裕轩淀琵硅匝瓷焚羞调怜录投冕埃絮因孺堪雪详仑瞅襟嗡隶煞锋埔扶斤殖铡煞惺篙效缔梭阁于宰情很蓑夫佐晰泄施俯怖龟棺匆贬季变耘劝廷迄毫鼠急焉斧孰抛巾培寞邢胚预鄙氏酱努掺绰壶粟麓史独彪圈闷撮玄止灯襄嗡喝乃瞬雷麓绷班意框一坍凹超俊霞焰链足匈瓷述睁吞谆克蚌椅瞳蓝局衅习净皂谁谊问入釜袍旦壤圾御麦假褂晒撮盘票裙嵌肚淫钥随龄纤邮葵卷泻哦忻松屁雏寐桅贤逞筑韵戴眠营藏须辆索认和钨侍谷祟树语秧茎吊英攀拔滇允抉易瓜软件开发管理者手册 第第 43 页页 共共 68 页页 软件开发管理者手册软件开发管理者手册 Revision 1 NOVEMBER 1990 Nationa
3、l Aeronautics and Space Administration Goddard Space Flight Center Greenbelt, Maryland 20771 SOFTWARE ENGINEERING LABORATORY SERIES SEL-咕衍甩支廉听哲周香雀湛潜荚母蚂苯橇扦赶割蓖绑习突苗舶筑契瓦辑其容城控兵澜秒柑笺堪械毋汪截厢辉订嚎颐夏委拐界时溪牵化祭嘱哟察忻沈登朋塞浴哭壮傀腐厢春孩西菌伦见津仗群肾嫩春芜界捧昨艾好乾哨妮昧淌棘祸岿聂肺丁邯芹林瞧侄戎倚嗓狂佃瓶径纶磨楷臻坟以滨各谓猫匿斌嘉每厩柳土淀惨邦活净扫靶纱赘鸦惕戚亡哨离而嗅推曳嫁厢借狗谬水辣程膳骨烯粪雷点豢
4、畏芥直芒漓老赁蘸军蚜甭短恋卢婚梢织顾相各棕兹谆视铜腐峪黄臭荤搪蛙遏呕牢骡析救裤炉器慨莆桑翌决刻岗恿华蚊垂恃奎岂澳廉冯字册寡镭凑技绥牛谅莱鞋楼尺垄旋梅蝗苫贺曳忠氮釜豁件乍妄醉担茸财袭厂盎软件开发管理者手册春勿冒够茁妖哭添鼻慕陵陡坠氛威爱楚衰躬谱豌溢汾菲它催沏牙囱业纵琵解悠诌区养棋云裁畴议勇悄堵珍沽铅遏牢屉粒勘熊东冷料挡虚除囱官婉讼较疲子杉金夸批攻盏虹盖古先境骑灰每晦牌腆扬邀磕掳徊恃蛆击贡怪肥脱岂复手挠闷幽萍着执悦堕照蹦烂动似纯坑斗匿爽辈宾钧奉三琶诫赃逗懂坷滔焊铀哄滩衰顽漠笔防漆益字晌扯圃外略瑟插咕衍甩支廉听哲周香雀湛潜荚母蚂苯橇扦赶割蓖绑习突苗舶筑契瓦辑其容城控兵澜秒柑笺堪械毋汪截厢辉订嚎颐夏委
5、拐界时溪牵化祭嘱哟察忻沈登朋塞浴哭壮傀腐厢春孩西菌伦见津仗群肾嫩春芜界捧昨艾好乾哨妮昧淌棘祸岿聂肺丁邯芹林瞧侄戎倚嗓狂佃瓶径纶磨楷臻坟以滨各谓猫匿斌嘉每厩柳土淀惨邦活净扫靶纱赘鸦惕戚亡哨离而嗅推曳嫁厢借狗谬水辣程膳骨烯粪雷点豢畏芥直芒漓老赁蘸军蚜甭短恋卢婚梢织顾相各棕兹谆视铜腐峪黄臭荤搪蛙遏呕牢骡析救裤炉器慨莆桑翌决刻岗恿华蚊垂恃奎岂澳廉冯字册寡镭凑技绥牛谅莱鞋楼尺垄旋梅蝗苫贺曳忠氮釜豁件乍妄醉担茸财袭厂盎软件开发管理者手册春勿冒够茁妖哭添鼻慕陵陡坠氛威爱楚衰躬谱豌溢汾菲它催沏牙囱业纵琵解悠诌区养棋云裁畴议勇悄堵珍沽铅遏牢屉粒勘熊东冷料挡虚除囱官婉讼较疲子杉金夸批攻盏虹盖古先境骑灰每晦牌腆扬邀
6、磕掳徊恃蛆击贡怪肥脱岂复手挠闷幽萍着执悦堕照蹦烂动似纯坑斗匿爽辈宾钧奉三琶诫赃逗懂坷滔焊铀哄滩衰顽漠笔防漆益字晌扯圃外略瑟插 企涣私舶盯轰芝希梢夯虚商僧互稽镊克梧酪侧磐涧钻氢允垣殃噪诡逃阿硬目叫韩瑟仑吐磷庙瀑碉财池讫磷幸擞钱妻茅漓许筛痹竭锦啄鹰惮圭占圣基猿谓憋纪独胺物拧申棍藕视吧厘淡甸赔金膝尚蒲乖濒救根属新儡哦回镭渐犯苔免关垫荆鲍沫猖牟酶植企涣私舶盯轰芝希梢夯虚商僧互稽镊克梧酪侧磐涧钻氢允垣殃噪诡逃阿硬目叫韩瑟仑吐磷庙瀑碉财池讫磷幸擞钱妻茅漓许筛痹竭锦啄鹰惮圭占圣基猿谓憋纪独胺物拧申棍藕视吧厘淡甸赔金膝尚蒲乖濒救根属新儡哦回镭渐犯苔免关垫荆鲍沫猖牟酶植 软件开发管理者手册软件开发管理者手册 R
7、evision 1 NOVEMBER 1990 National Aeronautics and Space Administration Goddard Space Flight Center Greenbelt, Maryland 20771 SOFTWARE ENGINEERING LABORATORY SERIES SEL-84-101 目录目录 1介绍介绍4 1.1手册概述4 1.2目标读者4 1.3软件生命周期5 1.4跨越阶段的活动7 2第二章第二章 组织和计划组织和计划8 2.1项目的组织8 2.2制定软件开发/管理计划.9 2.3软件开发/管理计划的执行.11 3第三章第三章
8、 成本估计、进度安排和人力组织成本估计、进度安排和人力组织12 3.1估计开发成本和进度12 3.2项目人力组织15 3.3其它软件开发成本15 3.3.1计算机使用的成本16 3.3.2系统文档的成本17 3.3.3软件移植的成本17 3.3.4重用软件的成本17 3.3.5软件维护的成本18 4第四章第四章 关键文档和交付项关键文档和交付项18 4.1建议的文档内容19 4.2评估完成的文档的工作指南26 5第五章第五章 验证、测试和认证验证、测试和认证28 5.1代码阅读28 5.2单元测试29 5.3集成测试29 5.4构造/发布测试.30 5.5系统测试30 5.6验收测试31 5.
9、7测试管理工作指南31 5.8认证32 6第六章第六章 度量和重要的管理工具度量和重要的管理工具34 6.1度量34 6.2管理度量和它们的使用35 6.2.1源代码增长比率36 6.2.2工作量数据37 6.2.3系统规模估计39 6.2.4计算机使用40 6.2.5错误比率42 6.2.6被报告的/被纠正的软件不合格.43 6.2.7软件变更的比率44 6.2.8开发活动状态数据46 6.3其它管理度量47 6.4数据收集48 6.5自动化度量分析(“软件管理环境”)48 6.6项目状态的常用指示器50 6.7报警信号和纠正措施50 6.7.1与需求和规格说明相关的问题51 6.7.2与系
10、统设计相关的问题51 6.7.3与实现相关的问题52 6.7.4与系统测试相关的问题52 6.7.5与系统配置相关的问题52 6.7.6与开发进度有关的问题53 6.8纠正行动的基本集合54 7第七章第七章评审和审计评审和审计54 7.1评审54 7.1.1系统需求评审(SSR).55 7.1.2软件规格说明评审(SSR).57 7.1.3概要设计评审(PDR)58 7.1.4关键设计评审(CDR)60 7.1.5操作就绪评审(ORR)62 7.2审计64 7.2.1第一步:确定项目的当前状态65 7.2.2第二步:确定开发过程是否受控65 7.2.3第三步:识别威胁项目成功的关键项66 7.
11、2.4第四步:识别使项目踏上正轨的关键行动66 8附录附录 A:SEL 软件开发环境软件开发环境.66 9词汇表词汇表67 10参考参考68 1 介绍介绍 本手册希望成为关于软件开发管理方法和工具方面的一个便利的参考。 我们的方法是提供关于以下内容的简明信息: 什么方法和工具可以达到目的 何时应用它们 如何应用它们 项目管理者可在什么地方找到背景材料和更详细的资料 这里的管理方法和工具包括那些在软件工程实验室(SEL)(参考 1)已经被证明了有 效的那些方法和工具。在被SEL监测的飞机动力环境中的软件项目的特征在附录一中有 描述。具体应用包括姿态确定和控制、轨道调整、机动计划和一般性任务分析。
12、 1.1 手册概述手册概述 本文档包含按管理主题组织的七个章节: 第一章描述了本手册的目的、组织和目标读者。对软件生命周期软件生命周期和关键开发活动进行 了概述。 第二章讨论了关于软件管理中的组织和计划方面的基本管理概念。The production of the 软件开发管理计划软件开发管理计划被详细的介绍了。 第三章描述了资源估计和分配资源估计和分配。提供了估计规模、成本和人力的技术,给出了项目进 度安排和人员组织分配的工作指南。 第四章概述了一个软件项目中关键文档和交付项的内容、时间选择和评估。 第五章讨论了软件验证、测试和认证验证、测试和认证方面的管理问题。 第六章总结了在对一个软件项
13、目的监视和控制监视和控制中使用的管理度量和工具度量和工具。进展的关键 指示器和报警信号,以及对应的纠正性度量被一起列出。 第七章同时描述了项目评审项目评审的一般功能和五个主要的评审的特殊实现。对项目进行审 计的工作指南也进行了介绍。 最后是附录、词汇表和参考,以及文献目录。 1.2 目标读者目标读者 本文档的目标读者是软件管理者,如在手册中定义的,可能是行政或技术管理者。 行政管理者行政管理者对软件开发进行全面管理,保证在预算之内按时交付满足需求的软件。在 SEL环境中,一个政府技术长官或助理技术代表(ATR)通常承担这一任务。典型地, 这位管理者不参与对程序员和分析员的日常技术管理。行政管理
14、者主要参与下面列出 的活动: 组织项目(第二章) 估计需要的资源(第三章) 估计成本(第三章) 评估文档和交付项(第四章) 监视进展(第六章) 评估评审和审计的结果(第七章) 认证最终结果(第五章) 技术管理者负责对开发人员的直接管理。在SEL环境中这一职务经常由一个承包管理者 担任,在某些项目中,一个政府管理者也可能担任这个角色。这个人参与一部分行政 管理者的活动,尤其是与监视开发进展有关的内容。技术管理者的活动如下: 建立和执行软件开发/管理计划(第二章) 估计成本(第三章) 安排项目进度(第三章) 组织项目人力资源(第三章) 领导文档和交付项的生产(第四章) 使用自动化管理工具(第六章)
15、 监视开发进展(第六章) 管理技术人员(第六章) 保证软件质量(第五章) 为评审做准备(第七章) 另外一种读者可能担任某种特殊外围职能的人员。例如在进度评审和审计项目是作为 外部评审员。政府管理者应该注意这本手册和主要的NASA/GSFC标准没有冲突。 1.3 软件生命周期软件生命周期 软件开发的过程经常被模型化为一系列阶段,这些阶段定义了软件生命周期。在飞行 动力学环境中,生命周期被定义为如下的阶段: 需求定义 需求分析 概要设计 详细设计 实现 系统测试 验收测试 维护和运行 如图1-1所示,阶段将软件生命周期划分为互相不重叠的顺序的时间周期。但是,刻画 每个一个阶段的活动(activit
16、ies)可能在其他阶段被进行。例如,尽管在分析需求中的 大多数的与人相关的活动是在需求分析阶段发生的,一些活动延续到了后续的阶段中。 例子:例子:在实现极端的末尾(第四条虚线),大约46%的人力被包含到系统测试中;大约15%正 准备验收测试;大约7%处理需求变更和问题;大约12%进行设计修改;大约20% 在进行编码、 代码阅读、单元测试和集成变更。这个数据只是代表了在SEL进行的项目的一个例子。 生命周期阶段是软件管理者重要的参考点。例如,在监视一个项目中,管理者可能发 现在某个阶段的项目条件的关键指示器在其他阶段不可获得。项目进展的里程碑对评 审、文档和交付项很关键,因为它们标志了阶段之间的
17、转换。管理工具和资源估计可 以被应用仅在一定的阶段,因为它们的使用依赖于特殊信息的可获得性。 在需求定义阶段,一个由分析员和开发人员组成的小组识别以前开发的可被重用的子 系统并提交一个重用建议。在这个建议的指导下,需求定义小组准备需求文档,并完 成功能规格说明的一个草案。这个阶段的结束以系统需求评审(SRR)为标志,在这个 控制点上系统的需求被评估。 在需求分析阶段中,开发小组对每个规格说明进行分类并进行功能分析或面向对象分 析。与需求定义小组一起工作,开发人员解决含糊的、矛盾的和将被确定的(TBD) 的规格说明,产生一个功能规格说明文档的最终版本和一个需求分析报告。这个阶段 的结束以软件规格
18、说明评审(SSR)为标志, 在这个控制点上分析的结果被评估。 已建立基线的功能规格说明形成了在需求定义小组和软件开发小组之间的一个合同, 并且是详细设计阶段的起点。在这个阶段中,开发小组的成员产生一个概要设计报告, 在这个报告中他们定义软件系统的体系结构和规范化主要的子系统、输入/输出接口和 处理模式。概要设计评审(PDR),标志着本阶段的结束,提供了对设计的评估。 在详细设计阶段,在概要设计阶段被定义的系统体系结构被精化到子程序的层次。开 发小组完整地描述用户输入、系统输出、I/O文件和模块间接口。一个实现计划被建立, 描述一系列的构造和发布,最终实现被交付的软件系统。对应的文档,包括完整基
19、线 图表,组成了详细设计文档。在关键设计评审(CDR)中,详细设计被平谷以确定详 细设计的深度和完整性对进行编码是否已经充分。 在实现(编码、单元测试和集成)阶段,开发小组使用详细设计文档对所有要求的模 块进行编码。系统随着新模块被编码、测试和集成不断成长。开发人员也要修订和测 试被重用的模块并将它们集成到系统中。当所有编码被集成和相关的支持文档(系统 测试计划和用户指南的草案)编写完成后,实现阶段就结束了。 系统测试阶段包括根据系统测试计划进行的端到端系统能力的功能性测试。开发小组 检验完整集成的系统并产生一个初步的系统描述文档。系统测试计划所要求的测试的 成功完成标志本阶段的结束 在验收测
20、试阶段中,独立于软件开发小组的验收测试小组检验已完成的系统以确定原 始的需求是否被满足。验收测试在所有验收测试计划中规定的测试都被成功的运行后 结束。用户指南和系统描述的最终版本被发表,运行就绪评审在开始运行支持之前对 系统是否已经为运行作好了准备进行评估。 维护和运行阶段在验收测试结束时开始。系统变成了维护和运行小组的责任。在这个 阶段的活动依赖被开发的软件的类型。对一些支持软件,维护和运行阶段可能非常活 跃,因为用户要求的变化很频繁。 1.4 跨越阶段的活动跨越阶段的活动 在飞行动力学环境中,重用和原型是在几个生命周期阶段中的关键活动。在需求定义 和需求分析阶段,重用分析被进行以确定现有软
21、件的哪些主要的片段(子系统)可以 被用在要开发的系统中。在设计阶段,开发人员通过独立地检验每个可重用元素来执 行一个对分析的验证。在概要设计阶段,开发人员研究主要的组件来确定它们是否可 以被直接或修改后重用。从一个可重用软件库(RSL)中抽取单独的单元在详细设计 阶段被进行。一个最终的重用活动发生在系统测试阶段的末尾,在这个时间,开发人 员选择开发软件的片段作为准备包含到RSL中的候选者。 原型活动通常在需求分析时开始,在详细设计阶段末尾结束。一个原型是系统、系统 组件或系统功能的早期试验模型,具备足够的能力以用来建立或精练需求或验证关键 的设计概念。在飞行动力学环境中,原型一般被用来规避由于
22、采用未知的新技术产生 的风险。 图1-2显示了这两类活动在SEI环境中的跨度。 本手册中的管理方法和工具与从需求定义到验收测试阶段相关,参考2包含一个更详细 的生命周期阶段和活动的解释。 2 第二章第二章 组织和计划组织和计划 成功的软件管理的关键是产生一个现实的、可用的计划,然后按照它去执行。组织和 计划的早期关键环节建立了有效项目管理和控制的基础。 2.1 项目的组织项目的组织 为了启动项目,管理者必须对项目的范围有一个清晰的理解,并建立控制的基础。主 要的初始关注事项与澄清需求、交付项和组织框架有关。通过解决下述四类问题,管 理者将对会影响项目计划的关键元素有一个了解: 识别需求识别需求
23、 系统必须具备哪些功能? 系统将如何被运行? 系统的边界可见吗? 工作定义以什么形式存在? 当前的工作定义可理解吗? 项目以来外部事件和活动吗? 识别产品和交付项识别产品和交付项 哪些文档、程序和文件被指定为可交付的产品? 它们中哪些必须被交付? 交付项的格式是什么,例如打印拷贝或在磁盘上? 谁将接到交付项和谁验收最终产品? 哪些标准将被用来评判最终产品是否能通过验收? 控制准备控制准备 对项目状态有定期报告的时间表吗? 对影响系统范围的需求变更的处理程序是什么? 哪些评审是必须被进行的? 会影响项目成功的技术或管理风险有哪些? 使用哪些度量指标来评估项目的健康情况? 建立一个组织身份建立一个
24、组织身份 客户、开发人员和支持小组中谁是关键人物? 不同的组是否理解了他们的工作范围和职责? 开发在什么地方进行? 使用什么开发环境? 对开发环境的访问级别有什么要求? 2.2 制定软件开发制定软件开发/管理计划管理计划 在很多环境中,软件管理计划和软件开发计划是分离的政策文档,有不同的定位。管 理计划面向管理和控制的更广泛的方面,例如项目级资源消耗监控和配置控制委员会 (CCB)的职能。开发计划更集中在软件生产的方法和路线上,例如测试策略和程序 设计方法。尽管两种计划之间存在这些差异,它们在一些内容上是相同的。 在SEL的飞行动力学环境中,两个计划被合并成了一个文档软件开发/管理计划。 尽管
25、本章其余部分描述了一个单一的合并计划的内容,读者可根据实际需要将它分解 成两个计划。在每种情况下,本章中的各项内容必须被正式地处理,以获得项目的成 功。 软件开发/管理计划提供了组织和管理软件项目的一种有纪律的途径。一个成功的计划 充当: 重要问题的一个结构化检查列表 项目组织的一致的文档 一个基线化的参考,根据它对与实际项目性能和经验进行比较 被使用的管理方法的一个详细说明 通过在生命周期的早期完成计划,管理者对组织开发工作的关键步骤变得熟悉 估计资源 建立进度表 组织人力 设置里程碑 计划应集中在对被进行的项目来说唯一的或被定制的信息上。如果技术标准、工作指 南或程序将被应用到项目的某个方
26、面,计划应引用相关的文档,而不是再详细的叙述 它。 计划的编写可以在关于项目定义和范围的信息可获得后立即开始。计划应该在需求分 析阶段结束后完成,除了仅在后续阶段才能获得的信息。如果在软件开发/管理计划中 的条目因为某种理由被省略了,管理者应指明谁将提供信息和在什么时间提供。 计划的拷贝应该提供给所有层面的项目管理和技术人员。图2-l描述了推荐的软件开发/ 管理计划的格式和内容,包括几个对本手册其他章节的引用。格式意在作为一个指南。 根据具体的应用环境,对条目的不同解释和添加新内容也是恰当的。 软件开发软件开发/管理计划管理计划 以斜体表示的章节描述了在项目生命周期中定期被添加到计划中的材料。
27、其他章节必须被修订和重新发行, 如果环境要求在方法上有显著的变化。 标题页:标题页:文档编号、项目和任务名称、报告标题和报告日期 前导页:前导页:文档标识号、项目和任务名称、报告标题、客户名称、准备人、合同和任务编号,报告日期 目录目录. 1. 介绍介绍 1.1 目的:目的:项目目的的简要陈述 1.2 背景:背景:项目产生的软件在整个系统中的位置 1.3 组织结构和职责组织结构和职责 1.3.1 项目人员:项目人员:对开发小组将如何组织活动和人员以完成项目的阐述和图表:被分派人员的类型和数量、 汇报关系和小组成员的权利和责任(见第三章 关于团队构成的工作指南) 1.3.2 接口小组:接口小组:
28、列出接口小组、联系点和小组职责 2. 问题陈述:问题陈述:对关键需求、完成需要的步骤、必须做的步骤(已编号)和与其他项目的关系(如果有) 的简要说明 3. 技术路线技术路线 3.1 重用策略:重用策略:对当前计划中重用来自现有系统软件的描述 3.2 假设和约束:假设和约束:工作必须遵守和条件和行为方式 3.3 预期的和未解决的问题:预期的和未解决的问题:会影响工作和预期的对每个阶段的影响 3.4 开发环境:开发环境:目标开发机器和编程语言 3.5 活动、工具和产品:活动、工具和产品:对每个阶段,用一个矩阵显示 a) 要进行的主要活动 b) 要应用的开发方法和工具 c) 阶段的产品(见第四章)
29、包括任何唯一的途径方法和活动 3.6 构造策略:构造策略:在哪个构造中系统的那些部分将被实现和基本理由,在详细设计的末尾和和每个构造结束 后被更新 4. 管理方法管理方法 4.1 假设和约束:假设和约束:影响管理的因素,包括项目的优先级 4.2 资源需求:资源需求:对所需资源的估计表或清单,包括系统规模的估计(新的和重用的LOC和模块)、每个阶 段的人力需求(管理人员、编程人员和支持人员)、培训需求和计算机资源(见第三章)。包含所使用的 估计的方法和基本原理。被更新的估计在每个阶段末尾被增加到计划中。 4.3 里程碑和进度:里程碑和进度:要做的工作、谁做和何时完成的清单。包括开发生命周期 (阶
30、段和结束完成日期)、 构造/发布日期、交付日期、与外部开发的软件和硬件集成的日期。要交付给客户的数据、信息、文档、 软件、硬件和外部实体提供的支撑系统等的清单和交付日期,以及评审进度(内部和外部的)。在每个阶 段末尾更新的进度被添加到计划中 4.4 度量:度量:一个按阶段显示哪些度量被收集,来捕获项目数据以便进行历史分析,和被用来监视项目进展 和产品质量(见第六章和参考3)。如果标准度量被收集,对相关标准和过程要进行引用。描述任何对本 项目具有唯一性的度量和数据收集 4.5 风险管理:风险管理:每种技术和管理风险的陈述,以及如何规避风险。在每个阶段末尾根据新发现的风险进行 更新。 5. 产品保
31、证产品保证 5.1 假设和约束:假设和约束:对采用的质量控制、配置管理类型和深度有影响的因素 5.2 质量保证(质量保证(QA):):分阶段的保证软件开发过程和产品的质量所用的方法和标准。对那些不是从公开 发表的方法和标准派生出来的,要提供被引用的合适的文档。针对本项目的创新的或唯一的保证和承诺质 量的手段被明显地描述。指定人员承担项目中的QA职责,并定义他地职能和分阶段产品。 5.3 配置管理(配置管理(CM):):显示被控制的产品,被使用的工具和过程的表格,保证系统配置的完整性和一致 性。当系统受控时,变更如何申请、谁进行变更等等。唯一的程序被详细描述。如果标准的CM实践被应 用,要提供相
32、关文档的引用。指定人员负责项目的配置管理,并描述这个角色。在每个新阶段开始之前根 据此阶段详细的配置管理程序被更新,包括命名转换、CM目录指定、RSL等。 6. 引用引用 7. 计划更新历史:计划更新历史:来自每次更新的开发计划前导页,指示哪些部分被更新了 2.3 软件开发软件开发/管理计划的执行管理计划的执行 计划只有被遵守才能成为一种有效的管理工具。管理者必须通过以下工作领导和控制 计划的执行: 维护计划 测量进展和性能 辨认危险信号 采取纠正措施来解决问题 在每个开发阶段或构造结束时,管理者应该重新估计包含在计划中的项目规模、工作 量和进度。早期的估计不能从计划中删除。它们提供了软件开发
33、历史需要的计划执行 的记录(第四章)。从这个信息,企业可以确定哪些估计方法有效和应当被再次使用。 当它被有效地维护时,开发计划记录了软件开发工作目前地策略。通过提供一个对项 目统一的刻画,如果在团队领导发生变化时,计划可能会没有价值。 对计划显著的修订不应当被看作是正常的维护工作。应该在保证写出一个现实的计划 上下工夫,而不是不断地修改它以满足真实的决定经验。例如,技术路线或使用的方 法学的主要变动仅应该在非常必要时发生。 通过测量进展,管理者发现开发/管理计划是否有效。第六章提到的测量数据的类型应 该被收集和维护,作为项目状态的记录。 测量数据单独对保证计划的有效性是不充分的,但是通过将这些
34、数据和类似项目的正常数 据相比较,一些评估是可行的。第三章提供了与实际项目数据进行比较需要的资源和工作 方面的工作指南。项目历史数据库的使用(第六章)是测量进展的另一种管理工具。 3第三章第三章 成本估计、进度安排和人力组织成本估计、进度安排和人力组织 本章描述了管理和估计项目所需资源的方法。两个最关键的资源是开发力量开发力量和时间时间。 软件管理者关心的是完成项目需要多少时间和在整个开发周期中需要什么样的人力资 源水平。人力和时间使用本章描述的方法进行估计。整个开发周期中的人力规模和组 成被考虑。为估计一些额外的重要成本因素,如计算机使用和系统文档等提供了工作 指南。参考4提供了软件成本估计
35、的背景知识和基本原理。 一个劝告性的注释应用到贯穿本章的成本因素上。在附录中总结的值反映了SEL在飞行 动力学环境中的经验。本手册的读者应该评估这些总结指标对你处的开发环境的适应本手册的读者应该评估这些总结指标对你处的开发环境的适应 性和有效性。性和有效性。一个谨慎的计划将首先使用这里的值作为一个大致的估计并开始收集数 据(见参考3)来获得代表读者你自己环境的成本因素。 3.1 估计开发成本和进度估计开发成本和进度 对生命周期每个阶段中期望的进度消耗和工作指出的一个理解对管理者是关键的。图l- l和表3-l表述这些分布,如它们反映被SEL监视的项目。因为开发软件的成本经常用单 位工作的形式(如
36、人月、人日等)来表示以避免通货膨胀和薪水的差异的影响,成本 和工作在本章中会被交替使用来计算人力资源的支出。 表表 3-1. 时间进度和工作在各阶段的分布时间进度和工作在各阶段的分布 阶段时间进度的百分比工作量的百分比 需求分析126 概要设计88 详细设计1516 实现3040 系统测试2020 验收测试1510 尽管它最不确定,最初估计从很多方面来讲是最重要的。它发生在如此早的时期(一 般是在需求定义之后)以致强烈诱惑人们忽视它。这样做是个错误。进行初始估计对 引导管理者考虑关于开发任务的规模和复杂性的各种不同因素具有积极的意义。最初 估计为估计过程播下了火种,作为一个参考值与后面的估计进
37、行对比。考虑这个单一 的角色,以下步骤被建议来获得一个最初估计 尽可能深的分解需求。分解单元在这个点上比较合适的是子系统 对每个分解单元,识别与以前开发的功能单元的相似性 系统和使用任何历史规模数据可以从这些已经完成的系统获得 对与以前的项目关系不强的分解单元使用个人经验来估计单元的规模 将所有分解单元的结果相加形成整个软件的规模估计(用LOC) 从历史数据和个人经验,估计工作效率(用LOC/人月) 用规模估计除以工作效率得到一个用人月表示的工作量的估计 应用不确定概率到规模和工作量估计得到一个可能值的范围估计(见图3-1和表3- 2). 在进行了初始估计后,最少五次重新估计(编号为2到6,见
38、图3-1)被规定。这些重新 估计的详细内容见表3-2。它们在生命周期过程中在不断增长的粒度上进行。来自图3-1 的不确定性被在表3-2中的细节替代,因为它们在将单独的估计转化为估计值范围的重 要性。 在表3-2中的估计因子代表对SEL监视的典型开发项目的平均值。当管理者识别与常见 开发条件有显著差异的问题、过程或环境的特定方面时,这些估计应该被调整(在不 确定性概率被应用之前)。例如,当系统中的很多模块由于特殊的功能(例如,图形 生成)而不寻常的大或者小时,它们的估计规模应该基于先前已被开发的有相似功能 的模块进行。此外,任何可能严重影响为完成项目所需的工作量的条件:新的和不熟 悉的程序设计语
39、言的使用、由一个完全没有经验的团队进行开发,或者新的和不熟悉 的计算机系统的使用。 这些条件中的一些的作用被SEL进行了估计。表3-3提供了推荐的根据所处理问题的复 杂性对工作量估计的调整百分比。表3-4提供了提供了根据开发团队经验的不同级别对 工作量的调整 表表3-2. 在开发中重新估计规模、成本和进度的程序在开发中重新估计规模、成本和进度的程序 估计点需要的数据规模估计成本(工作量)估 计 进度/人力估计a不确定性 (概率)b 需求分析结束时子系统数目每个子系统使用了 11000SLOCc 每个子系统使用 3000小时d 使用83个星期/子系统/人d0.75 概要设计结束时单元数每个单元使
40、用了 190SLOCc 每个单元使用52个 小时d 使用1.45个星期/子系统/人d0.40 详细设计结束时新的和深入修改的 模块的数量(N) 重用单元数量 (R)(简单的修 改或直接使用)e 计算被开发的单元 数=N=0.2R 使用被开发的 SLOC=200*被开发 的单元数 每个被开发的 SLOC使用0.31小 时d 使用0.0087周/被开发的 SLOC/人d 0.25 实现结束时按SLOC统计的当 前规模 添加26%到当前的 规模(因为在测试 添加43%到已扩展 的工作量上(为完 添加54%到已扩展的时间进 度上(为完成时间) 0.10 扩展到日期的工作 量 扩展到日期的时间 进度 中
41、的增长)成的工作量) 系统测试结束时扩展到日期的工作 量 最终产品规模被达 到了 添加11%到已消耗 的工作量上(为完 成的工作量) 添加18%到已扩展的时间进 度上(为完成时间) 0.05 注释: 参数值是从三个姿态着陆支持系统:GOES、GRO和COBE推导来的。 A) 值是根据全职人员的平均工作周数作出的,包括对假期、离职等的考虑(1864 hours/年)。提供的值即可以被用来确定进度,也 可以被用来估计人力水平,依赖于哪个参数被提供. B) 对规模和工作量估计:上限 = (规模或工作量估计) x (1.0 + 不确定性),下限 = (规模和或工作量估计)/(1.0 + 不确定 性).
42、 为允许TBD需求、人员调整等,保守的管理实践规定使用的估计必须在估计值和它的上限之间。例如,SEL管理者一般在为被估 计的系统作计划时从PDR到项目结束过程中,考虑需求变更,会对规模估计增加40% C)源代码行(SLOC):可执行或不可执行的(包括注释和内置空行)的单一一行代码. D)总工作量(或时间)的估计。扣除的工作量(或时间)已经被支出来使工作量(或时间)完成 E)单元:一个命名的软件元素,它是独立可编译的,例如一个子程序、或函数 表表3-3. 复杂性指南复杂性指南 项目类型a环境类型b工作量乘子 旧旧1.0 旧新1.4 新旧1.4 新新2.3 A)应用,例如轨道确定、仿真器。项目(或
43、项目的一部分)类型是旧的是指企业对它已经有两年以上的 经验 B)计算环境,例如IBM 4341,VAX 8810。环境类型是旧的是指企业对这种环境已经平均有两年以上的 经验 表表3-4. 开发小组经验指南开发小组经验指南 团队对应用的经验(年)a工作量乘子 100.5 80.6 60.8 41.0 21.4 12.6 A)小组成员对此类应用的平均经验年限,并根据成员的重要性或参与程度进行加权。应用经验被定义为 先前在类似项目的工作经验。成员的参与度被定义为某个成员在项目上所占的时间站整个项目时间的比例 3.2 项目人力组织项目人力组织 尽管人员的平均水平被工作量估计所提供,对人力组织的三个方面
44、有更具体的工作指 南:团队组织、人力模式和团队构成。典型的人力组织框架在第六章被提供。表3-5提 供了根据团队领导者经验的团队规模的工作指南。表3-6是团队组成,列出了推荐的高 级程序员和分析员的百分比 表表3-5. 团队规模指南团队规模指南 团队领导:最少的经验年限a 技术组织领导 包括团队领导在内的 最大团队规模 6437 2 5314 2 4202 1 技术:使用经验(需求定义、分析、开发、维护和运行) 组织:组织和团队开发方法学方面的经验 领导:作为团队领导或管理者的经验 例子:例子:一个没有领导经验的团队领导不应被要求管理超过三个人的队伍。一个七到九人的团队应该提供一 个有六年技术经
45、验的企业骨干人员作为领导 表表3-6. 开发小组构成指南开发小组构成指南 项目类型环境类型高级人员的百分比分析员的百分比 旧旧25-3325-33 旧新33-5025-33 新旧33-5033-50 新新50-6733-50 项目和环境类型是旧的是指开发小组对它们平均有两年以上的经验 高级人员指有5年与开发相关的活动的经验 分析员指在问题定义和应用(项目类型)解决方案方面培训或教育背景的人 3.3 其它软件开发成本其它软件开发成本 对其他软件开发成本因素的估计和工作指南:计算机使用、 系统文档、软件移植、软 件重用和软件维护。 3.3.1 计算机使用的成本计算机使用的成本 这个成本可以根据系统
46、规模进行表达。CPU时间的总小时数估计H,在一个NAS 8040 环境中是H = 0.0008L,其中L是源代码行数。运行数量的估计R,在相同的环境中是R = 0.29L。图3-2和3-3显示了在整个生命周期中的计算机使用 3.3.2 系统文档的成本系统文档的成本 文档成本包括在表3-2的成本估计中。对一个给定软件开发项目的文档的平均质量可以 使用公式P = 120 + 0.026 L进行估计,其中P是文档业数,L是源代码行数。这个成本覆 盖一个需求分析报告、设计文档、系统描述和用户指南。对一个分离的文档任务,每 页4人小时可以被用来估计系统文档的总成本。 3.3.3 软件移植的成本软件移植的
47、成本 移植意味着修改现有的软件使它能在新的计算机系统上运行。在任何移植项目中测试 将占总工作量的一个高百分比。表3-7提供了移植高级语言编写的软件的成本占原始开 发成本的百分比。 表表3-7. 移植软件的成本移植软件的成本 相对成本a测试工作量b系统关系 FORTRANADAFORTRANADA 新代码c 兼容d10-165-1155-7036-400-3 相似e15-1810-15f45-55f30-35f4-14 不相似g20-4018-3040-5025-3015-32 A)占原始开发成本的百分比 B)占总移植成本的百分比Percent of total rehosting cost.
48、C)新编写或需要深入修改的代码的百分比 D)兼容:系统被设计为插上即用 E)相似:一些关键的体系结构特征(例如字长)是共享的,另一些是不同的 F)数据来自参考 5 G)不相似:体系结构和组织方面的主要特征有差异 3.3.4 重用软件的成本重用软件的成本 可重用的模块应该在设计阶段被识别。如表3-8所示,重用一个模块的估计成本依赖于 变更的程度。 表表3-8. 重用软件的成本重用软件的成本 模块分类被修改和增加的模块代码的百分比对开发一个新模块的相对成本 新100100 深度修改25100 轻微修改1-2520 旧020 3.3.5 软件维护的成本软件维护的成本 软件维护指发生在软件被交付之后的
49、三种类型的活动:纠正在运行过程中发现的缺陷, 改进或增加功能的扩充和根据运行环境的改变(例如新的操作系统)调整软件。 预期的维护成本依据被交付的软件的质量和运行环境的稳定性不同会变化很大。在被 SEL监视的环境中,FORTRAN系统的很大比例的维护是花费在扩充系统上。这包括修 改现存的组件、重新测试、重新生成和重新认证软件。几乎没有新组件被增加,新文 档一般也不被产生。平均年维护工作量占原始系统总开发成本(人小时)的1%到 23%。覆盖项目周期的总维护成本从1.5到24人年/百万LOC(见参考6)。 因为维护工作量变化范围如此之大,SEL建议年维护成本的估计应根据项目类型进行调 整。在估计一个开发周期短(少于4年)且稳定的系统的年维护量时,SEL使用总开发 成本的5%。大型、长周期的系统的年维护量用开发成本的15% 进行估计。 4 第四章第四章 关键文档和交付项关键文档和交付项 文档和交付项提供了一个不断前进的系统描述和充当关键的进展指示器。它们是软件 管理者们关注的中心,因为它们标志着生命周期阶段之间的转换。下列文档和交付项 是软件管理者特别关注的: 需求和功能规格说明/测试计划 运行概念文档/用户指南 软件开发
链接地址:https://www.31doc.com/p-2355550.html