软件工程实践总结&个人技术博客
立志欲坚不欲锐,成功在久不在速。
这个作业属于哪个课程 | 2021春软件工程实践|S班 (福州大学) |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 1.课程回顾与总结 2.个人技术总结 |
其他参考文献 | 《构建之法》 |
一、软件工程实践总结
1.1 问题回顾
原文链接:软工实践寒假作业(2/2)
Q1:工程师在不清楚模块对于全局的作用时,容易对局部模块花费大量时间,这种问题被称为“过早优化”,但是我们对于程序的测试与调优应该从项目开始就有所准备,所以在进行程序优化时,我们应该遵循怎样的准则从而避免我们陷入“过早优化”的陷阱?
我认为对于局部模块的优化可以在单元测试之后,集成测试之前。同时应该对于优化时间表有明确的规划,不应该在前期的优化上花费大量时间。并且我认为是否会踏入“过早优化”的陷阱还很大程度上取决于前期设计时对需求的理解,对软件架构的搭建,做好前期工作也能最大程度的避免我们陷入优化的漩涡。
Q2:一部分人写代码时充满激情,也有一部分为了工作而勉强了事,那造成这种差异的所谓“激情”是如何产生,它来自于项目的商业价值还是个人的理想实现又或者是什么,第二类人又该如何激发自己的激情呢?
经过一学期的学习与开发工作,我认为写代码时的激情主要源于对心中想法实现的兴奋,如果程序员能够有丰富的想象力与足够的技巧,那么应该不会缺少在编码时的激情,而商业上的激励可能只是一小部分。如何激发自己的激情,我觉得可以多学习新的软件设计,探索新的技术,大脑多多畅想各种可能的产品形式,自然而然对编码会充满新鲜感与激情。
Q3:今天碰到的问题来自于昨天的风险,一个项目存在着许多的风险,其中来着环境的风险有法规、市场竞争环境、经济情况、技术大趋势等等。那么我们程序工程师在项目确定的时候考虑风险是参考当下的环境,还是凭借个人的眼光以及周遭信息更多地参考所预测的未来的环境呢?
一个项目所面临的风险可能来自全方位,我认为规避软件项目风险,一是做好软件需求的分析,二是累积以往经验,做好已发布产品的复盘与总结,归纳知识与准则。
新的疑问:没有经验的团队应该如何做好风险分析,行业内有一套成文的软件产品风险分析法则吗?
Q4:用户体验的好坏与产品的成功息息相关,我想可以理解为用户体验至上,但是有些时候我们不得不牺牲一部分用户体验以换取性能、安全性等等,这种时候我们怎么进行取舍呢?
好的软件设计可以规避用户体验与软件性能、安全性等等的取舍,如果没有好的设计,那就应该做好两边的平衡。保证必须的性能和安全性后着重满足用户体验。
Q5:假设我们砍掉了一个无法实现预期的设计需求,我们为这个功能所花费的成本可以称之为“沉没成本”,那我们能不能从这个已经花费出去的“沉没成本”上吸取到什么教训。
做好代码归纳整理,收集可以复用的代码,做好复盘总结规律。
1.2 软件工程实践的收获
1.2.1 需求阶段
我在需求阶段帮助团队设计了几道调查问卷的问题,从问卷调查中获得了很多重要的信息,做好软件需求分析对于我们之后的编码工作非常有帮助。
1.2.2 设计阶段
在小程序开发中,我们选择了mongodb数据库,学习了怎么设计一个能够简单实现多表间连接以及快速查询的数据库表。提高了自己的文档编写能力,了解了怎样写好一个信息充实准确的软件开发文档。
1.2.3 实现阶段
学习了小程序云开发流程,以及云函数编写,学习了swiper、picker等组件的使用,学习了flex布局,学习并大量的运用了Promise风格调用的函数。
1.2.4 测试阶段
测试阶段学习了怎样测试微信小程序代码,使用微信开发者工具中的云函数本地测试组件,对编写的云函数进行大量的测试。
1.2.5 发布阶段
没负责发布阶段的工作,只是了解到发布社交型小程序需要很多步骤,还要申请企业号。
1.3 对软件工程实践的理解和心得
结合个人项目
个人阶段的项目是一个词频统计工具,这次项目中是我第一次使用github进行代码管理,也温故了以往学习的java命令行参数输入。不过最终由于开发时使用的jdk14与测试环境中的jdk8不相符合,导致程序得到了0分。不过也从中收获了很多知识,学习了其他同学优秀的算法,也让我对于开发环境等的要求变得更加重视。
结合结对阶段
结对阶段的项目是论文爬取网站,不同于上一次作业单纯的程序开发,从此次作业开始,我们接触到较为完整的项目开发流程,先进行了需求分析与原型设计,最后才开始着手搭建网站。在需求过程中,学习了墨刀原型制作,也从《构建之法》中学习了原型分析的NABCD法则,在编码过程中,学习了springboot,layui前端组件。
结合团队阶段
团队阶段的项目是记账类微信小程序,这对于我是一门全新的技术,让人感到非常的新鲜,经过了几天的学习也能很快的上手开发,团队阶段因为是多人编码,代码管理就显得尤为重要,我们使用github进行代码管理成效很好,同时由于前期需求分析,原型设计,数据库设计,系统设计等完成得十分详细,所以编码也进展得非常顺利,这让我认识到,前期的设计是一个软件能否成功的基础。
二、个人技术总结
2.1 技术学习总结
开学初为自己制定的计划是学习spring全家桶,在一开始的结对作业中确实学习了不少spring的相关技术,例如springboot和mvc模式网页开发,不过后来在团队实践中转行去小程序云开发了,在开发中实现了滑动页面,上传图片,虚拟键盘等功能。收获了很多,学习了文档型数据库的设计与使用,也上线了属于我们的小程序。
2.2 个人技术博客
多文件上传时的异步转同步
概述:微信小程序要上传多图,并让多个上传进程最后保持同步返回结果,也适用于各种文件的上传