通过一学期学习软件工程概论,我收获颇多,下面就简单谈一下我的心得体会。开学第一节课,老师让我们做出一个网站简单的注册登录界面还有网站的各个模块的界面,并且能连接数据库,实现界面之间的跳转等。很遗憾,我只做出了一份徒有其表的登录界面而已,毕竟当时我的电脑上没安数据库。不得不说,这次的课堂小测隐隐给我一种提示,似乎我们接下里要面对的挑战并不是那么简单。就拿这次课堂小测用到的知识来说,几乎都需要自己去学习探索才能完成。
后来老师给我们布置了“四则运算”的作业,我们似乎都依照着原来的套路,先写好程序,再逐步补充文档,我们都在抱怨怎么程序都写完了,写这么多文档做什么,这不是浪费时间嘛。但是随着作业难度的不断增加,“四则运算”的要求在不断的提高时,并且在第2次到第3次之间的重写时,也就是二人开发时,我们遇到了问题。由于第2次是两个人一起写的,而第三次是由一个人指引,另一个人实操,我们之间的沟通出现了问题。她不太明白我上次写的,我听不懂她的思路和想法,更别提那些乱七八糟的不知道用来随意用的一个英文字母命名的变量。上次看的时候记住了意思,再过一会又忘了,还有那些同样名字的全局变量和局部变量。并且随着代码量的不断增加,这些问题简直烦不胜烦。这时候我们终于意识到了之前老师说的变量命名的规范性是多么的重要。也明白为什么一开始老师让我们找不太熟的人进行结组开发,这样就能实现是靠规则约束,不是靠情分维系这种合作关系,很大程度上能避免一人干活一人打酱油的局面。到了网页版四则运算的时候,我们都以为把程序现在eclipse上写出来,最后转化成网页版就可以。后来发现根本就不是这么一回事,根本不能完全的把两者区分开,他们之间是交互的关系,而不是靠一个什么接口之类的东西就能把他们连接起来的,并且当时我们WEB的课程还没有教到怎么连接数据库,这部分内容我们也是通过先自学完成。
走过二人结组开发的阶段,接下来几乎很少个人的编程训练,大部分情况下我们都是围绕着团队开发来进行的。我们都不是一个个的个体,都在学习如何在一个团队中努力做好自己的工作,团结一致完成任务。首先我们确定了团队的目标是完成编写一个课堂笔记的app,因为我们都没怎么接触过安卓开发,所以在第一阶段冲刺之前,我们就确定好了我们的主题,包括是做网页版的还是安卓客户端那样的,用什么样的语言编写等问题。确定了大致方向之后,我们开始学习安卓,包括一开始最基本的搭建环境、创建安卓虚拟机、学习安卓的各种布局等。到了第一阶段冲刺的时候我们分配好了各自的任务,包括登录注册模块,新建保存笔记模块以及上传图片和实现二维码分享笔记等模块。但是几天过去后除了登录注册模块基本成型,其他模块几乎没有任何进展。后来我们想到写软件并不是划分好任务后各自干各自的就可以,我们需要更多的沟通和交流才能更好的解决问题,我们就把小组的人都聚集在一起写代码,这样大家可以随时沟通,一起解决很多问题。老师在课堂上提到,印度的软件行业很发达,世界前十的软件企业他们占据了半壁江山。印度的软件企业和我们国内的对比有一个很明显的不同就是他们对文档更看重、管理更严格,而不仅仅是完成代码的工作就可以。代码只能帮助你解决今天遇到的问题,但是今后遇到类似的问题和项目时,文档就是一个很好的帮手。在进行团队合作开发时,我就体会到了了软件的开发文档的重要性。因为很多时候重新阅读别人的代码整理思路是一件很痛苦的事情,而一件事情重复对别人解释很多遍也很痛苦,这个时候,文档的重要性就体现出来了。文档可以帮助我们规定一些也许我们个人认为大家都清楚,但是其实大家不了解的事情。也可以帮助我们了解整个工程的进度,方便大家的沟通和交流。
在软件工程概论这门课上,学到的东西很多,但是可以大致归结为两点。第一点是我们能最大程度的感受到自己以后进入工作岗位后整个开发流程是什么样子的。第二点就是学习是一个循序渐进的过程,要学会自学。