当前位置:
文档之家› 软件体系结构(Software Architecture)
软件体系结构(Software Architecture)
– 在管理项目的过程中,需要确定一个体系结构设计,它将能够代 表将要开发的产品的理念和外观
– 软件开发计划说明如何实现体系结构所代表的理念 – 管理开发就是在计划的指导下,逐步实现体系结构 – 开发计划需要做许多中间过程的修正,但希望体系结构在实现过
程中能够保持不变
以体系结构为中心的项目管理(3/3)
– 制定明确的进度表 – 得到股东的支持 – 确定切实可行的期望值 – 对员工的弱点感觉敏锐 – 在动荡中保持冷静 – 在任何环境中,这些都是好的项目经理应具备的素质
项目经理的职责(1/2)
• 项目经理的主要工作
– 计划(Planning) – 组织(Organizing):建立项目组和确定组成员的角色 – 实现(Implementation):根据制定的项目计划,进行项目实现,
• 好的项目经理常常都有均衡的技术和人员管理的技能
– 人员管理的技能通常表现在交流、理解、领导能力、情感、教学、 个人魅力等多方面
– 通常,项目组的技术能力可以通过任用强有力的软件架构师得到 增强
以体系结构为中心的项目管理(1/3)
• 以体系结构为中心的软件项目计划(Architecture-Centered Software Project Planning, ACSPP)方法
构是否完全实现它的质量目标
• 如果说体系结构是实现系统所要达到的商业目标的核心, 那么,体系结构也必须成为项目经理和软件架构师的工 作核心
• “在缺少高层体系结构的情况下,工作的时间进度和工 作量的估算是毫无价值的”
• 项目经理需要根据体系结构来制定进度计划、进行估算 和管理人员
体系结构在管理中的作用(2/3)
– 根据软件体系结构来估算开发项目的费用和进度
• 这里所描述的项目管理实践可以称为“中量级”的过程, 介于能力成熟度模型(CMM)和Rational统一过程(RUP) 所描述的重量级过程与极限编程这样的轻量级过程之间
• 在前期准备工作中多花一些时间,包括为预想的产品设 计软件体系结构以及制定项目计划。实现中采取增量开 发方法,以便目计划
市场需求 产品
需求分析
产品因素
全局分析
风险分析
产品因素 版本交付
体系结构 描述
问题和 策略
风险和 缓解
体系结构 设计
模块视图
版本发布 计划
进度 次序
中间过程 的修正
管理开发 小组
如何做、 谁承担、 何时进行
软件开发 计划
计划工作
• 项目计划开始于定义一系列的系统需求,结束于生成软 件开发计划。项目计划与软件体系结构的设计并行进行, 并在开发过程的每一次增量式版本发布之前进行
– 到1998年,成功地项目增多了:26%完全成功,28%被完全取消, 46%超过预算、延期和缺少功能
情况在改善,但是,对于成功完成的软件开发项目, 业界的纪录依旧很糟糕
体系结构在管理中的作用(1/3)
• 以技术为中心的体系结构的作用观点,基于以下的基本 假设
– 体系结构是开发软件系统的关键 – 体系结构是实现商业目标、达到软件质量品质的基础 – 为提高软件质量而设计软件体系结构,以及如何评估软件体系结
• 通过较短周期(8周)的增量式提交,有可能开发有限销 售的功能,并选取在一次增量开发时间内那些以可接受 的质量实现的功能
体系结构在管理中的作用(3/3)
• 进度表依赖于体系结构,而增量式提交依赖于进度表, 这种控制是以体系结构为基础的软件开发的根本特性
• 以体系结构为中心的项目管理技术是同现有的管理技术 紧密相关的
市场需求
需求分析
产品因素
问题和策略 全局分析
体系结构 评估
产品因素
体系结构 描述
风险和 缓解
体系结构 设计
• 估算的经验值,项目开发时间的分配
– 40%用于设计:最多用3个月的时间进行高层设计,剩下的用于底 层设计
– 20%用于编码 – 40%用于测试:需要在开发小组内着重强调
• 对体系结构的纵向划分使得系统能够增量式地添加其它 功能,并调整功能以适应各种版本
• 正如体系结构体现了各种质量之间的权衡,进度计划也 体现了交付时间、质量和功能之间的权衡。要向开发小 组明确三者之间的优先级,并利用进度的压力来避免对 质量和功能的过度强调
技术和管理是项目成功的两个基石
• 好的设计和项目管理技巧对于项目的成功大有帮助
• 作为一个产业,我们还未能非常成功地管理成功的软件 项目。成功的项目是指达到计划的开发进度、提供承诺 的功能并交付高质量软件的项目
– 据1995年Standish Group CHAOS的报告,他们对软件项目的研究 表明:16%的软件项目完全成功,31%的项目被完全取消,53% 的项目严重超出预算、延期并交付少于预期的功能
以体系结构为中心的项目管理(2/3)
• 基本特征
– 体系结构的设计和描述 – 项目计划:进度表、工作量估算和项目组织结构 – 增量式开发 – 项目经理/架构师小组:分别对应管理决策和技术决策 – 权衡分析:灵活管理各种开发风险 – 软因素:小组建设、士气、管理的影响、业务的影响、人员经验
和文化等
• 项目经理需要做许多与设计无关的事情,但明确的是,
并应付各种事先无法预测的情况 – 度量(Measurement):在项目开发过程中及项目开发结束后,
评估项目进度、项目组及各成员的业绩、提交的产品的有效性
• 其它任务
– 项目领导、控制、设定用户期望、革新、决策、指导以及提供帮 助
项目经理的职责(2/2)
• 项目经理的成功与否在很大程度上取决于如何分配时间。 永远也不会有足够的时间干完所有的事情,项目经理需 要谨慎地决定各个任务的优先级,并成功地平衡时间
软件体系结构
(Software Architecture)
讲义14:以体系结构为中心的 软件项目管理
内容
1. 内容简介 2. 以体系结构为中心的软件项目计划 3. 全局分析 4. 管理期望 5. 项目组织 6. 建立项目文化和小组 7. 软件项目经理的角色 8. 权衡和项目决策 9. 增量式开发 10. 创建可视性与避免意外 11. 在激烈的竞争中保持冷静 12. 需关注的度量 13. 什么是“出色的工作” 14. 总结