“软件工程过程”课程实践小结

本文原题为《软件工程过程实践小学期总结——兼论敏捷心态与需求工程》,是大三之“软件工程过程实践”一课的个人总结作业, 一并发表至此,略有删改。

软件工程过程实践小学期只有不到两周的时间,但实际上感觉度过了挺漫长的一段时期,每天朝九晚五和小组里的诸位密切配合,和老师沟通交流,并持续开发的过程,着实是这个夏天难忘的一段回忆。

我认为,作为“软件工程过程”课程的实践项目,这门课程的主要目的也就在于通过具体的软件开发过程使得学生对敏捷方法和软件工程过程有一个相对比较切身实际的体会。敏捷方法和敏捷心态的概念,只听老师讲,在课堂上其实很难深入理解,但如今经过一段时间的具体实践,大家对整个过程都有了不少体会,从这个角度来看,实践已经完满达到了目的。

对于敏捷方法,我个人印象最深的就是其对于可视化的重视,看板图和燃尽图能够可视化用户故事和项目进度,另外还有情绪图来可视化团队成员的心情——整个开发过程都被以图表的形式具象化——这不仅能够辅助项目的统筹和管理,更重要的是,为团队的敏捷开发注入了不可或缺的活力。每一天早上站会,作为Scrum Master,我都要代表本小组更新燃尽图,这对于每个人而言都是十分兴奋的时刻,看到自己过去一天的付出降低了燃尽图数值,看到团队每一天燃尽图的变化趋势,这是一件很有成就感的事情。在任何团队(不限于一个软件开发团队),能够让成员感到这种投入感和成就感应该都是一项很重要的课题。在每一天工作结束,我都要依次询问大家的心情状态并统计画图,我们小组中有“开心果”,一个情绪报表永远都是“Happy”的人,我们还有心情大起大落的成员,而大多数成员的心情都是稳定而积极的,这也有赖于我们开发进度始终都保持着快节奏高产出。我注意到的一个现象是,无论是BA,SM还是DEV,大家虽然有着不同的角色,但工作之余都会去看看燃尽图和看板,大家不会认为这些东西只是形式化的,它确实已经成为团队生活中富有特色的一部分。

“敏捷方法不是不重视文档,而是尽量简化,要让文档发挥应有的作用。”这是我们的Business Analyst的感想,我深以为然。传统的项目流程要写各种各样的文档,从需求规格说明书到软件架构设计说明书,敏捷开发,至少在表面上,采取的是完全不同的思路——从用户故事做起,专注于需求确定,然后就迅速投入开发——这种轻量级、极简主义的风格,可能不适于一些大型关键性复杂性较高的项目,但是对于小型团队而言,它却有着天然的实用性。在开发过程中,我们的主力程序员也经常下载各种文档的最新版本来看,从中获取必要的信息。有些人说,软件工程过程中文档的功能就是信息的记录和传播,那么在这个意义上,我认为我们的敏捷方法实践地相当不错。

在其他小组的回顾和总结中,“团队分工”总是会成为一个绕不开的问题,但我认为团队分工太过“苛刻”,反而不符合敏捷心态。在我们小组中,如果出现新的任务或新的问题,大家都要集合起来交流一下,然后各个角色搭配解决问题,大家几乎不会计较自己的任务是不是分的重了一些,别人的是不是轻一些,我认为这一点十分符合敏捷心态中对“重视团队贡献”的要求。这其实很像那句十分著名的“One for all, all for one.”如果团队的每个人都能有不计较个人负担,把集体利益和团队工作摆在第一位的意识,那么这个团队势必能够做出成绩来,我认为这一点也是有一定普适性的。

作为实践的内容要求——一个团队课程平台,其本身功能并不复杂,但挖掘客户需求确实不容易。这个时候BA就成为十分重要的一个角色,作为客户和负责团队之间的桥梁,BA要尽全力来进行需求的挖掘和跟踪。我作为Scrum Master,也要负责对整个队伍的敏捷开发做一个统筹。在我们小组的实践中,一期迭代多少有些“心急”,对于一些需求的细节,没有讨论地清清楚楚,就急着开始实现,对于一些潜在需求的思考,也没有给予充足的重视。在二期迭代中,我们改善了这一点。要想做客户的需求,不和客户沟通,是不可能的。我们不仅逐渐重视对用户故事细节的仔细打磨,更开始寻求客户(老师)发来的反馈信息,用产品雏形来获得客户的宝贵意见,并迅速成为用户故事的改进点。整个过程虽然难免有些劳累,但是回过头来看,这对整个项目的客户满意度是尤其重要的。如果说之前我们对软件开发的想法还停留在“做出东西”,“做出对的东西”,那么经过这次实践,我想大家都会开始思考,真正的软件工程,应该是“做出需要的东西”。经济学上来说,一个产品要想赢得市场,就必须深入挖掘市场趋势动向和目标用户的特点,对于软件项目而言,就是深入挖掘客户方的特点和实际需要。站在完全不同的一方考虑问题是很困难的,任何一个开发人员或者产品经理都不可能完全明白客户在想什么,想要什么,但是通过必要的沟通手段和需求工程方法,我们想尽可能做到“换位思考”,是有可能的,而这也应该是产品整体设计的发力点。当然,谈需求也不能是空中楼阁,最好要结合已有的设计或者产品功能来谈,在这个过程中不断迭代,不断改进,不断循环,需求管理,需求跟踪,这个渐进式的过程,我想也正是需求工程的精髓所在。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s