“软件工程”课告一段落

April 20, 2008 – 12:51 am

“软件工程”也是计算机专业的必修课之一。我一向对诸如敏捷开发、极限编程之类的东西比较感兴趣,“拥抱变化”给我的印象非常深刻,所以我意识里也有些抵制传统的软件工程。我觉得,对于小的项目来说,花那么多的时间在繁琐的软件工程流程上简直就是浪费;而对于大的项目来说,不管你花多少时间来做计划都是徒劳,因为需求总是会变化,我们要做的只能是“拥抱变化”而不是永远停滞在设计阶段。

但是我想既然这个课是由 CYJJ 来上,应该至少不会无聊到哪里去吧。二十多章的内容被压缩在了 8 周的短学期中,上课又是一百多号人的班级,唯一能吸引人的就是课件里穿插的各种故事(或者说叫做 IT 八卦)了。到最后一周的时候才幡然醒悟:上课似乎没有听进去过几个字。厚厚的一本书,考前看了一遍,也没有记住什么实质性的东西,DFD、ACD、SCD……一堆一堆的概念。当然为了避免这个课变成那种背概念的文科课,配套有几个 project :

  • Software Requirements Specification
  • System Design
  • Test Specification
  • Subsystem Version 1.0
  • Subsystem Version 2.0
  • Web Design
  • Final Integration of System

实际上是一个系统的各个步骤(除去 Web Design),在国内这样的工作量的项目应该算比较重的了吧,不过在也是没办法的事情,国内的学生课程表似乎都不是很空的。实际上是一个 Stock Trading System ,分成三个大组,同时做三个 System 出来,同时每个大组分为 6 个小组,分别做 System 的 6 个模块,最后合成为一个完整的系统。每个小组大约是 7 个人。

就是说 42 个人做一个系统。这真是空前绝后!我从一开始就不抱希望最后能组合成一个功能完整的系统了。是了,这么多人,是不是终于要靠传统的软件工程管理方法来管理了呢?空都设好了,大家照着填就可以了,先是需求分析,然后是总体设计报告,然后是测试计划,再开始编码……瀑布模型。

然而在我看来,整个项目的进行过程中处处都体现了变化:做好的计划到最后总是没有得到实施。

  • 一开始计划在小组内也把每个阶段的任务分块,让大家都做一些。可是最后我们组的分工实际上是把任务整个分给了不同的人,比如写代码基本上就是我和 moonykily 来完成了,而需求分析、测试计划之类的则交给了其他人。我不能说这种分法一定合理,但是至少代码没有复杂到需要那么多人一起来写的话,还是人越少越好。
  • 在设计系统的时候画了 UML 的类图,还有 CRC 图,做了周密的计划、分工。可是最后写代码的时候采用了 WCF Service 的形式,写出来的代码和前面的设计没有任何关联。
  • 一开始开了很多会讨论采用什么技术、什么语言,最后由于大家都觉得学习 C# 的代价太高,还是采用 C++ 来做,裸写 Socket 通信。可是就在 Version 1.0 截止前面不久的时候突然决定了使用 C# 和 Web Service 来做。
  • 一开始都是一致同意最后系统合起来以后应该是跑在同一台机器上的。可是一直到最后验收的时候都没有实现这个“愿望”,大家的环境各不相同: VS 2008 、VS 2005 、IIS Web Service 、WCF Service 、C# 、C++ 、JSP ……
  • ……

整个过程中最大的问题应当还是沟通了。开会的次数也不少了,可是直到很后面才把接口大致定下来,不过总的来说组织的人相当不错。其实编程的过程倒是很次要,我们组做中央交易系统 Version 1.0 大约是在 2 天时间做完的,Version 2.0 则大约花了 2 个小时。-.-bb

但是直到第一次组合之前我都觉得没有可能合起来,因为差不多没有什么机会做测试,很少有组能有稳定的服务器跑起来让别的组连上去测试。虽然整合的时候花了四五个小时,大家都很晚才吃饭,其实许多时间都是花在了一些很低级的错误上,总体来说,各个组整合得还不错。最让我惊讶的是第五组,平时几乎没有任何沟通,他们需要远程读取我们的数据库,可是一直到整合的时候才看到我们的表的 schema ,第二天验收的时候就能直接跑起来了。

总之,最后系统能完整的合起来并且在三个大组中得分最高,实在是出乎我意料。怎么说呢?人类还是很强大的! :D

最后,这次算是体验了一下像 WCF 这样子的“企业级”的东西,总体感觉不错,因为什么都包装好了,写起来很方便,而且也向后兼容,可是我感觉我不会很乐意经常使用这样的东西,因为包装得太严实了,万一出了问题麻烦就大了,想要调好实在是太困难了。

  1. 2 Responses to ““软件工程”课告一段落”

  2. 误人子弟啊,这种课还是没有的好。

    By dongbin on Apr 20, 2008

  3. 555555555,是啊,你们组的分数好高啊。。。。orz

    By 时晓宇 on Apr 21, 2008

Post a Comment