浅谈系统架构设计-从架构设计原理、架构设计原则、架构设计方法展开

 

我们工作中一直强调要做架构设计、系分,最近前端同学在追求前端质量提升的时候,也在进行架构设计、前端系分的推广,那到底什么是架构设计和系分?该怎么做架构设计和系分?本文尝试对架构设计进行全面的介绍和分享,希望统一相关认识和术语,推动我们自己架构设计和系分工作的专业发展。

架构发展历程


第一次软件危机与结构化程序设计(20 世纪 60 年代~20 世纪 70 年代)


《人月神话》作者布鲁克斯率领的IBM System/360操作系统开发,2000多个程序员共计5000人/年的工作量,将近100万行源码,总共投入5亿美元,是美国的“曼哈顿”原子弹计划投入的1/4,项目进度却一再延迟,软件质量也得不到保障。为了解决问题,1968、1969年,提出了“软件工程”和“结构化程序设计”两种解决方案。“结构化程序设计”就是面向过程的设计思想。


第二次软件危机与面向对象(20 世纪 80 年代)


第二次软件危机主要体现在软件的“扩展”变得非常复杂,促进了面向对象设计思想的发展。面向对象真正开始流行是在 20 世纪 80 年代,主要得益于 C++ 的功劳,后来的 Java、C# 把面向对象推向了新的高峰。到现在为止,面向对象已经成为了主流的开发思想。


软件架构的真正流行(20 世纪 90 年代开始)


软件架构的出现有其历史必然性。20 世纪 60 年代第一次软件危机引出了“结构化编程”,创造了“模块”概念;20 世纪 80 年代第二次软件危机引出了“面向对象编程”,创造了“对象”概念;到了 20 世纪 90 年代“软件架构”开始流行,创造了“组件”概念。我们可以看到,“模块”“对象”“组件”本质上都是对达到一定规模的软件进行拆分,差别只是在于随着软件的复杂度不断增加,拆分的粒度越来越粗,拆分的层次越来越高。

相关概念定义


软件开发过程包括了分析、设计、实现、测试、验证、部署、运维等多个环节。一个成功的软件设计是要适应并满足业务需求,同时不断“演化”的。设计需要根据业务的变化、技术的发展不断进行“演进”,这就决定了这是一个动态活动,出现新问题,解决新问题,没有所谓的“一招鲜”。
系统:

泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能独立完成的工作能力的群体。
子系统:也是由一群关联的个体组成的系统,多半是在更大的系统中的一部分。
模块:

就是从逻辑上将系统分解, 即分而治之, 将复杂问题简单化。模块的粒度可大可小, 可以是系统,几个子系统、某个服务,函数, 类,方法、 功能块等等。
组件:

可以包括应用服务、数据库、网络、物理机、还可以包括MQ、容器、Nginx等技术组件。
框架:

是组件实现的规范,例如:MVC、MVP、MVVM等,是提供基础功能的产品,例如开源框架:Ruby on Rails、Spring、Laravel、Django等,这是可以拿来直接使用或者在此基础上二次开发。
架构:

是经过系统性地思考, 权衡利弊之后在现有资源约束下的最合理决策, 最终明确的系统骨架: 包括子系统, 模块, 组件. 以及他们之间协作关系, 约束规范, 指导原则.并由它来指导团队中的每个人思想层面上的一致。
系统架构:
国际标准化组织(ISO)系统和软件工程标准认为,系统的架构是一系列基本概念或者系统在其环境中表现出来的属性,体现在它的元素、关系及设计和发展的原则中。根据ISO给出的这一架构定义,系统架构包括系统元素、基本系统属性、设计和发展原则3个主要方面。
架构设计:
是以干系人提出的业务需求为源头、以技术管理和过程改进体系为工作流程、以质量为重心的一项系统工程。架构设计往往首先关注系统的主要构成部分及它们相互之间的关系,然后进一步挖掘每个构成部分的细节,以便确定模块、组件、接口等元素,并确保这些元素满足既定的架构设计原则。比如常用的MVC框架。

系分(前端系分、后端系分、测试系分):

系分的全称是“系统设计、业务分析”,阿里的“系分”文化,要求每一个程序员都要会写系分,后端要写后端系分,前端要写前端系分,测试要写测试系分,如果没有做系分,是不允许直接进入研发工作的,我们公司也是如此。

系统架构师:
架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。在软件开发的整个过程中起着很重要的作用。

