软件工程第二次作业—个人项目

软件工程第二次作业个人项目

1. 代码仓库地址:https://gitee.com/liumangxiaozi/software_engineering.git

2. PSP表格

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 5

 10

· Estimate

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

 10

 5

Development

开发

 10

 15

· Analysis

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

 200

 300

· Design Spec

· 生成设计文档

 60

 100

· Design Review

· 设计复审

 20

 20

· Coding Standard

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

 10

 5

· Design

· 具体设计

 20

 20

· Coding

· 具体编码

 500

 500

· Code Review

· 代码复审

 200

 250

· Test

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

 200

 200

Reporting

报告

 40

 40

· Test Repor

· 测试报告

 40

 40

· Size Measurement

· 计算工作量

 10

 10

· Postmortem & Process Improvement Plan

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

 20

 20

 

合计

 1345

 1535

3. 学习日志

学习时段2018.1229.0800-0930

学习内容python对文本文件的读取

收获体会在学习过程中效率很低,主要原因在于自己对于python的整体的编程能力的不足,我在自己的D盘内设置有a.txt文件,但是我在编码的过程中采用的调用格式一直也只是a.txt,到最后一直无法对文件进行操作,最后发现,应该在a.txt后面再加一个.txt,这么一个小的错误花费了一个小时才解决

自我效率评价:

 

学习时段20198.0102.1900-2030

学习内容文本处理-字符串

收获体会找了一本python基础的书,对其中字符串处理模块进行了学习,由于是对着书本学习,边学习边编写,所以感觉整体效率还算不错。

自我效率评价:较高

 

学习时段20198.0104.1400-1730

学习内容编写词频统计程序

收获体会参考了https://www.cnblogs.com/Eudemines/p/9764409.html博文的内容和方法,对自己的编程有了一个整体的规划,在缓冲区的处理部分,暂时采用了该博主提供的方法,但是整个程序还是有bug没消掉。

自我效率评价:较低

 

学习时段20198.0105.1400-1700

学习内容编写词频统计程序

收获体会参考了社区大神的许多建议和方法,针对bug进行处理,解决了bug,并优化了部分的程序结构。

自我效率评价:较低

4. 解题思路描述

将文本保存为一个字符串形式,统计字符串的长度,文本的行数;

将字符串内所有的大写字母转为小写字母;

将字符串中缓冲区进行处理;

将字符串分离为单个的单词

统计单词的词频

输出词频在前十的单词

对特定的功能点检查自己实现的功能点的缺陷,一个一个优化

5. 设计思路过程

                                                                                                                        测试用例

功能

测试文本

输出

纯英文字符

The to the

长度:10,行数:1 ‘the’2‘to’1

数字英文混合

行数检测

the123 1the

长度:14,行数:2‘the123’1‘to’1

大小写检测

The the

长度:7,行数:1‘the’2

空行处理

the

 

the

长度:13,行数:2‘the’2

首尾空格

  The the

长度:10,行数:1 ‘the’2

汉字处理

the

长度:4,行数:1 ‘the’1

特殊字符处理

@#$ the

长度:7,行数:1 ‘the’1

字母数字混合

The123the

长度:9,行数:1 ‘the123the’1

 

6. 性能分析

 

  通过程序对四段英文字符串进行处理,程序运行一共花费了接近0.121

7. 关键代码

def main():

 

    dst = "a.txt.txt"

    bvffer = process_file(dst)

    word_freq = process_buffer(bvffer)

    output_result(word_freq)

 

if __name__ == "__main__":

    import cProfile

    import pstats

    cProfile.run("main()", "result")

    # 直接把分析结果打印到控制台

    p = pstats.Stats("result")  # 创建Stats对象

    p.strip_dirs().sort_stats("call").print_stats()  # 按照调用的次数排序

    p.strip_dirs().sort_stats("cumulative").print_stats()  # 按执行时间次数排序

    p.print_callers(0.5, "process_file")  # 如果想知道有哪些函数调用了process_file,小数,表示前百分之几的函数信息

    p.print_callers(0.5, "process_buffer")  # 如果想知道有哪些函数调用了process_buffer

    p.print_callers(0.5, "output_result")  # 如果想知道有哪些函数调用了output_res

8心路历程和收获

  本次开发过程比较坎坷,中间还穿插着一门矩阵理论的考试课,所以总体的时间还是很紧张,自己编写的软件中存在许多的不足,譬如没能实现老师要求的对以英文和数字混合字符的识别和统计,只是对纯英文文本进行处理,同时对其他字符的处理只是简单的采用了识别和替换的方法,若是输入超出我的编写程序的范围可能会导致软件的奔溃,不管其他,最终还是做出来了一个小小的软件,基本实现了其功能,感悟有三点:一、自己的编程技术太low,需要加强、加强、再加强;二、软件工程中各个部分的工作加起来远比编程多得多;三、学到了许多实用的技能。

posted @ 2019-01-10 12:49  一抹阳光jm  阅读(245)  评论(1编辑  收藏  举报