北京大学软件工程国家工程研究中心建设概要

上传人:好** 文档编号:107267016 上传时间:2019-10-18 格式:PPT 页数:137 大小:1.14MB
返回 下载 相关 举报
北京大学软件工程国家工程研究中心建设概要_第1页
第1页 / 共137页
北京大学软件工程国家工程研究中心建设概要_第2页
第2页 / 共137页
北京大学软件工程国家工程研究中心建设概要_第3页
第3页 / 共137页
北京大学软件工程国家工程研究中心建设概要_第4页
第4页 / 共137页
北京大学软件工程国家工程研究中心建设概要_第5页
第5页 / 共137页
点击查看更多>>
资源描述

《北京大学软件工程国家工程研究中心建设概要》由会员分享,可在线阅读,更多相关《北京大学软件工程国家工程研究中心建设概要(137页珍藏版)》请在金锄头文库上搜索。

1、软件体系结构 (Software Architecture),讲义14:以体系结构为中心的 软件项目管理,内容,内容简介 以体系结构为中心的软件项目计划 全局分析 管理期望 项目组织 建立项目文化和小组 软件项目经理的角色 权衡和项目决策 增量式开发 创建可视性与避免意外 在激烈的竞争中保持冷静 需关注的度量 什么是“出色的工作” 总结,技术和管理是项目成功的两个基石,好的设计和项目管理技巧对于项目的成功大有帮助 作为一个产业,我们还未能非常成功地管理成功的软件项目。成功的项目是指达到计划的开发进度、提供承诺的功能并交付高质量软件的项目 据1995年Standish Group CHAOS的报

2、告,他们对软件项目的研究表明:16%的软件项目完全成功,31%的项目被完全取消,53%的项目严重超出预算、延期并交付少于预期的功能 到1998年,成功地项目增多了:26%完全成功,28%被完全取消,46%超过预算、延期和缺少功能 情况在改善,但是,对于成功完成的软件开发项目,业界的纪录依旧很糟糕,体系结构在管理中的作用(1/3),以技术为中心的体系结构的作用观点,基于以下的基本假设 体系结构是开发软件系统的关键 体系结构是实现商业目标、达到软件质量品质的基础 为提高软件质量而设计软件体系结构,以及如何评估软件体系结构是否完全实现它的质量目标 如果说体系结构是实现系统所要达到的商业目标的核心,那

3、么,体系结构也必须成为项目经理和软件架构师的工作核心 “在缺少高层体系结构的情况下,工作的时间进度和工作量的估算是毫无价值的” 项目经理需要根据体系结构来制定进度计划、进行估算和管理人员,体系结构在管理中的作用(2/3),估算的经验值,项目开发时间的分配 40%用于设计:最多用3个月的时间进行高层设计,剩下的用于底层设计 20%用于编码 40%用于测试:需要在开发小组内着重强调 对体系结构的纵向划分使得系统能够增量式地添加其它功能,并调整功能以适应各种版本 正如体系结构体现了各种质量之间的权衡,进度计划也体现了交付时间、质量和功能之间的权衡。要向开发小组明确三者之间的优先级,并利用进度的压力来

4、避免对质量和功能的过度强调 通过较短周期(8周)的增量式提交,有可能开发有限销售的功能,并选取在一次增量开发时间内那些以可接受的质量实现的功能,体系结构在管理中的作用(3/3),进度表依赖于体系结构,而增量式提交依赖于进度表,这种控制是以体系结构为基础的软件开发的根本特性 以体系结构为中心的项目管理技术是同现有的管理技术紧密相关的 制定明确的进度表 得到股东的支持 确定切实可行的期望值 对员工的弱点感觉敏锐 在动荡中保持冷静 在任何环境中,这些都是好的项目经理应具备的素质,项目经理的职责(1/2),项目经理的主要工作 计划(Planning) 组织(Organizing):建立项目组和确定组成

5、员的角色 实现(Implementation):根据制定的项目计划,进行项目实现,并应付各种事先无法预测的情况 度量(Measurement):在项目开发过程中及项目开发结束后,评估项目进度、项目组及各成员的业绩、提交的产品的有效性 其它任务 项目领导、控制、设定用户期望、革新、决策、指导以及提供帮助,项目经理的职责(2/2),项目经理的成功与否在很大程度上取决于如何分配时间。永远也不会有足够的时间干完所有的事情,项目经理需要谨慎地决定各个任务的优先级,并成功地平衡时间 好的项目经理常常都有均衡的技术和人员管理的技能 人员管理的技能通常表现在交流、理解、领导能力、情感、教学、个人魅力等多方面

