软工个人总结——詹元成

在软件工程即将结束之际,我觉得很有必要对这门收获”颇丰“的课程进行总结。

这门课可以算是我本科期间至今为止最虐的一门课了。但与此同时这门课给我带来的收获和其他课程相比,也不是一个量级的。下面我就在本课程中学习到的知识与能力课堂大项目与团队合作

三个方面作为我个人总结的内容。

 

知识与能力

上课最重要的是学知识,但这门课学到的不仅仅是知识,还有代码能力的提升。

个人作业https://www.cnblogs.com/nkzyc/p/8669089.html

我们是做词频统计,看似不难,实则要求的能力非常多:代码的简洁规范、代码的优化、目标的完成效率、与老师助教的沟通等等。

因此,我提升了以下的能力:

优化算法的能力。会用多种方法优化算法。

合理制定计划。本次PSP表格提升了编程的效率,并使时间利用更加合理。虽然没有按照计划完成,但使时间利用更加高效了。

 debug查错误。本次实验发现了很多bug,基本是采用debug设置断点查出来的。通过这次作业,加深了我对查错的理解。

 linux环境熟悉。这次移植加深了我的Linux操作系统的理解。

 库函数使用。能用库函数尽量使用库函数,出错误概率越少,封装好后CPU利用更高

 

结对编程作业https://www.cnblogs.com/nkzyc/p/8890649.html

我们是对小学数学答题设计UI,在这里,我们学到了Qt的知识、代码的能力和与小伙伴合作的团队意识。

因此,我提升了以下的能力:

掌握了Qt的很多操作、C++的基本操作,如

成员变量和局部变量:对可能会修改的对象定义为成员变量,对只用一次的对象设为局部变量;所有MainWindow 类内定义的对象全部建立在堆上,所有主函数新定义的对象全部建立在栈上,

这样使用bug率最低。

定时器 QTime类用好这个类并不是特别简单的,但有没有快速上手的办法呢,有的。微机原理大家都学过,通过观察可以发现,这个定时器和其中的定时中断有异曲同工的地方。

等等....

习得了领航员与驾驶员的工作方法:

由于结对编程组织性强,因此可以有效地利用各种资源,进行最佳的组合。在此次结对编程中,我的小伙伴有Java的GUI开发经验,而我对C++相对较熟,

我们得到了一个人编程体会不到的“各取所长”的优势。也就是说,当我们面对一个程序问题的实现方式时,如果其中一个人对某一些语句的书写很熟练而另一者不是很熟练,

那么熟练者可以快速书写代码,另一人在旁边积极提出有益的建议。这样,就较少出现个人编程过程中常有的“阻塞”情形,从而提升了编程的效率。

也正因如此,通过结对编程,我们俩的磨合速度很快,而且也很好的促额团队中的沟通交流。

 

网站大项目,https://www.cnblogs.com/ustc-fb/p/9402065.html

这个学到的东西就太多了,有关团队合作的部分我主要在后面展开, 这里主要讲技术层面的学到的知识。

合适的技术选型 
在开发项目前我们需要进行技术选型。比如前端用什么框架?后端用什么框架?数据库用啥?当时很多组其实并没有特别在意技术选型,都会选择自己熟悉的或者擅长的框架进行大作业的开发。

但其实技术选型很重要。

开发语言采用html+css+js。开发工具采用集成了mysql+apache+php的xampp。编译软件采用phpstorm。

因此,我学到了html+css+js网页设计语言;mysql+apache+php的数据库知识。

html语言

文档声明 <!doctype html>

html标签<html></html>

head标签<head></head>里面会包含诸如页面标题,搜索引擎信息等相关的标签

body标签<body></body>页面的主体内容包含在里面。

数据库的使用

将data文件夹中的文件夹拷贝到XAMPP安装路径下的xampp\mysql\data\文件夹中,完成MySQL数据库的导入操作。

将整个文件夹拷贝至xampp\htdocs\文件夹下,完成文件代码添加工作。

 在浏览器输入127.0.0.1/ index.php 可进入登录界面。

服务器使用

阿里云服务器相当于有两层防火墙一层是阿里云服务器控制台的安全组,还有一层是服务器的防火墙,当外网访问服务器端口时候,首先要考虑在安全组里面有没有添加对应端口,否则无法访问。 
可以使用xshell工具连接服务器比较方便。

 

