做一个软件项目应该如何进行结构性思考

       对于一个新项目,对于刚接手这个项目的负责人,特别是新手来说,有一个结构性的思考框架,将会对项目的成功产生直接的影响。下面我就以我刚做完的一个项目来讲解下该如何进行结构性思考。       

        在这个项目中我主要负责模型引擎计算子系统的设计和研发,这个项目本身可以做小也可以做大,为何这样说,如果是为贷款企业做则小,如果是为银行机构做则大。现在从整个项目的定义、启动、设计和运维几个层面来说说吧。

        系统名称我就不说了,也为了保密,暂且称呼她吧。

一、要做什么样的她

        在之前的很多项目中,没有明确定义或者定义了但不够清晰或完整,因此也会导致项目过程中的不必要的麻烦。我就完整的说明下吧。

        她以政务数据为核心、以外部大数据以及行内数据、征信数据为依托,以移动微信为载体,同时借助放贷平台,实现了从线上营销获客、线上贷款办理、线上自助放款的综合信贷服务新模式。

二、为什么要做这个她

       知道为什么打仗的士兵是战无不胜的,为什么的问题一定要统一并达成一致,这也涉及到产品的功能和质量。

       那为什么呢?

       她将建立集线上渠道、贷前风控、贷中、贷后管理为一体的全流程纯线上快贷服务平台。充分发挥客户行内存量数据和外部大数据的价值,为客户提供安全、高效、便捷的本地线上办贷服务。提高客户经理的营销积极性和科学管理能力,提升品牌价值和自动化水平。增加对年轻客户的吸引力,使贷款客户结构更加科学合理。

三、她有什么优势

       考虑系统的优势或者特征,将会促进对竞品或已有系统优点和缺电的深度思考,从而总结出更具有先进性的功能或特点,对产品的设计提供更具体的设计依据。

        她相对于行内传统贷款具有如下优势:1. 更便捷,客户通过微信公众号申请贷款。2. 更客观,从申请到放款的全流程无人工干预。3. 更合理,测算模型依托政务数据、征信数据、汇法网数据、行内存量数据等,采用准入判断、评分计算、额度测算等。4. 更快速,纯线上贷款从申请到资金到账可在 3 分钟内完成。

四、她的构成有哪些

       对项目的定义和目标有了一个完整定义并达成共识之后,我们开始着手进行系统的整体设计和功能设计,特别是需要定义好各个系统或模块的接口、协议等。

        整套系统设计与开发充分考虑先进性、稳定性和可扩充性等原则;系统操作简单,维护方便,使用寿命长。

        在此应该有一个系统逻辑架构图,但我在这里就不展示了,也许是因为懒得上传,哈哈!

        架构中所涉及到的子系统中,将会对微信服务子系统、应用子系统、模型管理子系统这三个核心子系统分别说明:

1、微信服务子系统

        微信服务子系统是客户申请的使用入口,客户通过访问官方微信公众号并点击对应的公众号菜单,来访问并使用该子系统。

        在现有公众号或新申请的公众号中添加线上快贷相关的菜单,目前可规划为两个子菜单,分别是“我要贷款”用来进行贷款操作,和“进度查询”用来查看贷款申请进度。

        点击“我要贷款”,首先需要对客户的真实性进行校验,校验信息包括当前贷款人的手机号、身份证、活体检测及人证核验。验证通过后,客户签署数字证书也就是电子合同,到此客户完成贷款申请的活动,只需要等待结果,结果最慢在3分钟内可查询到。

2、X应用子系统

        X应用子系统为平台提供基本信息管理、信息查询以及统计分析的功能,并为微信服务子系统提供流程控制接口。

        该系统以基础数据的管理和数据信息的查询为主,具体包含系统管理、客户管理、准入评级明细、额度利率明细、贷后预警明细、贷款流程控制管理等。

3、模型管理子系统

        模型管理子系统包括模型管理、模型审核、模型引擎服务、指标接口服务等,能实现系统模型的灵活配置。

        模型管理,分为准入模型、评级模型、额度测算、利率定价、贷后预警五类。通过规则编辑器,可对各类模型进行灵活的配置。

        模型审核,因为模型配置的复杂性,提供模型审核功能对已经编辑好的模型进行审核操作,只有审核通过的模型才能生效。每个机构的每种模型只有一个处于生效状态。

        模型引擎,属于系统的核心功能,将自动解析系统配置好的模型规则,并通过调用指标接口对客户的各指标进行数据化处理,通过并发计算和并行计算后输出测算结果并保存。模型引擎的设计和实现中,尽可能的仅提供规则解析和数据处理,对业务处理部分尽最大可能的拆分到其他子系统和服务中。模型引擎作为独立的子系统来运行,可提供多节点部署,每个引擎节点可同时受理多笔测算请求,并发受理上限受限于服务器的处理能力。

        指标接口,由于测算过程中各指标数据较为分散,并且属于不同的系统,甚至分布在不同的机构和系统中,因此将指标的数据提取独立运行。

