霸王移山

  小霸王家门口被大山挡住了,有一天,他遇到了一个姓愚的老头子...
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

软件工程——homework2

Posted on 2011-03-04 20:39  霸王移山  阅读(1583)  评论(4编辑  收藏  举报

     在清华大学开设软件工程课程的专业集中在信息学院,包括计算机系、电子系和软件学院等等。因为软件学院的软件工程早在大三下就已经开设了,到现在已经有了半年的缓冲期来检验知识在实际生活中的应用,因此我们组选择了同届的软件学院学生作为这次软件工程课程调研的对象。

     本次调查中,我们(朱晶等同学)首先联系了软件学院的秦凯捷同学,先向他询问了软件学院课程的一些整体情况。为了客观反应学生对于课程的反响,本次调研采取了问卷调查的形式。下面是设计的问卷:

          

我们一共发出了60份问卷,不过因为大四了软件学院外出实习的人比较多,所以问卷的回收率并不高,一共收到了28份问卷。

以下是我(朱晶)根据问卷的回收情况做出的调研结果:

项目及完成程度
      2010年软件学院的软件工程课最终项目也是采取分组的形式来进行的。小组的人数从4人到6人不等。项目选题是固定的两个,一个是类似三国杀的对战桌游“程序员杀”(额……)的网络对战平台,另外一个是校园微博系统,都是生活应用性非常强的题目。
      因为软件学院软工课程项目的选题是固定的,因此也方便我们对于不同的组别之间进行比较。大多数组别最终实现的代码量在3000-5000之间,也有个别组的代码量过万。为什么类似的选题会出现一定的差异,我就这个问题再次询问了部分同学。拿本次选题中的卡片游戏项目而言,卡片游戏规则的实现程度成了主要的区分。某些组别可能由于时间问题没能实现所有的卡片规则,也就是说等于是提供了一个简单的UI界面,而某些组别可能实现的卡片规则较多,相对来说游戏也就更加精彩一些。具体的例子可以参照三国杀武将的扩展包,如果你有余力写更多的代码,你的游戏可能就会支持更多的武将。从结果来看,虽然大多数人都完成了基本的功能,却很少有人去实现计划外的扩展功能。这个现象也符合第一次进行大型开发的特征:对于自己的水平和项目难度并没有估计,导致自己在基本功能以外设计了许多特性,到最后才发现不一定能够完全实现。
      不过较为遗憾的是,大多数小组并没有公布自己的作品,也不打算对自己的项目继续跟进。也许就是老师上课时提到的自己想要尽量避免的情况,项目做出来了,假期也到了,大家心里也就只想着放假了。我觉得造成这种现状,一是因为大家可能水平有限无法做到专业地对项目进行维护,二是因为选题单一而且不自由,导致竞争激烈而且小组对于项目的感情并不深厚。这一点在后面的课程展望中还会提到。

学生参与课程
      学生对于课程的参与也是我们比较关心的一个话题。作为一个集体和实践性质比较强的课程,可以想见并不是每个组付出的劳动和最终成果都是大致等同的,即便在组内也并不是每个成员都做出了大致均衡的贡献。当然了,其实后来我也发现这个问题设计的比较蠢……在中庸社会中,要承认自己做的很少或者坦言自己是阻力的中流砥柱都是需要相当的勇气的。所以我觉得这部分可以忽略……
      而就课程影响而言,大多数学生还是认为这门课程对自己起到了相当重要的作用的。从学生自己的课前预期和课后所得看来,大多数学生的期望和收获都集中在开发大型工程的架构能力和团队合作能力方面。作为信院的学生,在前几年的学习当中编过不少代码,因此也如预期的一样语言的使用并不是主要的问题。就我个人的理解看来,大多数学生缺乏的还是进行工程开发的经验,在编码的过程当中缺乏对于整体的控制能力和清晰表达的能力,导致自己一遇到大型工程写出来的东西往往是一团糟,而且也教别人看不懂。从一个“程序员”向“软件工程师”进行过渡,我想这应该是开设软件工程的最主要目的。

课程观点和展望
谈到自己在学习软件工程课程当中有哪些地方还不够满意时,大多数同学的想法都可以归纳入以下两条:

1. 自己准备不够充分,导致做出来的结果并没有达到自己的期望。

2. 课程的设计缺陷还比较多,除了选题太过死板之外,项目本身也缺乏实际意义,没能起到很好的锻炼效果。

而相对地,许多同学最后也提出了自己对于课程的期望。主要有以下几点:

1. 增加选题的范围,不要让所有的组别都局限于有限的选题。

2. 给大作业可以增加技术指导,不要采取完全交由学生自己的方式,应该从设计模式、开发模式、测试等诸多方面给学生具体的指导。

3. 有学生指出老师不仅要给予指导,更应该分段对每个小组进行考核。虽然这么说有点牵强,但是……毕竟作为第一次开发大型工程的学生小组来说产生畏难或者偷懒 的心理也是正常的,如果没有人监督的话很容易把内容积压到最后一个星期,结果往往就是无法完成全部的设计内容。