软件架构设计【扩展】-架构特性目标

 

   建筑设计通过近千年的发展在19世纪终于确立了建筑架构设计专业化理论体系,软件行业从起步至今仅几十年,还是一个非常新兴的行业,如果说软件架构设计已经形成了一套放置四海皆准的专业化理论似乎还为时过早,现在关于架构设计、设计模式等方面的书籍很多,这些在都可以理解为软件行业人员不断尝试、不断总结的过程,通过对这些内容的研究,虽不能解决所有问题,但至少可以在一个或者多个侧面丰富我们的知识体系,让系统架构人员作出的设计更加贴近软件目标。

     由于软件架构设计的理论和方法论体系的不完善,让我们在软件设计和开发过程中遇到许许多多阻碍,但也正是它的不确定性,给我们这个时代的程序员、架构设计人员很大的想象和发挥空间。 软件架构设计的定义很抽象,每个人都可能有自己的不同理解,在这里,分享一些我的粗浅理解。

     在目前我们做的软件架构设计中,高可用、高可靠、高性能、高度抽象、高安全、高可扩展等充斥在我们的架构设计文档中。个人理解造成这种现象主要有两个原因:1.大家都是这么写的;2.为了显示软件系统的架构设计水平很高。如果在你的架构设计中也是这样描述的,我们是否应该认真思考一下,系统真的可以达到这些目标吗?我们在设计中是否真的为这些架构所要达到的特性的保障方式及代价进行了认真的思考?我想,如果真的做了以上思考,我们会愧疚的把这些特性从我们的设计中拿掉。

     不可能有一个完美的系统(至少目前是这样)同时满足高可用、高可靠、高性能、高度抽象、高安全、高可扩展等所有的特性,软件架构设计通常都是在有效平衡软件目标(用户需求或者市场定位)与技术特性的产物,如果在设计之初完全不考虑软件目标,仅从技术上完美的表达,看到设计文档中充斥着完美的软件特性描述也就不足为奇了。因此,在设计之初,定位系统的架构设计目标及其的重要,如果想做的是一个开发基础平台,我们可能更多考虑的是高性能、高度抽象以及高可扩展性等特性,而高可用、高可靠、高安全等可能就显得没那么重要了。如果我们软件系统是银行业的支付系统,我们可能更多考虑的是高可靠、高安全等特性。因此,在软件架构设计之初,确定软件架构的特性目标是极其重要的,这需要综合分析软件目标,投入产出比(权衡资源投入与特性所带来的软件价值)等内容。这是软件架构师最重要的工作之一,不要试图设计完美的系统,这只会导致最终只是让我们的设计文档中充斥着完美的软件特性表达,让开发人员无所适从。

     制订了系统技术架构设计目标特性后,如果只是在文档上,那也毫无意义的,它应当是整个系统技术架构设计的核心,包括后续的任何技术决策都紧紧围绕目标开展,例如,如果我们设计的架构特性目标是高性能,那高性能的目标应当贯彻到编码、测试等各个环节中,如果出现需要满足高性能可能会损失其他方面的特性的矛盾时,毫不犹豫的选择满足高性能(例如高安全性与高性能冲突时)。这看上去似乎让我们的系统不尽完美,但如果和软件目标相结合,这样的决策会让我们的最终用户拥有最完美的体验。


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值