个人总结
经过最后一周的团队作业冲刺,软件工程这门课迎来尾声。这门课程的确给我带来了非常丰富的体验,无论是代码能力上还是精神上。从一开始的个人作业,之后的结对编程,到最后的团队项目,中间穿插阅读了很多有关编程的书籍,提交了那么多的读书笔记,我们还是做了很多事的。邓宏平老师对于软件工程这门课有着深刻的个人理解,努力的发动自己的资源为我们搭建了各种平台,包括QQ课程群,微信群,个人博客和团队博客,还引进了《构建之法》的编辑邹欣老师,极大的拓展了我们的视野,认识到自己编程能力的不足。课程学习过程中,在老师和助教的积极帮助下,还是遇到了很多的困难,期间心态变化微妙。看来适当总结一下这学期的收获很有必要。
个人作业
对源文件夹内的所有文件统计字符数、单词数、行数、词频,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处理多个文件。使用性能测试工具进行分析,找到性能的瓶颈并改进。使用Github进行代码管理。撰写博客等。
这个题目本身不是很难,但是其中的诸多细节和一些繁琐的要求给项目带来了很大阻力。打开文件夹和相应文件夹下的根目录花费一定时间,最后在网上找到了好用的历程。最后的测试文件很大,为了提高代码效率,我更换了数据结构,优化了相应的热行,最后运行效果还不错。
在此之前我还是一个用dev编程的小白,经过个人作业基本熟悉了VS的操作,能够行进性能分析代码优化
结对作业
能自动生成小学四则运算题目并给出答案,生成时可以选择一些参数设定题目类型,将 core 模块通过一定的 API 接口 (Application Programming Interface) 来和 UI 组对接, UI 组测试所有 core 组 DLL 后,core 组需根据 UI 组的测试结果进行反馈优化
刚看到题目时被那些琐碎,冗杂的分支条件所震撼,真是一脸懵逼,看到API和接口更是不知所云。在随后的几天中,随着讨论的深入,思路也逐渐清晰。我们开始时是一起编写,一位领航员,一位驾驶员,但之后感觉这样的编程方式效率并不高,然后采取分工编写不同的子函数,有问题时再一起讨论的方式,后期主要是一起做一些细节的处理,如乘方和整数模式下如何生成表达式,总的来说是一次非常愉快的合作。
结对作业的效率明显高于独立作业,当一个人的脑子不转了的时候,另一人人还可以继续做事,出现了Bug时通过讨论可以更快的解决问题,但是每个人都有自己的编程风格,遇到具体的问题也会有不同的想法,这就更需要沟通和磨合。
通过结对编程认识到,一个良好的接口可以简化使用,更好的体现功能,也可以将内部的实现隐藏起来,保护程序不被修改,事半功倍。
团队作业
我们组团队项目选题是作业提交系统,在学期伊始就确定了技术选型,团队分成前端和后端两个小组,每个小组尽力熟悉相关的技术。
作业上交的困难和批阅的繁琐是中科大各个规模较大的课程都存在的痛点。目前,老师或者使用邮箱,或者使用纸质作业上交,这些工具和平台都存在着一定的问题。而我们的线上课程作业管理系统正是基于这样的需求背景下提出要开发的。是我们主要的特色,目标就是做一个操作很简单,很稳定的作业上交系统这个网站提供了一个方便老师和学生两方使用的作业上交系统。学生可根据自己的时间自行上网查询作业要求,提交作业文件,查询作业上交情况。老师也不用自己下载作业,通过在线预览就可以查阅作业,而老师不用面对拥挤的邮箱空间,也不用自行统计上交人数,提醒未上缴成员作业情况,从而轻松的管理该门课程的作业。
这个网站看上去是功能很简单,但是要通过代码实现是不容易的。可以用html搭建网站架构,难点在于如何构建数据库,储存课程资料,课程成员,并提供给老师端和学生端查询作业上交情况。在线预览功能,可能较难自行搭建,可能需要使用别人已经搭建好的模块。设计好的界面介绍在后面。仔细整理之后,觉得实现起来工作量比较大。我们组前期做的工作还算充足,做了很多调研工作,明确了前进的方向。
在最后的冲刺阶段我们组的配合还是非常不错的,负责前端和后端的成员聚在一起写代码,发现问题,及时沟通,即时解决,效率非常高,最后网站的完成读非常高