作业要求
一、请回望第一次作业,你对于高级软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
我认为通过这学期的学习,自己的代码能力有所提升,自学能力也比以前好一些。因为这学期做了一个微信小程序,虽然难度不是非常大,但是由于本身从未学过做过这方面的东西,所以一切从零开始,一点一点从成了最后的样子,虽然项目不是非常完善,但是个人还是挺满意的。在做项目的过程中,提高了自学能力,提高了代码能力。个人认为存在的不足在于自己还是需要加强代码能力,毕竟计算机这个专业对代码能力要求还是很高的。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门高级软件工程实践中,完成了多少行的代码;
完成的代码大概有3000行。
2、高级软工实践的各次作业分别花了多少时间?(做一个列表)
3、哪一次作业让你印象最深刻?为什么?
beta冲刺印象最深,因为beta冲刺有了alpha的经验,对项目分工合作等等有了更高效率的完成了,并且合作的更加默契了,对团队合作能力培养有一定的作用。
4、累计花了多少个小时在高级软工实践上?平均每周花多少个小时?
高级软件工程作业量其实很大,累计花207小时在高级软工实践上,平均每周大概花了得有11小时都在做作业。
5、学习和使用的新软件;
做项目的微信小程序
6、学习和使用的新工具;
画设计模式用到的processon,上传代码用到的github,博客
7、学习和掌握的新语言、新平台;
做微信小程序的布局比如wxss,flex等
8、学习和掌握的新方法;
学会了去博客看看大神的经验进行学习。
9、其他方面的提升。
团队合作能力,个人代码能力提升。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
我认为在学习软件工程的过程中自己受益匪浅。从一开始的不重视作业到最后很努力的完成团队作业,确实是重压之下发挥能力吧。一开始,自己并不重视作业,因为太繁重,所以个人作业总是漏交或质量不高。后来做团队作业时有了团队意识,觉得不可以当一个米虫依靠别人,要发挥价值,虽然项目没有很好,但是也算是努力了。其实在软工中,自己收获了很多东西,因为如果没有压力的话,人就会一直待在一个舒适区,有了压力才会往前走才会进步。做一个微信小程序可能不算很难,对是对于我这种代码学习能力并不强的人来说,还是很难的。如果不是软工要求,我应该不会学它。在冲刺的压迫之下,最终集体完成了自己的小项目,过程艰辛而充实。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?
建议:认真对待作业,不要把大学的恶习继续带到研究生来。
告知:虽然做项目的过程很痛苦,但是最后的收获还是很令人欣喜的。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
《构建之法》上说团队发展有:萌芽阶段、磨合阶段、规范阶段和创造阶段。我们团队在alpha冲刺中是经历了萌芽阶段、磨合阶段的,在alpha中我们团队一开始的分工合作等等都处于这两个阶段。而在beta冲刺中,我们团队根据在alpha冲刺中磨合出现的各种问题,比如分工不明确带来了效率低下甚至做重复工作等问题进行了及时的改正,进入了规范阶段。对于创造阶段,我认为我们团队还没有达到。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件 必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件 有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
3)并且通过数据展现软件是可以维护和继续发展的。 而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
请在随笔中用数据证明上述内容或侧重选择之一。
我认为在学习软件工程上我做到了第二点和第三点。第二点,它可以体现在alpha和beta冲刺的每日博客上。做到了有定时的进度发布,并且我们对项目是有进行规划和一定的需求分析后进行实现的。并且在冲刺过程中并没有完全依靠团队中的任何一个,每个人都发挥了自己的作用。第三点,我们在完成项目的过程中,在每日博客中都记录了项目进展任何的问题,代码的bug,并且最后都会进行用户测试。对于最终的项目,我们是保存了代码文档的。
六*(选做)、阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记(例如,自己写的代码质量如何,是不是一个大泥球,如何衡量自己代码的质量)?从以下参考论文中选择一篇或若干篇:
我参考的论文是第一篇。在第一篇论文中提到了质量标准和度量之间的关系,标准为可测性,简单性,可读性和自描述性。在这一方面,对于自己写的代码质量的评价应该是很不好的。首先,自己的代码繁琐冗余,对于论文中提到的“语句数量”应该就不满足。而且自己的代码能力不强,必定带来“路径”超标的问题。而且自己编写代码的习惯不好,并不会有很多的注释,这样的话“评论频率”就不满足。而且自己的“程序长度”这个指标也肯定不符合。以上种种,综合说明在质量标准这一块我的代码是不过关的。
论文中还提到了模块化被认为是开源代码的关键特征和用户满意度为衡量项目外部质量最直接的方式。我没有如论文中比较组件大小和用户满意度,但是单单对于用户满意度这一块,觉得自己编写的代码可能因为不是很困难,所以大概可以到B(所有主要的程序功能工作,但至少有一个次要功能被禁用或不正确)。但是自己的代码能力不强,所以如果编起复杂要求高的代码,那么我想我的代码质量可能就会低很多。
虽然第一篇论文讲得是在开源软件中的代码质量分析,但是我想对衡量自己代码的质量与它有相同之处。首先,判断自己的代码是否符合质量编制,即可测性,简单性,可读性和自描述性。其次,判断自己的代码是否模块化,这个会影响到自己的代码质量和后期维护的。再判断自己的代码是否语句精炼等等。最后通过用户使用调查报告判断自己的代码用户满意度如何,可以根据论文中的顺序来衡量(A用户在最坏的情况下仅经历肤浅的错误。B所有主要的程序功能工作,但至少有一个次要功能被禁用或不正确。C至少有一个主要功能被禁用或不正确。#程序无法运行。)
七、个性发挥,包括图文、照片和创意等