1.回望
1 对比开篇博客对课程目标和期待,“希望通过实践锻炼,增强软件工程专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
定目标时设想的都是编程方面的,希望经过软工实践能够较全面得提升我的编程能力。但是实践里,主要锻炼的只是一两个方向。有的时候,做作业为了完成量,就很赶,锻炼效果没有想象得好。
1.2在第一次作业的个人简历中描述了这门课程结束后,你预期你将增长的能力、技术、技能
,并绘制了学习路线图
。对比当前所学所得,达到了当时的预期值吗?
在我第一次作业里,预期获得的工程能力的描述是:能够写出易于修改和维护、兼容性高的程序。现在看,只能说提高了程序的可维护性、兼容性,距离设想的目标还有一段距离吧。
第一次作业里预期获得的技术与技能是:在课程结束后能够做出小而精致的软件。在软工实践期间,我提升了前端实现能力,也小学了一把运维。如果综合这学期自学或其他课程里的知识,似乎可以自己实现些小小的综合程序,算是达到预期值了吧。
在学习路线图里,我定下了关于vue和react的学习计划,但是这学期里用到的几乎都是vue,就搁置了react的学习。并没有达到预期。
1.3哪次作业让我印象深刻,为什么
最印象深刻的应该是口罩预约系统那期。
起床的时候人还挺懵,就看到《团队Github实战训练》。密密麻麻十几点要求,还必须在当天完成。
好在大家效率高,默契好。组长一下就把大家组织起来了,我们迅速定下方案、分配任务然后进行开发。在中午12点前,我们就开始测试性地接入前后端数据交互,记得当时心里想:接入交互就意味着成功一半了。
虽然那是大家第一次合作,但是我感觉我们完成得真的不错。当时我主要负责前端,页面推进不一会,就收到了后端同学提供的各种接口。后续点亮前后端交互的时候也是颇为欣喜的,感觉大家的努力都有所回报。
那天也挺累的,非常累。截止时间是晚11点,一直到忙到最后五分钟。收拾完电脑桌上的零碎,到客厅走几步路,也只能准备洗洗睡了,再过8个小时左右又要准备上课。
1.4个人记录
1.4.1代码量:7000行左右
1.4.2各次作业耗时
作业标题 | 所用时间 |
---|---|
软工实践寒假作业(1/2) | 6h |
软工实践寒假作业(2/2) | 10h |
结对第一次—疫情统计可视化(原型设计) | 13h |
团队作业第一次—团队展示和项目展示 | 6h |
结对第二次作业——某次疫情统计可视化的实现 | 30h |
团队作业第二次——团队Github实战训练 | 10h |
团队作业第三次—项目需求分析 | 10h |
团队作业第四次—项目系统设计与数据库设计 | 18h |
个人作业——软件评测 | 16h |
团队作业第五次——站立式会议+alpha冲刺 | 50h |
团队作业第六次——beta冲刺+事后诸葛亮 | 40h |
个人作业——软件工程实践总结&个人技术博客 | 5h |
1.4.3累计花了多少时间在软工实践上?平均每周花多少时间?
累计花了210h左右。平均一周10.5h。
1.4.4学习和使用的新软件、新工具
学习和使用了postman、Typora、Resolution Test
1.4.5学习和掌握的新语言、新平台
学习了Linux相关知识
1.4.6学习和掌握的新方法
掌握了编写运维脚本的小技巧、spring boot项目部署方式
1.4.7工程能力的提升
提高了前端熟练度。小学了一些运维知识。
对于软件的整体实现过程有了个不模糊的认识。
1.4.8团队合作上的提升
我觉得团队合作也讲究软件工程模式的。怎么进行程序交接、怎么合作查错、怎么做数据交互等等等等,都大有学问。软工实践里就是这样提升团队合作能力的,更多了几分程序员的默契。
1.4.9其他方面的提升
会写博客了,get到了很好用的笔记应用Typora。
2.团队总结
2.1关于我
我是组员。我觉得我有点负责,能够按要求完成组织分配下来的任务;我觉得有些时候我太心急了,火急火燎的反而帮了倒忙。
2.2关于组长
组长非常强大。认真负责有能力,能够很好地组织大家完成各种任务。组长的一系列技能也震撼到了我,会编程、会UI、会画图。就想到某个手圆圆的卡通人物,能够从四维口袋里拿出各种奇妙道具。也非常感谢组长这个学期一路带领我们帮助我们。
其实也有可以改进的地方:组长太肝了,做了很多工作,可以适当把一些任务分下来给我们。
2.4关于团队
我们团队属于规范阶段。到了冲刺阶段的时候大家都非常有默契了。松果生活里很多技术对我们来说都是新的,开发过程中有种筚路蓝缕有种摸着石头过河的感觉,但是能够明显感受到我们是一整个团队在努力。我们的团队在软工实践里,一路发展,一路成熟,走过beta冲刺后,我们已然成为了一支极具力量的团体。
2.3关于角色
我在团队里担任了开发人员的角色,主要负责网页开发和一些小运维。冲刺阶段,电脑常同时开着Webstorm、Chrome、XShell、WinSCP、Navicat、Postman等一系列工具,我叫它们“工作餐”。开发期间也挺喜欢这种在各个软件间切换执行任务的方式。在软工实践里也基本上完成了该角色的任务。我觉得我还蛮适合这个角色的。
人月神话
3.1.1研发出符合用户需求的软件
在beta冲刺后期,我们发布松果生活内测版。并通过各类社交平台把APP投放出去。投放后几天一直保持80-240的用户活跃度。
松果生活下载地址:松果生活官网
3.1.2通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
在alpha冲刺中期,我们就将项目部署到服务器上,可供管理员测试、开发、体验。同时后端服务包也在开发中阶段性更新。在beta冲刺阶段,我们制作了面向用户的松果生活官网,并在冲刺后期将其发布。
3.1.3通过数据展现软件是可以维护和继续发展的
我们的项目分为安卓客户端、iOS客户端、后台网页、后端服务四个部分,各种有独立的github仓库。
项目还配有一套运维脚本,能够帮助我们快速更新、部署后端服务包。
github仓库可见:Android、ios、数据库、后台系统
3.2我的人月神话
软工实践里养了个习惯,大干一场前先定个小目标,然后当日的计划就是编程到实现目标为止。
想到疫情统计实现那期,正值学期课最多的时候,那个星期里,就每晚安排一两张图表实现。如果目标提前达成了,就去写写博客或者添加些小组件小样式。就像背包问题,用各种大小不一的方块把一个区域尽可能填满。对我来说编程也是这样,工作时间里主要处理大功能模块,时间空余则去实现零散的小模块。最怕的是今日把某模块功能实现了一半,明日接着实现。这样就打断了逻辑的连贯性。
比起算法作业,软工实践里我所编写的程序大多没有太复杂的逻辑,像是一种连线题,要做的只是在特定的点间画条线。但是这样的点有成千上万个。这会儿点连错了,那会儿线打结了,有时逻辑纠在了一起,有时模块糊成了一团。曾经看到那种德国机房布线图,虽然电线有成千上万条,但是都排布得工工整整。我也希望自己的程序将来也能这般工整,这就需要一个良好的设计。
软工课程里有一句话一直记很清楚——软件质量是设计出来的。现在越发理解这句话的含义。设计得好,软件才能打能扛。除了系统设计/数据库设计那期,几次个人作业里我也有尝试编码前先做些简单设计工作。但是经验不足,花费时间也短,弄得有点毛毛糙糙的。博客一里我写,希望能实现小而精致的软件,就要有一个滴水不漏的设计。软工实践里也诞生了各种计划,希望从设计做起,细致地制作一些小程序。
4.建议
4.1对大一同学的建议
大一课余时间还是比较充足的,可以去广泛地了解各种技术。这样想尝试做某些项目时会有个快速入手的方向。
4.2对下一届同学的建议
软工实践前一定要做好技术铺垫。可以练习性地去具体实现一下项目里可能会出现的关键模块。
4.3对自己的建言
还是太怠惰了,不要把时间浪费在没有意义的事情上。
5.个人技术总结
配合springboot的快速运维脚本
概述:
介绍了如何使用sh脚本来对spring boot项目导出的jar包进行简易管理