最终作业 - 软件工程实践总结(个人)
最终作业 - 软件工程实践总结(个人)
一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
总的来说,通过这次实践锻炼,对团队多人协作开发有进一步的提升,以及对自己之前的技术有一个实战的机会,很多能力得到提升。但是还是有很多需要继续努力的地方,对整体项目把握的不够准确,导致后期后端没事情做前端做不完,又临时给后端加需求,又要赶,总之后期节奏很乱吧。还有由于自身的技术能力有限,实现的功能也比较单一、很多更能有趣的功能。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
-
统计一下,你在这门软件工程实践中,完成了多少行的代码;
这次实践中,完成了4k+行的代码。
-
软工实践的各次作业分别花了多少时间?(做一个列表)
作业 耗时(小时) 作业一 1 作业二 3 结对作业一 5 结对作业二 5 团队作业一 0.5 选题报告 1.5 需求分析报告 1.5 项目UML设计 2.5 团队现场编程 5 项目评测 4 Alpha冲刺 12 Beta冲刺 8 -
哪一次作业让你印象最深刻?为什么?
团队现场编程, 因为那时候第一次进行团队开发,而且是限时现场,对于老师给出的题目不理解, 以及准备的不够充分,导致最后没有在现场完成。老师也给我们延长了时间,不过做的很匆忙,让我印象比较深刻吧。
-
累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
累计花了90+个小时,前几周平均每周十几个小时吧,后期几周平均每周5~6个小时,主要花在了学习新技术以及找bug解决bug上。
-
学习和使用的新软件;
Axure RP8 、 墨刀
-
学习和使用的新工具;
Git、微信开发者工具
-
学习和掌握的新语言、新平台;
微信小程序开发文档、微信公众号。
-
学习和掌握的新方法;
github、v2ex、
-
其他方面的提升。
微信小程序的发布流程,管理协作开发的进度。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
无论是学什么语言,最主要的是掌握编程的设计模式、框架。如果脑子里有这么一个设计模式的思想在,学一门新语言,就是查一下文档,学一下新语法的事情。用什么语言开发,设计模式都是相似或者相同的。我个人项目用python写逻辑,现场团队项目用python写可视化界面,最终项目用java写后端。但是我有很多知识都是现学的,虽然做起来也是很简陋,但是起码能用,而且学起来特别快。我原本做的是javaWeb,里面的思想有MVC设计模式,这就在写python可视化界面的时候自然而然的用上了:把逻辑层跟View层分离。让结构看起来就很清楚,也方便跟别人分工协作。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
-
你有什么想建议、告知和期许想要告诉他们呢?
任何事情第一次做肯定都会很难,软工也不例外,但是要坚持,只要能坚持下去,喜欢开发打码,探索一些新事物,你就会发现其实开发一点都不复杂,就是麻烦、重复性的工作很多,这时候你就需要学更多技术和工具,来简化你的代码和结构。
-
特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?
我觉得不要吧, 除非换队员能按每个人的分工来换。不然换队员很容易出现,换完就很懵逼完全不知道该做什么,浪费很多时间。比如我在原来组做美工设计的,但是被换过去需要做后端,那就很无奈了。
-
身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
如果每个人都有技术基础的话,5个人就可以了,毕竟最终完成的项目也不是很大。如果差一点,8个人。再多的话,大项目完不成,小项目存在划水现象,或者有人有事情做,有人没事干。
-
个人/结对/团队作业应该控制在怎样的规模?
个人作业应该控制在1000行左右代码就能实现的项目,毕竟还要花时间构思,写博客,以及设计。
结对作业也不能所略多一点吧,就是比个人作业更完善吧,比如界面设计、功能上。
团队作业就要考虑到整体项目的稳定性,规模也不能太大,毕竟8个人里实际上编程开发的可能也就一半人数吧。
-
这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
苏路明,我们组的组长,天天督促我们交作业,交博客。组长,你辛苦啦!
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
我们团队大概经历了这几个阶段吧,萌芽阶段-》磨合阶段-》规范阶段-》半创造阶段-》创造阶段。最终小程序也成功上线,虽然用的人不是很多,bug也存在很多,后期还需要继续维护,改善。
五、怎样证明你学会了软件工程?
-
研发出符合用户需求的软件
目前我们的项目上线至现在,积累了50多个和用户。
-
通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
草履记,我们也是迭代了好几个测试版本,才发布上线。
-
并且通过数据展现软件是可以维护和继续发展的。
小程序和服务端的源代码也都是开源的,在我们的github上是可见的。
-
检查表
类别 具体技能和面试问题 回答 语言 最拿手的计算机语言之一,代码量多少? JAVA, 1w~2w行 语言 最拿手的计算机语言之二,代码量多少? python,3000行 软件实现 你有没有在别人代码的基础上改进 有 你是怎么读懂别人的代码的 看别人的注释,看别人写的文档 你采取了什么方法来保证新功能不会影响原来的功能 写两个接口,一个旧接口保持使用,一个新接口开放测试。 你在开发中遇到的最复杂的bug是什么,你是如何解决的?这个bug出现的原因是什么,你在将来应该怎么避免bug再出现? Springboot自带tomcat导致无法部署到tomcat。出现原因:自带的tomcat跟部署的tomcat两者冲突,创建依赖的时候,禁用掉自身的tomcat就能解决。 软件测试 你如何测试自己写的代码 IDE运行测试,以及发测试入口给朋友,让其他人测试,API的话还可以用压测网站。 你如何测试别人写的代码 挨个把功能试一遍,然后用一些极端的测试数据 你掌握了多少种测试工具和方法 三种 你写过测试工具吗 没有 你如何对一个网站进行压力测试和效能测试 自己用python简单的写一个暴力请求或者交给专门的压测网站 你如何测试一个软件的人机界面(UX/UI) 检查界面说明有无错误、鼠标点击交互反馈是否正常 效能分析 你写过的最复杂的代码是什么 用8个if判断8个方位然后遍历 你是如何测量和改进它的效能的,用了什么工具,如何分析的 用jprofiler分析结合IDEA的插件,看哪个函数调用最多找找原因 需求分析 你做过多少个有实际用户的项目,用户最多有多少,你的项目有什么创新的地方 目前就草履记,之前有Bubble,不过现在没维护了。草履记创新点,记录照片不用手动定位,自动定位,以及生成美观的足迹地图。 行业洞察力 你最感兴趣的领域是什么 机器学习 这个领域过去十年经历了哪些创新 你分析过这个领域前十的产品吗?请分析一下它们的优劣 你要进入这个领域应该如何创新 项目管理 你参与过项目管理吗 参与过 软件设计 你做过构架设计,模块化设计,接口设计吗? 做过后端的架构设计,接口API设计 质量意识 你是怎么做代码复审的 按照开发文档 工具/社区 你在各种开发平台都使用过什么开发工具 IDEA\Pycharm\vs 自己写过什么工具来改进工作效率 给社区贡献过什么工具和代码,github有分享代码吗 你的技术博客坚持了多久,读者最多的是哪一篇 坚持了9个月 团队协作 请描述你在项目中如何说服同伴采用你提出的更好的解决方案,或者你如何听取了别人的一件,改进了自己的方案 结合自己之前的经验,来告诉他哪种方法效果最好,以及优劣,让他自己取舍判断。 你如何说服懒惰的同伴赶紧工作,实现团队目标 一直督促,提醒 理论素养 你上过什么数学,计算机或其他理论课 高等数学,矩阵分析,离散数学,数据结构,计算机网络等等 请举出具体的例子,说明你学到的理论知识如何帮助你解决实际问题 自我管理 全年级你专业排名多少? 41/55 你刚入学带现在的排名有变化吗? 下降 如何解释你的排名的变化 没有好好学习