,甚至要求客户参与开发过程。但原型方法和XP也有区别。XP是分批交付,先做一个几个功能点的版本,完成后再每个开发周期往上面加其它功能点,而原型法一般要求做出比较完整,能覆盖主要功能点的粗略的版本。XP方法仁者见仁,智者见智,不一而举。
5.5 如何避免项目团队做原型的时候出现部分人员闲置?
在项目管理中,对人力资源的调配应和项目进展相匹配。实际上在用户接触到原型制作的同时,可以进行项目计划、架构设计、技术培训以及技术难点攻关等等。
如果从广义上理解原型的话,架构设计者甚至可以设计出一种用户开发团队使用的所谓框架原型,包含了主要的设计成分、模板和示例。
比较理想的结果是,当原型完成后,需求分析、架构设计和界面风格设计都趋于完成,从这一点可以看到,原型方法可以作为快速软件开发的重要手段。
5.6 如果避免项目在原型上停滞不前?
应使用有经验的开发人员,避免因为程序员不熟悉业务而延误进度;不要在界面设计上犹豫不决而占据时间;如果用户对原型提出了很多意见,其中部分比较明确的意见可以在开发过程中进行实现;和客户的交流应该简洁明了,而不是似是而非;另外,原型方法在项目过程中占据的时间应该在项目计划中保留出来,而不仅仅是隐含在需求调研与分析的一个部分。
5.7 如何避免用户看了原型后漫无边际地提要求?
首先,应该充分尊重客户,想想其它行业的服务质量吧。有没有听说过这样的说法,项目管理也是客户满意度的管理;软件是一种对客户的关怀,等等。确实,客户提出的思路可能和你已经形成的思路不同,一下子打乱了你的思路,也许项目经理并不介意,但这确是让设计者特别心烦的事情。如果确有把握,或者你可以不做到原型中去。有时候,即使原型很完美,用户也会额外地提出一些意见,这也是人之常情。但不管怎样,你不能认为用户根本不懂软件,让他们到时用就行了,抱这样想法的多半会付出代价。
其次应该进行坦诚协商,多数用户其实都是通情达理的。如果你在签订合同时答应满足任何要求,而此时又无法忍受用户的要求,那么孰是孰非应是题外之意了。一般来说,比较合理的做法可以通过增加费用、延长进度或者把需求实现分阶段来提交,以保持工作的延续性。对有些软件,尤其是信息管理系统来说,客户的实施时间其实并不是主要的,客户最需要的不是及时,而是合用。
其实,客户有着很多种类型,确实,个别客户会参考同类产品来提要求,极个别用户并不真正懂得计算机技术而对技术路线、技术手段等提出其意见,等等。但我们为什么还可以反过来想一下,如果是等到软件全部提交的时候,这部分用户仍有会提出同样的意见。提早暴露并解决分歧,对双方睹是有利的。如果软件公司明知可能存在矛盾,仍然先做好,然后等到用户提出反对后,再提出补充收费,如果喜欢,也无话可说。
总之,原型应本着对软件需求的基本理解来做,这样才能预防不一致性的发生。尤其应该针对不清楚的地方制作原型,从而尽量暴露问题,引发用户的联想,不能回避问题,掩盖问题(以免用户提出太多的想法),很多问题虽然一时掩盖了,但最终还是要发生的。
5.8 如何避免在原型基础上继续开发时的可维护性降低?
问题是这样的,制作原型时常希望快速提供原型,往往不及对软件结构或者数据库进行细致设计。所以在此基础上继续设计和开发的话,有必要在开发前先进行调整。同时,在设计原型前就有必要确定,该原型是要抛弃的,还是要演化要继承的。对于要演化的原型,其设计不能过于粗略,显然这直接影响到今后的开发成本。
6 小结
原型方法是可视化的方法,已成为快速软件开发常用的手段。软件公司或部门一旦得到了原型方法的回报,就会坚持使用。原型不是绝对必要,但非常有意义。