这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/2020SpringW/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/2020SpringW/homework/10836 |
这个作业的目标 | 个人总结+技术博客 |
作业正文 | https://www.cnblogs.com/Zhifeng-Shen/p/13123519.html |
其他参考文献 | 《构建之法》 |
一、回望
(1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强软件工程专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
主要达成的目标有:
-
团队协作能力
-
熟悉基于Spring Boot项目开发
-
软件工程项开发流程
-
文档设计和编写
-
软件测试
不足之处:
-
对于Spring Cloud了解较少。由于学习时间有限,且Spring Cloud内容较多,因此掌握的不是好。基本处于入门状态。
-
对于软件项目管理能力还有待提升。由于第一次开展软件工程活动,许多方面经验欠缺。
(2)你在第一次作业的个人简历中制定的这门课程结束后,你预期你将增长的能力、技术、技能;
和你针对你的目标绘制的学习路线图。对比当前你的所学所得,你达到了当时的预期值吗?
对比之前的路线:
现在掌握其实远远没有达到预期,学习到的更多是关于Web API开发方面的内容,目前学习(掌握程度不是很高)到技术、软件、理论、或者框架有:Spring MVC
、Mybatis
、Maven
、Spring Boot
、Struts 2
、Redis
、docker
、Spring Security
、Spring cloud gatway
、Eureka
、REST
、Spring Session
(3)请总结这门课程的实践总结和给你带来的提升,包括以下内容:
-
统计一下,你在这门软件工程实践中,一共完成了多少行的代码;
约12000行。
-
软工实践的各次作业分别花了多少时间?(做一个列表)
作业 大约花费时间(单位:小时) 准备篇 2 热身篇——疫情统计 41 结对第一次—某次疫情统计可视化(原型设计) 17 团队作业第一次——种子队伍选拔和团队展示 15 结对第二次作业——某次疫情统计可视化的实现 36 团队作业第二次—团队Github实战训练 12 团队作业第三次—项目需求分析 16 团队作业第四次—项目系统设计与数据库设计 31 个人作业——软件评测 8 团队作业第五次——站立式会议+alpha冲刺 82 团队作业第六次——beta冲刺+事后诸葛亮 58 个人作业——软件工程实践总结&个人技术博客 4 -
哪一次作业让你印象最深刻?为什么?
团队作业第二次—团队Github实战训练。这次作业真真实实做了一天,非常考验团队之间的配和以及组长项目设计分析计划能力。第一次做完作业感觉到生无可恋。
-
累计花了多少个小时在软工实践上?平均每周花多少个小时?
这个不太好估计,包括思考和写代码的时间大约算起来有330小时。平均一周(截止目前16周)花费20小时。
-
学习和使用的新软件;
JProfiler
、JMeter
、StartUML
、Typora
-
学习和使用的新工具;
阿里巴巴规范检查的IDEA插件
、WakaTime的IDEA插件
-
学习和掌握的新语言、新平台;
Spring Boot
、Mybatis
、Spring Security
、Spring Session
、Spring Cloud Gateway
-
学习和掌握的新方法;
主要学习的方法是对于软件开发过程中一些技术资料查找分析。
-
工程能力的提升;
团队协作能力、软件系统的功能定义设计、文档设计编写、软件测试
-
团队合作上的提升;
团队沟通能力、团队代码管理、团队冲突解决
-
其他方面的提升;
时间管理能力。
二、团队总结
软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
你在团队中担任了什么角色?你是否完成了该角色的任务?现在你觉得你适合该角色吗?
1、 如果你是组长,你觉得你有哪些地方做的不够好的?有哪些地方做的好的?你觉得该怎么改进?(详细描述)
主要是在团队的任务配过程积极性较差,需要人员被动分配任务才能使得团队工作起来。总体上来讲,团队对于任务交付能力是可以的。要提高积极性需要每个人重视起来,或者依靠一些奖励制度。
2、 如果你是组员,你觉得你的组长分工安排是否合理?你对组长的选举有什么建议?
组长分配的任务相对合理,根据队员的能力进行分配。对于组长的选举主要得靠个人的主观能动性,对于被动选举出来的组长可能积极性会受到一定影响。
3、 你这学期经历过换组吗?你对换组有哪些看法?谈谈你在这个过程中的感受。
没有经历过换组。其实我觉换组其实可以通过团队历次累计贡献度最低者决定被换出的人,一方面可以提高每个人的积极性,另一方面也接近于现实情况。
4、 分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建之法》第17章 人、绩效和职业道德)
我们团队应该现在处于磨合阶段。总体情况,大部分人都都能按部就班的完成任务,但是完成任务体现出的积极性各有不同,同时团队时常需要有人推动才能使得任务开始。
三、人月神话
1、怎样证明你学会了软件工程?以下要求你们的团队达到了哪几个?请在随笔中用数据证明上述内容或侧重选择之一。
(1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
(2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
(3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
-
通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件。
无论是alpha阶段还是beta阶段,使用leangoo进行项目任务管理,通过燃尽图可以监控项目进展。
同时每个成员有具体的任务分配以及时间规定:
代码开发成员积极参与,代码提交量有保障(第一张图为alpha阶段和beta前端与后端,第二张图为beta后端):
、
-
软件是可以维护和继续发展的。
软件项目模块明确,同时各模块结构具有相同的规范。
代码注释完善,同时在代码规范插件的检查下。
具有相应的设计文档说明以及相关开发流程视频:
2、写下属于你自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析,文字部分字数要求在100字以上,可以使用你自己喜欢的方式表达(如图文结合、视频)..
- 每项任务主体必须明确,没有二义性,且有相应的交付结果定义。实施者不应该对某个任务不应该产生疑惑,同时所做工作应该围绕任务主题进行。结果定义必须明确,而不是让任务实施者“天马行空”,或者应没有因为某些不明确的细节导致进度拖延。 这次开发过程出现一个功能模块的某一部分开发和原型展示逻辑差异很大,或者说是原型没有的东西,可能当时成员没有按原型所展示的业务逻辑进行设计,而凭自己想法进行自行设计和实现,由于后端并没有提供相应的接口(非文档的规定接口),因此在设计和实现这个意外的功能,不仅难度加大同时带不必要的麻烦。
- 在一个冲刺过程中,变化最好能服从于约定。在紧锣密鼓开发活动,变化应该尽量少出现,若出现了尽量服从约定。这次开发过程,前端与后端交互媒介在于接口,因此对接口修改往往是要两边付出一定的代价,因此因尽量按照相关接口文档设计进行协调。
四、建议
对下一届同学的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?请写下你对后来人的期许。
在软工实践寒假之前最好进行一些开发知识和项目积累。凡是预则立,不大没有准备的仗。可以预先预览往届的实践过程,进行一定的预先准备。团队合作中应该让每人行动起来,不能坐以待毙。项目设计应循序渐进,不要把步子迈的太大,同时也需要预先准备。项目管理应该要规范化,拒绝口头的任务分配,每个任务应该有相应记录跟踪。
对于软工实践课程,你有哪些建议?
可以考虑增设一个培训环节,通过老师、助教或者同学帮助一些基础不好或者开发经验不足的同学,学习一些基础的知识和锻炼相关能力。
对于助教工作,你有哪些建议?
可以建立一个助教、老师、团队组长的交流,便于集中解决个团队的问题,同时组长传达问题到自己团队中。
对于自己今后,你有哪些建言?
早睡早起。
五、个人技术总结
概述:Spring Cloud Feign
是声明式、模块化的Http客户端,可以快捷优雅的调用HTTP接口。由于用到了需要调用其他的微服务,因此需要通过HTTP方式进行调用。之前试过了RestTemplate
,感觉用起来不太方便,因此选择了Fegin。这次技术难点主要涉及到接口如何声明、以及在调用过程如何传递Cookies,设置Header。