一.软件开发的主要过程 核酸软件(小程序端、web端)开发的实际流程实际流程遵循瀑布模型
1.需求采集
随着疫情进入常态化防控,为了能及时发现确诊病例,也为了能及时阻断疫情的扩散及其穿播,也需要能方便市民及时知道自己的健康状况,能简化做核酸的流程的软件
2.需求设计
软件分为客户端和后台处理端,客户端能方便客户扫码进行核酸检测并能很方便的查询结果,后台管理端能收集,分析,及使用核酸检测的相关信息
3.概要设计
也称总体设计,主要任务是基于数据流图和数据字典,确定系统的整体软件结构,划分软件的各个子模块,确定他们之间的关系。概要设计是要完成体系结构设计、数据设计和界面设计。
体系结构设计:
确定各子系统模块间的数据传递与调用关系;
界面设计:
包括与系统交互的人机界面设计,以及模块间、系统与外部系统的接口关系;
数据设计:
包括数据库、数据文件和全局数据结构的定义。
4.详细设计
详细设计的任务就是在概要设计的基础上,具体实现各部分的细节,直至系统的所有的内容都有足够详细的过程描述,使得编码的任务就是将详细设计的内容翻译成代码就可以了。详细设计就是完成过程设计。
5.程序编码
要求如图
部分编码如下(来自于网络)
import sys
import qrcode
import base64
import datetime
import os
import sys
import requests,json
def InformationReporting(name, id, phone):
id = str(id)
char = id[16]
gender_num = int(char)
if gender_num%2 == 1:
gender = '男'
else:
gender = '女'
url = "http://36.133.44.216:9100/hsxxdj-service/p/core/yidd/addPerson?name=" + name + "&idcard=" + id + "&linkPhone=" + phone + "&currAddr=虞城县/城关镇/虞城县北街居委会/某某村&sex=" + gender + "&cardType=身份证"
req = requests.get(url)
result = req.json();
print(result)
result = str(result)
if result[12:16] == "True":
return True
else:
return False
def GenerateQRCode(name, id):
qr=qrcode.QRCode(version = 2,error_correction = qrcode.constants.ERROR_CORRECT_L,box_size=10,border=10,)
strInput = '{"idcard":"' + id + '","name":"' + name +'"}'
print('本码:'+strInput)
bs=str(base64.b64encode(strInput.encode('utf-8')),"utf-8")
print('转码:'+bs)
qr.add_data(bs)
qr.make(fit=True)
img = qr.make_image()
img.show()
#path = 'E:/Aurora/Desktop/核酸/1/' + str_1 + '.jpg'
#img.save(path)
def check_id_length(id): #核验身份证号长度是否合理
if len(str(id)) != 18:
print("只支持18位身份证号查询")
return False
else:
return True
def check_id_data(id): #核验身份证号是否合理
var=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
var_id=['1','0','x','9','8','7','6','5','4','3','2']
id = str(id)
sum = 0
if int(id[16])%2==0:
gender="女"
same=int(int(id[16])/2)
else:
gender="男"
same=int((int(id[16])+1)/2)
for i in range(0,17):
sum += int(id[i])*var[i]
sum %= 11
CheckBit = str(id[17]);
if "X"==CheckBit:
CheckBit = "x"
if (var_id[sum])==CheckBit:
print("身份证号规则核验通过,校验码是:",var_id[sum])
print("出生于:",id[6:10],"年",id[10:12],"月",id[12:14],"日","性别:",gender,"\n当地同性别同生日排名:",same)
return sum
else:
print("出生于:",id[6:10],"年",id[10:12],"月",id[12:14],"日","性别:",gender,"\n当地同性别同生日排名:",same)
print("但身份证号规则核验失败,校验码应为",var_id[sum],",当前校验码是:",id[17])
return -1
def main(name, id, phone):
if check_id_length(id) == False:
return False
if check_id_data(id) == -1:
return False
if InformationReporting(name, id, phone):
GenerateQRCode(name, id)
name = str(sys.argv[1])
id = str(sys.argv[2])
phone = str(sys.argv[3])
main(name, id, phone)
6.集成测试
准备测试整合计划
确定集成测试方法的类型
相应地设计测试用例,测试场景和测试脚本
一起部署所选模块并运行集成测试
跟踪缺陷并记录测试结果,重复上述步骤,直到测试完整个系统
7.验收
验收测试范围有1.界面测试:检验页面的功能按钮以及浏览界面显示是否正确
2、功能测试:需求文档里描述的所有功能是否可正确实现
3、性能测试:系统性能指标能否满足上线需求
4、安全性测试:系统方面是否符合安全性规范以及是否有安全性漏洞
流程是1、准入条件检测
1)文档:进入验收测试的文档准备齐全。
(2)缺陷:软件开发方需在不同浏览器兼容环境里对需求文档上的功能全部进行测试,提交验收测试时,承建方发现的所有缺陷都已解决。
(3)测试环境:测试环境需与线上真实环境保持一致,确保测试过程中测试环境一致、稳定。
(4)沟通和联系:测试过程中所有需要的联系人沟通渠道建立完毕,确保可以及时准确的反馈。
2、验收测试
1)文档验收:文档准备必须齐全且符合标准,可以进入文档验收流程
2)程序功能验收
3)验收测试完成
3、验收完成后提交程序:
验收完成锁定的程序最终版本,要求保存至版本库中。
8.维护
系统维护是项目管理过程的最后一个阶段,是旧项目的结束,亦是新项目的开始。一旦系统进入维护阶段,说明新的需求又开始诞生了。
因此,在系统正式上线之前就应制定好系统维护的工作规则, 包括对可能出现的问题进行分类、制定问题处理流程等,以避免种种异常情况造成的工作混乱。
维护的核心目的还是解决客户的问题,满足客户的需求
至此全部步骤完毕
二.软件开发进度
表图
三.软件开发团队组成以及开发成本
以上各步都由不同的开发角色完成,如下图
假设开发周期一个月,地点在广州
各开发人员的薪资分别为产品经理(兼项目经理)20k,后端开发程序员18k,安卓端程序员15k、ios端程序员18k,测试8k,UI设计师15k
一个月的总工资为 20+18+15+18+8+15 全员三险一金等 总计100k