《软件工程》课程总结
一、对前期提出的问题的回答
1、对知识不了解的情况下,将代码写的不是很规范,虽然程序的结果可以运行出来,但是对整个程序会不会有影响?
答:既然代码要使用计算机去严格执行,同时也需要一些人来看,那我们要担负的责任就相当大,因为代码的任何一点差异,都有可能影响程序最终的运行结果,所以编写代码不可以出现错误。而且最好将代码编写规范,这样可以使代码达到更好的效果,方便复审,也提高了代码的质量。在以后的编写中最好做到简明、无二义性等,做到代码规范。
2、在上节课中,说到要实现团队合作,如果人比较多的话,怎么能建立一个规范阶段?有哪些技巧?
答:规范阶段是指跳舞逐渐和谐、合拍,团队成员就很多事情取得了一致。一些成文或不成文的规则逐步建立起来了。所以要建立一个规范阶段,就需要所有人的统一,相互学习,相互帮助等。技巧就在于在每个两人合作的不同阶段中都需要好好积累,统一目标。在最开始的萌芽阶段,我们需要彬彬有礼,试图避免冲突和容易引起挑战的观点,接纳对方。在磨合阶段,我们要相互尊重、学习,如果有矛盾,也要及时的去处理。通过这些阶段,就可以到达规范阶段。
3、一个小团队中,在以后的学习中会不会实现结对编程?
答:我们在学习的过程中,实现了结对编程。在结对编程模式下,一对程序员平等地、互补地进行开发工作。结对编程是一个相互学习、相互磨合的渐进过程。开发人员需要适应新的开发模式。一开始,可能效率不高,但通过学习阶段后,结对编程的开发质量、开发时间通常比两个人单独开发有明显的改善。
4、对一些函数还不是很理解,不知如何去运用,例如:构造函数和析构函数等。
答:构造函数:1、不要在构造函数中做复杂的操作,简单初始化所有数据成员即可。2构造函数不应该返回错误(事实上也无法返回)。把可能出错的操作放到HrInit()或FInit()中。
析构函数:1、把所有的清理工作都放在析构函数中。如果有些资源在析构函数之前就释放了,记住要重置这些成员为0或NULL。2、析构函数也不应该出错。
5、从书中的读者反馈中,看到了瀑布模型和软件测试,还不是很了解。
答:瀑布模型是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。包括软件工程开发、企业项目开发、产品生产以及市场销售等构造瀑布模型。
软件测试:描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
二、总结本学期这门课程的体会
通过本学期的软件工程的学习,我们可以了解到软件工程牵涉的范围很广,而且内容也非常的重要。同时是需要理论和实践相结合的。在这段期间,我们也进行了结对编程和团队项目,这些都让我印象深刻。
在上软件工程课的这个学期,我积累了很多的东西,一开始每周也就写800多行代码,后来团队项目开始后,每周至少要写1800行左右的代码,同时还要进行代码复审,源代码在团体的博客中。在学习的过程中,一共写了10篇博客,7篇个人博客和3篇团队博客,同时有几篇团队总结博客是有我们团队共同完成。大概每周都会花6,7个小时在这节课的学习中。
在结对编程和团队项目中,我们每一个人都可以相互学习、磨合、帮助,都可以使我们达到最佳的效果。而且每一个人在编程的过程中,都会有自己的方法和技巧,这也让我们学习到了更多的东西,受益匪浅。当我们其中一人遇到困难时,所有人都会帮助想解决的方法,这也使问题更快的解决。所以,不管是结对编程还是团队项目,都会使我们每一个人变得更好,学的东西也更多。
在学习的过程中,我了解了每个部分的基础知识,以及他们之间的联系。前段时间在课本上学习到的理论知识,也可以运用在实际的编写中。在操作的过程中,使我更好地掌握操作语句的使用方法,也让我对基本的语句更加的清晰,可以熟练的使用。在程序检查和调试的过程中,我也会发现问题,并且会仔细的分析,找出错误原因,这也培养了我独立分析问题和解决问题的能力。所以在老师的帮助下,我不光光学到了很多知识,还锻炼了自身的能力和意志力,使我得到了进一步的提高。同时在这短短的几个月的时间里,让我学到了以前在书本上学不到的知识。让我度过了生活最为充实的一段时期,而且得到了理论和实践上的收获。
这就是我对该课程的体会。在此,也感谢冯花平老师在这段期间对我的指导和帮助。最后,还要感谢所有帮助过我的人。虽然这节课马上就要结束了,但是我还是会努力争取做到更好。
三、对课程的建议
在软件工程课中,我觉得理论的讲解比较多,所以我希望可以多一些实践,而且多讲一些编程的方法和技巧。