###一:实验名称:软件工程结对项目--英文文本统计
项目 | 内容 |
这个作业属于哪个课程 | http://www.cnblogs.com/nwnu-daizh/ |
这个作业的要求在哪里 | https://www.cnblogs.com/nwnu-daizh/p/10569690.html |
课程学习目标 | 熟悉软件开发整体流程,提升自身能力 |
本次作业在哪个具体方面帮助我们实现目标 | 第一次体验一个完整的工程 |
###二:实验目的与要求##
(1)体验软件项目开发中的两人合作,练习结对编程(Pair programming)。
(2)掌握Github上增量发布软件的操作方法。
###三:实验步骤##
任务1: 两两自由结对,对结对方的《实验二 软件工程个人项目》的项目成果进行评价,具体要求如下:
(1)对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究。
(2)克隆结对方项目源码到本地机器,阅读并测试运行代码,结合运行结果评论程序代码,评论要点包括:软件结构、代码规范、功能实现、人机交互等。
(3)尝试利用github中的Fork、Clone、Push、Pull request、Merge pull request对结对方仓库中的源码进行合作修改。
结对同伴的博客:杜娣-实验二点评内容:
读完你的博文,发现你写的博文结构清晰,内容标题醒目,使人一目了然。从博文内容上来看,需求分析很全面,写出了该系统的基本功能,也使后续的工作过程清晰,功能明确。 但也有一些不足之处,比如: 引用 功能实现 1、主要实现的功能:从磁盘中读取英文文本,对文本进行处理,统计单词的个数,最后按个数排序 引用 这两部分内容写的不是很具体,在功能实现方面,只表述了统计单词个数以及排序,但没有写出指定单词和高频单词的统计,以及最后将文本的所有单词输出到文件等功能,功能设计应该按照需求分析来展开写。在设计实现方面,应该写出创建了几个类,这些类分别负责什么功能和类之间的关系等,详细内容可以参考老师的作业要求。对比PSP中的时间比例发现,有些时间规划不是很合理,所以希望你能下次改进,加油! |
点评心得: 读完同伴的博文,发现了有很多亮点值得自己去学习,比如博文结构顺序清晰,内容标题醒目,使人一目了然。从博文内容上来看,项目需求分析很全面,写出了该系统的基本功能,也使后续的工作过程清晰,功能明确。 |
###四:实验内容
1. 需求分析
(1)实验2要求的功能;
(2)单词频数可视化柱状图要求是以下样式:
(3)统计该文本行数及字符数;
(4)各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
(5)可处理任意用户导入的任意英文文本;
(6)人机交互界面要求GUI界面(WEB页面、APP页面都可);
(7)附加分功能:统计文本中除冠词、代词、介词之外的高频词;
(8)附加分功能:统计前10个两个单词组成的词组频率。
2. 功能设计
该程序主要实现的功能是进行英文文本的统计,基于实验二进行,实现统计该文本行数及字符数;各种统计功能均提供计时功能,显示程序统计所消耗时间,可处理任意用户导入的任意英文文本。
3. 设计实现(展示核心功能代码)
(1)统计单词数量并输出
![](https://img2018.cnblogs.com/blog/1614552/201904/1614552-20190403000950367-1361581754.jpg)
(2)绘制柱状图![](https://img2018.cnblogs.com/blog/1614552/201904/1614552-20190403001317346-680930289.jpg)
(3)显示用户需要查询的单词词频数![](https://img2018.cnblogs.com/blog/1614552/201904/1614552-20190403001344251-1740215207.jpg)
4. 测试运行(各个功能实现界面截图)
![](https://img2018.cnblogs.com/blog/1614552/201904/1614552-20190403001916828-1367103490.jpg)
5. 结对过程(两人在讨论、细化和编程时的结对照片)
6. 小结感受:两人合作真的能够带来1+1>2的效果吗?
通过实验二的个人项目和此次的结对项目,我们不难发现,耗时最多的就是编程过程和修改bug。如果是个人项目,难免会因为个人的疏忽,输入的错误,以及设计思路的偏差,往往会让我们的程序无法顺利进行下去,而结对编程的好处就在于,在编写代码时,一旦出现输入错误,就会有人及时的提醒。还有在设计代码时,有个同伴可以一起讨论,融合两个人不同的见解和观点,我们往往可以得出更加准确且更加高效的设计思路,这大大提高了我们编程的效率,而且我们二人一起讨论出来的编程思路,也使得我们的代码功能更全面,效率更高,所以我认为1+1肯定>2。
7. 展示PSP
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 40 | 80 |
· Esitimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 15 | 20 |
· Development | 开发 | 400 | 800 |
· Analysis | 需求分析(包括学习新技术) | 60 | 60 |
· Design Spec | 生成设计文档 | 20 | 30 |
· Design Review | 设计复审(和同事审核设计文档) | 15 | 15 |
· Coing Standard | 代码规范(为目前开发制定合适的规范) | 20 | 20 |
· Design | 具体设计 | 30 | 60 |
· Coding | 具体编码 | 400 | 600 |
· Code Review | 代码复审 | 10 | 10 |
· Test | 测试(自我测试,修改代码,提交修改) | 20 | 25 |
· Reporting | 报告 | 10 | 15 |
· Test Report | 测试报告 | 15 | 25 |
· Size Measurement | 计算工作量 | 5 | 3 |
· Postmortem&Process Improvement Plan | 事后总结,并提出过程改进计划 | 5 | 15 |