首页 > 其他分享 >从零做软件开发项目系列之三——系统设计

从零做软件开发项目系列之三——系统设计

时间:2023-08-24 15:11:36浏览次数:28  
标签:系列 软件开发 之三 系统 技术 接口 服务器 设计 数据库

前言

在与客户充分接触后取得需求调研结果,然后分析调研内容,撰写完成项目的需求规格说明书。这是一个正式的文件,需要供需双方签字确认。说明书中会明确需求方的要求和开发方实现的内容,依据需求规格说明书,开发方就要开展系统设计工作。

进行系统设计工作,粗略的可以分成两个阶段,概要设计(总体设计)阶段和详细设计阶段,概要设计阶段主要是做一些系统整体的设计工作,比如系统包括哪些模块,使用什么样的技术等,详细设计则是在概要设计的基础上,对系统进行细化设计,比如模块包括哪些功能,它们之间怎么调用关联等等。很多时候,两个阶段也没有分的特别清楚,作为由浅入深的设计实现,两个阶段经常是融合在一起,这里我们不作详细区分,统一进行设计阶段进行说明。

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 数据库设计

在系统设计中,数据库设计是一项非常重要的内容,是系统设计的重要组成部分,但是,数据库具有一定的独立性,而且该部分内容比较多,所以,一般来说,数据库设计会单独考虑,文档也会单独撰写。

为了保持系统设计的完整性,在这里将数据库设计放到系统设计中,数据库设计的具体内容在如何进行数据库设计中进行描述(从零开发软件项目系统之四)。

6 结语

系统设计阶段是在需求分析基础之上进行,也就是需求分析是前提,需要产品经理对用户需求有一个明确的认识,并清晰的描述,并和技术人员一起,进行较准确的需求分析。架构设计师要能够根据业务场景,综合技术团队实际情况,确定合理的技术框架。考虑的越细越好,能够敏锐的发现满足业务场景的合适技术,以及技术难点,是系统分析和设计人员的重要能力。

合理全面的系统设计,可以为后续的系统开发提供指导,后续的系统开发工作依据良好的系统设计成果,能够事半功倍。

标签:系列,软件开发,之三,系统,技术,接口,服务器,设计,数据库
From: https://www.cnblogs.com/coodream2009/p/17654183.html

相关文章

  • 《asyncio 系列》1. 什么是 asyncio?如何基于单线程实现并发?事件循环又是怎么工作的?
    https://www.cnblogs.com/traditional/p/17357782.html楔子许多应用程序,尤其在当今的Web应用程序领域,严重依赖IO操作。这些类型的操作包括从Intermet下载网页的内容、通过网络与一组微服务进行通信,或者针对MySOL、Postgres等数据库同时运行多个查询。Web请求或与微服......
  • iPhone14系列safearea、分辨率及媒体查询
    特别注意:iPhone14Pro和iPhone14ProMax的状态栏高度和safeArea顶部安全距离不一致屏幕尺寸及安全区大小手机型号尺寸(pt)倍数屏幕(px)状态栏高度顶部安全距离底部安全距离iPhone14Pro393*85231179*255654pt59pt34pt(竖屏)/21pt(横屏)iPhone14ProMax430*93......
  • Flutter系列文章-Flutter 插件开发
    在本篇文章中,我们将学习如何开发Flutter插件,实现Flutter与原生平台的交互。我们将详细介绍插件的开发过程,包括如何创建插件项目、实现方法通信、处理异步任务等。最后,我们还将演示如何将插件打包并发布到Flutter社区。第一部分:Flutter与原生平台交互在Flutter项目中,你......
  • 《Windows 汇编语言入门教程》 -- 系列教程
    5.12汇编语言:仿写While循环语句5.11汇编语言:仿写IF条件语句5.10汇编语言:汇编过程与结构5.9汇编语言:浮点数操作指令5.8汇编语言:汇编高效除法运算5.7汇编语言:汇编高效乘法运算5.6汇编语言:汇编高效数组寻址5.5汇编语言:函数调用约定5.4汇编语言:算数......
  • 晶振测试仪GDS-80系列参数
    晶振测试仪GDS-80系列一、产品简介晶振测试仪GDS-80系列是高性价比的晶振测试系统,采用网络分析技术,实现智能化测量,符合IEC-444标准。测量频率范围10KHz-200KHz,1MHz-200MHz,附USB接口进行数据通迅。晶振测试仪GDS-80系列采用π型网络零相位法实现串联谐振频率的测量,采用直接阻抗......
  • BFT最前线|字节跳动AI对话产品“豆包”上线!联想集团推出AI大模型训练服务器!雷尼绍推出
    原创|文BFT机器人AI视界TECHNOLOGYNEWS看点1天才少年稚晖君首秀,官宣智元人形机器人!2023年8月18日上午,从华为离职的“天才少年”彭志辉,也是B站硬核科技UP主稚晖君,公布了他所在的智元团队创业半年的成果——名为“远征A1”的人形机器人。它长得像人,身高175cm,重53kg,可以双足行走,......
  • 《软件开发工程师的进阶之路》
    《软件开发工程师的进阶之路1一一如何"入的坑"》摘要恰逢开学季有感而发,遂以个人亲身经历畅叙学习之法;个人观点,仅供参考。结缘计算机:那是闷热的盛夏,像山一样的《招生之友》快被我翻烂却始终无法锁定自己想要的专业;一筹莫展之时,听闻计算机行业已经走到了山的顶峰,未......
  • 直播平台软件开发,vue-全局过滤器时间
    直播平台软件开发,vue-全局过滤器时间步骤一:处理数据 exportconstformatYmd=(date)=>{ lettime=newDate(date)  lety=time.getFullYear() letm=time.getMonth()+1 letd=time.getDate()  return[y,m,d].map((v)=>String(v).padStart(2,'0......
  • 模拟集成电路设计系列博客——1.1.7 带有输出阻抗增强的宽摆幅电流镜
    1.1.7带有输出阻抗增强的宽摆幅电流镜下图的结构在[Gatti,1990],[Coban,1994;Martin,1994]中被提出和使用,与[Säckinger,1990]的输出阻抗电流镜结构很像,除了一个二极管接法的晶体管被加在共源级增强放大器前作为电压转换器。在输出光,电平转换器是通过\(I_{bias}\)偏置的二......
  • 移动软件开发--天气查询小程序
    一、实验目标1、掌握服务器域名配置和临时服务器部署;2、掌握wx.request接口的用法。二、实验步骤1.准备工作1.1API秘钥申请​ 登录和风天气官方网址https://www.qweather.com/注册并记录个人认证key1.2服务器域名配置​ 本次实验需要查询城市ID与该城市所对应天气,故需......