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

news2024/11/22 1:19:42

前言

在与客户充分接触后取得需求调研结果,然后分析调研内容,撰写完成项目的需求规格说明书。这是一个正式的文件,需要供需双方签字确认。说明书中会明确需求方的要求和开发方实现的内容,依据需求规格说明书,开发方就要开展系统设计工作。
进行系统设计工作,粗略的可以分成两个阶段,概要设计(总体设计)阶段和详细设计阶段,概要设计阶段主要是做一些系统整体的设计工作,比如系统包括哪些模块,使用什么样的技术等,详细设计则是在概要设计的基础上,对系统进行细化设计,比如模块包括哪些功能,它们之间怎么调用关联等等。很多时候,两个阶段也没有分的特别清楚,作为由浅入深的设计实现,两个阶段经常是融合在一起,这里我们不作详细区分,统一进行设计阶段进行说明。

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

在系统设计中,数据库设计是一项非常重要的内容,是系统设计的重要组成部分,但是,数据库具有一定的独立性,而且该部分内容比较多,所以,一般来说,数据库设计会单独考虑,文档也会单独撰写。
为了保持系统设计的完整性,在这里将数据库设计放到系统设计中,数据库设计的具体内容在如何进行数据库设计中进行描述(从零开发软件项目系统之四)。

结语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/911831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp踩坑合集

1、onPullDownRefresh下拉刷新不生效 pages.json对应的style中enablePullDownRefresh设置为true,开启下拉刷新 {"path" : "pages/list/list","style" :{"navigationBarTitleText": "页面标题名称","enable…

数据结构与算法:计算机科学的基石

文章目录 数据结构:构建数据的框架算法:问题的解决方案编程语言:实现数据结构的工具结论 🎉欢迎来到数据结构学习专栏~数据结构与算法:计算机科学的基石 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页&…

Arduino之esp8266

今天,捣鼓了Arduino和esp8266,发现有两款比较好的软件(Arduino IDE以及Mixly软件)可以将程序下载至esp8266中,而且两者的编程语言都是一样的,都是基于Arduino编程语言,只不过一个Mixly更注重图形编程&#…

芯片验证板卡设计原理图:446-基于VU440T的多核处理器多输入芯片验证板卡

基于VU440T的多核处理器多输入芯片验证板卡 一、板卡概述 基于XCVU440-FLGA2892的多核处理器多输入芯片验证板卡为实现网络交换芯片的验证,包括四个FMC接口、DDR、GPIO等,北京太速科技芯片验证板卡用于完成甲方的芯片验证任务,多任务…

Pandas基础知识

文章目录 Pandas的数据结构Series --- 由数据和索引组成(索引(index)在左,数据(values)在右)DataFrame --- 索引包括行索引和列索引,每列数据可以是不同的类型 Pandas的索引操作 ---…

Vue路由(详解)

目录 路由原理 路由到底有什么作用? 路由安装和使用(vue2) 路由跳转 跳转实例: 路由的传值和取值 传值实例: 查询参和路由参的区别: 嵌套路由 嵌套实例: 路由守卫 守卫实例&#xff1…

计算机毕业设计源码-基于java+springboot+vue开发的短视频播放系统-lw

参考源码 文章目录 前言一、项目运行环境配置二、主要技术javaMysql数据库JSP技术B/S结构 三、系统设计四、功能截图总结 前言 随着社会的不断发展与进步,21世纪的今天,人们对信息科学的认识已由低层次向高层次发展,从感性认识逐渐提高到理…

【LeetCode】复写零

复写零 题目描述算法描述编程代码 链接: 复写零 题目描述 算法描述 编程代码 class Solution { public:void duplicateZeros(vector<int>& arr) {int n arr.size();int dest -1,cur 0;while(cur < n){if(arr[cur]){dest;}else{dest2;}cur;if(dest > n-1){…

【SpringSecurity】一、SpringSecurity入门

文章目录 1、背景2、相关概念3、Java安全框架的实现4、入门案例4、使用配置文件配置用户名和密码5、基于内存的多用户管理 1、背景 新建个SpringBoot工程&#xff0c;写三个controller&#xff0c;里面有三个接口&#xff1a; //学生 RestController RequestMapping("/s…

ORB-SLAM系列算法演进

ORB-SLAM算法是特征点法的代表&#xff0c;当前最新发展的ORB-SLAM3已经将相机模型抽象化&#xff0c;适用范围非常广&#xff0c;虽然ORB-SLAM在算法上的创新并不是很丰富&#xff0c;但是它在工程上的创新确实让人耳目一新&#xff0c;也能更好的为AR、机器人的算法实现落地。…

hive表的全关联full join用法

背景&#xff1a;实际开发中需要用到全关联的用法&#xff0c;之前没遇到过&#xff0c;现在记录一下。需求是找到两张表的并集。 全关联的解释如下&#xff1b; 下面建两张表进行测试 test_a表的数据如下 test_b表的数据如下&#xff1b; 写第一个full join 的SQL进行查询…

14.广义表

目录 一. 基本术语 二. 广义表的性质 三. 广义表与线性表的区别和联系 四. 广义表的基本运算 一. 基本术语 广义表&#xff08;又称列表Lists&#xff09;是n>0个元素的有限序列&#xff0c;其中每一个ai或者是原子&#xff0c;或者是一个广义表。 广义表通常记作&am…

电力防雷监测的综合防雷方案

电力行业是国家的重要基础设施之一&#xff0c;也是雷电天气下最容易受到雷击的设施之一。 雷电对电力设施的影响是巨大的&#xff0c;不仅会造成设备损坏或数据丢失&#xff0c;还会引发火灾、爆炸、中毒、交通事故等次生灾害&#xff0c;给社会带来严重的影响。 因此&#xf…

【并发编程】详解并发编程中Synchronized的特性(可见性、有序性、可重入性、禁止指令重排序)(๑•̀ㅂ•́)و✧

1、synchronized 禁止指令重排分析 我们先看如下代码&#xff1a; class MonitorExample {int a 0;public synchronized void writer() { //1a; //2} //3public synchronized void reader() { //4int i …

[保研/考研机试] KY212 二叉树遍历 华中科技大学复试上机题 C++实现

题目链接&#xff1a; 二叉树遍历_牛客题霸_牛客网二叉树的前序、中序、后序遍历的定义&#xff1a; 前序遍历&#xff1a;对任一子树&#xff0c;先访问根&#xff0c;然后遍历其左子树&#xff0c;最。题目来自【牛客题霸】https://www.nowcoder.com/share/jump/43719512169…

开学必备物品清单!这几款优先考虑!

​马上就要开学了&#xff0c;同学们也要准备一系列开学用品&#xff0c;方便我们的学习生活&#xff0c;那有哪些数码物品可以在开学前准备的呢&#xff0c;接下来给大家安利几款很不错很实用的数码好物&#xff01; 推荐一&#xff1a;南卡00压开放式蓝牙耳机 南卡00压开放式…

青源Workshop丨AI+心理干预研讨会

青源Workshop丨No.23 AI心理干预 当前&#xff0c;抑郁症、焦虑症等心理障碍成为社会关注的焦点&#xff0c;如何有效地缓解和治疗这些心理问题成为一个重要的研究方向。在这样的背景下&#xff0c;如何利用AI等先进技术手段来辅助心理疾病的治疗备受关注。例如&#xff0c;通过…

【FM-CW雷达】一种通信系统技术——调频连续波信号(FM-CW)(Simulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

英伟达™(NVIDIA®)535.98 Linux 图形驱动程序发布

导读英伟达™&#xff08;NVIDIA&#xff09;公司近日发布了适用于 Linux、FreeBSD 和 Solaris 系统的 NVIDIA 535.98 图形驱动程序&#xff0c;作为其生产分支的维护更新&#xff0c;解决了各种错误和问题。 在英伟达™&#xff08;NVIDIA&#xff09;535.86.05 版本发布仅三周…