热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

架构分析

一、架构分析架构分析是在功能性需求过程中,有关识别非功能性需求的活动,事实上非功能需求就是质量需求,这些信息对于架构设计来说,

一、架构分析
架构分析是在功能性需求过程中,有关识别非功能性需求的活动,事实上非功能需求就是质
量需求,这些信息对于架构设计来说,是最值得关注的。
1,架构分析需要解决的问题
下面说明在架构级别上,需要解决的诸多问题的一些示例:
可靠性和容错性需求是如何影响设计的?
购买的子组件的许可成本将如何影响收益?
分布式服务如何影响有关软件质量需求和功能需求的?
适应性和可配置性是如何影响设计的?
2.架构分析的一般步骤
架构分析有多种方法,大多数方法都是以下步骤的变体。
辨识和分析影响架构的非功能性需求。
对于那些具有重要影响的需求而言,分析可选方案,并做出处理这些影响的决定,这就是架
构决策
二、识别和分析架构因素
1,架构因素
2,质量场景
3,架构因素的描述
架构分析的一个重要目标,是了解架构因素的影响、优先级和可变性(灵活性以及未来
演变的直接需要)。因此,大多数架构方法,都提倡对以下信息建立一个架构因素表。
因素 测量和质量场景 可变性(当前灵活性和未来演化) 因素(和其变化)对
客户的影响,架构和
其它因素



困难
或风

可靠性 --- 可恢复性

远 程
服 务
失 败
中 恢
复。
当远程服务失败
的时候,侦听到远程
服务重新在线的一
分钟内,重新与之建
立联系,在产品环境
下实现正常的存储
装载。
当前灵活性—我们的 SME 认为
直到重新建立连接前,本地客户简
化的服务是可以接受的(也是可取
的)。
演化—在 2 年之内,一些零售商
可能选择支付本地完全复制远程服
务的功能(如税金计算器)。可能
性?高。
对大规模设计影
响大。
零售商确实不愿
意远程服务失败,因
为这将限制或阻止
它们使用 POS 进行
销售。
高 低
…… …… …… ……
注:SME 表示主题专家。
4,从需求文档中获取架构因素
在架构设计中,中心功能需求库就是用例,它的构想和补充规范,都是创建因素表的重
要源泉。在用例中,特殊需求、技术变化、未决问题应该被反复审核。其隐含或者清晰的架
构因素要被统一整理到补充规范里面去。
三、架构因素的解析
架构设计的技巧就是根据权衡、相互依赖关系和优先级对架构因素的解决做出合适的选
择。但这还不全面,老练的架构师具有多种领域的知识(例如:架构样式和模式、技术、产
品、缺陷和趋势),并且能把这些知识应用在它们的决定中。
1,记录架构的可选方案、决定和动机
技术备忘录的格式并不重要,关键是简单、清楚、表达信息完整。
技术备忘录
问题:可靠性---从远程服务故障中恢复
解决方案概要:通过使用查询服务实现位置透明,实现从远程到本地的故障恢复和本地服务的部分复制
架构因素
从远程服务中可靠恢复
从远程产品数据库的故障中可靠恢复
解决方案
在服务工厂创建一个适配器……
动机
零售商不想停止零售活动……
遗留问题

考虑过的备选方案
与远程服务厂商签订“黄金级”服务协议……
2,优先级
下面是指导做出架构决定目标:
不可改变的约束,包括安全和法律方面的事务
业务目标
其它全部目标
四、模块化设计策略
1,模块化设计的概念
也就是说,模块并不是越多越好,只有模块数量适当的时候,总体成本才可能下降。
2.实现模块化的手段
抽象:抽出事物的本质特性而暂时不考虑它们的细节。
信息隐蔽:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)
对于不需要这些信息的模块来说,是不可访问的。
模块独立性问题:
模块独立是指开发具有独立功能而且和其它模块之间没有过多的相互作用的模块。
模块独立的意义:
1)功能分割,简化接口,易于多人合作开发同一软件;
2)独立的模块易于测试和维护。
模块独立程度的衡量标准:
1)耦合性:对一个软件结构内不同模块间互连程度的度量。
2)内聚性:标志一个模块内各个处理元素彼此结合的紧密程度,理想的内聚模块只
做一件事情。
3,模块化设计的一般准则
1)改进软件结构,提高模块独立性。
2)模块规模应该适中(最好能写在一页纸上)。
大模块分解不充分;小模块使用开销大,接口复杂。
3)尽量减少高扇出结构的数目,随着深度的增加争取更多的扇入。
扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块。一般来说,顶层扇出
高,中间扇出少,低层高扇入。
4)模块的作用范围保持在该模块的控制范围内。
模块的作用范围是指该模块中一个判断所影响的所有其它模块;模块的控制范围指该模
块本身以及所有直接或间接从属于它的模块。
5)力争降低模块接口的复杂程度
模块接口的复杂性是引起软件错误的一个主要原因。接口设计应该使得信息传递简单并
且与模块的功能一致。
6)设计单入口单出口的模块
避免内容耦合,易于理解和维护。
7)模块的功能应该可以预测
相同的输入应该有相同的输出,否则难以理解、测试和维护。


推荐阅读
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • 分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
    随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ... [详细]
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 一家位于长沙的知名网络安全企业,现面向全国诚聘高级后端开发工程师,特别欢迎具有一线城市经验的技术精英回归故乡,共创辉煌。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 8个IDC大数据基础定义解析丨IDC
    本文针对IDC数据行业相关名词术语进行解析,分为4组相关概念,希望大家读完 ... [详细]
  • 近年来,区块链技术备受关注,其中比特币(Bitcoin)功不可没。尽管数字货币的概念早在上个世纪就被提出,但直到比特币的诞生,这一概念才真正落地生根。本文将详细探讨比特币、以太坊和超级账本(Hyperledger)的核心技术和应用场景。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • ABP框架是ASP.NET Boilerplate的简称,它不仅是一个开源且文档丰富的应用程序框架,还提供了一套基于领域驱动设计(DDD)的最佳实践架构模型。本文将详细介绍ABP框架的特点、项目结构及其在Web API优先架构中的应用。 ... [详细]
author-avatar
龙love猫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有