软件工程第一次个人编程作业
1.1 Github链接
Github链接:https://github.com/universe-tong/03170262
2.1PSP
使用PSP的目的是记录如何实现需求所需要消耗的时间,以及完成整个项目所需要的时间。
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planing | 计划 | 30min | 25min |
Estimate | 估计这个任务需要多少时间 | 20min | 20min |
Development | 开发 | 30min | 40min |
Analysis | 需求分析(包括学习新技能) | 100min | 90min |
Design Spec | 生成设计文档 | 50min | 50min |
Design Review | 设计复审 | 20min | 30min |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 20min | 40min |
Design | 具体设计 | 20min | 20min |
Coding | 具体编码 | 100min | 120min |
Code Review | 代码复审 | 10min | 20min |
Test | 测试(自我测试、修改代码) | 10min | 15min |
Reporting | 报告 | 20min | 40min |
Test Repor | 测试报告 | 20min | 30min |
Size Measurement | 计算工作量 | 40min | 20min |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 30min | 35min |
Total | 合计 | 620min | 595min |
3.1计算模块接口的设计与实现的过程
3.2以下是所用到的函数和类
导入两个初始化列表,一个是全国各个省份的名称,再一个是各个省份包括的市
def Provincelist()
def Citylist()
然后是程序的几个重要函数
讲输入的字符串中的名字和电话号码提取出来,之后再返回一个剩下的地址字符串
def GetNameAndNumber(str,list,index)
在字符串提取出省份
def findprovicne(str,list,index)
在字符串中提取出城市名字
def findcity(str,list,index)
在字符串中提取出县/区/乡
def findtown(str,list,index)
3.3独到之处
导入了省份和城市的库,匹配的结果更为准确。
3.2计算模块接口部分的性能改进
使用Pycharm里的性能测试工具,测试性能及函数的使用情况,以及覆盖率
函数调用图
时间开销图:
代码的覆盖率:
3.3计算模块部分单元测试展示
输入:
1!鲁胞,上海长宁区周18951233466家桥街道长宁路999号春天花园.
1!臧街经,北京市东城区北新桥街道东直门内大街民15679601503安小区8号楼.
1!双韵,安徽黄山市歙县雄村镇006县道与G56杭瑞高速歙县雄村乡防保站13575634949.
1!苗朽蕾,13884441418湖北省孝感市云梦县方庙村村委会.
1!晏孔,重庆巫山13097181946县大昌镇洋溪村便民超市.
1!荆麻,13282875332天津市北淮淀镇乐善庄村乐善庄小学.
1!诸葛宁盛,河南省15613629652焦作市山阳区定和街道塔南路287号新兴日化.
1!冯昔唉,安徽省合肥市庐江县郭河镇G3京台高18835354291速合肥市庐江县广寒桥街道.
1!百里屏闷,广西壮族自治区桂林市灵川县潭13315249688下镇004乡道灵川县潭下镇大义村民委员会.
1!徐扼负,天津市河北区月牙河街道大江里58号楼13289199578.
1!娄缠壮,山东省烟台莱山14732355817区莱山街道南陈家疃小区10栋.
1!曹持,江苏泰州13066409994市海陵区迎宾路88号春兰商务酒店.
输出:
{
"level": 1,
"姓名": "鲁胞",
"手机": "18951233466",
"地址": [
"上海",
"上海市",
"长宁区",
"周家桥街道",
"长宁路999号春天花园"
]
},
{
"level": 1,
"姓名": "臧街经",
"手机": "15679601503",
"地址": [
"北京",
"北京市",
"东城区",
"北新桥街道",
"东直门内大街民安小区8号楼"
]
},
{
"level": 1,
"姓名": "双韵",
"手机": "13575634949",
"地址": [
"安徽省",
"黄山市",
"歙县",
"雄村镇",
"006县道与G56杭瑞高速歙县雄村乡防保站"
]
},
{
"level": 1,
"姓名": "苗朽蕾",
"手机": "13884441418",
"地址": [
"湖北省",
"孝感市",
"云梦县",
"",
"方庙村村委会"
]
},
{
"level": 1,
"姓名": "晏孔",
"手机": "13097181946",
"地址": [
"重庆",
"重庆市",
"巫山县",
"大昌镇",
"洋溪村便民超市"
]
},
{
"level": 1,
"姓名": "荆麻",
"手机": "13282875332",
"地址": [
"天津",
"天津市",
"",
"北淮淀镇",
"乐善庄村乐善庄小学"
]
},
{
"level": 1,
"姓名": "诸葛宁盛",
"手机": "15613629652",
"地址": [
"河南省",
"焦作市",
"山阳区",
"定和街道",
"塔南路287号新兴日化"
]
},
{
"level": 1,
"姓名": "冯昔唉",
"手机": "18835354291",
"地址": [
"安徽省",
"合肥市",
"庐江县",
"郭河镇",
"G3京台高速合肥市庐江县广寒桥街道"
]
},
{
"level": 1,
"姓名": "百里屏闷",
"手机": "13315249688",
"地址": [
"广西壮族自治区",
"桂林市",
"灵川县",
"潭下镇",
"004乡道灵川县潭下镇大义村民委员会"
]
},
{
"level": 1,
"姓名": "徐扼负",
"手机": "13289199578",
"地址": [
"天津",
"天津市",
"河北区",
"月牙河街道",
"大江里58号楼"
]
},
{
"level": 1,
"姓名": "娄缠壮",
"手机": "14732355817",
"地址": [
"山东省",
"烟台市",
"莱山区",
"莱山街道",
"南陈家疃小区10栋"
]
},
{
"level": 1,
"姓名": "曹持",
"手机": "13066409994",
"地址": [
"江苏省",
"泰州市",
"海陵区",
"",
"迎宾路88号春兰商务酒店"
]
},
3.4计算模块部分异常处理说明
当输入第三档难度时,例如3!孙旗乖,13366755810白城市洮北区长庆南街65号无法将其前面补齐,解决的方法是导入城市库去匹配省份。