寒假作业(2/2)
软工实践寒假作业(2/2)
这个作业属于哪个课程 | 2021春软件工程实践|W班(福州大学) |
---|---|
这个作业要求在哪里 | 软工实践寒假作业(2/2) |
这个作业的目标 | 阅读《构建之法》并提问、完成词频统计个人作业、撰写博客 |
其他参考文献 | 《构建之法》邹欣、廖雪峰Git教程 |
《构建之法》的读与问
问题1
章节5.2提到:功能团队模式——软件开发公司的团队最后总是会演变成功能团队。且不同能力的人之间平等协作。
可对于一个团队而言,合作没有绝对的平等,每个开发者的开发思想、能力和编码方式都有所不同。那么要完成一项任务,工作分配就很重要。团队中怎样才能结合每一个人的优点来分配任务?
问题2
章节6.2提到:长期任务,这种任务比较艰难且对项目又很重要,完成的时间超过Sprint的计划时间。邹老师对此只提到往往开发人员对此并不重视,并没提到如何较好的解决这类问题。日常学习的经验告诉我最难的那部分应该尽早去做,是不是对这“长期任务”也应该尽早安排人来承担这部分责任?
问题3
章节8.3提到:软件就是为了解决用户的需求,那么开发者在开发阶段是否应该满足用户大量的需求改动?
答:企业在开发软件之前必须充分了解用户的需求,结合各种调查方法。一个新的软件开发是由开发者主导并且全程执行。但毕竟是新产品所以前期用户的需求可能会有一些不完善,此时就需要开发者在设计产品时和用户保持一个良好胡沟通
问题4
章节14提到:我同意第一印象很重要,但是当用户已经是第N次使用你的产品时,你的UI能否为这些用户提供方便呢?
章节16提到:长期以来,人们已经习惯了QWERTY键盘,所谓先入为主。
因为先入为主这一意识的存在,当UI设计出现大的修改时,很容易让人产生抵触情绪,拒绝接受更改。我们该如何权衡两者之间的关系?是继续使用原来的界面,再进行一步步修改?还是放手一搏,说不定会有出乎意料的效果?
问题5
章节14提到:软件工程质量可以用一套比较成熟的理论CMMI(能力成熟度模型集成),帮助企业进行对软件工程过程的管理和改进,增强开发制造能力,从而能按时地,不超预算地制造质量的软件。那CMMI适用于什么样的公司或者团队?CMMI怎么应用到具体工作中?
软件工程发展史之奇闻轶事
Unix系统的发明来自一次贪玩
肯·汤普森是贝尔实验室的一名研究员,当时贝尔实验室接了一个开发MULTICS系统的项目,肯·汤普森为MULTICS这个操作系统写了一个游戏,游戏名叫“Space Travel”。但是,他发现这个游戏在MULTICS操作系统上运行速度很慢而且耗费昂贵 —— 每次运行花费75美元。而后来,由于MULTICS操作系统过于庞大和复杂,贝尔实验室决定退出这个项目。退出这个项目以后,肯·汤普森为了可以继续玩这个游戏,就计划自己写一个操作系统。然后他找来丹尼斯·里奇为这个游戏开发一个极其简单的操作系统,这就是Unix系统原型。
词频统计软件编程
Github项目地址
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 45 |
• Estimate | • 明确需求和其他因素,估计这个任务需要多少时间 | 60 | 45 |
•Development | 开发 | 1320 | 1215 |
• Analysis | • 需求分析 (包括学习新技术) | 150 | 120 |
• Design Spec | • 生成设计文档 | 90 | 45 |
• Design Review | • 设计复审 | 90 | 90 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 45 | 45 |
• Design | • 具体设计 | 180 | 90 |
• Coding | • 具体编码 | 315 | 390 |
• Code Review | • 代码复审 | 135 | 105 |
• Test | • 测试(自我测试,修改代码,提交修改) | 315 | 330 |
Reporting | 报告 | 120 | 140 |
• Test Repor | • 测试报告 | 40 | 60 |
• Size Measurement | • 计算工作量 | 20 | 20 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 60 | 60 |
合计 | 1500 | 1400 |
解题思路描述
-
统计文件的字符数
使用FileReader按字符读取文件后过滤非ASCII码字符; -
统计文件的单词总数
读取文件后,先统一将字母变为大写或小写,再通过正则表达式判断单词合法性,最后将单词和它的出现次数储存在map容器中; -
统计文件的有效行数
将每一行的字符串分离出来,再通过正则表达式判断每个字符串中是否含非空白字符; -
统计文件中各单词的出现次数
通过sort函数和Comparator比较器对map容器中的单词进行字典序排序后遍历统计即可;
代码规范制定链接
设计与实现过程
(〃'▽'〃)
性能改进
φ(>ω<*)
单元测试
(/ω\)
异常处理说明
(。・ω・。)
心路历程与收获
- 复习了正则式的使用
- 复习了bufferreader的使用方法
- 体会到了PSP表格在软件工程中的重要性