首页 > 其他分享 >一线架构师实践指南读书笔记

一线架构师实践指南读书笔记

时间:2023-04-25 19:02:10浏览次数:44  
标签:指南 需求 功能 架构 架构设计 读书笔记 控制流 系统 架构师


重大风险:功能 质量 约束
高层切分:借助鲁棒图,初步识别功能别后的职责,就可以规划高层切分的具体方式
分析和综合是思维方向相反的过程。一般是先分析后综合,没有分析就不能综合,没有综合,也只是片面的分析
通过系统切分,虽然无法降低复杂性,当可以控制复杂性

分层式概念架构:逻辑层 物理层 通用性分 技术堆叠
概念架构:系统切分 技术选择 权衡策略
考虑非功能性需求:目标 场景 决策
质疑驱动架构
方案和架构的区别:方案包含一定的架构内容,方案涉的架构基本在概念一级 架构设计工作还远远未完成
细化结构和概念架构的区别:接口 子系统 交互机制
概念架构(概念及方案) 细化架构(规约及方案)
细化架构属于架构设计不是详细设计

概念 细化 实现
概念架构第一阶段  逻辑架构和物理架构是同一阶段


架构设计依赖:
明确的业务需求-愿景
全面的用户需求-用例图
典型的行为需求-用例规约 (此时架构与需求并行)


4大环境:
业务环境,使用环境,构建环境,技术环境


3大需求:
业务需求(项目视图和范围文档)
用户需求(用例文档)
功能需求(系统需求)



多重架构视图必不可少,因为不同涉众(用户,客户,开发人员,测试人员,维护人员,内部操作人员,其它人员)需要从各自的角度理解和使用架构。
架构设计的内容和决策多,超过了人脑一蹴而就的能力范围,因此采用不同的世界分别设计,对软件架构的理解交流提供了方便
数据量大+计算量大
物理结构主要着重考虑运行软件的计算机 网络 硬件设施情况,还包括软件的部署以及运行时的配置情况,还包括软件系统和硬件系统在内的这个it系统是如何相互影响的


物理架构:1,硬件选择 物理拓扑  2,软件到硬件映射 3,方案优化
降低开销 避免争用 来实现高性能和高可伸缩性


物理架构思维框架:目标层(XX性),思维层(XX开销,xx争用),结果层(软件单元, 数据单元, 物理节点, 网络)


运行架构:如果系统中没有引入并行处理或者并发处理,并且系统也没有基于sdk,api等基础软件进行定制开发,那就不许要运行架构


运行架构包括:1,控制流(进程线程,中断的服务)2,控制流组织(系统启动停机 控制流通信 加锁或者同步)


确定引入控制流的几点建议:为了实现节点之间的通信,通常的做法是引入一条控制流来专门负责,物理架构中每个节点至少有一个控制流,节点是具有主动行为的设备,并为其引入专门的控制流,来自用户或者外部系统的并发访问,常需要后端服务支持多控制流。在需求一级描述的并发或者并行的也需要引入控制流


一单系统中不止一条控制流,则需要附加工作量(创建 销毁 建立共享内存 消息)等不同工作量直接的通信机制


控制流:是再一个处理机上顺序执行的系列动作。控制流图显示了系统中不同控制流之间的关系,控制流的起点是主动单元,它会调用被动单元,如此层层调用,就形成了一个控制流。明确了系统中所有的主动单元,就抓住了每个控制流的源头,从而可以把并发执行的所有控制流程理清楚。


运行架构设计工作只要把握住控制流图,就能提纲挈领的开着其它设计工作


控制流的常用手段:进程 线程 中断的服务 


------------------------------------------------
开发架构:1,逻辑单元映射为程序单元(自主编写源程序,可重用的库和框架,其它方式:shell 平台下的配置文件)2,开发技术选项(语言,工具)3,程序单元间的关系(project划分,project目录,编


译依赖关系)此project是指ide下的


为何开发人员重复修改bug:架构师 1,重交付 轻维护2,重视小粒度重用,忽视大粒度重用
重用价值=重用次数*单次价值
------------------------------------------------
数据库错误和架构选择错误是致命的错误


确定数据分布方案是数据架构的难点。


数据分布的策略:独立(应用不同,schema不同) 集中(集中存储分布访问,应用不同,schema相同) 分区(相同程序不同实例,相同数据模型不同数据) 复制(实时或者快照) 子集(保寸部分数据,本地化


固定的数据) 重组(业务决定功能,功能决定模型。技术etl) 


数据分布策略应用的原则:1,把握系统特点,确定分布策略(合适原则)2,不同分布 策略可以综合使用(综合原则)3,从对吗 好吗两方面优化(优化原则)



----------------------------------------------------------
pre架构阶段就要1,考虑系统重点支持的关键质量目标 2,关键指标有没冲突,并制定权衡取舍策略


功能需求 质量属性 约束 共同决定了结构
基于:业务背景 系统规模 技术趋势 开发团队现状等情况,对需求进行理性的有针对的权衡取舍补充。
软件需求=功能需求+质量属性+约束


确定关键质量:1,分类合适 +必要扩充 (提供基础)2,考虑多发涉众 (必要扩充)3,检查性思维4,识别矛盾划定优先级 (折冲依据)5,严格程度符合领域和规模特点(定量参考)


