第三次作业 结对编程
一、编码要求
- Fork github 项目https://github.com/YuRenDaZ/WordCount到自己的仓库,在Github仓库中新建一个以一位同学的学号为名的文件夹,用于建立C#的项目和第二次作业类似。(结对的两人中任意一人的学号都可以)。
- 在开始实现程序之前,在PSP表格[附录1]记录下你估计在程序开发各个步骤上耗费的时间,在你实现程序之后,在PSP表格记录下你在程序的各个模块上实际花费的时间。
- 使用C#语言实现,C#请使用Visual Studio Community 2017进行开发。
- 制定编码规范,可以参考C#语言的规范:简版,讨论版。(邹欣老师在讲义“现代软件工程讲义 3 代码规范与代码复审”中所讨论的有关代码规范与代码复审的内容。内容短小精炼,适合快速入门。)
- 代码自审并修正,每个人都独立完成了自己的功能任务,对照编码规范,审查修改自己的程序代码并使其符合规范要求。
- 代码互审,按照共同制定的编码规范,审查合作伙伴的代码并记录发现的问题。
- 合并代码,两人协商,将两部分代码合并,形成初始版本。注意应设计合理的软件结构及模块划分。
- 提交的代码要求经过Code Quality Analysis工具的分析并消除所有的警告。
- 完成项目的首个版本之后,请使用性能分析工具Studio Profiling Tools来找出代码中的性能瓶颈并进行改进。
- 使用Github[附录2]来管理源代码和测试用例,代码有进展即签入Github(至少三次)。签入记录不合理的项目会被助教抽查询问项目细节。
- 使用单元测试[附录3]对项目进行测试,并使用插件查看测试分支覆盖率等指标;并写出至少10个测试用例确保你的程序能够正确处理各种情况。
- 在完成结对项目后,请按照预第二次作业的方式正确地发起一个Pull Request,并设置标题为本次统一使用的学号。
博客撰写要求
- 在文章开头给出结对使用的Github项目地址和结对伙伴的作业地址。(两个人使用同一个)注意:GitHub的地址必须是用于clone的地址即如下图片中的地方获取。(如果不是这个地址,助教就无法批量编译运行你们的程序,出现问题的都会被助教抽中询问详情)
- 描述结对的过程,提供非摆拍的两人在讨论的结对照片(一起工作编码时的照片)。
- 给出结对的PSP表格。
- 解题思路描述。即刚开始拿到题目后,如何思考,如何找资料的过程。
- 设计实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?单元测试是怎么设计的?
- 给出你们制定的代码规范或链接,记录你们代码互审的情况,审查的模块名、发现的问题等。
- 记录在改进程序性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2017的性能分析工具自动生成),并展示你程序中消耗最大的函数。
- 代码说明。展示出项目关键代码,并解释思路与注释说明。
- 结合在构建之法中学习到的相关内容与结对项目的实践经历,撰写解决项目的心路历程与收获,以及结对感受,是否1+1>2。
注:两人都要提交博客,结对共同部分,可在其中一个人的博客给出(另一个人给出链接),不同部分分别写在自己的博客中。
三、项目需求说明
实现一个命令行程序,不妨称之为wordCount。
第一步、实现基本功能
输入文件名以命令行参数传入。例如我们在命令行窗口(cmd)中输入: