第二次作业 个人项目(1)
1.代码仓库项目地址
https://gitee.com/snail-yin/software_engineering
2.PSP表格(Personal Software Process-个人开发流程,或称个体软件过程)
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 120 |
· Estimate | · 估计这个任务需要多少时间 | 1800 | 2700 |
Development | 开发 | 2000 | 3000 |
· Analysis | · 需求分析 (包括学习新技术) | 1000 | 1200 |
· Design Spec | · 生成设计文档 | 180 | 200 |
· Design Review | · 设计复审 | 100 | 120 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 60 |
· Design | · 具体设计 | 300 | 300 |
· Coding | · 具体编码 | 600 | 600 |
· Code Review | · 代码复审 | 100 | 120 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 120 |
Reporting | 报告 | 300 | 0 |
· Test Repor | · 测试报告 | 120 | 0 |
· Size Measurement | · 计算工作量 | 100 | 0 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 80 | 60 |
合计 | 6840 | 8540 |
3.软件工程学习日志
①IDE:Python 3.7 ; JetBrains PyCharm
②参考书籍:《编程小白的第1本Python入门书》、《Python编程:从入门到实践》
③网络资源:微信公众号、Python免费直播课程
④学习时段、学习内容
1)2018.12.26-2018.12.28 变量与字符串、函数
2)2018.12.30-2018.12.31 联系朋友,寻求帮助
3)2018.1.1-2018.1.4 循环与判断、数据结构
4)2018.1.5-2018.1.7 接触项目“外星人入侵”
5)2018.1.8-2018.1.10 整合资料,完成“WordCount”
⑤收获体会、自我效率评价
1)编程难,难于上青天!向每一个深夜里敲代码的程序猿致敬,做一个码农难,做一个优秀的码农更难!
作为一个非计算机专业的门外汉来说,在朋友的竭力帮助下,能做到这个结果,我已经很满足了,Python的路还很远,未来可期!
2)自我认为计划安排比较妥当,整体工作思路还是很清晰,哪里该自己看书找资料,哪里该寻求朋友帮助,把握很有分寸。
对着电子书籍和免费视频课,做了厚厚的笔记, 并且层次分明,这点对自己还是比较满意,整体执行力80%。
4.解题思路描述
由于程序逻辑不复杂,在计算量上并不大,所以如果在读完数据之后,分3个线程来并行处理单词、有效行数以及字符数,极有可能创建线程所耗费的资源远大于并行处理所提高的略微性能(多线程理论上并不能提高单核cpu的利用率,但是对于多核多线程的cpu而言,多线程确实是可以提高多核cpu的利用率),所以我决定放弃多线程,只用单线程来处理。
5.设计实现过程
①我把功能分为了4份,文件读写、统计单词、统计行数以及统计字符数。
②统计单词时,我使用了正则表达式来分割单词以及判断是否为单词。
③在统计单词个数的时候,我选择了使用hash表来统计,hash表对于list在查找的时候有着无与伦比的优势,此优势随着数据量的扩增而不断增大。
6.测试结果展示
input.txt
result.txt
7.心路历程与收获
这次的作业花费了我太多的时间和精力,我的能力比我想象中的还要不足,作业中列出了一项项具体的要求,所以我在实践中就按照这一项项要求去思考、搜索和学习,在 搜索过程中我找到了很多比我原先想的要方便得多的解决方法,见识了很多新知识和新技术,可以说,我在这次个人项目里做的最多的就是学习,比如软工的流程和规范、字符串处理、Python的应用,这些新知识和新技术算是我这次最大的收获了吧。