6、通常,项目组的技术能力可以通过任用强有力的软件架构师得到增强,以体系结构为中心的项目管理(1/3),以体系结构为中心的软件项目计划(Architecture-Centered Software Project Planning, ACSPP)方法 根据软件体系结构来估算开发项目的费用和进度 这里所描述的项目管理实践可以称为“中量级”的过程,介于能力成熟度模型(CMM)和Rational统一过程(RUP)所描述的重量级过程与极限编程这样的轻量级过程之间 在前期准备工作中多花一些时间,包括为预想的产品设计软件体系结构以及制定项目计划。实现中采取增量开发方法,以便迅速占领市场,并在实现体系结构的同时

7、,增量式地更新项目计划,以体系结构为中心的项目管理(2/3),基本特征 体系结构的设计和描述 项目计划:进度表、工作量估算和项目组织结构 增量式开发 项目经理/架构师小组:分别对应管理决策和技术决策 权衡分析:灵活管理各种开发风险 软因素:小组建设、士气、管理的影响、业务的影响、人员经验和文化等 项目经理需要做许多与设计无关的事情,但明确的是, 在管理项目的过程中,需要确定一个体系结构设计,它将能够代表将要开发的产品的理念和外观 软件开发计划说明如何实现体系结构所代表的理念 管理开发就是在计划的指导下,逐步实现体系结构 开发计划需要做许多中间过程的修正,但希望体系结构在实现过程中能够保持不变,

8、以体系结构为中心的项目管理(3/3),需求分析,全局分析,风险分析,版本发布 计划,版本交付,管理开发 小组,软件开发 计划,体系结构 设计,市场需求,产品因素,风险和 缓解,进度 次序,如何做、 谁承担、 何时进行,中间过程 的修正,产品,产品因素,体系结构 描述,问题和 策略,模块视图,计划工作,项目计划开始于定义一系列的系统需求,结束于生成软件开发计划。项目计划与软件体系结构的设计并行进行,并在开发过程的每一次增量式版本发布之前进行,组织工作,项目经理需要组织体系结构设计小组、开发小组和与项目管理相关的所有活动。项目管理活动包括和组织内其他功能的接口,如市场、质量保证、系统测试和文档编写

9、,组织设计 小组,自底向上 的估算,组织 开发小组,领导 开发小组,软件开发 计划,体系结构 设计,市场需求,纸面设计,每一构件所 需的工作量,开发 小组,如何做、谁承担、何时进行,产品实现,软件架构师,体系结构 描述,项目组成员,实现工作,项目经理负责根据软件开发计划实现项目。体系结构设计所得到的模块视图是组织项目开发小组的基本依据,组织 开发小组,风险分析,版本发布 计划,软件开发 计划,版本交付,状态会议,管理 开发小组,体系结构 设计,组织的因素,组织的因素,进度 顺序,如何做、谁承 担、何时进行,中间过程 的修正,产品,模块视图,问题和 策略,缓解,模块视图,市场因素,工作进展,度量

10、工作,项目策略,版本发布 计划,软件开发 计划,软件开发,事后复审,版本交付,状态会议,体系结构 设计,市场需求,目标,进度 预算,工作 进展,中间过程 的修正,产品,改善行动,问题和策略,模块视图,进度顺序,市场需求,体系结构草图,根据软件开发计划可以定义一些项目度量标准,作为项目开发的目标。这些目标包括开发预算、重要里程碑、规模度量和质量度量,内容,内容简介 以体系结构为中心的软件项目计划 全局分析 管理期望 项目组织 建立项目文化和小组 软件项目经理的角色 权衡和项目决策 增量式开发 创建可视性与避免意外 在激烈的竞争中保持冷静 需关注的度量 什么是“出色的工作” 总结,以体系结构为中心

11、的软件项目计划,以体系结构为中心的软件项目计划(Architecture-Centered Software Project Planning, ACSPP)方法 根据软件体系结构来估算开发项目的费用和进度 好的软件项目管理始于好的计划,合适的计划时间是在体系结构进行设计的时候 在软件开发初期给出的工作量和时间的估算可能是极其不准确的 在没有高层体系结构设计的情况下,所生成的工作量和时间的估计只有很小的价值 当设计完成后,才可以创建项目计划、进度表和人力资源分配方案,所有这些都依赖于该产品的软件体系结构,ACSPP的时机(1/2),在软件开发初期给出的工作量和时间的估算可能是极其不准确的Boe

