软件架构设计是以“需求规格说明书”为最主要的设计依据,首先勾勒出概念性的架构,
再结合具体的技术平台制定实际架构方案的。在考虑架构设计的时候,必须注意如下关键要
素。
1)是否遗漏了至关重要的非功能性需求
非功能需求是最重要的架构决定因素之一,所谓非功能需求主要包含两个部分:质量属
性和约束条件。质量属性是软件系统整体的质量品质,所谓整体品质,就是它往往和大多数
功能都有关系。比如易用性、可扩展、安全性、可靠性等。它们往往表现在整体上的品质,
而不是哪个功能的“内部”。
非功能需求很多情况下存在一定的相互矛盾,所以只有少数几个质量属性在架构设计中
是最重要的,它通常左右着架构风格的选择。另一方面,软件系统非功能性需求的的满足,
仅凭编程级的努力是达不到的。比如为了提供高可靠性,往往涉及错误检测、预防、修复等,
这就需要架构设计中非常重视非功能性需求。
功能是重要的,但如果仅仅盯着功能而忽视了非功能需求,则可能导致架构设计的失败。
2)是否适应数量巨大且频繁变化的需求
需求的变更既蕴藏着风险又包含了机遇。
之所以说是风险,是因为不存在不需要成本的需求变更。任何变更都意味着时间和金钱
的消耗,并且在大量变更以后程序可能被搞得混乱不堪,势必引起 Bug 增多,产品质量下降。
另一方面,需求变更也蕴含着机遇,对软件架构师而言,这个机遇就意味着极力设计出
更稳定的架构,最终,这个架构能够支持需求在一定范围内“随需而变”。
从更深层次来讲,现在商业环境的特点就是频繁变化,国际化带给我们的就是对未来越
来越不可预测,技术的位置也不仅仅是服务,很多情况下技术在一定程度上还会拉动需求变
更。不考虑适应数量巨大而且频繁的需求变更,架构师就难以“从容”的进行架构设计,最
终甚至被变化拖垮而无法关注大局。
3)能否从容设计架构的不同方面
架构师必须具有宏观思考的能力,避免涉及太多的技术细节,但这并不意味着架构设计
是宽泛的甚至简单的。
软件架构必须对开发提供足够的指导和限制,这无疑意味着软件架构的工作是复杂的。
架构师必须深入研究软件系统运行期间的情况,合理划分不同部分的职责,权衡轻重缓急,
并制定相应的并行、分时、缓存和批处理等设计决策。
架构师必须掌握系统化的方法,对复杂问题“分而治之”,分解成独立的视图。然后再
综合考虑各个视图之间的相互支持、互相影响等问题。
4)能否及早验证架构方案并做出了调整
现代软件开发非常注意早期缓解高风险。而架构设计又是软件开发风险比较高、也是最
为关键的一环。架构设计的是否合理,将直接影响到软件项目最终是否能够得到成功。
毕竟,软件架构中包含了关于如何构建软件的一些最重要的设计决策,比如系统分为哪
几个部分?各部分之间如何交互的?等等。这些设计决策能保证最终产品满足非功能需求
(比如性能、可靠性、安全性)吗?
所以,在大规模开发之前,尽早构建架构的早期版本(架构基线),并通过对这个原型
的测试评审,来评估这个架构是不是合理,这是非常重要的事情.