课堂

第一就是写读书笔记的体会

我们的知识体系是通过课内外的自主学习而逐渐建立起来的,尤其是软工的学习。读书是搜集和汲取知识的一条重要途径。我们从课堂上掌握的知识不是很具体和容易理解的,需要再消化才会吸收。

大量的阅读,可以将自己从课内学到的知识,融汇到从课外书籍中所获取的知识中去,相得益彰,形成“立体”的,牢固的知识体系,直至形成能力。读过多本软工的书籍后,让我对程序员的养成有了

很深的认识。

第二是上课的感受

邓老师教学风格与其他老师不太一样。他不会太讲一些知识点,而是教我们如何做好程序员。甚至有堂课还请了创业家给我们分享经验。

比如教我们学会创新:

创新是指以现有的思维模式提出有别于常规或常人思路的见解为导向,利用现有的知识和物质,在特定的环境中,本着理想化需要或为满足社会需求,去改进或创造新的事物、方法、元素、路径、环境,并能获得一定有益效果的行为。
对于我们的项目的设计,我认为可以从如下出发。

抓住痛点。如果切口不够痛,就要做到足够爽。如果既不够痛又不够爽,就要看愿景以及迭代下去的正确概率了。

怎么确定这一点?基本上把自己变成小白用户,直接感受就好了。

形势把握。准确地把握当下的外部情势,才可能与用户潜在的趋势互动。

男神李健广受欢迎,很大的程度是暗合了人们对浮躁热闹歌曲的疲倦,心灵需要安静下来。而在此前,民谣和慢歌都很难在选秀中获得加分。

等等。

从课堂中学到的更多的是编程的思想和成功的方法。

 

团队合作

一开始,我们团队是一个程序由一个程序员开发时,程序员总是敷衍了事,效果较差,如果由两个人来开发,他们又经常性地互相推诿,效果也不好,由三个或更多的人负责时,效果更差,永无成事之日,真是

严重影响了我们的效率。后来,我们在磨合中慢慢形成了以下的好现象。

在目标上达成一致;
在程序开发中,只要有一名同学与团队的目标不致,那么该团队的整体水平将受到影响,这种影响不仅仅来自于这个同学本身,而也来自于团队内部其他同学的绩效下降,在心理上,其它同学总能感觉到团队内部的分歧或者某个同伴漠不关心的态度;因此,为了实现团队目标的一致,最好的办法莫过于我们共同来确定其目标,这样做的好处有:首先,在目标的制定时的广泛参与,可以确保目标能被大家充分理解,而不是某个LEADER的个人行为;另外,目标制定的过程使团队中的每个程序员可以有机会对共同的目标做出公开的承诺,提高目标的可接受性,增加目标的清晰程度。团队成员广泛也参与到目标的制定、讨论,让他们感受到自已在团队中的重要性,以及团队的成功就是他们自已的成功,以后不论遇到任何困难,他们都会团结一致,勇往直前。
 
 共同承担责任;
建立一个环境,使每个团队成员在这个环境中都感到自已应对团队的绩效负责,除了勇于承担自已的那部分责任,而敢于承担团队的共同责任,遇到问题或困难时,勇于接受挑战,而不是互相推诿,这样,团队的目标才能继续前进。
 
 关系融洽;
在开发过程中,我们的关系越来越熟了。团队成员之间应该优势互补、性格互补、相互支持、善于沟通,彼此之间坦诚相待、相互信任,并勇于表达自我,这样的团队就会齐心协力,成为一个强有力的集体。
 
 

小结

这门课是我遇到的最硬的课。其价值远远超越了2学分的意义。由于大作业开发需要组队,整个项目的开发都是由你选择的团队一起进行的。因此选择一个合适自己的团队至关重要。团队中每一个人都应该对项目有一个相同清晰的目标,大家一起朝一个方向努力。拒绝拖延症,否则睡觉时间不能得到保证。总的来说经过一学期的“受虐”,自己还是学到了很多知识,经验和教训,希望自己能在以后的开发过程中注意以上的几点,开发出自己满意的项目。

posted on 2018-08-02 17:48  nkzyc  阅读(190)  评论(1编辑  收藏  举报

导航