强大的api支持,便于二次开发
基于spi(服务编程接口)的可扩展设计


概念架构师售前的必修课


架构设计贵在有针对性,重大需求 高风险需求 特色需求,给出高层次的解决方案。备选架构经常是概念一级的
概念架构为投标 售前 市场宣传 等工作提供强有力的支持。所以概念架构师市场和售前的必修课


基于关键功能进行初步设计,综合初步设计进行高层切割,考虑非功能需求做出相应决策
四拍决策者:决策时拍脑袋就这么定了 指挥时拍胸脯保证没问题 失误时拍大腿我怎么没想到 追查时拍屁股老子不干了


软件质量很飘,如何使很飘的非功能需求稳定下来1,需求决定架构,架构设计的结果已经属于解决方案的范畴2,架构设计是从需求域向设计域的过度过程3,很飘意味着非功能需求导出设计决策跨度太大了4,需要一种过度技术承上启下,它就是场景技术


以场景为跳板的非功能目标设计思维 目标 场景 决策 


场景的5要素:影响来源,如何影响 受影响对象 问题或价值 所处环境


场景是基础技术 用例是应用技术。
通过场景化增强非功能需求的验证性。



标签:指南,需求,功能,架构,架构设计,读书笔记,控制流,系统,架构师
From: https://blog.51cto.com/u_16088628/6224881

相关文章

  • ShareSDK 微信平台注册指南
    注册微信平台账号登录微信开放平台网址微信开放平台网址: https://open.weixin.qq.com/开发者认证1.进入账号中心,进行开发者企业认证2.认证成功后如截图所示注意:开发者企业认证和安卓端需要提交的软著公司需一致,否则需提供软著授权协议证明创建应用填写基本信息按照要求填入填入......
  • TStack_独立网络节点硬件更换指南
    目录问题背景操作范围适用版本影响范围操作时段操作步骤1.查找所有位于该节点的主路由ID2.切换所有主路由到其它网络节点3.路由切换验证4.关闭网络服务5.关机6.硬件更换7.开机并检查服务问题背景由于服务器硬件问题,需要对该独立的网络节点进行关机更换硬件操作,该网络节......
  • Frida官方文档-快速入门指南
    对于不耐烦的人,这里是使用Frida进行跟踪的方法~$pipinstallfrida-tools~$frida-trace-i"recv*"-i"read*"*twitter*recv:Auto-generatedhandler:…/recv.js#(snip)recvfrom:Auto-generatedhandler:…/recvfrom.jsStartedtracing21functions.PressC......
  • 界面控件DevExtreme使用指南 - 折叠组件快速入门(二)
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能齐全的数据网格、交互式图表小部件、数据编辑器等。请注意:在开始本教程之前,请确保DevExtreme已安装在Angula......
  • 使用Plist编辑器——简单入门指南
     本指南将介绍如何使用Plist编辑器。您将学习如何打开、编辑和保存plist文件,并了解plist文件的基本结构和用途。跟随这个简单的入门指南,您将掌握如何使用Plist编辑器轻松管理您的plist文件。plist文件是一种常见的配置文件格式,用于存储应用程序或系统的设置信息,如键值对、......
  • Apple 的 plist 编辑器入门指南:基础操作与高级功能详解
     PlistEditPro是一款专为macOS编写的最高级属性列表Plist编辑器。对于Mac和IOS开发人员来说,编写应用程序时必须编辑各种列表文件。PlistEditPro通过提供直观且功能强大的界面,使编辑这些文件更加容易。它不仅能够复制和粘贴或拖放属性列表数据,还提供强大的搜索和替换功能,并......
  • java架构师视频教程
    我真的希望大家能坚持学完我的这套java架构师视频教程,我知道这的确要花费很多的时间和精力,还有大量的练习,我在开始学习的时候也和大家一样的厌倦学习,中途想要放弃。但想想看,既然知道我的这套java架构师的确是非常有效果的,并能改变我们的技术能力,让我们在工作中一生受益,那为什么不......
  • 向着Vue3进发,Vue2.7升级指南
    北京时间7月1号,Vue2.7正式发布,Vue2.7支持你的项目在不升级Vue3的情况下使用Vue3的特性,例如CompositionApi、setup、Cssv-bind等。与此同时,Vue2.7也是Vue2.X的最终次要版本,在这个版本之后,Vue2将进入LTS(长期支持),即从现在开始持续18个月,Vue2将不再接收新功能。对于一些老项目来说......
  • 《Redis设计与实现》读书笔记
    《Redis设计与实现》读书笔记简单动态字符串SDS的定义结构:buf数组:用于保存字符串len属性:记录SDS中保存字符串的长度free属性:记录buf中未使用字节数量遵循C字符串以空字符串结尾的惯例,保存空字符串的字节不计入长度SDS与C字符串的区别常数复杂度获取字符串长度因为SDS中......
  • 提高开发生产力 - 生产力指南篇(之一)
    生产力指南篇-之一自行打开IDEA-help-Myproductity(旧版本叫ProductityGuide),idea统计的生产力特性,熟练掌握这些特性,开发事半功倍Tips:大部分特性包含快捷键炒作,快捷键因为WINMAC或者idea键位不同,然后IDEA提供了多种版本快捷键,所以选择自己适合的即可(sublime/ec......