成功架构设计的关键要素相关推荐

  1. 元宇宙基础理论、架构设计、关键技术和行业应用-总纲

    一.前言 元宇宙是IT前沿技术的一个新的热点,元宇宙浪潮之下,如何了解元宇宙,理解元宇宙,参与到元宇宙项目的建设中来?成为困扰大家的一个问题.因此考虑写一个系列的内容,系统性的介绍元宇宙相关的内容: ...

  2. 消息中间件系列(九):详解RocketMQ的架构设计、关键特性、与应用场景

    内容大纲: RocketMQ的简介与演进 RocketMQ的架构设计 RocketMQ的关键特性 RocketMQ的应用场景 RocketMQ的简介 RocketMQ一个纯java.分布式.队列模型的 ...

  3. ChatGPT之父Sam Altman:成功的13个关键要素

    "如果把Sam Altman扔到某个食人族之岛,5年后他会成为这个食人族岛的国王." 在硅谷创业教父Paul Graham眼里,Sam Altman是一位极具魄力的领导者和开拓者. ...

  4. Web UI设计的关键要素!

    2019独角兽企业重金招聘Python工程师标准>>> 对齐,对比,亲密性,重复,光源,阴影,高光,渐变! 转载于:https://my.oschina.net/liangrockm ...

  5. 大数据全栈技术与商用平台架构设计之路

    回首10年多的科研工作历程,也是中国经济高速发展的10多年,中国高铁.核电.航空.互联网.云计算.大数据.人工智能等领域无不铭刻着"中国名片",这就是科技是第一生产力的实践验证!1 ...

  6. 数据科学家分享:“大数据全栈技术与商用平台架构设计之路”

    各位好: 回首10年多的科研工作历程,也是中国经济高速发展的10多年,中国高铁.核电.航空.互联网.云计算.大数据.人工智能等领域无不铭刻着"中国名片",这就是科技是第一生产力的实 ...

  7. 《系统架构设计》-01-架构和架构师概述

    文章目录 1. 架构的基本定义 1.1 架构组成理论 1.1.1 系统元素 1)概念 2)静态结构和动态结构 1.1.2 基本系统属性 1.1.3 设计和发展原则 1.2 架构的决策理论 1.2.1 ...

  8. 【2017年第3期】交通大数据:一种基于微服务的敏捷处理架构设计

    杜圣东, 杨燕, 滕飞 西南交通大学信息科学与技术学院,四川 成都 610031 摘要:面对智慧交通广泛的大数据应用场景和技术需求,一般大数据系统难以适应多种处理情况并做出快速响应.针对这一问题,首次 ...

  9. 物联网平台开发核心技术揭秘-架构设计篇

    <高并发系统实战派>一书, 力推! 引言 上一篇物联网平台开发实战-初探 从宏观层面了解了物联网平台相关内容.随着物联网的快速发展和普及,越来越多的企业和机构开始构建自己的物联网平台.物联 ...

  10. 小工匠聊架构 - 如何优雅的做系统架构设计01

    文章目录 目标 目标 清楚地理解架构设计相关的概念.本质.目的,避免架构师在实践过程中把握不住重点.分不清主次,眉毛胡子一把抓,导致架构设计变形或者"四不像" 掌握通用的架构设计原 ...

最新文章

  1. 苗旺:因果推断,观察性研究和 2021 年诺贝尔经济学奖 | 青源 Talk 第 8 期
  2. 当当的羊毛又该剪了!官方活动基础上的额外优惠券,速领!
  3. 这些超实用的电脑快捷键,你都get到了吗?
  4. Python面向对象的高级特性
  5. 《3D数学基础》实践1 向量类代码分析
  6. java finally块_java finally块后的语句是否要执行
  7. php ajax session死锁,session过期,ajax请求处理
  8. python3 判断文件是否存在_Python判断文件是否存在的三种方法
  9. 插入u盘被计算机限制怎么回事,电脑不读u盘怎么处理,显示本次操作由于计算机的限制而被取消 请您与系统管理员联系,怎门回事?...
  10. oracle 空间详解,Oracle Spatial空间分析详解 | 学步园
  11. wow.js中各种特效对应的类名
  12. 用友NC6.5 6.33 6.3 5.7 5.5 5.02最新补丁下载
  13. iOS UDP和TCP测试工具sokit
  14. Channel~scatter and gather
  15. mysql连接timeout_mysql 连接超时wait_timeout问题解决
  16. Springboot毕业设计管理系统
  17. 【动态规划】入门练习题浅总
  18. BitTorrent网络中基于Kademlia协议到DHT无服务器泛互联网搜索软件推荐
  19. 泵引理 Pumping Lemma
  20. 给定激励,求零输入响应、零状态响应,全响应

热门文章

  1. 小米笔记本Air13.3扩充硬盘
  2. 【读书笔记】《早起的奇迹》
  3. C#打造一个开源webgis(四)地图客户端(上)
  4. a4纸尺寸在html中是多大,a4纸尺寸是多少厘米(各种标准纸张大小)
  5. 七周成为数据分析师 第六周:统计学
  6. 华为校招C++开发岗面试经验——软件开发工程师
  7. 创建枚举类 java_Java枚举类
  8. 外显子bed文件获取
  9. 怎样在图片上编辑文字?这几种方法可以进行简单的编辑
  10. 光伏谋定生态农村-农业大健康·万祥军:太阳能改革生产方