作业链接

一、请回望暑假时的第一次作业,你对于软件工程课程的想象

1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?

在软件工程这门课程中,加深了Android知识的理解,以及后台接口的开发,编写。还有就是在团队作业过程中,加深了git的使用,接口开发过程中对PHP框架加深了理解。在开发过程中,算法是一个难题。因为文章推荐算法没有达到预期的效果。

2)总结这门课程的实践总结和给你带来的提升,包括以下内容:

1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
先是个人作业和结对作业:下面代码那么多,可能是因为那input.txt和output.txt的原因吧

然后是团队的作业:
我想回答以alpha演示时汪助教问的问题:我在alpha阶段代码迁入是很少的,因为我前面都是在服务器上传代码,然后另一个服务器人员将上面的代码整合,最后才git上仓库,后面要不是组长说每个人都得git,可能我真没git代码到仓库。

2、软工实践的各次作业分别花了多少时间?(做一个列表)

时间零零散散不确定,我只知道在团队的项目中花费的时间最长,印象也很深刻

3、哪一次作业让你印象最深刻?为什么?
要说到印象最深的就是团队作业中的换人事件。换人意味着我们这八人当中要有一个人‘牺牲’,我知道换人可能是老师们在课程中设的一个环节,也能理解。但是对于学生来说,这不是换不换的问题,毕竟实践过程中形成的一个团体,要硬生生的拉开,这也是有点残忍的。所以后面同学们在群里的辩解也是情有可原的。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?
没计算,不过草草的计算一下,数独:花费了我大概有20多个个小时吧,第一次结对作业:时间太长,我也不是很确定,但是那是原型设计,想想估计也就10多个小时吧第二次结对作业:因为刚好在国庆节,回去了几天,队友也会去了几天,最后两天在做这个作业,最后熬夜到了10.9号的五点 总的计算下来就20多个小时吧. 最后是团队作业:这是一个漫长的过程,每天至少也有三个多小时花在这个身上。 平均每周花了至少也有10个小时吧
5、学习和使用的新软件;
GitKraken AS Teambition
6、学习和使用的新工具;
Putty FileZilla Client (服务器端的操作) 磨刀 ProcessOn
7、学习和掌握的新语言、新平台;
Linux ubuntu平台 新语言:Java Android (前期做的小练手学了一点点) 在爬取文章的时候有想要用python去爬,去了解了下这语言,不过后面选择了用PHP爬取url
8、学习和掌握的新方法;
新方法:对于一些分析,使用接口。比如说文章分析,流星分析等等
git一些使用技巧
9、其他方面的提升。
提升方面就是算法。这次写的文章算法虽然可是用,但是不是我们所要的,毕竟没有达到预期的效果。
还有就是对服务器的操作,linux是个很好的开发平台,应该充分的利用它,后面自己还会继续学习使用这个平台


###二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析 结对作业:结对最大的好处是什么?通常认为结对编程由于有实时审查可以有效降低错误率;结对的相互交流则可以拓宽视野,拓展思路;由于工作是结对的,对新成员的融入团队也有帮助;在时间上能加快开发进度。从这次的结对编程中我可以发现,队友不仅仅是队友,也有可能是‘上帝’,可以在短短的时间内把你从错误的方向拉回来,避免你越走越远,特别是那次我和我队友的极限编程,熬了一个夜晚,到了凌晨4 5 点,虽然很累,但是我觉得还是蛮开心的,在这个过程中,不断的出现bug,自己是怎么找也找不到哪里出错,不过队友就不一样了,在那不经意间就可以看出了bug的所在,没有队友,那天晚上估计就只能卡在那个bug,无从下手,或许时间会很长,所以说啊,结对的好处还可以节约时间。 ![](http://images2017.cnblogs.com/blog/1068184/201712/1068184-20171227111124088-1379605812.png)

在团队编程中我不得不说组长很负责任,可以安排好时间。对于自己来说,印象最深的就是所写的文章推荐算法,虽然不怎么样,但是自己觉得这是一个学习的过程,那天晚上也让我想方设法的去实现,最终到了凌晨三点多写好了,虽然累,但是还是很开心可以看到结果;

