图 2.2.2-12 面向开发工具的设计模型
7、 面向客户开发 谁是客户?
对客户的理解取决于场合,可能是项目委托人,最终用户,市场人员或者老板。
现代软件开发非常关注客户的需求与期望,开发出合符产品规格的软件只是完成了一半工作,另一半是帮助客户配置出产品能够实现的功能,而实现这些功能所花费的时间通常远远多于确定纸面上的产品规格所需要的时间。
将自己站在客户的角度考虑问题是避免大量返工的最好方法。同时应该建立有效的客户沟通渠道,合理控制客户的期望值。
2.2.3 产品
在软件开发的四维中,最切实的维是产品维。对产品规模和产品特性的关注,意味着巨大的缩短计划进度的机会。削减了产品功能通常就可以缩短产品开发周期
1、 产品规模
产品规模是对开发进度影响最大的一个因素。构建软件所需的工作量的增长比产品规模的增长要快得多,并且增长是不成比例的,所以产品规模的缩小将大大提高开发速度。将中等规模的软件削减一半通常可以使工作负荷削减2/3。
2、 产品特性
产品的一些非功能性需求或额外关注点会影响设计的复杂度和构建的工作量,如对性能、稳定性、可维护性和可扩展性等要求很高的产品比没有这些特性要求的产品需要更长的开发周期。
2.2.4 技术
从使用低效的工具转为使用高效的工具是提高开发速度的快捷方法。选择有效的工具并管理好由此带来的风险也是提高开发速度的方法。
软件开发基本原则(二)—— 典型错误
大多数典型错误其表面都具有诱惑性,给人们一种诱人的前景,但通常却不能产生期望的结果。 “想挽救进度已经落后的项目吗?---- 给项目补充更多人员!” 下面分别按照人员、过程、产品和技术四个维度列出36个典型错误。
人 员
典型错误1:挫伤积极性
对人员不够关心和重视;过度的进度压力;缺乏激励;过分夸张的激励等。 典型错误2:人员素质低
人员能力欠佳,工作效率低,甚至做多错多。 典型错误3:对有问题的员工失控
不对有问题的人员采取措施是项目组成员对领导最常见的抱怨。 典型错误4:英雄主义
强调个人英雄主义会导致发生额外的风险,也会削弱在软件开发过程中多个角色的合作。 典型错误5:项目后期加入人员
盲目地在项目后期加入人手等于火上浇油。 典型错误6:办公室环境拥挤嘈杂
拥有安静、隐蔽办公环境的人员比工作在嘈杂、拥挤环境中的人员往往会有更好的工作业绩表现。 典型错误7:开发人员与客户之间发生摩擦
主要原因是缺乏沟通。这种摩擦耗费时间,它会转移客户和开发人员双方对项目工作的注意力。 典型错误8:不现实的预期
过高的期望值和主观的不切实际的设想。是导致开发人员和客户或项目经理之间的摩擦常见原因之一。
典型错误9:缺乏有效的项目支持
软件开发项目的许都方面都需要高层的支持,包括实际的计划、变更控制以及新型开发方法的采用等。缺乏有效的高层支持事实上注定了项目的失败。
典型错误10:缺乏各种角色的齐心协力
软件开发中所有主要人员必须齐心协力专注于项目,包括高层支持者、项目领导、项目成员、市场人员、最终用户、客户和任何项目介入者。
典型错误11:缺乏用户介入
没有用户早期介入的项目充满需求误解的风险,易受项目后期功能蔓延的威胁。 典型错误12:政治高于物质
“政治家”型项目强调“管理至上”,主要精力集中在他们与经理的关系上。将政治凌驾于结果之上对软件项目会造成极大伤害。
典型错误13:充满想象
闭上眼睛毫无理由地希望某事将像想象那样运作。很多软件开发问题都是由于充满想象造成的。 想象示例:
项目组不知道他们能不能按时完成项目,但他们认为如果每个人能更努力工作,并且不出现问题,他们应该能完成项目。
我们无需向客户演示最新的修改,我们确信这个效果是客户想要的。
项目组错过了一个里程碑好几天了,他们说会更努力工作赶上下一个里程碑,我想他们能够及时赶上的。
过 程
典型错误14:过于乐观的计划
定制过于乐观的项目计划相当于自己为项目失败画出了底线,导致缩短分析、设计等关键性前期开发活动;同时也向开发人员施加了额外压力,会长期对开发人员的自信心和生产率造成巨大伤害。
典型错误15:缺乏足够的风险管理
如果你不主动管理风险,风险随时会来找你,打乱你的开发计划。 典型错误16:承包人导致的失败
如果不对承包商加以认真管理,交付可能延期,并且质量难以保证。 典型错误17:缺乏计划
没有计划的项目就像飘荡在海洋中的小船,没人知道会飘到哪里。 典型错误18:在压力下放弃计划

