软工第三次作业

1.项目地址:https://github.com/Jupi4ter/WordCount.git

2.合作方式:一个人负责代码一个人负责其他。

我们用的语言是C#,平台式VS2017

照片:

 

3.PSP表格

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 120

 95

· Estimate

· 估计这个任务需要多少时间

 20

 17

Development

开发

 60

 52

· Analysis

· 需求分析 (包括学习新技术)

 30

 36

· Design Spec

· 生成设计文档

 20

 18

· Design Review

· 设计复审 (和同事审核设计文档)

 15

 15

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 15

 15

· Design

· 具体设计

 60

 78

· Coding

· 具体编码

 70

 66

· Code Review

· 代码复审

 30

 26

· Test

· 测试(自我测试,修改代码,提交修改)

 30

 22

Reporting

报告

 30

 35

· Test Report

· 测试报告

 20

 15

· Size Measurement

· 计算工作量

 15

 17

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 30

 23

 

合计

 565

 530


我们主要是一个人负责代码,一个人负责其他的项目。

4.解题思路

代码方面,由于每一步都有明确的指示,所以完成起来还是比较简单,但由于中英文输入法,导致我们浪费了很多时间去解决符号等输入问题

还有就是代码第三部增加新功能遇到了点麻烦,以前类似的代码写的比较少。

其他比如上传到仓库还是比较简单,毕竟有第二次作业做基础。

还有过的问题是文件的输入

  • FINException:检测用户输入文件不合法时,抛出异常,main中捕获直接退出。

5.计算模块接口的设计与实现过程。

在设计之初,考虑到为降低代码单元的耦合度,我们将需求简单拆分为3个类,分别是输入,输出,和单词处理。使各个代码单元之间的耦合度尽量最低,不需要与其他代码纠缠不清。将类封装,数据以接口的形式传入。

在最初分析需求时,我们将代码分成4个类,分别是负责输入数据的input,输出需要数据的output,对需求处理的wordHandler,和统合的main。

input类含函数:FIleInput(); 用于提取文件中的单词信息。

output类含函数:_output(); 用于输出要求的计算结果数据。

wordHandler类含函数:get_chain_word(); 用于寻找最多单词数的最长链。

get_chain_char(); 用于寻找最多字母数的最长链。
这三个类每个类都是很独立的代码单元,三者间并没有什么关系,使得程序的耦合度很低。

UML图:

关键代码:

 完整代码请点击:https://paste.ubuntu.com/p/4CwYCV4wvJ/

6:代码复审过程

主要是检查代码规范和正确性,我们采取的方式是,张鑫负责代码的规范检查,我负责正确率的检验,最后互相验证。

参考文献,C#代码规划

https://jingyan.baidu.com/article/ed15cb1b0e3c0a1be36981e6.html

7.性能改进

 

 

8.单元测试展示

主要是为了验证代码正确率和覆盖率,很重要的一步。

 

 

结对作业的优缺点

    • 能随时复审,能够及时发现逻辑错误
    • 发现问题,互相交流拓宽思路
    • 双方适时的交换角色能改变角度审视自己的逻辑和代码细节
  • 缺点
    • 在发现bug交流时容易打断个人的思路

 

posted @ 2019-04-05 14:49  傅*  阅读(159)  评论(1编辑  收藏  举报