这个作业属于哪个课程 | <班级的链接> |
---|---|
这个作业要求在哪里 | <作业要求的链接> |
这个作业的目标 | 对软件工程这门课程的学习做出总结;给出个人技术博客 |
作业正文 | https://www.cnblogs.com/ccqy/p/12703415.html |
其他参考文献 | 百度,CSDN,博客园等技术博客 |
一、回望
-
对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强软件工程专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
达到期待的地方是熟悉了项目从选题、设计到实现的流程,以及学习到了一部分自己想学到的知识。还是有很多不足之处的,比如:对项目开发过程中文档的规范的编写流程还是不太清楚;由于项目在服务器端的需求相对不多而且人力资源紧张,学到的后端知识很浅,没有深入到如缓存等其他部分的内容;使用github进行协作方面也使用得不够好,不像别的组什么rebase、issue用得很溜
-
你在第一次作业的个人简历中制定的
这门课程结束后,你预期你将增长的能力、技术、技能;
和你针对你的目标绘制的学习路线图。对比当前你的所学所得,你达到了当时的预期值吗?没有达到我当时的预期值,学习了一部分内容但是还有挺多内容没去学习的,总结原因的话大概有这几点吧:首先肯定是自己的懒惰了,开学后有实践课也有别的课程,消耗了一部分学习精力后我便放弃了遵循之前制定的计划;二是实践的项目的技术侧重点与指定的学习计划重合度较低,没有对一些技术的练手机会,反而得多学习了一部分计划外的内容。
-
总结这门课程的实践总结和给你带来的提升,包括以下内容:
-
统计一下,你在这门软件工程实践中,一共完成了多少行的代码
8000行左右
-
软工实践的各次作业分别花了多少时间?(做一个列表)
作业标题 所用时间 准备篇 3h 热身篇——疫情统计 25h 结对第一次—某次疫情统计可视化(原型设计) 10h 团队作业第一次——种子队伍选拔和团队展示 5h 结对第二次作业——某次疫情统计可视化的实现 35h 团队作业第二次—团队Github实战训练 5h 团队作业第三次—项目需求分析 12h 团队作业第四次—项目系统设计与数据库设计 22h 个人作业——软件评测 6h 团队作业第五次——站立式会议+alpha冲刺 55h 团队作业第六次——beta冲刺+事后诸葛亮 28h 个人作业——软件工程实践总结&个人技术博客 4h -
哪一次作业让你印象最深刻?为什么?
印象最深刻的是我们组那次github实训的失败。。因为那次由于多种原因,我们组github实训没有完成任务,失败得很惨,很打击士气。
-
累计花了多少小时在软工实践上?平均每周花多少个小时?
累计快两百个小时吧,平均每周十几个小时
-
学习和使用的新软件
Xshell、Win SCP、Android Studio、Axure、Typora
-
学习和使用的新工具
MybatisGenerator、Leangoo
-
学习和掌握的新语言、新平台
只能说加深了对后端的了解以及初步了解了点安卓开发,谈不上掌握
-
学习和掌握的新方法
- 单元测试的方法
- 后端全局错误处理的方法
- 使用日志debug的方法
- json处理、构造的方法
- 后端部署的方法
- 接口API文档编写的方法
-
工程能力的提升
编写文档的能力提升了
-
团队合作上的提升
与人沟通的能力增强了、对团队项目开发中在沟通方面可能存在的问题更加清楚了
-
其他方面的提升
抗压能力略有提升
-
二、团队总结
我是组长,我觉得自己做的不好的地方有:
- 自己本身就缺少开发经验,对团队项目开发的规范流程不了解,安排的不够科学,没有很好地带领组员使用git的一些功能,基本只使用了commit,pull跟push
- 任务分配时不够详细,会出现组员与自己对要做的内容的理解产生分歧的情况
- 推动项目时碍于情面可能缺少力度
做的好的地方有:
-
与组员保持了较高的交流频率,较好地完成了协调工作
-
比较好地完成了自己的开发任务
我们班因为是随机组队所以没有经历过换组,我对换组的看法是不太有必要,倒是应该对队里不够积极的人设定一些惩罚性措施。
我们团队没有达到“创造阶段”,只能算达到了可重复的阶段吧。
三、人月神话
- 怎样证明你学会了软件工程?以下要求你们的团队达到了哪几个?请在随笔中用数据证明上述内容或侧重选择之一
这里侧重对第二个问题进行回答
“通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件”
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
我参与比较多的是服务器端,就以服务器端为例说明吧:
- 规划/需求/设计:根据软件工程实践课程的安排,我们项目的后端部分在进行实现前就进行了完整的需求/设计,比如数据库设计、接口设计等,而后期的实现基本也是根据前面的设计来的;
- 实现/发布/维护方面:我们使用github来管理项目,每次commit都会在commitMessage里说明提交的修改的内容。
而且后端的方法都会进行javaDoc风格的注释,后续对项目进行维护和继续开发时可以很方便地知道一个函数的功能、参数和返回值的含义,不需要费时间理解其到底完成了什么功能。
后端的代码都是放在github上开源的,也都经过测试后部署在了云上正常使用,不存在不能编译的问题。
2.我自己的人月神话
说一下实践过程中在调试这一块获得的经验吧。
以前可能开发的项目都比较简单,出错时,调试的时候基本都是自己估计一下错误可能发生的大致位置,然后自己打上几个断点,然后手动一步步寻找错误。
在这次开发时,安卓部分同步模块比较复杂,完整执行一次功能涉及不同类中的近十个函数的调用;安卓使用虚拟机进行测试时启动也比较缓慢;在测试时,还有时候出错,有时候不会出错。。。我测试了半天硬是没找出哪里出了错。
最后我才想到日志,通过在同步逻辑的关键节点打印执行信息,我很快发现了错误所在,最后解决了bug。
这个经历给我的经验是在复杂的逻辑中,可以考虑适当地将关键节点的执行情况输出,这样有助于出错时缩小排查范围,对问题进行快速定位。
四、建议
-
对下一届同学的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?请写下你对后来人的期许。
对下一届同学以及开学初的自己的建议:课外多学习,别当咸鱼
-
对于软工实践课程,你有哪些建议?
对团队协作流程等希望有结合实例的讲解、教学,以更好的对之后的团队开发做出准备。
-
对于助教工作,你有哪些建议?
助教很辛苦做得很好了,没啥建议
-
对于自己今后,你有哪些建言?
多学习!不要当咸鱼(大哭
五、个人技术总结
Springboot项目部署到云服务器(Ubuntu 18.04)
概述:springboot的出现大大方便了后端的开发,项目在本地运行固然方便调试,但涉及使用时,把项目部署到云上显然是更好的选择,这篇随笔就介绍一下这次软工实践中在springboot项目部署方面的一些经验。