本学期通过软件工程的学习以及阅读邹欣老师的《构建之法》,使我对软件开发作为一项工程有了更深入的理解。在书中有以下几点给我留下了很深刻的印象。
- 软件工程师的成长
在第三章中,老师提到了初级软件工程师的集中成长,有以下几种 :积累开发知识提升技术技能,积累问题领域的知识和经验,对通用软件设计思想和软件工程思想的理解,提升职业技能以及实际成果。这令我感同身受,作为一名大三学生,虽然通过课程作业课程设计我积累了一些关于语言的知识,对程序的编写调试方法也有了一些经验,但都只停留在知识的积累,对软件设计思想的理解还如同白纸。读到此处,我一下对自己需要学习,,还要提高的地方豁然开朗。
2. 结对编程
结对编程仅凭字面意思理解与实际含义有所不同。原先我对结对编程的理解是一个开发项目由两个人独立完成,将开发任务分摊给两人,但在学习之后发现真正的结对编程是两个开发者平等互补地一起完成同一项工作,在这过程中保证了两个人对程序的深入了解,不间断地复审使复审过程效率提高。在本学期的结对项目中,我们虽然没有完全采用这种结对编程的方式,但两人对代码的复审效果已经体现出来了。
3. 软件团队的模式
在学习软件工程之前我们从未认真想过团队应该采取一种什么样的模式才能使开发过程更加高效,这往往使一个团队项目变成一群人抱一个人大腿。在阅读第五章之后发现,其实有很多团队开发模式供我们选择,如:主治医师模式,明星模式,社区模式,业余剧团模式,秘密团队,特工团队,交响乐团模式等。在我们本次的团队项目中我们更偏向于主治医师模式,由小组中的一个人担当起类似策划的职位,把关整个游戏的风格,游戏方式,其他人对需求进行分析,最终划分模块分别进行具体实现。
4. 重视商业价值
软件工程和其他传统行业的工程一样,最终都要服务于市场需求。即使技术多么精湛,脱离商业需求也毫无作用,我对书中第七章的一段话印象深刻:“商业项目需要重视市场和用户,技术是处于第三位的。一个沉溺于技术而忽略商业价值的团队,就像盲人骑烈马,跑起来很拉风,但最终不免人仰马翻”。也许因为工科学习接触的都是技术实现,我们不自觉忽视了市场需求在项目开发中的重要性。在团队项目的开发过程中我们就缺乏了市场调研,脱离玩家意见的游戏是不可能成功的,因此我们打算在下一步开发前先进行玩家意见的调查,并据此修改开发方向。
5. 需求分析
提到了上述的市场调研,就更应关注需求分析的方法,书中提到的NABCD模型就很明确地指出了需求分析方法,它们分别代表了:需求、做法、好处、竞争、推广。虽然模型总结十分简练,但想将需求分析做得更加出色完善,还要开发者具有独到的视角。
总的来说,邹欣老师这本《构建之法》是一部很独特的软件工程著作,书中的语言幽默风趣,而且内容浅显易懂,还伴有许多贴切的实例。书中有些介绍在很多软工领域著作也反复提及,如软件设计实现中的图形建模和分析方法,但大部分内容我觉得读起来很新鲜很精彩,是教科书上找不到的,比如软件测试这一章中除了黑盒白盒测试还提及了许许多多测试方法多达13种,在此不一一赘述。
读完一本书很快,但要想把其中的内容完全消化不是一天两天就能做到的,尤其像这样一种面向专业领域的著作。我相信若想对软工有更加深入的理解,唯有更多地投入到实际项目的开发中去,把理论应用于实践。