关于《移山之道》及软件工程的问与答

1.        1. 敏捷开发在今天的软件行业逐渐流行,那么它脱颖而出的原因是什么呢?

敏捷开发在最近流行,原因在于他的快速迭代性。如今的很多应用软件都以网络为基础,具有高度的动态性,这就要求开发人员更强调与用户紧密的交流,在用户反馈的基础上迅速改进,快速迭代。具体来说,敏捷开发有以下几个不同于传统开发模式的性质:第一,敏捷开发更强调与用户的交流,设计的宗旨是以用户的想法为中心;第二,将防止质量缺陷定为团队质量控制的首要任务,尽量减少开发阶段的可能系统缺陷,从而使由开发到测试的周期变短;第三,保证项目质量随时可用,尽可能达到开发过程随时安装与发布;第四,则是对过程的精简,也就是所有事情的目的是得到可用软件,尽量避免把时间用在繁琐的开发流程上。

2.        2. 在课程作业中,我们的双人项目用到了结对编程,那么结对编程究竟有哪些利弊?

结对编程的优点在于,随时的复审和交流,使程序的初始质量很高,身下了很多修改和测试的时间。另外在两人的互相监督下,编程效率也会提高。而且结对中,两人都得到了学习对方编程风格的机会,可能会改掉自己长久以来的不良编程习惯,而这种不良习惯也许在个人编程中永远不能被发现。然而,在我们进行结对编程项目时,也许是经验不足,我们发现的更多是结对编程的弊端。由于两个人都对silverlight不够熟悉,处于探索阶段,而在一个电脑上不方便查资料,浪费了很多时间。另外,有的时候,监督的不能跟上主要编程者的思路,不能充分体现结对编程优势。所以,在选择编程方式时,应该根据实际情况选择最适合的方式。

3.       3.   到今天为止,团队编程近半,那么团队编程究竟要经历那些阶段呢?

前两周,我们团队经历了初始的萌芽和磨合期。由于团队中的五个人分别来自四个系,不了解彼此的性格和编程习惯,我们在讨论项目题目和对未来宏观规划的过程中,了解了对方的爱好,也认识了大家的编程水平,这为今后的任务分配及组内管理打下了基础。两周后,我们项目的题目基本确定了,pm分配了各自的任务,并且制定了一些统一的编程模式和标准,团队发展进入规范阶段。而现在,大伙的任务都在热火朝天地展开,队员们相互之间配合默契,alpha版本即将诞生,这便是创造阶段。

4.       4. 项目结束后,每个队员的工作成绩应如何衡量呢?

传统的衡量方式,是按照项目中成员的不同角色,制定不同的评价标准,比如Test的评价标准可以使每个版本发布后发现Bug的个数,Dev的则是代码完成前的签入质量和是否按期交付,以及代码完成后的Bug数目和代码重构能力。对于我们组,由于大家的分工相对独立且平行,成绩评价则可按照负责模块的完成效果,与预期的差别,用户体验等角度做评价。

5.      5 如果你今后不想从事软件开发工作,你认为学习软件工程的目的何在?

如果今后不从事软件开发,那么书中一些具体的开发方法可以忽略,但其中对一个工程如何完成的方法论是从事任何工作的人所要学习的,比如说项目任务的分配原则,完成周期和业绩评价。可以说,软件工程教给我们更多的是团队合作的方法,而课程中的项目又让我们真正体会到合作中会出现的诸多问题以及其固有的魅力。


    陈晓萌

posted on 2011-10-10 09:41  meng-meng(萌萌)  阅读(878)  评论(0编辑  收藏  举报