五、为保证安全都需要做哪些

        是啊,对于钱的安全,是每个人、每个机构都非常非常关注和强调的,安全措施必不可少,需要进行层次把关,包括技术层面和管理层面。

        在写这部分是也参考了一些信息安全的规范,主要总结为如下几个层面:

1、实体安全

> 采用点对点链路来访问政务数据,并且对政务数据端口采取系统和人工双重监控;

> 统一的互联网出口,通过统一的互联网前置机来接入后端服务系统,并且客户仅能访问互联网区域提供的微信公众号;

> 所使用的服务器均采用多机互备和软负载均衡策略;

> 所有服务器均使用centos7.6操作系统,相对windows系统将会提供更稳定的运行、安全性和漏洞的快速修补、相对较小的资源占用、模块化程度高、很好的网络支持和文件系统支持等。

2、软件安全

> 对软件系统的代码进行代码安全审计,源代码审计工作通过分析当前应用系统的源代码和业务流程,从应用系统结构方面检查其各模块和功能之间的关联、权限验证等内容;从安全性方面检查其脆弱性和缺陷。

> 配置文件的数据库密码加密保存,在配置文件中存储明文密码会使所有能够访问该文件的人都能访问那些用密码保护的资源。不可能阻止应用程序被那些能够访问配置文件的攻击者入侵,但是这种想法会导致攻击者发动攻击变得更加容易。健全的password management(密码管理)方针从来不会允许以明文形式存储密码。

> 接口数据采用AES对称加密后进行网络传输,数据加密传输,使用对称加密方式加密处理,秘钥双方共同持有,只有秘钥持有方软件才能争取解析数据。接口端先对数据加密 再 base64 编码后返回,调用端先 base64 解码再解密得到明文数据。

> 统一的错误响应码设计,系统响应过程中如果发生错误,接口数据将会返回约定好的错误码和简单的错误描述,以便于运维工程师根据错误码快速定位问题。错误码将会采用四位数字的方式进行定义,例如1002(数据不能为空)、1003(数据解析失败)等。

3、数据安全

> 采用更加安全高效的DB2数据库来持久化数据并提供数据存储和管理。能在所有主流平台上运行;最适于海量数据。DB2在企业级的应用最为广泛,获得最高认证级别的ISO标准认证。

> 数据库采用主从结构,数据实时同步,可有效提供灾备、读写分离和数据备份策略。

> 银行数据与政务数据的处理过程分离,有效降低银行数据与政务数据的交互,最大程度的防止客户数据的泄漏。分离策略将会采用分别处理业客户原始数据,仅将过程数据进行交互融合,来计算最终数据。

4、安全管理

> 软件采用模块化设计,根据部署位置、数据来源的不同提供灵活的扩展。模块分计算引擎和业务部分,根据模块的不同作用提供对应等级的硬件资源和运维策略。

> 数据库定时备份,采用脚本定时自动备份与人工手动备份,提供多元化的备份方式,以确保数据库既数据的安全。

> 数据库是公司信息数据的核心部位,非经信息中心负责人同意,不得擅自进入数据库访问或者查询数据,否则按严重违纪处理。对备份后的数据文件采用保密COPY和保密存放,杜绝非法COPY和数据泄露。指定责任工程师,签订安全保密相关协议。

> 定期监测检查各服务器运行情况,如业务软件系统数据库出现异常情况,首先做好系统日志,并及时向信息室负责人及主管领导汇报,提出应急解决方案。如其他业务服务器出现异常,及时与合作方联系,协助处理。

> 负责定期检查各系统模块的运行状态,定期查看系统运行日志,并认真做好日志记录,如遇到异常及时向信息中心主管领导汇报。

> 负责检查排查管理员的密码的安全性,对弱密码给出分析并责令通知进行密码重置,达到较高的密码安全等级。

      关于安全的考虑是必须的,也是必不可少的。安全的考虑也会反映到系统的设计和代码的编写中,各个业务因素对软件设计都会产生影响,因此在做软件项目时,前期应该尽可能多的收集到业务要素。

你可能感兴趣的:(做一个软件项目应该如何进行结构性思考)