软件工程实践总结
回望
对比开篇博客你对课程目标和期待,哪些方面还存在哪些不足?
当初对 软件工程 这个专业的期待和想象?
从小时候到长大所受到的文化熏陶都让我觉得学习软件的人都可以将各种app以及应用掌握在手中,能够开发一款游戏或者一个广泛受用的app。当时就期待能够在学习完软件工程相关课程之后可以独立或者以合作方式完成一款程序应用,能够在日常生活中遇到困难的时候通过“软件”的方法解决问题。
- 当初期待能够独立或者合作方式完成一款程序应用。定下的目标很模糊啊……按照现在冲刺结束的状态来看,确实能够以合作的形式完成一款程序应用了,但是就自己而言并不是很满意,有些事情在入门之前看可能很厉害,比如运用一款框架开发一个程序,但等到真正实现了之后发现这个要求真的太低了。使用框架开发应用真的算是框架的应用里入门而又入门的了,使用一个框架非常简单,就像vue,说的简单点就是v-bind,v-model和methods函数,就只要会这些基本就能够搭建起一个程序了。但是框架的使用也有水平高低,比如别人可以用动态组件和动态路由解决的问题,我如果只能用url解决,那我就是对这个框架不够熟悉,我现在就是在一个半生不熟的阶段,我会用路由、动态组件,但是我没用过插槽,我没用过过滤器,没封装好api没有完美的将之前的多页面程序思想跨越到现在的单页面,这就是我的不足。
对比当前你的所学所得,你达到了当时的预期值吗?
未来期望 目标 能够更加熟练的掌握前端技术 预期值 能够更熟练的掌握CSS的美化技巧 能够完全掌握vue框架的前后台分离的框架开发 能够熟悉js的前台优化以及功能
当初立下的目标和预期值也比较模糊,对应的三点来说。
- CSS美化,学习了.less的预处理语言,学习了设备的适应样式配置
- vue:没能完全掌握,还是入门阶段
- JS:用到JS的部分比较少,也不能说自己已经融会贯通了。
总结这门课程的实践总结和给你带来的提升
-
统计一下,你在这门软件工程实践中,一共完成了多少行的代码
- 大概4K行
-
软工实践的各次作业分别花了多少时间?(做一个列表)
-
作业标题 时间 第一次寒假作业 480-540mins 第二次寒假作业 2195mins 结对第一次 2160mins 结对第二次 3.5k mins 软件评测 2.4k mins α冲刺 10hrs * 10 β冲刺 4hrs * 3
哪一次作业让你印象最深刻?为什么?
- 软件测试那次印象最深,第一次发现原来大厂写出来的产品也能如此的不堪入目……自那开始测试在我心中的分量就大了不少,也充分的体会到一个测试人员需要的素质可能不仅仅是一通乱测。
累计花了多少个小时在软工实践上?平均每周花多少个小时?
- 总计:261hrs
- 平均:14hrs/week
学习和使用的新软件;
- IDEA ,刷新了我对IDE便利性的概念
- webstorm,本来打算学习VS,但是webstorm确实挺好用的所以也就没抽时间去学VS,听说VS对前端好像挺友好的。
- pychar,先接触了IDEA所以后来写什么语言都先去他们家找了
学习和使用的新工具
- leangoo,流程控制和燃尽图
- teamgantt,一个画甘特图的网站,不过由于限制了团队人数,所以也仅限在画图上了
- Typora,现在写东西都不喜欢在word里面写了,更喜欢在Typora里写markdown,虽然有时也要写html语言,但是写起来确实更加舒心。
- XSHELL和XFTP,用来管理服务器和传输文件
学习和掌握的新语言、新平台;
- python,一点点,当时结对的时候我负责爬数据,所以当时学了python,虽然效率不怎么高,但是结果上还是比较满意的
- github,现在才发现github不仅仅是一个代码平台,还是一个程序员分享信息的平台,上面经常会有很多相关信息文档用以学习。
学习和掌握的新方法;
- github的使用,会使用Github之后才知道这个平台有多好用。
- scrum
- 软件工程的流程
工程能力的提升
- 会封装api了
- 能用初步的使用vue框架了
- es6的新语法都在课余学习了(虽然记得的可能没多少了)
- 学习和使用了设计模式
团队合作上的提升;
- 当了一回流程控制的管理员,对整个流程更加熟悉了
- 学会了和团队成员沟通
- 借助github团队编码更加得心应手了
其他方面的提升
- 熬夜能力更强了,就算在凌晨两点也能头脑清晰的改BUG了
团队总结
-
团队虽然磨合的比较好,但是并未达到创造阶段。
-
我担任组长(PM)的角色,任务完成的还算可以。完成程度尚可,算是一个中规中矩的水平,没有很差,也不见得多好。
-
做的不够好的地方:
- 一开始的任务分的太粗了,给我的组员们造成了不必要的困扰。
- 项目后期准备考研的压力比较大,所以代码只做完了自己的部分,没有主动去帮助我的组员。
- 可能会临时给我的组员增加工作。
-
做的不错的地方:
- 流程控制的不错,起码每个阶段的经历了,每个阶段都尽力了。
- 团队整合的不错,整个团队都是一条心,没有划水的,有始有终。
-
改进方法:
- 还需要更多项目的历练,熟悉一个项目可能会出现的细节问题。
- 增加效率,减少冗余时间。
-
团队进化史:
- 一开始组建团队的时候没想到后面会这么认真,一开始都是和之前的组队类似,尽力而为。也没想着会挑战自我。
- 第一次github的熟悉是我们最尴尬的时候,早上八点上课本来打算上完了继续睡觉,结果说这个作业今天就得完成,当时的压力真的是太大了,也是我们团队第一次进行团队合作,问题真的非常的多,包括前端的代码规范不一样,环境不一样,后端的插件和使用的库不一样等等,不光代码出了很多问题,最后整合也花了很长的时间,我觉得那次应该算是我们的磨合期。
- 磨合期应该一直持续到我们写完设计文档,那是我们的棱角第一次剧烈的碰撞,我们讨论,我们辩论,我们试图找一个折中的方案,当时光设计帖子页面大概就花了两天晚上用来讨论了,真的是充满了青春激情的一段时间。
- 在阿尔法和贝塔测试期间我们都能保持规范,但是也就是这样了,我们大概只能做到按部就班,但是我们难以做到创造,这也是我们这个团队现在不足的问题。但是我相信如果我们在一起开发的项目更多的话,我们之间也就会更加熟络了。
人月神话
团队
-
我们的项目完成了三个部分
-
其中符合用户需求的软件,我们至少保证了在测试阶段的49个用户可以使用并且做出评价
-
我们的代码经过了初期设计->阿尔法冲刺->贝塔冲刺,期间经过了无数的实现和发布,经过了数次的再设计和维护,最终以一个较好的质量交付。
-
项目是可维护和发展的:
- 我们设计阶段十分用心设计的,97页9000字的设计文档,其中包括了我们现在设计的限制条件,我们的架构,我们的功能模块分块、数据库、规范要求,只要能够读完这篇文档,接手我们的项目没有问题。
- github二十多个issue和相应的comments已经足够显示我们当时面临的BUG和我们解决的手段。再结合我们80多个commits,就可以找到我们当时bug和对应的解决代码。
- 代码的版本按照Github的release的2个版本逐步发展,分别对应α和β测试
- 代码的规范使用eslint和阿里巴巴的插件,不用担心规范的严整性,如果事后的团队还需要更新代码规范,只需要插件中更新对应的要求即可。
个人
- vue的在多单页面的配置。
- 如果可能的话,我认为vue还是尽量保持一个统一的页面选择,具体来说就是一个项目只对应一个单页面或者对应一个多页面,不要产生一个项目对应一个多页,多页内还包含单页的情况。如果实在要做成多页,尽量做成多个项目,使用多项目之间的url跳转来做成“一个应用在多个页面中跳转”的假象。如果做成多单页面的项目在配置服务器的时候会比较麻烦。一方面路由中的hash模式是带有#进行路由判断的,如果变成了history模式则会用正常的url进行配置,但是这个时候需要对服务器后端进行重新配置,比如对nginx配置使得网页找不到对应url的时候去找默认的页面(因为动态组件一定会接受参数,此时参数的形式就会变成
/user/id
服务器无法找到这种url就会报错);另一方面本来单页面程序中可以以一种统一的方式进行页面的跳转,只需要进行路由转化即可,但是如果多单页面结合的话,反而在跳转的时候有时候要涉及到页面的判断,来进行判断是Url的跳转还是路由的跳转。
- 如果可能的话,我认为vue还是尽量保持一个统一的页面选择,具体来说就是一个项目只对应一个单页面或者对应一个多页面,不要产生一个项目对应一个多页,多页内还包含单页的情况。如果实在要做成多页,尽量做成多个项目,使用多项目之间的url跳转来做成“一个应用在多个页面中跳转”的假象。如果做成多单页面的项目在配置服务器的时候会比较麻烦。一方面路由中的hash模式是带有#进行路由判断的,如果变成了history模式则会用正常的url进行配置,但是这个时候需要对服务器后端进行重新配置,比如对nginx配置使得网页找不到对应url的时候去找默认的页面(因为动态组件一定会接受参数,此时参数的形式就会变成
建议
- 对下一届同学的建议:要开发项目之前一定要学习好基础,之前一定要学习好基础,之前!!!这是非常重要的,不然可能会让你们在α冲刺的时候50%的时间在学习,30%在debug,剩下20%在开发。技术栈充足对于一个程序员是效率的基础。小组内最好有一个熟悉UI美化的同学,美化真的很重要。UI真的很重要。UI真的很重要。UI真的很重要。
- 对于软工实践课程,你有哪些建议?:课程本身内容十分丰满,是一个锻炼自己的好机会,但是如果有可能的话,希望还是能尽量安排在上半学期(虽然这应该是教务处安排的),下半学期确实和同学的安排有冲突(考研、实习)
- 对于助教工作,你有哪些建议?:助教在作业前的专业提示我觉得很好。比如乐助教在第二次作业的时候给出的提示,那个时候我才接触了设计模式,使用单元测试,开始熟悉IDEA的操作等等。如果有一个好的引路人,我们也能在正确的学习方向上激发自己的兴趣。
- 对于自己今后,你有哪些建言?:保持学习,如果被这点困难就难倒了说明你也不过如此。
个人技术总结
技术概述:CSS样式的设备适配性
技术博客链接:链接