软件设计人员角色负责软件体系结构,包括约束项目整体设计和实施的关键技术决策。


主题

 
信号
信号


实施模型
实施模型

           
 
体系结构概念证明
体系结构概念证明


引用体系结构
引用体系结构


部署模型
部署模型


设计模型
设计模型


软件体系结构文档
软件体系结构文档


分析模型
分析模型


事件
事件


接口
接口

 
负责
 

软件设计人员
软件设计人员

合并现有设计元素
合并现有设计元素


构造实施模型
构造实施模型

           

描述分发
描述分发


描述运行时体系结构
描述运行时体系结构


构造体系结构概念验证
构造体系结构概念验证


评估体系结构概念验证的生存能力
评估体系结构概念验证的生存能力


体系结构分析
体系结构分析


区分用例的优先级
区分用例的优先级


确定设计机制
确定设计机制


确定设计元素
确定设计元素

 
 
修改
 
复审记录
复审记录


分析类
分析类


软件需求
软件需求


设计子系统
设计子系统


设计包
设计包


设计类
设计类


Enterprise Java Bean(EJB)
Enterprise
Java Bean(EJB)


实施子系统
实施子系统


描述到页首

软件设计人员对制定主要技术决策(称为软件体系结构)负全面责任。 这通常包括确定和记录系统在架构上的重要方面,包括系统的需求、设计、实施以及部署“视图”。

设计人员还负责提供这些决策的理论基础,平衡各涉众的利害关系,降低技术风险,并确保有效地传达、确认和遵守决策。

相关信息 回到页首

此部分提供与该角色相关的附加信息的链接。

 

人员配备 回到页首

技能 回到页首

“理想的设计人员应是一名文学家,一名数学家,熟悉历史研究,勤奋钻研哲学,熟悉音乐,对药学并非一无所知,精通法学,熟悉天文学和天文计算。”- Vitruvius,约公元前 25 年

总之,软件设计人员必须是多面手,他必须成熟,有洞察力,并具备一定程度的经验,这样就可以快速把握问题以及在缺乏完整信息的情况下作出有根据的重大判断。 更明确地说,软件设计人员或设计人员团队的成员必须兼有以下技能:

  • 经验,在问题领域(通过对需求的彻底了解)和软件工程领域。 如果有一个团队,那么不同的团队成员可以满足上述不同条件,但必须至少有一名软件设计人员具有对项目的全局洞察力。
  • 领导力,用以推动跨各团队的技术工作,在压力下制定关键决策,并坚持贯彻这些决策。 为达到效果,软件设计人员和项目经理必须紧密协作,前者领导技术事宜,后者领导管理事宜。 软件设计人员必须有权作出技术决策。
  • 沟通,以赢得信赖,去说服,去激励和去指导。软件设计人员不能通过强制命令进行领导,而只能通过项目其他成员的赞同。 为达到效果,软件设计人员必须赢得项目团队、项目经理、客户、用户团体以及管理团队的尊重。
  • 面向目标和前期活动,专注于成果。软件设计人员是项目背后的技术驱动力,而不是幻想家或梦想家。 对于一名成功的软件设计人员,其职业生涯就是由众多在压力下和不确定情况下作出的次最优决策构成的。 只有那些能够专注于需做之事的人才会在这种项目环境中获得成功。

从专业技术角度来说,软件设计人员还需具备角色:设计员能力。但与设计员不同,软件设计人员:

  • 更像是一名通才而非专才,他对很多技术均有较深的了解,而不是对少数技术有很具体的了解
  • 作出范围较广的技术决策,因此广泛的知识面和经验以及沟通和领导技能是关键的。
角色分配方法 回到页首

如果项目足够大而需要一个体系结构团队,则目标就是使才俊们很好地协作,涵盖各方面的经验,并分享对软件设计流程的共同理解。体系结构团队不必由来自各个团队、领域或承包商的代表组成。 软件体系结构是一个自始至终均存在的功能,需要有职员永久性地专门负责。

对于较小的项目,一个人可兼任项目经理和软件设计人员。 但应尽可能由不同的人担当这两个角色,以确保不会由于一个角色的时间压力而导致另一个角色被忽视。

进一步阅读 回到页首

请参阅参考页,尤其是关于“软件体系结构”的参考。



Rational Unified Process   2003.06.15