软件工程 期末总结博客作业
0 公开可看的成果展示
leango alpha阶段燃尽图
2038_online仓库地址
软件工程初期的代码精读结对作业
1 回顾
1.1 对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
达成期待的:
- 在之前系统学习Java和数据库的知识后,在此基础上完成了使用Python实现数据库的连接(大致原理和JDBC相同),还实现了数据库的DAO模式。通过这些知识去实现简单的登录功能。
- 采用云服务器部署的方式:为了方便六位成员能够方便实现登录的功能(因为在我看来六个人如果实现登录需要配置六次数据库),同时完全实现排行榜的这种功能,采用了腾讯云服务器(由于经费问题只开了一个月,现在可能服务器已经过期)。
- 有序进行开发,在我的规定下大家都采用了面向对象的思想,每个文件都用类的形式相互调用。合理分配开发进度。
不足之处
-
数据库安全性仍未解决(来自于前后端合一的弊端),在本次实验中,我们并没有实现前后端分离。这样做的结果就是登录信息传输和验证都是在本地运行的,假如真的大批量使用的话很明显的产生安全问题。
-
软件UI采用了Python最原生的Tkinter,这个最易实现但是也最丑,中间有尝试使用其他的UI包,但是最终还是不了了之。老师给我们的建议说游戏至少界面美观才给人一种想玩下去的冲动。但是没有去彻底解决UI丑的问题。我们做的最多的努力就是如何使用Tkinter去解决丑的问题而不是换一种包。
-
一开始设想的更多游戏模式没有实现,只实现了较简单的几个部分。
2. 哪一次作业让你印象最深刻?为什么?
代码精读结对时让我印象深刻,这次作业让我去大致了解git的提交方式,以及初步了解一个老旧的项目可以使用选择老版本的编译器进行导入的方法。最主要的还是了解git命令行和gitGui的方式。
在开发过程中采用腾讯云MySql服务器,在部署中遇到不少麻烦,这是因为腾讯云的出站入站规则,以及MySql版本与初步开发时略有差异,实际部署花了不少时间,不过这也让我了解了许多基本问题的解决办法。
2 耕耘
2.1 付出了多少时间,写了多少代码,多少注释,多少文档,多少次签入,最好用折线图或其他合适的图形/表格的方式展现
软件开发的付出
项目/工作 | 可验证的文件 | 预估时间 |
---|---|---|
命名规范文档/用户文档 | 命名规范.md/readme.md(在git里) | 0.5h |
数据库/数据库的DAO模式 | PDBC(项目文件内) | 1h |
注册界面 | Register_Memu.py | 1h |
统一代码规范,令GUI代码修改为类的标准模式 | Login_Memu/Register_Memu/Main_Memu | 1h |
部署 | 数据库在腾讯云的部署 | 2h |
bug/debug的付出
项目/工作 | 可验证的文件 | 预估时间 |
---|---|---|
测试数据库安全问题相关的bug | bug报告部分撰写 | 2h |
解决项目运行中的部分bug | 表格数据 | 2h(离散在开发中) |
作业付出
作业名 | 时间 |
---|---|
alpha冲刺1 | 1h |
alpha冲刺7 | 1h |
测试报告 | 2h |
项目展示ppt | 3h |
beta冲刺4 | 0.5h |
团队项目总结 | 2.5h |
3 收获
3.1 所做工作的具体成就,软件的用户有多少,公开的源代码有什么影响力
目前来看,由于开发的比较烂,所以用户仅限于我们班。网络仓库只有两个fork和6个watch。
3.2 你在哪些技能上有提高?请列举出来。
- 学会了初步的Python-DataBase-Connect(PDBC),以及DAO模式。
- 学会使用Python的面向对象开发
- 学会一个DM应当做些什么
3.3 使用了哪些软件/工具
工具 | 作用 |
---|---|
VS Code | 开发的IDE |
GitLens | 配合VS Code进行Git管理 |
Python | 开发语言 |
leangoo | 燃尽图 |
MySql | 数据库 |
4 结构化的理解
当我们平时理解一些新事物时,我们的理解大多是离散的,即兴的,能否在一个良好定义的体系中把自己的理解整理一下?
分析(Analysis)
这里举一个两个月前我在学习GRU(一种神经网络结构)时候的学习笔记。
首先,我去查询什么是GRU,了解到GRU是RNN的一种(GRU->RNN的映射关系),然后我发现在RNN中,GRU又是通过LSTM的演变得到的,所以就构成了如下学习顺序:RNN->LSTM->GRU的形式。
其实学习新知识也是类似的,首先去分析专有名词,主要是定义,如果一个定义看不懂就去分析定义里的专有名词,如此往复,类似一种递归的形式。可以更加加深我们对所需要学习知识的程度。
其次,在分析这些专有名词的过程中,我还发现了在搜寻过程中新的问题,比如为什么要经历那种演变,他们都做了些什么等等,这些问题也会成为我们分析途中的知识。
5 属于我们的人月神话
在刚开始进行选题中,我们在选题中产生了一段分歧,我们不知道是选择何种项目,可以照顾到我们6个人。最后经过我们不断沟通(大概一个多小时),选择了这个Python项目。所以在我看来沟通是很有必要的,即使产生分歧,但是最终的目的还是达成一个一致的目标,沟通才是解决问题的方式。
其次在分配任务的时候,每个人都去分析了几点必须完成的目标,六个人大部分的想法是相交的,我们当时把这些想法在群里列了一个接龙出来,然后再根据自己的个人能力去认领一部分,虽然出现A想做这个B也想做,经过大家互相交流后也顺利的分配完毕了。
6 对团队的分析
6.1 萌芽阶段
一开始在发布选题任务前,我们的沟通仅限于6个人之间相互认识的才会沟通,并没有6人一致沟通。
6.2 磨合阶段
这个阶段产生选题上的分歧,在进行六人会议后分歧解除,也进入了下一阶段。
6.3 规范阶段
每个人开始提出设想并且认领任务,分配任务
6.4创造阶段
我们开始进行Alpha的开发,由于在规范阶段已经认领完毕,我们已经完全专注于自己任务的开发了。在七天冲刺中每个人都达成了自己的基本目标。
7 证明学会了软件工程
研发出符合用户需求的软件
该2048游戏只能说是基本满足用户需求,能用但是较为单一。
通过一定的软件流程,在预计的时间内发布"足够好的软件"
我们根据老师的要求和阶段规划,经历一系列阶段研发出这些软件流程
证明软件是可维护和继续发展的
我们每个文件结尾处都有一个调试区域(main函数),并且函数都规范化成类的形式,可读性强,可维护性也强。
8 建议
作为一名计算机专业的学生,要明白课堂上的知识是有限的只占三分,剩下七分全靠自己去自学。老师在学习过程中只是引导我们入门,修行要考个人的。尤其在当下计算机学生一抓一大把的情况下,合理分配自己的课余时间。