[架构之路-98]:《软件架构设计:程序员向架构师转型必备》-8-确定关键性需求与决定系统架构的因素
Posted 文火冰糖的硅基工坊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[架构之路-98]:《软件架构设计:程序员向架构师转型必备》-8-确定关键性需求与决定系统架构的因素相关的知识,希望对你有一定的参考价值。
第8章 确定关键性需求
是什么决定了软件系统的架构?!
没有大的争议的是:需求决定了软件系统的架构!
那么什么样的需求对软件系统的架构影响最大?
![](https://image.cha138.com/20230216/88e533b7a32541edbab271d7547bd77b.jpg)
8.1 众说纷纭——什么决定了架构
![](https://image.cha138.com/20230216/faedb8c3073f466591a5684cd6faf748.jpg)
8.1.1 用例驱动论:功能性需求
用例用图形的方式展现了:站在系统之外,软件系统提供的所有的功能性需求。
因为需求决定架构,因此,有相当多的人认为,用例决定了软件系统的架构。
![](https://image.cha138.com/20230216/ca6d15e90e7b414fbf44cb6d54bfc3fd.jpg)
8.1.2 质量决定论:非功能性需求
![](https://image.cha138.com/20230216/92c8d9e81419420d8f8df3a2dd117b83.jpg)
![](https://image.cha138.com/20230216/7bf104057b9b48c896062197d99e5014.jpg)
作者的观点:没有功能性需求,非功能性需求何以立足?
8.1.3 经验决定论
![](https://image.cha138.com/20230216/f911d3c3ca804bf58ec31fc82cf25e25.jpg)
8.2 真知灼见——关键需求决定架构
关键性需求包括:
关键性功能性需求
非功能性需求
约束条件
8.2.1 “目标错误”比“遗漏需求”更糟糕
![](https://image.cha138.com/20230216/2d81462ff2654616b43b7a63c8247740.jpg)
错误的质量目标会导致错误的架构设计。为了克服这个问题,需要采用新的方法来确定软件的架构。
8.2.2 关键需求决定架构,其余需求验证架构
![](https://image.cha138.com/20230216/64c431b79e434f6c9c97b047c6262f9e.jpg)
![](https://image.cha138.com/20230216/8cc536b93c5a4251bdaf83c9266a5c1e.jpg)
架构设计要同时考虑:
关键性功能性需求
关键性质量需求
关键性约束条件
关键性需求的特征:
风险大
性能要求高
核心需求
8.3 付诸行动——如何确定关键需求
![](https://image.cha138.com/20230216/b39cd77bc59c45a7946106c7dfe6b757.jpg)
对于前者:在不同质量目标中取得平衡
对于后者:选择核心的需求、关键性的需求。
8.3.1 确定关键质量要求
![](https://image.cha138.com/20230216/780abe21ec054fa98992c929b267b3a4.jpg)
![](https://image.cha138.com/20230216/17a87f7682244589856f5048ba5b6123.jpg)
![](https://image.cha138.com/20230216/2d8db8b87f814fd086d1752ed0a6a48e.jpg)
![](https://image.cha138.com/20230216/831fc63326374f93b68c59b56f71df93.jpg)
8.3.2 确定关键功能要求
![](https://image.cha138.com/20230216/ba763fd5ded34f64be8eb3bc6b923bd7.jpg)
![](https://image.cha138.com/20230216/07e7009f3a734b97889cf788d0e57215.jpg)
![](https://image.cha138.com/20230216/c2f5679608434953b17909d26fcd16cf.jpg)
![](https://image.cha138.com/20230216/a4fb92e923a1427c8c99783e84239149.jpg)
![](https://image.cha138.com/20230216/56411f64b5ba403f9283bc698779075b.jpg)
8.3.3 确定关键约束条件
没有用例都有自己的约束条件,关键需求的约束条件,就是关键性约束条件。
8.4 实际应用(6)——小系统与大系统的架构分水岭
8.4.1 架构师的“拿来主义”困惑
![](https://image.cha138.com/20230216/1584c1a3cf4f4aa8b0bf27c6d7a885b7.jpg)
![](https://image.cha138.com/20230216/b300c2aa3be9488483ff8eb90d49bbd4.jpg)
![](https://image.cha138.com/20230216/69f26ae750f8424b8a1a3e57315d7996.jpg)
8.4.2 场景1:小型PMIS(项目型ISV背景)
![](https://image.cha138.com/20230216/d62f41558d09458ba157af9b9be452bd.jpg)
![](https://image.cha138.com/20230216/7f9233edf57b40eb93aca4e383064679.jpg)
8.4.3 场景2:大型PM Suite(产品型ISV背景)
![](https://image.cha138.com/20230216/36f8b010714647febad2cc7135dd61fb.jpg)
![](https://image.cha138.com/20230216/8ede57ce05a7437eb5ddf6c9dd1fd33b.jpg)
8.4.4 场景3:多个自主产品组成的方案(例如IBM)
![](https://image.cha138.com/20230216/8d9e450de80a4f2db8f3e16359f27ea6.jpg)
![](https://image.cha138.com/20230216/6a44e8019b624b10ada1c6db99fc8f61.jpg)
8.4.5 “拿来主义”虽好,但要合适才行
![](https://image.cha138.com/20230216/07a3cf85b3084ebfba074972b62ee793.jpg)
![](https://image.cha138.com/20230216/899d1829945f41498deb63aac17a5d6a.jpg)
备注:
不同的目标系统,关键性需求是不相同的。
需要根据自身的需求,重新定制化自己的关键性需求,而不是一味地拿来主义。
以上是关于[架构之路-98]:《软件架构设计:程序员向架构师转型必备》-8-确定关键性需求与决定系统架构的因素的主要内容,如果未能解决你的问题,请参考以下文章
[架构之路-94]:《软件架构设计:程序员向架构师转型必备》-4-软件架构设计的通用过程
[架构之路-94]:《软件架构设计:程序员向架构师转型必备》-4-软件架构设计的通用过程
[架构之路-92]:《软件架构设计:程序员向架构师转型必备》-2-解析软件架构的概念
[架构之路-92]:《软件架构设计:程序员向架构师转型必备》-2-解析软件架构的概念