软件工程实践总结&个人技术博客

软件工程实践总结&个人技术博客

这个作业属于哪个课程 2021春软件工程实践|W班 (福州大学)
这个作业要求在哪里 软件工程实践总结&个人技术博客
这个作业的目标 进行课程回顾与总结以及个人技术总结
其它参考文献

课程回顾与总结

问题博客链接

https://www.cnblogs.com/huro/p/14441379.html

问题

  1. PSP 依赖于 数据,记录很难完整,怎么办?

​ 通过平常查看汪老师在其他同学博客下的评论,我发现PSP 表格的记录表并不是固定的,可以根据项目的开发的不同设置不同的PSP表,记录的内容也不需要过于准确,只是在项目与项目的开发中可以观察PSP表格找出自己在哪些方面做得比较慢,以改善自己的能力。

  1. 是否可以使用 goto 语句?

​ 这个问题,到现在我仍持有保留意见。实际上在实践中我完全没有用到 goto 语句。我认为 goto 语句始终不是一个太好的语句,会让代码的逻辑混乱,可以使用 if-else 去省略 goto 语句的使用。当然书中并未指明编程语言,或许在某些编程语言中使用 goto 是一个不错的选择,但是在目前我接触的语言中,goto 都不是一个很好的选择。

  1. 过早优化的问题

​ 通过本次软件工程实践的冲刺阶段,我了解到优化应该有个度,一开始应该着眼于业务的开发,当然伴随着可以简单完成的小优化,但是不应该把优化当成一个特别重要的事情去做,因为这样可能会导致重心偏移,导致项目开发变慢,当然普通的优化也是需要做的,这样能保证最后回归测试不用做很多遍,当然在回归测试自动化,保持测试用例的前提下,过一遍似乎也不用太花时间。

  1. PM做开发和测试之外的所有事情?

​ 通过本次软工实践中PM的工作以及自己长久以来对PM的认知,其实这个问题我仍然觉得书中描述的有误,除了开发和测试,还有美工,运营等等。我觉得PM的工作应该是协调项目进度,负责组员之前的沟通以及构造良好的交流氛围等等。

  1. 程序员不该等待设计师的图后再工作?

​ 通过本次软工实践中的各个阶段的任务以及我对这个问题的了解,我认为还是要看情况,最好的情况肯定是设计师的图出来了再进行工作。因为很可能设计图在不断的变化,如果一边根据设计师的图一边做,很可能白做,另外没有设计师的图,也可能白做。当然在这个时候可以做一些项目架构相关的工作,也可以开发一些小工具。但是在纯粹的切图项目中,或许还是应该和设计师的图错开来做,设计师早一天,这样比较好。

原来的不明白问题

上述中,我提到2,4,5问题的意见仍然是与书中不太统一的地方,也不明确是否可能是书中疏忽了,还是我理解不到位。

新的问题

产生了许多技术的问题,但是暂无理论性的问题。如果作业要求可以包含技术性的问题,可以查看我在github上的issue提问的一个问题。

  1. https://github.com/webpack-contrib/less-loader/issues/421

另外针对部分问题也进行了研究。例如 storage 能做什么存储之外的事情?

  1. https://javascript.info/localstorage

"做中学"

阶段 收获
需求阶段 沟通的能力,需要与其他同专业同学进行沟通,发现市场需求。渠道有发布问卷和利用同学群等。
设计阶段 学会 Axure pro 原型软件的使用,比如插件的使用,下载了 antd 的相关插件,在之后的开发中与 antd 库一一对应,使开发变得更加轻松,也让原型更加美观了。
实现阶段 学会很多库的使用,也学会了整体的 React Vue 的开发流程,例如npm 上的比 moment.js 更轻量的日期库 day.js ,以及学到了 React 权限路由,利用 axios 进行请求拦截等技术,相信将会对未来的工作有不少的帮助。
测试阶段 学习了与 vue 以及 react 相关的测试工具的使用,例如 jest cypress 等工具的使用。在测试的时候也发现了许多自己写的代码的问题,体会到了测试的重要性。如果没有早些进行测试,缺陷的修复的代价是呈指数增长的。
发布阶段 学习了如何将项目进行打包,以及解决打包可能遇到的问题,使用 cross-env 这个库区分不同的环境,进行不同的打包。以及配置 publicPath 以及 nginx 进行文件的公有路径变化,进行请求代理转发到本地的某个端口上等等。

理解或心得

本次软工实践在技术上的收获有蛮多的,其实之前都比较喜欢用 React 进行开发,不过本次由于团队的技术栈比较偏 vue ,因此本次开发中深入了 vue 而且使用之前的架构进行开发,发现其实 vue3 也是挺好用的一个框架。之前对 vue 存在一定的误解。另外也学习了许多库的使用,例如 cypress day.js 等等,让自己以后开发中的选择更加多了。如果只是单纯的个人项目或者结对编程,可能无法体会到整个技术栈需要进行更换,因此对于主流的技术,可能多多少少要进行一点接触是比较好的。

团队合作方面确实收获了不少,尤其是我是经历过换组的同学,因此我能更好的体会到如何在换组后快速的适应组内的环境,也能体会到不同的组不同的开发模式,也能体会到各种开发模式的孰优孰劣,实际上目前我认为比较适合的开发模式,应该是小组内的组员分工明确,并且每天都要进行站立式会议,另外开发应该是不断迭代的,虽然我们的开发类似于瀑布模型,但是在实现过程中却是慢慢迭代的,而且组员的分工明确,而且每天都按时完成任务,带来的是组内的氛围良好。

另外由于一开始是进行个人项目和结对编程,也能体会到,当团队人员变多,良好的管理和代码规范就显得非常重要,否则人多了反而会导致乱的出现。相比于结对编程的效率来说,个人项目的效率是最高的。实际上可能就是编程中的 1+1 < 2 吧。因为沟通也需要成本。

个人技术总结

学习路线

目标 完成情况 时段 详情
熟练掌握 React 技术框架 完成 beta 冲刺阶段 在使用中,主要进行 axios 进行请求拦截,显示相应的界面,使用权限路由进行路由安排,显示对应界面,使用 storage 记录用户登录状态等等。
熟练掌握 React 生态常用工具 完成 beta 冲刺阶段 熟练应用了例如 react-redux dva redux react-saga redux-immutable antdReact生态常用工具。
熟悉各种 Web 前端技术 完成 各个阶段 发表了许多博客,具体可以在我的博客列表中查看。
熟练掌握 JavaScript 完成 贯穿各个阶段 主要看的网站是,https://javascript.info/
熟悉常用工程化工具,了解原理 完成 github 实战,冲刺阶段 主要学习了 webpack 如何从 0 开始搭建一个项目,了解到 pluginloader 的本质是函数和类。

技术问题

在开发中,我担任了开发的角色,解决了许多的技术问题。其中一部分问题如下。

less object is empty in CRA project

https://github.com/webpack-contrib/less-loader/issues/421

antd-vue 1.x 不支持 vue3.0

使用最新的 antd-vue 2.x 作为项目的组件库。

vue 3.x 不支持 * 号通配路由

https://next.router.vuejs.org/guide/migration/#removal-of-the-fallback-option

主题色覆盖失败

需要对 less 版本进行降级,降级到 5.0.0 以下的版本。

这些问题都被解决了,针对部分网上难以搜到的问题,也去 github issue 对作者进行了提问。

技术博客

https://www.cnblogs.com/huro/p/14940598.html

原文地址:https://www.cnblogs.com/huro/p/14940607.html