<span role="heading" aria-level="2">关于软件体系架构的一点心得</span>

软件体系架构是什么?软件体系架构是怎样产生的?软件体系架构具有怎样的作用?软件体系架构如何优化?本文将从这四个角度来进行阐述。
一、什么是软件体系架构
软件体系架构,我们首先用简单的望文生义法来进行想象。第一,“软件”,我们知道这个东西和软件有关。软件是一系列按照特定顺序组织的计算机数据和指令的集合,其与软件有关,我们猜想可能是对这个数据和指令的集合的一种排列。“体系”,告诉我们这个东西不只是单单的某一个事物,既然要成体系,起码要有一个相对大的基数和一定的层次结构,我们所熟知的体系,如人体的免疫体系,一个公司的体系,一个国家的体系,整个自然界这个体系。这些又有一些共同的特点可以让我们去总结,他们分工明确,他们各自之间达成了一种相对的平衡,保持着整个体系的活力和正常运行。“架构”,并不是那么容易理解,我们每个人都对架构有着自己的理解,却又都不够全面,换句话说,我们都对架构这个概念有着理解,却又很难用自己的一句话来进行描述。到目前看来,软件体系架构,就是一个充满着计算机数据和指令的体系,这是我们没有加入架构的概念,这样会使这个定义或者说结论看起来很奇怪,我们就要从架构的这个点进行入手,因为看起来它很关键,甚至足以影响到软件体系架构的定义的合理性。
二、软件体系架构是如何产生的
要说软件体系架构是如何产生的,首先要从架构入手,看架构是如何产生的,因为软件体系看起来是用来修饰架构的。架构最早的出现就是因为问题规模的不断扩大,导致问题不好解决,由架构来对问题进行分解。王概凯先生先生在他的架构漫谈中如是说到:架构就是根据要解决的问题,对目标系统的边界进行界定,并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间,再对这些切分出来的部分,设立沟通机制,使这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。我们在此基础上做一些简单的分析,首先,架构是用来解决问题的,而且,第一步就是对问题的边界进行确定,第二步就是对问题的边界内部进行划分,第三步是对这些切分好的部分建立起关联,最后一步是将各个部分合并到一起,重新组装成为一个整体。其中,最为关键的一步,是第二步,如何对架构进行切分,如果切分的不合理,就会为后续的工作带来压力,因为切分的不合理,导致各部分之间无法形成联系。分解将大问题拆解成一个个小问题,这样解决的难度自然就大幅降低了。
三、软件体系架构的作用
软件体系架构的存在就是为了解决大规模的问题,将大规模的问题切分一个个小的功能模块,有各个开发小组完成功能,在最后进行组装拼接成一个完整的系统。这正是我们在开发过程中所常用的模式,切合软件公司的开发流程和体系。分工明确,整个开发过程基本是并发执行,大大缩减的开发所需时间,降低了开发难度,提高了开发效率。分工明确,各个小组在按照架构师的设计进行实现,达到了平衡。这正和我们最一开始所分析的不谋而合,完全诠释了软件体系架构的定义。
四、软件体系架构的优化
了解过一些算法的人都知道,算法的优化,要么是在设计思路上进行改变,要么是想办法降低实现过程中的时间复杂度。就像循环嵌套和双指针之间的优化,如果需要循环多次的话效率太低,我们能不能只用一次循环就解决问题,也就是说,我们可以对问题再进行切分,再分配到各个人,再次将串行变为并行,就像是一个递归,递归终止条件就是问题规模无法再切分,这样的优化思路很简单,但也存在问题,当问题切分到一定程度后,无法再切分,我们应该怎么办。我们就要从其他的角度来想办法,比如,某两个功能模块的功能相似,我们可不可以把其中相同的部分单独封装,实现代码的复用。又或者从设计的角度来进行改进,也就是方向的选择上,包括实现系统所用的技术选型,哪种技术开发起来效率更高、或者哪些技术是我们用的比较熟。或者该技术之前开发中使用过,有一些现成的组件可以拿来使用,这些都是优化的思路和方向。
总结一下,软件体系架构,就是通过对问题规模的切分来降低开发难度,改串行为并行,提高开发效率,最后完成组装。我甚至觉得,一切可以提高开发效率的手段都可以归类之为软件体系架构。这只是个人的一些陋言,如果有不正确的地方,欢迎大家来批评指正。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务