畅享博客 > 人月神话的Blog > 软件工程 > 系统设计-贵族专制还是民主政治
2007-7-17 13:14:59

系统设计-贵族专制还是民主政治

标签:人月神话 系统设计 体系结构
如果一个 200人的项目中,有 25 个最能干和最有开发经验的项目经理,那么开除剩下的 175 名程序员,让项目经理来编程开发。-《人月神话》P17

25人的优秀开发团队整体业绩肯定优于200人团队,但25人开发进度往往是无法满足实际的进度要求的,所以往往是投入成倍的人力资源来争取20-30%的进度收益,软件技术层出不穷,超过1年的开发计划估计都不会有太多人感兴趣.

软件开发团队的主次定位和角色分析依然重要,Mills建议的外科手术队伍目的仍然是提高软件开发的效率和生产率,或者说在效率和进度之间更好的权衡.这种手术队伍高度强调了外科医生和副手在开发团队中的重要作用,整个软件系统的高层设计和构想,系统分解都应该由副手辅助外科医生确定,以保证整个软件系统高度的概念一致性.手术队伍中的编辑,测试,秘书,语言专家等都是辅助角色,目的是为了使外科医生和副手真正的专注,只有专注和不受干扰效率才能得到改善.所有的辅助角色不是没有技能要求,他们仍然需要和整个队伍默契配合,外科医生手一伸你就知道需要递剪刀而不是药棉.辅助角色的专业化分工是高效的关键,它使成员之间采用非常简单的交流模式成为可能.

软件团队中的高层设计必须要集中到1-2人手里,以维护概念一致性.高度集中的外科医生方案不一定是最佳方案,但一般却是可行的方案.每个人都选择的最好五官拼在一起绝对形成不了一张漂亮的脸.所以即使外科医生有错了,也需要是同一种类型的错误,而不是五花八门的错误难以弥补.

对于一个新软件产品的开发,系统分析和设计是关键的内容,它反映了一系列连贯的设计思路,宁可省略一些不规则的特性和改进,也不提倡独立和无法整合的系统,哪怕它们其实包含着许多很好的设计。因此在系统设计中概念完整性是必须重点考虑的因素,为了保持一致性需要系统设计高度统一,并集中到1-2名技术专家来完成.

概念完整性最终表现形式可能是软件产品的易用性.但对于开发方法,工具,技术,架构,技术方案选择等都属于概念完整性内容.这些内容的选择和决策将对整个软件开发过程和产品质量产生深远的影响.体系结构应该和实现分离开来,体系结构关注的更多是用户大利益.软件功能的实现仍然是需要耗费脑力的智力劳动,产品的易用性依赖于体系结构师,但产品的成本性能比却很大程度依赖于实现人员.

不论是大型还是小型软件系统的开发都应该遵循软件产品固有的生命周期模型.需求没有清楚是不可能开始设计的,设计思路没有想清楚那编码也是盲目的.Blaauw把整个软件开发创造性活动分为体系结构,设计实现和物理实现,在实际过程中它们可以同时开始和迭代进行.对于大型项目可以在设计阶段快完成后再雇佣编码实现人员,而对于小型项目编码实现实现人员在前期可以协助体系结构师完成框架,组件等代码的实现,提前学习体系结构中需要用到的技术,提前学习相关的业务需求.

推荐到鲜果:

评论

您正在以 匿名用户 的身份发表评论  快速登录
(不得超过 50 个汉字)
       看不清,换一个
提示消息
(输入完内容可以直接按Ctrl+Enter提交)