软件架构

来源:互联网 发布:群面技巧知乎 编辑:程序博客网 时间:2024/06/08 19:33

by:Keegan小钢http://keeganlee.me

什么是架构

一是最高层次的系统分解;二是系统中不易改变的决定!通常也将定义总结为组成派和决策派:

  • 组成派:架构=组件+交互:软件系统的架构将系统描述为计算组件及组件之间的交互。
  • 决策派:架构=重要决策集:软件架构是在一些重要方面所作出的决策的集合。

简而言之,软件架构的定义就是:规划、设计和构建软件的过程和结果。

架构规划

在软件设计中,架构规划就是产品需求,需求形成了对架构的约束条件,从而也对架构设计行程了边界,可以分为三大类:商业需求、功能需求、质量需求。

商业需求

为最高层次的需求,对软件架构产生限制的商业因素也比较多,在此列决一些比较常见的:

1. 上市时间:上市时间限定了系统从设计、开发、测试到上市的时间边界。

2. 成本预算:成本预算就限定了能使用的资源边界。不同架构的开发成本肯定不同,要满足更多功能需求和更多质量需求的架构成本也更高,在预算有限的情况下,只能权衡各种需求,优先满足重要程度高的需求。

3. 人力现状:100人的开发团队和10人的开发团队,软件的架构会有很大不同。

4. 与外围系统的集成:当需要与外围系统集成时,需要认真考虑集成方法,尤其是外围系统比较老的时候,集成难度可能更高。

5. 开放性:封闭的私有系统和开放式系统对架构的要求也不同,一个系统如果选择了开放,那对架构的质量要求更高,对安全性、扩展性、性能等质量属性都应该比封闭时高。

6. 目标市场:目标用户10万、100万、1000万,不同级别的目标市场,架构也是大有不同。

7. 多端支持:现在移动端普遍支持Android、iOS、Wechat,管理端通常则支持PC Web,如果管理端也要支持Android、iOS、Wechat,或者移动端和管理端还要再支持WindowsPhone、黑莓,甚至再支持VR,则需要投入更多时间和人力,架构上相应也需要做出调整。

8. 期望的系统生存期:从主观上说,谁都希望自己的系统可以生存很久,但生存期越长,意味着系统的可修改性、可扩展性、可移植性等需要更高。

9. 阶段性计划:每一个大平台系统普遍都是分阶段完成的,因此,前期阶段的架构设计时就需要考虑好重用性、扩展性、伸缩性、移植性等特性。

10. 国际化:如果走国际化路线,那架构上就要考虑好对多国语言的支持。

11. 竞争对手:产品要比竞争对手优秀,那就要在一些关键的功能或质量上超越对方,也意味着在这些方面的架构需要投入更多。

12. 法律法规:比如,对某些关键字要进行过滤屏蔽,这是天朝独有的,大家懂的。

功能需求

功能需求描述了系统应该提供的服务,包括为用户提供的服务,也包括为其他系统提供的服务。

质量需求

质量需求是三类需求中,需求层次最低的,但却是大部分架构师最关注的,常见的质量需求属性如下:性能、鲁棒性、易用性、安全性、有效性……