软件体系结构(SoftwareArchitecture)课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件体系结构(SoftwareArchitecture)课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 体系结构 SoftwareArchitecture 课件
- 资源描述:
-
1、软件体系结构软件体系结构(Software Architecture)讲义讲义1414:以体系结构为中心的:以体系结构为中心的 软件项目管理软件项目管理内容内容1.内容简介2.以体系结构为中心的软件项目计划3.全局分析4.管理期望5.项目组织6.建立项目文化和小组7.软件项目经理的角色8.权衡和项目决策9.增量式开发10.创建可视性与避免意外11.在激烈的竞争中保持冷静12.需关注的度量13.什么是“出色的工作”14.总结技术和管理是项目成功的两个基石技术和管理是项目成功的两个基石 好的设计和项目管理技巧对于项目的成功大有帮助 作为一个产业,我们还未能非常成功地管理成功的软件项目。成功的项目是
2、指达到计划的开发进度、提供承诺达到计划的开发进度、提供承诺的功能并交付高质量软件的功能并交付高质量软件的项目 据1995年Standish Group CHAOS的报告,他们对软件项目的研究表明:16%的软件项目完全成功,31%的项目被完全取消,53%的项目严重超出预算、延期并交付少于预期的功能 到1998年,成功地项目增多了:26%完全成功,28%被完全取消,46%超过预算、延期和缺少功能 情况在改善,但是,对于成功完成的软件开发项目,业界的纪录依旧很糟糕体系结构在管理中的作用体系结构在管理中的作用(1/3)以技术为中心的体系结构的作用观点,基于以下的基本假设 体系结构是开发软件系统的关键
3、体系结构是实现商业目标、达到软件质量品质的基础 为提高软件质量而设计软件体系结构,以及如何评估软件体系结构是否完全实现它的质量目标 如果说体系结构是实现系统所要达到的商业目标的核心,那么,体系结构也必须成为项目经理和软件架构师的工作核心“在缺少高层体系结构的情况下,工作的时间进度和工作量的估算是毫无价值的”项目经理需要根据体系结构来制定进度计划、进行估算和管理人员体系结构在管理中的作用体系结构在管理中的作用(2/3)估算的经验值,项目开发时间的分配 40%用于设计:最多用3个月的时间进行高层设计,剩下的用于底层设计 20%用于编码 40%用于测试:需要在开发小组内着重强调 对体系结构的纵向划分
4、使得系统能够增量式地添加其它功能,并调整功能以适应各种版本 正如体系结构体现了各种质量之间的权衡,进度计划也体现了交付时间、质量和功能之间的权衡。要向开发小组明确三者之间的优先级,并利用进度的压力来避免对质量和功能的过度强调 通过较短周期(8周)的增量式提交,有可能开发有限销售的功能,并选取在一次增量开发时间内那些以可接受的质量实现的功能体系结构在管理中的作用体系结构在管理中的作用(3/3)进度表依赖于体系结构,而增量式提交依赖于进度表,这种控制是以体系结构为基础的软件开发的根本特性 以体系结构为中心的项目管理技术是同现有的管理技术紧密相关的 制定明确的进度表 得到股东的支持 确定切实可行的期
5、望值 对员工的弱点感觉敏锐 在动荡中保持冷静 在任何环境中,这些都是好的项目经理应具备的素质项目经理的职责项目经理的职责(1/2)项目经理的主要工作 计划(Planning)组织(Organizing):建立项目组和确定组成员的角色 实现(Implementation):根据制定的项目计划,进行项目实现,并应付各种事先无法预测的情况 度量(Measurement):在项目开发过程中及项目开发结束后,评估项目进度、项目组及各成员的业绩、提交的产品的有效性 其它任务 项目领导、控制、设定用户期望、革新、决策、指导以及提供帮助项目经理的职责项目经理的职责(2/2)项目经理的成功与否在很大程度上取决于
6、如何分配时间。永远也不会有足够的时间干完所有的事情,项目经理需要谨慎地决定各个任务的优先级,并成功地平衡时间 好的项目经理常常都有均衡的技术和人员管理的技能 人员管理的技能通常表现在交流、理解、领导能力、情感、教学、个人魅力等多方面 通常,项目组的技术能力可以通过任用强有力的软件架构师得到增强以体系结构为中心的项目管理以体系结构为中心的项目管理(1/3)以体系结构为中心的软件项目计划(Architecture-Centered Software Project Planning,ACSPP)方法 根据软件体系结构来估算开发项目的费用和进度 这里所描述的项目管理实践可以称为“中量级”的过程,介于
7、能力成熟度模型(CMM)和Rational统一过程(RUP)所描述的重量级过程与极限编程这样的轻量级过程之间 在前期准备工作中多花一些时间,包括为预想的产品设计软件体系结构以及制定项目计划。实现中采取增量开发方法,以便迅速占领市场,并在实现体系结构的同时,增量式地更新项目计划以体系结构为中心的项目管理以体系结构为中心的项目管理(2/3)基本特征 体系结构的设计和描述 项目计划:进度表、工作量估算和项目组织结构 增量式开发 项目经理/架构师小组:分别对应管理决策和技术决策 权衡分析:灵活管理各种开发风险 软因素:小组建设、士气、管理的影响、业务的影响、人员经验和文化等 项目经理需要做许多与设计无
8、关的事情,但明确的是,在管理项目的过程中,需要确定一个体系结构设计,它将能够代表将要开发的产品的理念和外观 软件开发计划说明如何实现体系结构所代表的理念 管理开发就是在计划的指导下,逐步实现体系结构 开发计划需要做许多中间过程的修正,但希望体系结构在实现过程中能够保持不变以体系结构为中心的项目管理以体系结构为中心的项目管理(3/3)需求分析全局分析风险分析版本发布计划版本交付管理开发小组软件开发计划体系结构设计市场需求产品因素风险和缓解进度次序如何做、谁承担、何时进行中间过程的修正产品产品因素体系结构描述问题和策略模块视图计划工作计划工作 项目计划开始于定义一系列的系统需求,结束于生成软件开发
9、计划。项目计划与软件体系结构的设计并行进行,并在开发过程的每一次增量式版本发布之前进行需求分析全局分析体系结构评估风险分析软件开发计划版本发布计划项目策略体系结构设计市场需求产品因素风险和缓解风险和缓解项目目标进度顺序产品因素体系结构描述问题和策略设计风险如何做、谁承担、何时进行模块视图组织工作组织工作 项目经理需要组织体系结构设计小组、开发小组和与项目管理相关的所有活动。项目管理活动包括和组织内其他功能的接口,如市场、质量保证、系统测试和文档编写组织设计小组自底向上的估算组织开发小组领导开发小组软件开发计划体系结构设计市场需求纸面设计每一构件所需的工作量开发小组如何做、谁承担、何时进行产品实
10、现软件架构师体系结构描述项目组成员实现工作实现工作 项目经理负责根据软件开发计划实现项目。体系结构设计所得到的模块视图是组织项目开发小组的基本依据组织开发小组风险分析版本发布计划软件开发计划版本交付状态会议管理开发小组体系结构设计组织的因素组织的因素进度顺序如何做、谁承担、何时进行中间过程的修正产品模块视图问题和策略缓解模块视图市场因素工作进展度量工作度量工作项目策略版本发布计划软件开发计划软件开发事后复审版本交付状态会议体系结构设计市场需求目标进度预算工作进展中间过程的修正产品改善行动问题和策略模块视图进度顺序市场需求体系结构草图 根据软件开发计划可以定义一些项目度量标准,作为项目开发的目标
11、。这些目标包括开发预算、重要里程碑、规模度量和质量度量内容内容1.内容简介2.以体系结构为中心的软件项目计划3.全局分析4.管理期望5.项目组织6.建立项目文化和小组7.软件项目经理的角色8.权衡和项目决策9.增量式开发10.创建可视性与避免意外11.在激烈的竞争中保持冷静12.需关注的度量13.什么是“出色的工作”14.总结以体系结构为中心的软件项目计划以体系结构为中心的软件项目计划 以体系结构为中心的软件项目计划(Architecture-Centered Software Project Planning,ACSPP)方法 根据软件体系结构来估算开发项目的费用和进度 好的软件项目管理始于
12、好的计划,合适的计划时间是在体系结构进行设计的时候 在软件开发初期给出的工作量和时间的估算可能是极其不准确的 在没有高层体系结构设计的情况下,所生成的工作量和时间的估计只有很小的价值 当设计完成后,才可以创建项目计划、进度表和人力资源分配方案,所有这些都依赖于该产品的软件体系结构ACSPP的时机的时机(1/2)在软件开发初期给出的工作量和时间的估算可能是极其不准确的Boehm 1981,Boehm et al.2000 ACSPP是在系统需求分析完成之后进行的产品需求定义(市场人员)产品需求定义(市场人员)系统需求分析(系统工程师)系统需求分析(系统工程师)高层设计(架构师)高层设计(架构师)
13、详细设计(软件工程师)详细设计(软件工程师)编码编码单元测试、集成测试、系统测试单元测试、集成测试、系统测试市场需求说明(MRS)系统需求说明(SRS)高层设计文档(HLDD)详细设计文档(DDD)ACSPPACSPPACSPP的时机的时机(2/2)根据Boehm1981的说法,对于在需求说明结束后所给出的成本估算,实际的投入可能是其1.5倍;对于在需求分析完成前,项目启动时所给出的估算,实际的投入可能是其4倍。在高层设计完成后,通过应用ACSPP和估算进度表,进度估算可以精确到15%20%采用小增量式开发,更有助于项目经理把握项目一系列短周期的简单计划要比一个大而复杂的计划更容易管理 业务经
14、理经常会乐于接受一个很早的进度计划,用其与潜在的客户沟通,并努力使开发小组按照此进度交付软件产品。这样经常会引起客户的不满,因为产品没有达到他们对于交付的期望,初始版本质量低下,开发小组疲惫不堪ACSPP方法方法(1/2)高层设计自底向上的估算项目进度表软件开发计划自顶向下的进度表版本发布计划个人进度表ACSPP方法方法(2/2)1.软件体系结构的高层设计由一个小型的设计小组发起2.与此平行,项目经理制定自顶向下的进度计划3.高层设计和自顶向下的进度估算成为版本发布计划的输入4.在高层设计中确定的软件构件是自底向上的估算过程的一部分5.项目经理然后可以计算各个软件构件规模和工作量的估算之和,并
15、与自顶向下的进度相比较6.根据所有这些信息,项目经理制定项目开发进度计划。这个进度计划与人员分配和项目组织结构共同组成软件开发计划(SDP)7.项目组成员以SDP为框架,制定个人进度计划体系结构的四视图和层次图体系结构的四视图和层次图图形用户界面(GUI)应用程序应用程序服务探查服务图像处理数据库服务系统服务操作系统层通信硬件概念模块代码源代码运 行硬 件自顶向下的进度表自顶向下的进度表 进度表包括的内容:工作量,成本和进度,开发主要阶段的持续时间,以及对具有各种开发技能的人员的需求 自顶向下的方法是软件项目经理估算新项目常用的方法 项目经理有很多可用的估算模型 Cocomo模型 SLIM P
16、RICE-S 功能点分析(FPA)就其本身而言,估算模型通常不是很精确,因此需要对模型进行较准,但很多组织缺少进行校准所需的采用类似技术的项目的历史数据 项目估算模型的结果确实很有用,因为它有助于项目经理在计划项目时,不至于忘记任何重大的工作量投入 自顶向下计划的估算模型也有助于管理人员了解新软件产品开发的范围和风险自底向上的估算自底向上的估算 在高层设计定义了所有构件之后,每个项目组成员进行指定构件的“纸面设计”,并估算每个构件的详细设计、编码和单元测试所需的工作量 项目经理应该把需估算的构件分配给最可能实现该构件的项目组成员。这样做可以增加估算的全面所有权,并且将个人与他们参与的系统各个部
17、分联系起来 这时也是将其他成员引进项目组、开始进行自底而上估算的时机。一直到这时,开发小组主要由项目经理和高层设计小组组成,由软件架构师领导 构件设计概要估算是与规模、信心水平、复杂度以及相关设计、编码和测试工作量等因素有关的版本发布计划版本发布计划 软件开发计划可以被设计成一系列不断增加功能的增量式工程版本 第一个版本将包含体系结构层次图的“纵向分块”,作为体系结构的原型 最后一个版本将是可以打包销售给客户的第一个功能集合 还可以计划内部测试或主要用户测试的或版本 需要计划版本的增量和测试,这样开发人员可以得到测试结果,以在下个版本中对错误进行修改 为这些增量版本定义的时间周期将依赖于测试和
18、特征开发所需的时间,同时也依赖于商业的限制构造计划构造计划 特征发布规格说明(FRS)经过市场部门和服务部门咨询,编写FRS,并详细说明每个工程版本包括哪些产品特征 构件发布规格说明(CRS)描述必要的构件版本发布,以实现在每个工程版本中所要求的特征 构件版本发布的责任被分派给小组成员,小组成员根据这些文档制定他们自己的个人进度表 在整个开发周期中,版本发布计划通常由一系列主要特征来标识目标版本;构造计划更多地集中于描述在下一个增量版本(即“内部工程版本”)中要开发的详细特征的实现顺序项目进度计划项目进度计划 根据自顶向下的进度、自底而上的估算、FRS和CRS,可以制定项目的进度纲要,以使得每
19、个内部工程版本都可以在预期的里程碑之内完成设计、编码、单元测试、集成以及系统测试等工作 对于每个版本,都可将每个构件的开发按照开发阶段(如详细设计、编码、单元测试、错误修正)分解为子任务,并在每一增量式发布的过程中重复这些阶段。根据自底而上估算过程所得到的工作量估算,制定每一个构件的进度表计划 提高计划的可见度,让每一个人都了解“项目战斗室”:所有项目进度计划表都被张贴到一个会议室的墙上,并每周更新项目进度,用彩笔标注出哪些项目已经完成,哪些已经迟于进度计划了实例:高层软件开发进度纲要实例:高层软件开发进度纲要软件开发计划软件开发计划(SDP)软件开发计划是一个短的文档,包括 项目进度表 工程
20、版本定义 人员需求 子承包商的应用 项目组织 成本估算 开发工具及过程 任务分配 风险 硬件平台 SDP引用该组织的软件开发过程、高层设计文档(HLDD)、功能发布说明(FRS)以及构件发布说明(CRS)实例:软件开发计划大纲实例:软件开发计划大纲1.0 引论 1.1 项目概论 1.2 项目交付物2.0 参考资料 2.1 说明 2.2 标准3.0 项目组织 3.1 过程模型 3.2 组织结构 3.3 组织边界和接口 3.4 项目职责4.0 管理过程 4.1 管理目标和优先级 4.2 假设、依赖关系和约束 4.3 监督和控制机制 4.4 人员安排和培训 4.5 子承包商管理5.0 技术过程 5.
21、1 方法、工具和技术 5.2 软件文档 5.3 项目支持功能6.0 风险管理7.0 工作要素、进度和预算 7.1 工作包 7.2 依赖关系 7.3 资源需求 7.4 预算和资源分配 7.5 高层软件开发过程个人进度表个人进度表 一旦包括项目进度在内的SDP完成,就应该把它交给项目开发组的所有成员。根据项目进度表、软件开发过程以及任务分配,每个成员制定个人进度表 这个进度表非常细,可以监控项目组每个人每周的开发情况 建议项目经理每周检查个人进度,并根据项目的规模和复杂程度,每两周或每月更新项目进度 一旦每个人对其所负责开发的构件在整个软件体系结构中的位置和作用都了解了,构件的开发将会变得更加简单
22、和可以预测 项目经理和软件架构师作为开发小组的教练,而不是如工头一样迫使小组接受计划并强制执行经验数据经验数据(1/2)与估算有关的工作所占用时间的经验数据与估算有关的工作所占用时间的经验数据高层设计持续时间:至多3个月开发小组规模:最多6个架构师估算的构件数目:最多150个每个构件的纸面设计时间:最多4小时自底而上的估算时间:最多3个星期工程版本发布间隔:最多8个星期进度偏移:最多20%项目总体工作量分配 设计:40%编码:20%测试:40%跟踪里程碑:每周进度更新和风险评估:每月或是在每一个版本发布之前经验数据经验数据(2/2)对于中等规模的项目应用这些经验值,我们估计高层设计阶段大约占总
23、共开发成本的5%我们假设,由45人工作3个月所进行的高层体系结构设计,将对一个由20个人工作一年甚至更长时间所开发的项目,产生深远的影响 这20个小组成员还将对体系结构中的每个构件进行设计,称为详细设计 因此,和设计有关的活动的工作量有可能占到整个项目成本投入的40%;但是最初的5%的对软件体系结构的投入,将对开发产生最为深刻的影响提示提示“当时间不够时,停止高层设计”问题:高层设计和详细设计的界限是什么?软件架构师的回答:当设计已详细到可以将每一个模块交给开发人员进行详细设计时,高层设计就结束了 对于实践的项目经理来说,这些界限是模糊的,是以里程碑为驱动的 建议:成功的做法是大致按照上表所提
24、供的经验数据,限制高层设计的时间。体系结构的设计永远不会完全结束,但是,确定一个必须完成和复查的时间将有助于指导设计小组内容内容1.内容简介2.以体系结构为中心的软件项目计划3.全局分析4.管理期望5.项目组织6.建立项目文化和小组7.软件项目经理的角色8.权衡和项目决策9.增量式开发10.创建可视性与避免意外11.在激烈的竞争中保持冷静12.需关注的度量13.什么是“出色的工作”14.总结什么是全局分析什么是全局分析 在着手设计一个新的软件系统体系结构时,一个众所周知的问题是:随着市场需求、技术、硬件和业务等因素的变化,系统的设计和实现也将相应地改变 其中一些影响因素影响整个系统,而其中某些
25、因素和其他因素直接冲突。为了避免潜在的大量返工,这些因素必须在高层设计的开始就予以考虑 全局分析就是分析对系统体系结构设计产生全局性影响的组织、技术和产品等方面的因素 全局分析是体系结构设计的一个组成部分,在设计阶段的开始便应用到体系结构的各个视图中 全局分析的结果是一组全局策略,可用于指导体系结构设计并提高系统对于各种已识别的影响因素的应变能力 全局分析得到的策略将影响体系结构的设计和项目计划全局分析方法全局分析方法分析组织因素分析技术因素分析产品因素影响因素为实现、构造能力和可变能力的改善制定策略全局分析活动全局分析活动 采用两种工具辅助全局分析并记录结果 因素表 问题卡片分析因素分析因素
展开阅读全文