也谈软件架构

一、什么情况下,涉及到软件架构?

软件规模可大可小,功能可复杂可简单。对于多年前的单一功能软件,大部分还不需要上升到软件架构层面。

随着功能越来越多、各功能之间联系越来越紧密、各个功能的实现难度越来越大,如何把这些功能有机的整合到一起才能更合理、更高效、更长久,就变成了一个复杂的课题,也就由此引出了软件架构的概念。

二、软件架构有哪些原则?

在我看来,总的来说,软件架构的原则主要有以下几个:合适、简单、演进。

怎么理解?

对于同一个场景,不同的设计师设计出来的软件架构会各不一样,甚至差别很大,这是为什么?其实是因为大家对软件架构的衡量标准很难统一导致的。软件架构有绝对的对错吗?好像没有。

对于同一个需求,有的设计师考虑的很长远,可能会设计的面面俱到,很复杂;而别的设计师可能会先设计一个可用的较简单的架构,同时保证可持续演进。

只要能够实现需求,能够满足性能要求,没有大的问题,似乎也很难说某种架构就是有大毛病的。

基于以上的分析,要能满足功能和性能的需求,这是软件架构基本的要求。

除此之外,就是一个权衡的过程了,也就是要综合考虑业务发展诉求、如何较经济的满足功能和性能的需求、首版交付周期和软件架构的完整性如何平衡。

由于软件功能的迭代是一个动态的过程,并且会随着公司战略的调整、市场需求的变化、用户数和数据量的变化等相应变化,常常很难在架构搭建初期就考虑的面面俱到和一蹴而就。

所以,软件架构常常就需要有个“演进”的过程。那么在架构搭建初期,就需要满足基本诉求,保证在可用资源的情况下可以落地,也就是要遵循“合适”原则。

除此之外,软件架构的分层分模块需要足够清晰、可理解性强,方便扩展,方便添加新功能,即需要遵循“简单”原则。

三、怎样从0到1搭建一套软件架构?

首先,对业务得有足够的理解,对业务发展得有规划。

其次,对功能和性能指标进行分解和技术摸底,确定可用的技术或者相关组件。当然,这个过程涉及技术或技术组件的选型,需要进行分析、对比和验证。

再次,要熟悉业界一些常用的软件架构模式,根据自身需要,进行内化。如果没有可参考的业界架构模式,则需要根据架构设计原则,按照分层分模块的方式,逐渐搭出合适的框架。

另外, 要综合考虑软件架构的各方面熟悉,包括高可用、高并发、可扩展、安全性等。当然,这些也有一个权衡的过程,看需要做到什么程度。

同时,要考虑软件未来的维护和演进,有哪些维护手段?怎么能更好的演进?如何保证在演进的过程中,软件框架不被泛化?这些都是做架构的过程中要考虑的。

四、软件架构的维护与演进

软件架构搭建好了之后,是不是就万事大吉,只等收割了?当然不是!

随着架构的扩展、模块的增加、功能的叠加,软件架构可能会越来越复杂。如果处理的不好,甚至最初的架构会被泛化掉。

这就需要在架构输出之后,完善相关的文档,让后续的设计、开发和维护人员熟悉架构,明确如何进行扩展、添加模块和叠加功能。

另外,需要制定好软件架构演进的规则,并严格执行,以保证软件的生命周期足够长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值