12、hm 1981, Boehm et al. 2000 ACSPP是在系统需求分析完成之后进行的,产品需求定义(市场人员),系统需求分析(系统工程师),高层设计(架构师),详细设计(软件工程师),编码 单元测试、集成测试、系统测试,市场需求说明(MRS),系统需求说明(SRS),高层设计文档(HLDD),详细设计文档(DDD),ACSPP,ACSPP的时机(2/2),根据Boehm1981的说法,对于在需求说明结束后所给出的成本估算,实际的投入可能是其1.5倍;对于在需求分析完成前,项目启动时所给出的估算,实际的投入可能是其4倍。在高层设计完成后,通过应用ACSPP和估算进度表,进度估算可以精确

13、到15%20% 采用小增量式开发,更有助于项目经理把握项目一系列短周期的简单计划要比一个大而复杂的计划更容易管理 业务经理经常会乐于接受一个很早的进度计划,用其与潜在的客户沟通,并努力使开发小组按照此进度交付软件产品。这样经常会引起客户的不满,因为产品没有达到他们对于交付的期望,初始版本质量低下,开发小组疲惫不堪,ACSPP方法(1/2),高层设计,自底向上的 估算,项目进度表,软件开发 计划,自顶向下的 进度表,版本发布 计划,个人进度表,ACSPP方法(2/2),软件体系结构的高层设计由一个小型的设计小组发起 与此平行,项目经理制定自顶向下的进度计划 高层设计和自顶向下的进度估算成为版本发

14、布计划的输入 在高层设计中确定的软件构件是自底向上的估算过程的一部分 项目经理然后可以计算各个软件构件规模和工作量的估算之和,并与自顶向下的进度相比较 根据所有这些信息,项目经理制定项目开发进度计划。这个进度计划与人员分配和项目组织结构共同组成软件开发计划(SDP) 项目组成员以SDP为框架,制定个人进度计划,体系结构的四视图和层次图,自顶向下的进度表,进度表包括的内容:工作量,成本和进度,开发主要阶段的持续时间,以及对具有各种开发技能的人员的需求 自顶向下的方法是软件项目经理估算新项目常用的方法 项目经理有很多可用的估算模型 Cocomo模型 SLIM PRICE-S 功能点分析(FPA)

15、就其本身而言,估算模型通常不是很精确,因此需要对模型进行较准,但很多组织缺少进行校准所需的采用类似技术的项目的历史数据 项目估算模型的结果确实很有用,因为它有助于项目经理在计划项目时,不至于忘记任何重大的工作量投入 自顶向下计划的估算模型也有助于管理人员了解新软件产品开发的范围和风险,自底向上的估算,在高层设计定义了所有构件之后,每个项目组成员进行指定构件的“纸面设计”,并估算每个构件的详细设计、编码和单元测试所需的工作量 项目经理应该把需估算的构件分配给最可能实现该构件的项目组成员。这样做可以增加估算的全面所有权,并且将个人与他们参与的系统各个部分联系起来 这时也是将其他成员引进项目组、开始

16、进行自底而上估算的时机。一直到这时,开发小组主要由项目经理和高层设计小组组成,由软件架构师领导 构件设计概要估算是与规模、信心水平、复杂度以及相关设计、编码和测试工作量等因素有关的,版本发布计划,软件开发计划可以被设计成一系列不断增加功能的增量式工程版本 第一个版本将包含体系结构层次图的“纵向分块”,作为体系结构的原型 最后一个版本将是可以打包销售给客户的第一个功能集合 还可以计划内部测试或主要用户测试的或版本 需要计划版本的增量和测试,这样开发人员可以得到测试结果,以在下个版本中对错误进行修改 为这些增量版本定义的时间周期将依赖于测试和特征开发所需的时间,同时也依赖于商业的限制,构造计划,特征发布规格说明(FRS) 经过市场部门和服务部门咨询,编写FRS,并详细说明每个工程版本包括哪些产品特征 构件发布规格说明(CRS) 描述必要的构件版本发布,以实现在每个工程版本中所要求的特征 构件版本发布的责任被分派给小组成员,小组成员根据这些文档制

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 往来文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号