前言
在与客户充分接触后取得需求调研结果,然后分析调研内容,撰写完成项目的需求规格说明书。这是一个正式的文件,需要供需双方签字确认。说明书中会明确需求方的要求和开发方实现的内容,依据需求规格说明书,开发方就要开展系统设计工作。
进行系统设计工作,粗略的可以分成两个阶段,概要设计(总体设计)阶段和详细设计阶段,概要设计阶段主要是做一些系统整体的设计工作,比如系统包括哪些模块,使用什么样的技术等,详细设计则是在概要设计的基础上,对系统进行细化设计,比如模块包括哪些功能,它们之间怎么调用关联等等。很多时候,两个阶段也没有分的特别清楚,作为由浅入深的设计实现,两个阶段经常是融合在一起,这里我们不作详细区分,统一进行设计阶段进行说明。
1 功能框架设计
通过调研工作,开发方已经对需求方的要求有了一个整体了解,根据达成的共识,也就是需求规格说明书,开发方需要将其转换为软件系统的功能模块。这里使用的是层次化的思想,先规划出系统的大的模块,如果系统比较负责,还可能首先规划子系统,然后再梳理模块下面的功能,并进一步细化为具体功能。可以用思维导图的形式,画出功能框架图。
比如一个外卖管理系统,主要是对外卖的信息进行管理,包括菜品分类管理,菜品标签管理,菜品管理,订单管理,系统管理等模块,然后再继续进行功能的划分。
在这个过程中,除了功能框架,对于比较详细的功能描述,还需要画出用例图。将系统中的角色,以及角色进行的功能操作,操作的流程,完成的任务,以及一些约束的条件等等,都可以通过用例图表述出来。
2 技术框架设计
这部分内容主要是确定项目开发中需要使用哪些技术,以及这些技术如何有机结合,共同完成项目功能。项目所使用的技术,通常是根据项目类型、项目需求以及开发团队的技术背景来确定,一般都会使用主流的技术,一方面是主流技术人才相对较多,团队容易搭建。二是主流技术资料比较丰富,容易获得解决方案。
确定技术框架后,需要画一个技术框架图,这个图可以按照粒度的不同,将技术体现在框架图上。如果项目比较大,可以把主要技术粗略的体现在框架图上,如果项目比较小,可以把技术分的更细一些。这个技术粒度,可以根据具体情况来调整,为了软件以后更新迭代,还是将技术写的越细越好,方便后续人员的查阅和参考。
下图是一个较通用的技术框架图,也是分层设计,层与层之间界限比较清晰。最底层可以命名为基础层,包括各种服务器,数据库服务器,WEB服务器,存储服务器,负载均衡服务器等等,基础层可以有一个数据管理层,里面是各种数据库,管理不同的数据。在往上就是支撑技术,比如工作流引擎,访问控制,安全机制,全文检索等等,再往上就是对应的具体技术,比如spring boot,spring cloud,elasticsearch,solr,workflow等等。再往上,可以写一下技术与业务结合的模块,根据具体业务的不同,使用到的技术可能有比较大的差异,也会体现项目的技术特点。最上面就是展示层,通过Web网页、大屏、APP、微信小程序等不同的方式对外进行展示。
3 接口设计
接口是指用于完成各系统间和系统内部数据传递的接口。在系统中通常设计成一个数据库文件或接口转换模块,传出数据的系统通常对数据事先进行必要的加工处理,需要接收数据的系统按照用户的要求(用户事先定义的数据模式),通过接口完成数据传递的任务。
3.1 接口的类型
接口可以分为系统内部接口和系统外部接口。
系统内部接口适合于本项目内各业务系统之间的数据传递,要传递的数据的格式、内容基本上相同,无需再加工处理。接口不是系统之间的数据传递,而是系统内部数据自动流转。
系统外部接口是不同的组织间系统数据的传递问题。由于不同的组织采用的系统的数据模式可能相差太大,要想实现数据的传递相对来说就比较困难,所以这种类型的接口,就要首先由接收数据系统采取主动按照数据模式到对方系统去识别、采集,然后转换成本系统能够识别和利用的数据模式。
3.2 接口的实现方式
WebService 方式。基于不同平台及应用系统的功能调用。
JDBC访问数据源方式。JDBC 是一种用于执行SQL 语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
API方式。考虑项目与其他待建及已建系统进行互联互通,同时各子系统间根据业务需求应互相通信,为了保持与原有系统之间接口的兼容性,需要提供多种API 的方式进行接口的设计开发。
数据交换方式。主要基于已建应用集成平台,通过数据交换节点接入配置与开发,实现两个系统间数据的共享交换,可以屏蔽两个系统间数据库差异、技术体系差异。
4 安全设计
系统的安全设计,需要从多方面考虑,从物理安全、网络安全、系统安全和应用安全等层次进行安全设计,提供用户管理、权限管理、认证等具体安全功能。
物理安全主要针对物理实体和硬件系统的安全要求,主要应包括所有的网络设备(包括交换机、路由器、服务器等)都应设置物理保护,不能随意让人接触,服务器系统都应加带口令的屏幕保护及键盘锁。
网络安全是系统安全体系的重点内容,建议综合采用VLAN划分、地址绑定和防火墙等网络安全技术和安全策略,力求从多层次、多角度来保证网络系统的安全。
系统安全重点解决操作系统、数据库和功能服务器(如Web服务器、数据库服务器等)系统级安全问题,以建立一个安全的系统运行平台。主要措施包括安全操作系统、安全数据库及病毒防护系统等。
应用安全可以考虑应用服务器的安全管理、系统容灾等。
5 数据库设计
在系统设计中,数据库设计是一项非常重要的内容,是系统设计的重要组成部分,但是,数据库具有一定的独立性,而且该部分内容比较多,所以,一般来说,数据库设计会单独考虑,文档也会单独撰写。
为了保持系统设计的完整性,在这里将数据库设计放到系统设计中,数据库设计的具体内容在如何进行数据库设计中进行描述(从零开发软件项目系统之四)。
结语
系统设计阶段是在需求分析基础之上进行,也就是需求分析是前提,需要产品经理对用户需求有一个明确的认识,并清晰的描述,并和技术人员一起,进行较准确的需求分析。架构设计师要能够根据业务场景,综合技术团队实际情况,确定合理的技术框架。考虑的越细越好,能够敏锐的发现满足业务场景的合适技术,以及技术难点,是系统分析和设计人员的重要能力。
合理全面的系统设计,可以为后续的系统开发提供指导,后续的系统开发工作依据良好的系统设计成果,能够事半功倍。