项目 | 内容 |
这个作业属于哪个课程 | https://www.cnblogs.com/nwnu-daizh/p/12369881.html |
作业要求 | https://www.cnblogs.com/nwnu-daizh/p/12369881.html |
课程学习目标 | 去学习和设计实现实验项目 |
这个作业在哪些方面帮助我实现学习目标 | 根据所学知识去实现系统的简单实现以及博客编写练习以及学会合作和交流 |
结对方本次博客作业链接 | https://www.cnblogs.com/baimaciren/p/12573488.html |
项目github的仓库项目链接地址 | https://github.com/bauahd1/-3 |
实验内容与步骤
任务1:阅读《现代软件工程-构建之法》第3-4章内容,理解并掌握代码风格规范,代码设计规范,代码复审,结对编程概念。
代码风格规范的原则是简明、易读、无二义性。代码风格规范就是编写代码时程序员的程序风格。比如代码的缩进,变量名,不同类等不同风格的用法。
代码设计规范指的是在编写代码时确定用什么语言,什么类,等去设计和编写代码。
代码复审是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。代码复审可以找出以及修正在软件开发
初期没有发现的代码漏洞以及提高开发者的技术。
结对编程指的是在进行实验项目的实现时通过两人或多人进行合作编写代码实现系统的编程过程。
任务2.两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价,具体要求如下:
(1)对项目博文作业进行阅读并评价,评论要点包括:博文结构、博文内容、博文结构与PSP表中“任务内容”列的关系、PSP"计划共完成需要的时间"与"实际完成需要的时间"两列数据的差异化分析与原因探究,将以上评论内容发布到博客评论区。
(2)克隆结对方项目源码到本地机器,阅读并测试运行代码,参照《现代软件工程-构建之法》4.4.3节核查表复审同伴项目代码并记录。
(3)依据复审结果尝试利用github的fork 、clone、 push 、pull request 、Merge pull request等操作对同伴个人项目仓库的源码进行合作修改。
任务二中的博客评论图如下:
代码审核查表
1.概要部分
(1)代码符合需求的规格和说明吗?
答:不是很符合,实现的需求不是很多。
(2)代码设计是否考虑周全?
答:代码的设计部分考虑的不是很周全,有一部分需求还没法实现。
(3) 代码的可读性如何?
答:根据我自己的基础在阅读代码是还是有些困难,根据注释和资料的查找进行了代码的阅读
(4)代码容易维护吗?
答:不容易。
(5)代码的每一行都执行并检查过了吗?
答:因为没有电脑这一部分的过程无法执行。
2.设计规范部分
(1)设计是否遵从已知的设计模块或项目中常用的模式?
答:设计应该遵从了项目中常用的模式。
(2)有没有硬编码或字符串/数字的存在?
答:在编码中有数字的存在。
(3)有没有代码依赖于某一平台,是否会影响到将来的移植?
答:这个不清楚。
(4)开发者新写的代码能否用已有的Library/SDK/Framework 中的功能实现?在本项目中是否存在类似功能可以调用而不用全部重新实现?
答:因为没电脑这个问题我无法回答。
(5)有没有无用的代码可以清除?
答:没有
3.代码规范部分
(1)修改的符合代码风格和标准吗?
答:电脑原因还无法对代码进行修改所以无法判断是否符合标准。
4.具体代码部分
(1)有没有对错误进行处理?对于外部调用的函数,是否检查了返回值或处理了异常?
答:无法进行这个过程。
(2)参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是以0开始计数还是以1开始计数?
答:字符串的长度是字节长度。
(3)边界条件是如何处理的?Switch语句的Default是如何处理的?循环有没有可能出现死循环?
答:界面的设计还是比较舒服的。
(4)有没有使用断言(Assert)来保证我们认为不变的条件真的满足?
答:没有。
(5)对资源的利用,是在哪里申请,在哪里释放的?有没有可能导致资源泄露(内存、文件、各种GUI资源、数据库访问的连接,等等)?有没有可能优化?
答:资源是上网查找的,不会导致资源泄漏。
(6)数据结构中是否有无用的元素?
答:不太清楚。
5.效能
(1)代码的效能(Performance)如何?最坏的情况是怎样的?
答:程序运行正常。
(2)代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类,C#中 string 的操作是否能用StringBuilder 来优化)?
答:有可优化部分,但无无法对此进行修改。
(3)对于系统和网络调用是否会超时?如何处理?
答:不会超时。
6.可读性
(1)代码可读性如何?有没有足够的注释?
答:根据我自己的基础在阅读代码是还是有些困难,根据注释和资料的查找进行了代码的阅读。
7.可测试性
(1)代码是否需要更新或创建新的单元测试?还可以有针对特定领域开发(如数据库、网页、多线程等)的核查表。
答:需要。
任务3:
采用两人结对编程方式,结合我校师生一起每日上报系统使用体验,设计开发一款符合我校疫情防控工作需求的信息系统,使之具有以下功能:
(1)采集全校各类师生员工疫情信息;
(2)各二级部门疫情防控工作人可查看本部门人员疫情汇总,并提供高级查询功能,进行多属性组合查询和可视化统计功能;
(3)学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报学生统计情况和关键疫情数据统计情况,可【导出】查询列表的Excel文件;
(4)人机交互界面要求GUI界面(WEB界面,App界面都可);
(5)附加分功能:定时填报填提醒
需求分析陈述
1.实现全校各类师生的所有疫情信息收集
2通过可视化实现信息的查看和查询,更加清楚的了解全校师生的填报情况,在这一部分实现里只能进行查看以及查询没有进行修改和浏览全部人员的信息
3.通过高级查询功能查询指定的人或者学院的疫情填报统计情况在一级别的人员可进行浏览所有人员的信息这个级别的人员可进行信息的修改,删除,添加等功能意外还可以导出Excel文件。
4.附加功能部分需要实现定时提醒打卡部分,这个部分需求是给那些常常忘记打卡的用户提出的需求添加的功能,在于每天定时提醒用户去填写疫情信息填报表。
软件设计说明
这次的软件的设计主针对的是此次的疫情所进行的一个疫情信息填报系统的实现,通过这样的一个疫情系统的实现来及时收集全校教师员工的信息,有利于学校的疫情信息的收集以及做出相应的教学措施和疫情防控措施。
软件的实现以及核心代码的展示
这次实验中用到的类有登陆类,数据类学生类,以及添加,删除,查询等类,最后还有一个导出部分的类。登陆类的部分实现界面初始的登陆模块,可以有不同的身份进行登陆,学生类包含的是学生的各个信息,在数据的类等这些类实现的对人员数据的添加,删除,以及根据某一特征进行填报人员信息的查找。导出的部分可以实现信息填报的EXCEL文件的导出。
具体实现的部分截图:
登陆部分
疫情填报部分
学生信息文档
签到时间
在进行结对编程的交流截图:
此次结对编程的PSP
psp2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 10 | 5 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 360 | 420 |
Development | 开发 | 420 | 540 |
Analysis | 需求分析(包括新技术) | 10 | 20 |
Desig Spec | 生成设计文档 | 8 | 12 |
Desgin Review | 设计复审 | 5 | 10 |
Coding Standard | 代码规范 | 6 | 15 |
Desgin | 具体设计 | 15 | 25 |
Coding | 具体编码 | 240 | 360 |
Code Review | 代码复审 | 60 | 180 |
Test | 测试 | 15 | 20 |
Reporting | 报告 | 60 | 80 |
Test Report | 测试报告 | 6 | 30 |
Size Measurement | 计算工作量 | 6 | 15 |
Postmortem&Process lmprovement Plan | 事后总结并提出改进计划 | 5 | 20 |
总结
这次实验的实现主要是通过结对编程实现的,我组成了结对的小组,由于我没带电脑好多项目中的实现我只能尽量地去查找资料,在结对方有问题需要查找资料时尽可能多地去帮助他找找资料,在github上进行多人共用一个仓库进行合作编程以及修改时去查找资料以及在手机上进行测试并告诉队友是怎么弄的,虽然这次实验在进行过程中我做的工作相对于第二次实验做得多一点,但是由于我的原因,我的组队队员挺辛苦的在实验实现的部分被我能做的工作都不多,所以根据这一情况我们组的结对实现系统中我的队员做的多,我做的少所以应该没有1+1大于2的感觉,我个人觉得我的结对方比较辛苦。