//主要代码
<?php
        $article_key = implode(',', $str);
        // echo $article_key;
        // exit;
        $matrix[$value->id] = array();   
        foreach ($key_content as $k_id => $k_content) {
        	# code...  	
        	if ( strstr($article_key,$k_content) ) {
        		# code...
        		$matrix[$value->id][$k_id] = 1;
        	} else {
        		# code...
        		$matrix[$value->id][$k_id] = 0;
        	}
        }
    }
    //计算相似度
    $cos = array();
    $article_id = 234; 
    $current_arc = array();
    $current_arc = $matrix[$article_id];
    for ($i= 1; $i < sizeof($article) ; $i++) { 
    	# code...
    	if ($i == $article_id ) {
    		# code...
    		$cos[$i] = 1.00;
    		continue;
    	}
    	if ($i == 122) {
    		# code...
    		$cos[$i] = 0.00;
    		continue;
    	}
    	$vec_numerator = 0;                     //分子
    	$vec_denominator = 0;                    //分母
    	for ($j=0; $j < sizeof($matrix[$i]); $j++) { 
    		# code...
    		$vec_numerator = $vec_numerator + $current_arc[$j]*$matrix[$i][$j];
    		$vec_denominator = $vec_denominator +  ($current_arc[$j]-$matrix[$i][$j])*($current_arc[$j]-$matrix[$i][$j]);
    	}
    	if ($vec_denominator == 0) {
    		# code...
    		$cos[$i] = 0.0;
    		continue;
    	}
    	$cos[$i] = abs($vec_numerator) / sqrt($vec_denominator) >= 1 ? abs($vec_numerator) / sqrt($vec_denominator) -1:abs($vec_numerator) / sqrt($vec_denominator);   //相似度
    }
    $min = 1.1;
    $return_id = array();
    for ($i=1; $i < sizeof($cos); $i++) { 
    	# code...
    	if ($i <= 10) {
    		# code...
    		 $return_id[$i] = $i;
    		 if ($cos[$i] < $min) {
    		 	# code...
    		 	$min = $cos[$i];
    		 }
    	} else {
    		if($cos[$i] > $min) {
    			// var_dump($return_id);
    			$flag = array();
    			$tmp = $min;
    			$min = $cos[$i];
    			for ($j=1 ; $j <= 10; $j++) { 
    				# code..
    				if ($cos[$return_id[$j]] < $min) {
    					# code...
    					$min = $cos[$return_id[$j]];
    				}
    				if($cos[$return_id[$j]] == $tmp) {
    					if (in_array($i, $return_id) == true) {
    						# code...
    						continue;
    					}
    					$return_id[$j] = $i;
    				}
    			}
    		}
    	}
    }
    var_dump($return_id);
    // echo sizeof($matrix);
    // var_dump($matrix);
 ?>

详细代码请看这里
所以,只要你有付出什么事情都有可能发生,包括不可能的事情。


###三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员? 建议和告知:实践出真知。你所学的理论知识,最终是要应用到实际中去的,不可能只停留在理论的层面上去,理论没有去验证其正确性,你学再多的理论,也只能纸上谈兵,所以啊,不要光顾着说,要将所学到的知识去实现一些有意义的事情,不会就去学,现在科技是那么的发达,百度也许不是唯一的路径,但是也是一种方法。在学习过程中难免会遇到一些困难,困难是会有的,一帆风顺难免会让人觉得不精彩不深刻。当你经历了苦难,最后克服重重,收获了结果,那是你看到的是裂缝中的阳光,风雨之后的彩虹,印象更加深刻。所以希望以后的学弟学妹们,付诸实践,脚踏实地,持之以恒。噢,还有就是结对啊,团队啊,这写过程可以学到很多,这对以后的工作生活中是很有帮助的。毕竟以后到社会中去就得靠的团队精神 要不要换队员:这个话题其实在群里已经讨论了很久,换有换的好处,不换又不换的好处,这种事情也不好说。我是觉得没必要,因为对于学生来说,换人虽然不代表什么,但实际中,可能会对于团队会有一定的影响,老师想模拟职场,不是不可以,就是时间太短了,短期内根本就无法达到老师所要的效果,所以没必要这样。我所说的知识个人的看法。
###四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德) 1.第一阶段:每一个组员都根据自己的技巧写一个同学录(自我感觉自己界面不友好) ---萌芽阶段 2.第二阶段:课堂小测,全体成员的磨合阶段(特别是团队git的使用) ---磨合阶段 3.第三阶段:规范化阶段,就小测之后就进行分工,规范化,正式进入alpha开发 ---规范阶段 4.第四阶段:创造阶段,alpha阶段的赶工(有点极限编程的感觉) ---创造阶段
###五、怎样证明你学会了软件工程?

1)研发出符合用户需求的软件

​ 必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件

2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件

​ 有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄

3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
from PM:


六*(选做)、阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记(例如,自己写的代码质量如何,是不是一个大泥球,如何衡量自己代码的质量)?从以下参考论文中选择一篇或若干篇:

参考论文文献:

[1] Stamelos I, Angelis L, Oikonomou A, et al. Code quality analysis in open source software development[J]. Information Systems Journal, 2002, 12(1): 43-60.

[2] Boehm B W, Brown J R, Lipow M. Quantitative evaluation of software quality[C]//Proceedings of the 2nd international conference on Software engineering. IEEE Computer Society Press, 1976: 592-605

[3] Samoladas I, Stamelos I, Angelis L, et al. Open source software development should strive for even greater code maintainability[J]. Communications of the ACM, 2004, 47(10): 83-87


七、个性发挥,包括图文、照片和创意等

我们的团队:

posted on 2017-12-26 17:21  suefen  阅读(328)  评论(2编辑  收藏  举报