在这一学期经历了16周的软件工程概论课程的学习,我学习到了很多知识,收获了很多,大二我们进入软件工程专业,对软件工程专业和所要学习的知识和方向还不了解,软件工程概论课向我们讲解了软件工程的基本概念和软件开发这项工程的开发流程以及开发中的一些问题,使我们了解了软件的开发的方式,开发的流程,使我们建立了开发软件这项工程的基本框架,我从中收获了很多知识,构建了软件开发的基本思维。
通过软件工程概论课我基本了解了程序的概念,程序=算法+数据结构,软件=程序+软件工程,软件工程需要通过需求分析、设计、编码、测试、发布和维护,了解了软件的生命周期,老师通过随机生成四则运算的题目让我们来了解软件工程的概念和真正体验软件的声明周期,随机生成四则运算题目的需求是生成四则运算表达式,要设计产生制定范围的随机数的功能和产生随机运算符的功能,并能够对组合起来的运算式进行无意义检验,具体编码主要利用了产生随机数的方法,测试要生成大量的运算式,对生成的结果进行验证,测试不仅要测试程序的正确性还要测试程序的运行耗时。
做任何事事先做好详细的计划是非常重要的,过程的记录总结更是我们规范自己并不断提高的基本方式,所以在程序的编写过程中,先制定开发计划,估算所需要的时间是非常重要的,从软件工程概论课中我们学习到要规范自己,事先制定较为完整的计划,估算各个阶段所需要的时间,然后再真正进行开发,并在开发过程中做好详细记录,最后进行总结,然后从中得到一些不足的地方,以发现问题并改正,做好记录也是对自己规范化的一个重要任务,如果不记录自己对任务进展以及自己出现的问题一无所知,开发效率将大大降低,并得不到有效地提高。
从这门课中我们学习到代码规范的重要性,代码整体格式要整洁,具有必要的缩进和换行,变量命名要规范,要有必要的注释,以前自己写程序总是认为能够记住定义的变量的含义,将变量名定义为简单的单个字母,例如a,b,c..,隔几天再看程序的时候就不清楚当时变量的具体含义了,所以代码规范很重要,这也是软件开发过程中非常重要的,如果需要花费大量的时间阅读几天前的代码的含义那么效率将大大降低。
软件项目离不开团队的合作,少则两人,多则六七人,大多数的软件项目都需要团队合作来完成,我们在这门课中完成了结对开发的作业,通过两个人的交流,分析程序的需求,并提出自己的想法,并合作制定计划并完成,我们从中懂得了合作开发的基本方法,避免自己闭门造车。而且我们也进行了团队项目的开发,从组建团队,团队成员之间的互相了解,互相交流我们确定自己小组开发的项目,合作讨论软件的需求、考虑软件的各个不同用户的需求,进行场景分析,得出用户具体的使用环境,根据各个不同用户需求来制定合理的功能和界面。通过团队合作的方式进行软件的开发流程,我从中体会到了合作的方式,懂得了基本的合作的方式。
我们在这门课中进行了两次软件项目开发冲刺,我感触最深的是要制定好详细的开发计划,要明白开发的目标,要实现的具体功能,并进行合理地任务分配,要分析整个程序的框架,分析各个功能模块之间的联系,以及消息的传递,做好功能的封装,避免代码的重复,开发过程中小组成员要不断地保持沟通来公用一些信息,避免开发出来的各个功能模块最终无法进行合并,我们第一阶段只是完成了软件的界面的开发,界面非常的不好看,原先一直讲功能放在首位,觉得界面不重要,但是用户最终看到的都是界面,所以界面的设计还是很重要的,要合理设计界面的排版符合用户的使用习惯。
通过软件工程概论课我对软件工程有了基本的了解,了解了软件开发的方式,软件开发的基本流程,构建了基本的软件开发的思维过程。
对教师授课的意见和建议:
老师授课方式新颖有特色,采用全过程考核的方式来授课,让我们在学中做,让我们真正地在学习中进行实践,真正地将知识进行运用,而不是只是学而不实际做,这样可以真正地将知识学会学懂并能够真正的会用。老师的课程非常地有趣,PPT的故事、图片非常地生动、有趣,能够调动大家的积极性,让我们主动地进行学习,并组织了我们进行组队,小组开发一款产品,让我们体验团队软件开发的基本流程,真正地让我们对书本中的内容进行实践,让我们主动地了解书中的内容,进行高效率地学习。
建议:
建议老师将作业任务分散一下,放在学期的几个阶段进行,这样考试周可以较为充分地复习一下各科课程;现在考试周时间比较紧张,也到了项目的最后验收阶段,时间分配不过来。
建议老师在课程中提供给我们一些学习的方向,这项建议已经超过了软件工程概论课的范围,不过还是希望老师能够提供给我们一些课程之外的要学习的知识点,例如学习Java语言基础的时候提供一些进阶的方向,可以提供一些Java练手小程序,然后可以对Java更加熟悉。因为我们对一些概念不太熟悉,不了解将来要干什么,也不知道自己该学什么,希望老师提供一些相关方向的基本框架,然后我们可以了解到计算机领域都有哪些方向,可以确定自己感兴趣的方向,然后向这个方向努力。现在我们的知识面非常的狭窄,对计算机方面了解的非常少,导致不知道向哪个方向努力。