您当前的位置:首页 > 新闻资讯 > 产品动态 > 正文

【新东网技术大咖带您走进软件架构设计】软件架构设计那点事儿

发布时间: 2016-11-18 12:04:02  
分享到:

 

 

文/郑实 通信研发部

 

 
专栏介绍

新东网自2001年成立以来,掌握大数据、云计算、通信、物联网及区块链等信息技术,拥有一支逾16年经验的强大IT团队。为沉淀企业技术实力,继续发挥行业优势,《东网快讯》特邀新东网技术大咖带您走进这些先进信息技术,揭秘新东网16年来的技术成果,每周五发布

 

 

计算系统的软件构架是指该系统的一个或多个结构,它由软件组件、组件的外部可见特性以及这些组件之间的关系组成。

 

系统架构设计一般分为三个阶段

 

第一阶段:架构分析即架构准备阶段

 

本阶段是架构实践中最常见的短板,这一阶段的目的是分析业务需求和约束背后的衍生需求、发现遗漏需求、确定关键功能、确定关键质量、权衡质量属性之间的矛盾关系。

系统架构设计失败的原因,最常见的有以下几个:

 

1. 遗漏至关重要的架构影响因素(失败率约50%);

 

2. 不能驯服频繁变化的需求(失败率约40%);

 

3. 不能覆盖架构各方面(失败率约30%);

 

4. 不能验证架构并作出调整(失败率约40%);

 

这些导致业主方得不到真正满足他们需求的系统,因此我们在架构准备阶段要确定系统关键质量和关键功能。

 

确定关键质量有以下五大原则:

 

1. 考虑多方涉众

 

业主方不仅关注功能,同时也需要质量。业主方关注的质量可能包括易用性、性能、持续可用性、稳定性和健壮性等。业主方不一定是最终用户,比如电信网上营业厅系统的客户是电信公司,但最终用户可能是终端用户或系统配置员,他们所关注的质量属性可能并不一致。

 

2. 检查性思维

 

随时检查各个质量属性,判定每一项是否确实算得上“关键质量”,从而防止遗漏关键需求。

 

3. 识别矛盾+划定优先级;

 

4. 严格程度符合领域与规模特点;

 

5. 关键质量属性个数根据项目、产品、平台不同而不同。

 

确定关键功能要区分出核心功能、必做功能、高风险功能、独特功能。关键功能子集的确定不存在所谓的标准答案,关键功能所占比例应灵活确定,大概占20%~30%。

 

第二阶段:架构分割即概要架构阶段

 

本阶段是大型系统成败关键,根据重大需求,确定概要架构。概要架构要满足“架构=组件+交互”的基本定义,对高层组件的“职责”进行笼统界定,并给出高层组件的相互关系,不应涉及接口细节。实际上,架构设计的驱动力是“功能+质量+约束”,概要架构阶段根据重大需求、特殊需求、高风险需求形成稳定的高层架构设计成果。

概要架构可分为3个步骤:

 


 

1. 基于关键功能(而不是对所有功能)、借助鲁棒图(而不是序列图)进行初步设计;

 

2. 综合初步设计确定高层分割;

 

3. 考虑非功能性需求做出相应决策,非功能性需求包括可用性、安全性、性能、易用性、可修改性、可测试性等,架构设计更应该关注非功能性需求,考虑非功能性需求要趁早。

 

第三阶段:架构划分即细化架构阶段

 

本阶段是团队大规模并行开发基础阶段,要细化架构设计,关注不同视图。在概念架构阶段输出系统解决方案,但是方案并不等同于架构。方案是“项目+需求+架构”的总览,方案包含一定的架构内容,但是架构设计的工作还远未完成,还需细化架构。

细化架构与概念架构是存在差异的。

 

在细化架构中,接口占据非常核心的地位,而概念架构并不关心明确的接口定义(只有抽象的组件和抽象的交互机制)。

 

细化架构重视通过子系统和模块来分割整个系统,并且子系统往往有明确的接口;而概念架构中只有抽象的组件,这些组件没有接口。

 

细化架构基于接口编程、消息机制或远程方法调用进行实在的交互;而概念架构的交互是“概念化”的,如“A层使用B层服务”。

 

细化架构包括逻辑架构、物理架构、运行架构、开发架构、数据架构。

 


 

最后在架构设计过程中要持续贯穿关注非功能需求,包括可用性、安全性、性能、易用性、可修改性、可测试性等,架构设计应该关注非功能性需求,更要提前关注非功能性需求。它是一个系统是否可用、好用的关键,也是一个系统架构设计是否成功的关键。

 

分享到:
地址:福建省福州市铜盘路软件大道89号软件园A区26号楼 电话:0591-83519233 传真:0591-87882335 E-mail:doone@doone.com.cn
版权所有 新东网科技有限公司 闽ICP备07052074号-1 闽公网安备 35010202001006号