程序员必读之软件架构读书笔记——质量属性

Simon Brown的《程序员必读之软件架构》从程序员角度叙述了一个架构师和一个程序员之间的区别。希望成为架构师的程序员,推荐可以找来看看。

其中有一个部分很有意思:架构中的质量属性(非功能需求)。目前大家的软件工程,不论是Agile,Lean还是Devops,都强调功能性需求,对于如何在项目中开发非功能性需求的论述都很少。

非功能性需求呢?业务和产品经理技术出身还好,非技术出身对非功能性需求几乎一点感觉都没有。而非功能性需求,对于项目的进度、范围和成本的影响,比表面上看却大得多。现在工作当中,重功能需求轻非功能性需求是一种常态,这也造成从项目一开始就欠了一屁股技术债,只能从生产宕机中一次次交学费。这就是软件架构师在项目当中的需要承担的重要职责,对系统的非功能性需求进行设计!

书中的第22章《质量属性(非功能需求)》很好的介绍了非功能性需求中涉及的种种概念概念。希望可以借此,提供给软件架构师们一个结构化思考的方法。

常见质量属性

1.性能

性能就是一个东西有多快,通常指响应时间或延迟。

  • 响应时间:从发出请求到收到响应所用的时间,比如用户点击网页中的超链接或桌面应用程序中的按钮
  • 延迟:消息从A点到B点,通过你的系统所用的时间。

就算构建的不是“高性能”软件系统,性能也可应用于Web应用系统、桌面应用系统、面向服务架构、消息系统等几乎所有你要构建的软件系统。

2.可伸缩性

可伸缩性基本上就是软件处理更多用户、请求、数据、消息等的能力。可伸缩性和并发机制密不可分,因此能在相同的时间内处理更多的东西(比如每秒的请求)。

3.可用性

可用性是软件对服务请求的可操作和可见程度。你常会看到用“9”来衡量或指代可用性,如99.99%(四个9)或99.999%(五个9)。这些数字指的是正常运行时间的百分比。另一边是可以容忍的停机时间。99.9%(三个9)的正常运行时间意味着留给计划维护、升级和意外故障的时间每天只有1分多钟。

衡量可用性的数学指标如下:

- 服务平均无故障时间 MTBF(Mean Time Between Failure)
- 服务平均恢复时间 MTTR(Mean Time To Restoration)
- 可用性 = ( MTBF / (MTBF + MTTR)) * 100%

其中 MTBF 的计算方法如下:

mtbf.png

4.安全性

安全性涵盖了从认证和授权到数据在运输和存储中的机密性的所有事情。和性能一样,安全性很有可能在一定程度上对你很重要。对于部署到互联网的web应用程序,安全性应该被视为最基础的东西。开放Web应用程序安全项目(OWASP中文站, Open Web Application Security Project)是学习安全性的一个很好的出发点。

5.灾难恢复

如果失去一个运行了你的软件的硬盘、服务器或数据中心,会发生什么?灾难恢复处理的就是这些。如果你的软件系统至关重要,就会经常听到人们谈论业务连续性过程,也就是发生灾难事件时,应该做什么才能保持持续运行的状态。

6.可访问性

可访问性通常是指像W3C的可访问标准这样的东西,指的是如何让视觉障碍之类的残疾人也能使用你的软件。

7.监控

作为企业级应用,对于如何监测软件系统才能确保他们正常运行和满足服务请求,应该有特别的要求。这可能包括将软件与平台特定的监控功能(比如Java平台的JMX)集成,或发生故障时间集中监测仪表发送报警(比如通过SNMP)。

8.管理

监控通常提供一个软件系统的只读视图,有时会有运行时的管理需求。例如,有必要的话,暴露一些功能,使得操作人员能够修改系统运行时的拓扑结构或配置元素,刷新只读缓存等。

9.审计

人们往往需要一个引起软件系统中数据或行为变化的事件的日志(即审计日志),特别是涉及钱的时候。通常这些日志需要捕获与变动由谁做出、什么时候做出以及为什么做出相关的信息。变动本身(即变动前后的值)往往也需要记录。

10.灵活性

灵活性是一个优点滥用和含混的属于,值得是软件执行多个任务,或以不同方式执行某个任务的“灵活性”。一个很好的灵活性需求的例子是非技术人员修改软件内部使用的业务规则的能力。

11.可扩展性

可扩展性也使滥用和模糊的,但它指的是扩展软件使其可以做一些现在还不能做的事的能力,也许是通过使用插件和API。一些产品(如微软Dynamics CRM)允许非技术用户扩展存储的数据和改变其他用户与数据交互的方式)。

12.可维护性

可维护性往往被认为是一个需求。作为软件开发者,我们通常会努力打造“可维护”的软件,但值得我们思考的是,代码库以后将由谁维护。可维护性很难量化,所以应该认真思考我们可以遵循的架构和开发原则(架构规范和代码规范),因为这些是编写可维护代码的驱动。

13.法律法规

有些行业受到当地法律或监管机构的严格管理,导致了与数据保留或审计日志等相关的额外需求。

比如金融行业,要求托管业务的影像保存时间需要达到15年,反洗钱需要保留完整的审计日志等等。这就需要我们在考虑系统设计时候,完善备份清理策略。

14.国际化(i18n)

很多软件系统,特别是部署在互联网上的,不再以单一的语言交付。国际化是指以多种语言交付软件中用户可见元素的能力。

15.本地化(i10n)

和国际化相关的是本地化,是指以符合最终用户文化习俗的方式展现数字、货币、日期等内容。有时候,国际化和本地化统称为全球化。

根据领域的不同,每个软件系统的质量属性不尽相同。比如,金融行业中基于Web的系统的质量属性可能就不同于电信行业使用的软件系统。做好这些质量属性的具体规范,也是架构管理工作中的中重要内容。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容