每次上现代软件工程的课都感觉像上战场一样,紧张而兴奋,来到天大第一次接触到这种国际化的授课模式,鼓励学生积极主动展示自己,每个小组每个人都需要做presentation,都需要提问,小组合作做项目,我们是风筝,而老师变成了牵着线把握大方向的人。以前上课偶尔会走神,但这门课强烈激发了我们的学习兴趣和热情,整堂课注意力都高度集中。
上面做展示的同学侃侃而谈,神采飞扬,听他们的讲解解决了我预习课本时候的一些困惑。发问环节同学们踊跃发言,我甚至都不知道问什么问题,台下的同学针对ppt上的细节或提出质疑或表达自己的看法,台上的同学反应迅速、对答如流。我不得不暗自佩服。对于我种跨专业的小白,这门课虽然很难很有挑战,但是如果一味想着轻松好过,那么研究生读完了仍然不会有任何长进的。所以我要严格要求自己, 保质保量完成每次的任务,至少每次课之后及时写博客,学期结束前掌握基本的软件测试框架。
在同学们的展示过程中,章老师也给我们拓展了很多干货。印象最深刻的有这么几点:
1. 软件开发过程不能同大跃进一样强调多快好省,好是放在第一位的,在有限的时间有限的预算内适当的满足客户需求,其次是快,是开发效率,再次才是多和省。虽然我们开发软件的目的是提供符合用户需求的产品,但并不意味着每一个需求都必须去满足。需求和实践,客户和软件开发工程师,需要在某程度上折中和妥协,甚至我们工程师最好能想出更优的方案替代原有需求的预期。
2.对于测试应该由最熟悉源代码的人来写这件事,同学们担心对于自己写的代码通常自己会避免一些使程序出错的用例,老师提出了一种名为TDD (Test-Driven-Development)先编写测试用例后编写代码的测试驱动开发的方法,这样子能有效避免问题的存在。我觉得长见识了。
3.对于单元测试时,如果一个function还调用了其他多个function,那么如果单元测试出错了,怎么判断出错的位置呢?老师提示我们,可以用mock、false函数来替代测试模块中调用的其他函数或模块。我决定回去好好查查书籍。
晚上的课程是小组讨论需求评审,CanToolApp的需求陈述看得我一脸懵,而小组里的男生讨论的很热切,甚至能从数据上批判性地指出文档中逻辑不一致、考虑不周全的地方,我只能用崇拜的小眼神看着他们。一名真正的软件工程师要面临的问题非常的多,首先是用户需求,我们需要懂相关行业的专业术语甚至专业知识,而有些用户自己本身不明确自己的需求,需求也容易发生变化,甚至需求不合理或在实际中难以实现。其次,软件在开发和测试的过程中会有很多意外因素导致的bug和程序崩溃,时间也十分有限,这更需要我们扎实的技术基础和工作经验。最后,在产品发布后的维护阶段也会出现之前测试所疏漏的问题,导致用户经济财产损失,软件大规模重建等灾难性问题。所以我们需要学习的地方还有很多,需要苦心经营的事很多。
下周不定时更新!