在系统工程中,业务需求需要进行分析和抽象、过程需要进行管理和改进、设计质量需要进行保障,完成包含这些活动在内的整个系统架构设计工作的角色就是架构师。因此架构师具备能力:理解业务&#x

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实时数据库系统的设计浅谈全文共3页,当前为第1页。实时数据库系统的设计浅谈全文共3页,当前为第1页。实时数据库系统的设计浅谈 实时数据库系统的设计浅谈全文共3页,当前为第1页。 实时数据库系统的设计浅谈全文共3页,当前为第1页。 一、实时数据库系统架构设计 数据库系统功能实现要对控制程序进行编写,将设计的架构结构作为理论性依据。在架构组成上是分层次进行的,根据使用功能对架构层进行详细划分,能够同时完成数据处理与功能实现任务。下面将对系统构成的架构设计具体方法进行总结。 在对组态软件中实现功能的系统进行设计时,可将其划分为3个不同的架构结构,分别执行不同的指令。这样在设计任务上能够独立进行,节省大量时间,3个模块在设计阶段是相互分离,但在使用阶段会对功能进行汇总。具体的功能层如图1 所示。最顶层的架构是发出以及接收功能指令的,通过模块内部的分析运算,将指令传递到下一个模块中。此时会根据执行功能来进行,不会出现错乱。由PLC系统控制的是软件功能,具有执行指令的功能。 图1实时数据库系统结构图 系统运行期间也会存在一些风险,例如数据传输过程中丢失。图1中表示的是架构设计中的一项内容,数据库具有存储功能,可以将运行期间产生的数据保存,并定期清理。当系统运行期间发生异常时,通过观察这部分数据能够判断故障发生的具体原因,提升组态软件的稳定性。数据接收后会进入到运行模块中,服务器采集到数据变化后会在运行环境内进行搜索,快速完成数据整理任务,通过运行分析将信号传递至功能实现模块中。软件运行环境要安全稳定,存在任何隐患因素都可能影响系统功能的实现。 上述文章中提到对架构进行设计时是分为三部分来完成的,各个模块之间进行信息传递时都是通过数据库的形式来进行的。对资源的配置也要考虑系统整体情况,不可以单一进行。服务器是系统的重要组成部分,在设计阶段也需要重点考虑。 二、实时数据库系统设计与实现 1、实时数据库开发系统 组态软件中是通过数据开发来完成功能更新,设计环节也是以功能实现为最终目的来进行的。因此数据库中的信息是不断更新的,当软件连接网络平台后,实时数据库系统的设计浅谈全文共3页,当前为第2页。实时数据库系统的设计浅谈全文共3页,当前为第2页。系统能够在短时间内完成信息的搜集、整理、更新任务。数据传输到架构内会转变为另一种模式,以功能模块可以识别的方式来传递。设计环节中要对转变形式做出准确定义,以免使用期间对运行速度带来影响。本系统采用面向对象的设计思想,采用4种数据结构来表示上述8种数据类型,并且使用类中的一个成员变量来区分是 IO 变量还是内存变量。 实时数据库系统的设计浅谈全文共3页,当前为第2页。 实时数据库系统的设计浅谈全文共3页,当前为第2页。 组态数据库文件用于保存实时数据库系统的变量信息,本系统采用顺序文件结构来存储数据变量,并将数据库文件分为:头文件、记录块和结束标记。 同时系统采用位置记录缓冲区来避免在删除变量时产生大量的磁盘读写操作。 索引结构和基本数据缓冲区能够快速定位变量,进行赋值等操作。 同时采用了变量的删除保护策略,防止因为变量被错误地删除而使系统产生不可预计的错误。 技术人员除了可以采用标准的图形用户接口来进行变量的配置, 还可以使用 Excel 的方式对系统变量进行组态,方便快捷。 2、实时数据库运行系统 运行系统以开发系统为前提,根据组态数据库文件进行系统的初始化工作。 运行系统作为组态软件的核心部分,负责数据的实施管理,包括事务的处理、并发控制、事件管理、历史数据的存储等,运行系统结构如图 2 所示。 图 2 运行系统结构图 为了提高数据处理效率,运行系统采用内存数据库实现事务的实时处理,大大减少了系统对磁盘的操作。 内存数据库的结构直接决定了实时数据库的效率、稳定性和灵活性。 为了满足实时特性,当子系统向实时数据库提交事务时,数据库系统必须要能快速定位到相应变量。 数组结构适合实现快速定位,但是数组结构必须要求连续的内存空间来存储数据。 当系统存在大量变量点时,大容量的连续内存很难得到满足。 而且系统中的八种变量类型所需要的内存空间不同,如果统一分配,将造成内存的浪费。 解决以上问题,本文采用索引结构和二级缓存技术实现数据的快速定位,索引结构和二级缓存技术原理如图 3 所示。 图 3 索引结构和二级缓存技术原理图 索引结构采用数组结构实现,根据唯一的变量名,可以定位出内存数据库中相应的数据单元。 一级缓冲区中存储各个数据项的基本信息和附加信息指针。 基本信息是从不同数據类型提取的统一信息,包括变量的名字、类型及数据值等。 附加信息是一个数据指针,指向二级缓冲区,存放不同变量除基本信息外的剩余实时数据库系统的设计浅谈全文共3页,当前为第3页。实时数据库系统的设计浅谈全文共3页,当前为第3页。信息。 二级缓冲

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值