软件架构师应该知道的97件事

1.  客户需求重于个人简历 ( Nitin Borwankar )

客户需求至上。为了自己的简历更炫而采用新技术是沽名钓誉,往往事与愿违。

//-----

这里讲的是需求,其实听过一个故事,山寨产的吹空盒子用大风力电扇,而大公司却花重金,用各种技术来判断,其实实现的效果都是一样的.软件的3个元素,时间,成本,质量之前的权衡,选择一个平衡点,才是关键.

还有技术上还是选择自己可以把控的技术这样会比较好点,避免了风险.

 

2.  简化根本复杂性 ,消除偶发复杂性 ( Neal Ford )

分析问题好比拨云见月、水落石出。

//面对业务分析,我比较经常的手段是, 用户的用例图分析, 哪些角色 做了哪些动作 , 分享完了这些,进行提炼,分析出所需要操作的实体 Entity 在分析出Entity之间的Relation,在根据 Entity和Relation得到View,这些在给Actor看,是否是Actor需要的,这样进行迭代,几次就差不多了.先理清楚,在下手.

 

3.  关键问题可能不是出在技术上 ( Mark Ramm )

团队同心,其利断金。

//技术只是一个方面可以学,可以培训,可是团队如果没有和谐,相互包容的气氛是不行的.团队是互补性的,一起进步才行,现在不是个人英雄的时代的了.

 

4.  以沟通为中心,坚持简明清晰的表达方式和开明的领导风格 ( Mark Richards )

沟通应当言简意赅、详略得当,别拖泥 带水。

//问题大家说说就知道的了,怎么做就可以行动了,但是对于标准的制定上还是有一个人要强势的制定一个标准,当然也要听大家的意见.

 

5.  架构决定性能 ( Randy Stafford )

种瓜得瓜,种豆得豆,架构设计也是一 样道理。

//钢筋混凝土的时代还在继续,性能有待提升,先完成需求在进行优化,功能胜于性能,但是必须不但完善自己的设计,这个也是自己得把握的,毕竟现在为老板干活看到的是效果.

 

6.  分析客户需求背后的意义 ( Einar Landre )

抽丝剥茧,洞见症结。不要被表面需求 迷惑。

//对于客户的需求不是每个都需要的,有些是可以略去的,有些是可以通过技术来实现掉的,我自己的原则是,做有意义的功能,对于客户提出的复杂而没有实际使用价值的功能,会尽量去避免

 

7.  起立发言 ( Udi Dahan )

起立发言效果更好。

//这个很少,原来有过段时间的早会,后来取消了,这个和国内的大环境有关

 

8.  故障终究会发生 ( Michael Nygard )

应该提前设计预防措施,限制故障。

//故障,主要是安全方面,还有硬件的稳定性方面,硬件方面不好避免,可是系统安全方面真的得发时间,处理注入和跨站等问题,需要贯彻到所有的开发过程中,注意变量的过滤,审核大家的提交的代码.

 

9.  我们常常忽略了自己在谈判 ( Michael Nygard )

工程师应该适时转换角色,学习谈判的 技巧。

//对于分析师或者架构师,是衔接开发人员和需求人员的一个接口角色,有的时候必须考虑到开发团队的时间及利益,需要去谈判

 

10. 量化需求 ( Keith Braithwaite )

没有规矩,不成方圆。

//需求整理很重要,我自己用的是MindManager在导出成文档.

 

11. 一行代码比五百行架构说明更有价值 ( Allison Randal )

可工作的代码才是目标,设计只是达成 目标手段。

//设计和实现,二者同样重要,设计是为了能够更好的实现,实现是为了验证设计,这个是提高的过程,只有去实践了才会有更好的设计

 

12. 不存在放之四海皆准的解决方案 ( Randy Stafford )

软件世界没有万 能 钥 匙。

//个别项目,个性化的设计,别考虑太多了,但是可以公用的,还是得把它提出来复用的

 

13. 提前关注性能问题 ( Rebecca Parsons )

尽早展开性能测试。

//性能测试往往在小团队里面会被忽视掉了,这个也是个很大的问题,性能测试我现在做的主要是

1.数据库方面的优化,索引,表结构,SQL语句方面,在设计好E-R图后,创建相关的业务VIEW,然后填充数据进行测试

2.在界面上部署时,会进行JS,CSS等的压缩处理,减少页面大小

3.使用ajax减少页面同时加载信息数

4.业务逻辑进行单元测试,关注逻辑性能

 

14. 架构设计要平衡兼顾多方需求 ( Randy Stafford )

平衡兼顾项目的技术需求和相关各方的业务需求。

//业务需求,和技术需求,一个处于项目需求方,一个针对内部团队.架构设计,往往是沿用自己熟练的框架,对于业务需求方面主要是界面,和用户交互,以及用户体验,往往技术选用在内部团队需要有一个普及过程.

 

15. 草率提交任务是不负责任的行为   ( Niclas Nilsson )

要设法杜绝开发人员草率提交任务的念头。

//代码审核,code review 没有几个team会去认真做,这个在国内很普遍,我在的公司都没咋个做,也是很无奈啦...

 

16. 不要在一棵树上吊死   ( Keith Braithwaite )

为客户提供多样化的解决方案。

//解决方案都是用解决方案模板的,针对不同的公司修改的,在国内方案往往很不被重视,关键在于酒桌和关系,无奈了.

 

17. 业务目标至上 ( DaveMuirhead )

技术决策不能脱离业务目标和现实条件的约束。

//在规定时间内能够上线,不出大的问题,这个是最重要的.

 

18. 先确保解决方案简单可用,再考虑通用性和复用性   ( Kevlin Henney )

//在 时间 和 资金 还有 精力方面权衡了...代码重构还是在自己有体力,有心情的时候做,效率才会高


19. 架构师应该亲历亲为 ( JohnDavies )

身先士卒才能赢得同事的信任。

//技术必须是自己验证过可行了在进行普及

 

20. 持续集成 ( DavidBartlett )

//集成,这个就是不断完善自己的架构,或者说是框架了,自己用起来顺手就好了

 

21. 避免进度调整失误 ( NormanCarnovale )

不惜一切代价拒绝调整项目进度的要求。

//进度调整往往来自老板或者是需求方,这个也是很无奈的事情

 

22. 取舍的艺术 ( Mark Richards )

架构不可能满足所有需求。

//按照自己的方向,做自己这个领域内的架构,自己用起来顺手,提高工作效率就好了

 

23. 打造数据库堡垒 ( Dan Chak )

一开始就要定义好数据模型。

//数据库的设计和复用,最近这段时间来对数据库的设计上面还是认真的考虑到了复用了

 

24. 重视不确定性 ( Kevlin Henney )

推迟决策,建设性地利用不确定性。

//不确定性太多了,决策的时候往往没有经过足够的验证

 

25. 不要轻易放过不起眼的问题 ( Dave Quick )

别忘了温水煮青蛙的故事。

//小问题导致的问题很多,往往在SQL的没写好,导致性能的严重问题.

 

26. 让大家学会复用 ( Jeremy Meyer )

重复利用已有资源,首先要改变大家的观念。

//这点需要善于去看别人的文章,别人的代码,这点现在锻炼的比较好了,比较喜欢去看别人的代码,特别喜欢逛开源的网站了 google code, sourceforge等

 

27. 架构里没有大写的“I ” ( DaveQuick )

变让自己变成自大狂。

//自大狂不至于,定一个规范和标准必须是有一个决策者的

 

28. 使用“ 一千英尺高” 的视图 ( Erik Doernenburg )

选择合适的架构视图。

//可伸缩的视图才是需要的,小到块视图,达到整体的视图,以类图和E-R图表现出来

 

29. 先尝试后决策 ( Erik Doernenburg )

//做决策必须结果论证

30. 掌握业务领域知识 ( Mark Richards )

//业务的分析能力需要基类的

 

31. 程序设计是一种设计 ( EinarLandre )

软件开发也分成设计和生产两个阶段。

//设计和生产,还没达到这样的

 

32. 让开发人员自己做主 ( PhilipNelson )

//对架构或者框架进行扩张是个好主义

 

33. 时间改变一切 ( PhilipNelson )

选择值得投入精力的工作,别跟以前的工作过不去。

//但凡认真的做事情,总是会进步的

 

34. 设立软件架构专业为时尚早 ( Barry Hawkins )

//这个也可以开课讲的?

 

35. 控制项目规模 ( DaveQuick )

//项目的规模是需求方主导的

 

36. 架构师不是演员,是管家 ( Barry Hawkins )

别忘了你的工作责任。

//需要综合考虑 资源 时间 进度等

 

37. 软件架构的道德责任 ( Michael Nygard )

架构师的决定会影响许多人,务必慎重。

//项目流产,架构师要负很大的责任的,当然项目经理的责任更多些

 

38. 摩天大厦不可伸缩 ( Michael Nygard )

但软件可以。

//要什么样的东西,先设计好,画个图给大家看看

 

39. 混合开发的时代已经来临 ( Edward Garson )

//何为混合开发?

 

40. 性能至上 (CraigRussell )

//进度,性能,自动化,需要的是一个平衡,应该不能强调某个重要方面

 

41. 留意架构图里的空白区域 ( Michael Nygard )

空白区域“充满”了各种软件和“硬件”。

//写好备注还是很重要的,一些实现是需要前置和后置条件的

 

42. 学习软件专业的行话 ( Mark Richards )

同行之间讲行话方便交流。

//吹也要对想听的人吹就好了

 

43. 具体情境决定一切 ( Edward Garson )

//可以复用的就复用了,个性化的东西托出来研究

 

44. 侏儒、精灵、巫师和国王 ( Evan Cofsky )

开发团队不应该同质化。

//各司其职,互补,共进,可是现在我还没在这样的团队里面过

45. 向建筑师学习 ( Keith Braithwaite )

借鉴建筑行业的经验。

//设计模式还是得用的,别过渡就好了,我就会2-3个...嘎嘎,经常用的.

46. 避免重复 ( Niclas Nilsson )

//重复无法避免

47. 欢迎来到现实世界 ( Gregor Hohpe )

现实世界比软件世界复杂。

//真的做这些功能是现实世界需要的功能么>

48. 仔细观察,别试图控制一切 ( Gregor Hohpe )

49. 架构师好比两面神 ( DavidBartlett )

架构师应该像两面神一样,眼观六路、耳听八方。

50. 架构师应关注边界和接口  ( Einar Landre )

寻找自然的边界,分而治之。

51. 助力开发团队 ( Timothy High )

优秀团队是成功的保障,要尽量助力开发团队。

52. 记录决策理由 ( Timothy High )

记录架构决策背后的理由,具有极高的投资回报价值。

53. 挑战假设, 尤其是你自己的 ( Timothy High   )

臆断是事情搞砸的主要根源。务必要确保软件基石坚实可靠。

54. 分享知识和经验 ( Paul W. Homer )

帮助周围的人不断改善,他们也会帮助我们发挥出全部的潜力。

55. 模式病 ( Chad La Vigne )

不要让一展设计模式功力的欲望,遮蔽了务实的真知。

56. 不要滥用架构隐喻 ( DavidIng )

不要耽溺于系统隐喻之中,反让它拖了后腿。

57. 关注应用程序的支持和维护 ( Mncedisi Kasper )

应用程序的支持和维护,永远都不应该是事后才考虑的事情。

//这点还是很关键的了,很多时候都是开发完了就不想去弄他们的了..

58. 有舍才有得 ( Bill de hóra )

珍惜需要权衡的时机,远胜毫无约束和限制。

59. 原则、公理和类比胜于个人意见和口味 ( Michael Harmer )

60. 从“ 可行走骨架” 开始开发应用 ( Clint Shank )

从“ 可行走骨架” 开始,增量培育系统成长 。

61. 数据是核心( Paul W. Homer )

从“数据是核心”这个角度去认识系统,能大大降低理解复杂度 。

//数据是个核心问题需要好好的解决掉,做好备份

62. 确保简单问题有简单的解 (Chad La Vigne )

63. 架构师首先是开发人员 (Mike Brown )

碰到麻烦时,架构师可不能只会干吹烟圈却束手无策。

//技术是自己的强项

64. 根据投资回报率(ROI )进行决策( George Malamidis )

65. 一切软件系统都是遗留系统( Dave Anderson )

软件很快便会过时,修改维护无可避免。

66. 起码要有两个可选解决方案( Timothy High )

67. 理解变化的影响 ( Doug Crawford )

清楚认识变化类型及其影响。

68. 你不能不了解硬件( Kamal Wickramanayake )

硬件容量规划,是和软件架构同等重要的事情。

69. 现在走捷径,将来需付息( Scot Mcphee )

及时还清技术债务。

//这点深刻的体会到了,自己问题的所在呵呵....

 

70. 不要追求“完美”,“足够好”就行( Greg Nyberg )

避免过度设计。

71. 小心“好主意” ( Greg Nyberg )

//有些变更,还有重构不一定要立马做,要测试完全没有问题在进行,否则会完蛋的

72. 内容为王 ( Zubin Wadia )

73. 对商业方,架构师要避免愤世嫉俗( Chad La Vigne )

74. 拉伸关键维度,发现设计中的不足( Stephen Jones )

75. 架构师要以自己的编程能力为依托( Mike Brown )

76. 命名要恰如其分( SamGardiner )

弄清楚要做的究竟是什么。

77. 稳定的问题可以获得高质量的解决方案( Sam Gardiner )

78. 天道酬勤( Brian Hart )

真正做好那些看似简单的任务,坚守承诺。

79. 对决策负责( Yi Zhou )

80. 弃聪明,求质朴( Eben Hewitt )

81. 精心选择有效技术,绝不轻易抛弃( Chad La Vigne )

82. 客户的客户才是你的客户!( Eben Hewitt )

83. 事物发展总会出人意料 ( Peter Gillard-Moss )

设计是在不断变化的世界中持续进行探索试验的过程。

84. 选择彼此间能和谐共处的框架 ( Eric Hawthorne )

当心“无所不能”型的框架。

85. 着重强调项目的商业价值( Yi Zhou )

86. 不仅仅只控制代码,也要控制数据 ( Chad La Vigne )

87. 偿还技术债务 ( Burkhardt Hufnagel )

在速度和架构间进行权衡,保持平衡。

88. 不要急于求解( Eben Hewitt )

首先看看是否可以改变问题。

89. 打造称手的系统( Keith Braithwaite )

90. 找到并留住富有激情的问题解决者 ( Chad La Vigne )

91. 软件并非真实的存在 ( Chad La Vigne )

虚拟世界中的软件是柔韧可变的。

92. 学习新语言 ( Burkhardt Hufnagel )

防止沟通不畅和误解 。

93. 没有永不过时的解决方案( RichardMonson-Haefel )

94. 用户接受度问题( NormanCarnovale )

减轻用户接受度问题带来的风险。

95. 清汤的重要启示 ( Eben Hewitt )

软件架构设计需要不断的精炼浓缩。

96. 对最终用户而言,界面就是系统 ( Vinayak Hegde )

97. 优秀软件不是构建出来的,而是培育起来的( Bill de hóra )

 

转

Qt 调用YOLO模型(代码) 本文介绍了如何在 Qt C++ 环境中集成 YOLO 模型进行目标检测,包括模型封装、界面设计和实时处理等关键步骤。通过这种方法,你可以快速开发出具有目标检测功能的 Qt 应用程序,应用于监控系统、机器人视觉、图像分析等多个领域。 阅读详情

相关推荐

Plant Simulation新手入门:5步搞定生产线物流仿真(附模型库使用技巧)

本文为Plant Simulation新手提供了从零开始构建生产线物流仿真的五步入门指南。通过理念重塑、流程规划、对象连接、参数设置到数据分析的完整流程,帮助用户快速掌握这一强大仿真工具的核心逻辑。文章特别强调了模型库的高效使用技巧,助力工程师在虚拟环境中精准模拟和优化生产系统,提升规划效率。

efc123456的博客 334

DHT11数据老跳变?手把手教你为ESP-IDF项目添加软件滤波与数据校准

本文详细介绍了如何解决DHT11温湿度传感器数据跳变问题,提供了ESP-IDF框架下的三种软件滤波算法(滑动平均、中值滤波、卡尔曼滤波)和两种校准方法(硬件对比校准和软件补偿校准)。通过FreeRTOS任务设计和电源优化技巧,帮助开发者提升DHT11在ESP32项目中的数据稳定性,适用于智能家居、农业监测等物联网应用场景。

weixin_33676492的博客 485

PG-FP6编程器错误代码解析与高效排障实战指南

在嵌入式系统开发与量产烧录中,编程器是连接开发环境与目标硬件的重要桥梁。其工作原理是通过特定的通信协议(如UART、SWD)与微控制器(MCU)建立连接,完成程序代码的写入、擦除与校验。这项技术的核心价值在于确保固件能够准确、可靠地部署到硬件中,是产品从原型到量产的关键环节。在实际的工程实践中,尤其是在使用瑞萨(Renesas)PG-FP6这类编程器进行调试或批量生产时,工程师常会遇到各种通信失败、编程验证错误或电源异常等问题,这些问题往往以特定的错误代码形式呈现。深入理解这些错误代码背后的硬件连接、电源时

weixin_34387468的博客 580

软件架构与框架

描述软件架构与框架之间的区别与联系定义:软件架构:软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。设计软件架构就是把系统分解为一些部件,描述这些部件的职责及它们之间的协作行为。软件框架:软件框架是面向领域(如 ERP、计算领域等)的、可复用的“半成品”软件,它实现了该领域的共性部分,并提供了一些定义良好的可变点以保证灵活...

weixin_36317299的博客 3万+

2024最新指南:如何用Python批量下载Sentinel-2数据(附避坑清单)

本文提供2024年最新Python批量下载Sentinel-2遥感数据的完整指南,涵盖环境配置、API准备、核心下载流程实现及实战避坑清单。通过智能查询器、断点续传下载器等实用工具,帮助用户高效获取遥感数据,避免常见网络问题和数据完整性验证失败。

silver的专栏 618

Visual Studio Community与Visual Studio Community与VS Code有啥区别

Visual Studio Code提供了基本的代码编辑、调试和版本控制功能,以及丰富的插件和扩展库。Visual Studio Community和Visual Studio Code在功能上有很大的差异,Visual Studio Community提供了比Visual Studio Code更多的功能,包括代码重构、智能提示、图形化设计等。他的优势在于它的轻量级和灵活性。此外,Visual Studio Code还具有丰富的扩展和插件生态系统,用户可以通过安装插件来扩展其功能,从而满足自己的需求。

m0_56551554的博客 2843

软件架构师的宝典:《软件架构师应该知道的97件事》

软件架构师的宝典:《软件架构师应该知道的97件事》 【下载地址】软件架构师必备知识资源 软件架构师必备知识资源 项目地址: https://gitcode.com/Open-source-documentation-tutoria...

gitblog_06699的博客 937

1.14、基于NARX神经网络的磁悬浮建模(matlab)

数据准备:首先,需要准备用于训练和测试的磁悬浮系统的输入和输出数据,包括磁力、电流、位置、速度等信息。数据可以被保存在MATLAB的数据文件中,并加载到工作空间中。使用MATLAB的神经网络工具箱,创建一个NARX神经网络。需要定义网络的层次结构、节点数、激活函数等参数。通常,NARX网络包括自回归层和外部输入层。数据预处理:对加载的数据进行预处理,包括去除噪声、归一化处理等操作,以确保数据质量和网络训练的稳定性。使用MATLAB的训练函数,如trainlm或者trainbr,对NARX神经网络进行训练。

XU157303764的博客 1999

软件架构师应该知道的97件事.pdf

软件架构师应该知道的97件事.pdf

十年回首,一纸感动! 382

Node-RED教程(二):Node-RED的面板的操作

Node-RED系列(二):Node-RED的面板的操作 要使用Node-RED去搭建一个物联网平台,链接设备,设备通信,就必须要先熟悉Node-RED的这种面板,对于一个新的项目,在动手做之前一点想对这个的技术的文档有足够的了解做起来才能游刃有余。本期我给大家介绍一下Node-RED的各种面板,熟悉这些面板后,在后续的搭建Iot服务中,会举重若轻,同时该系列的文档,难度会逐步加深,知道了本章解释的名称后对后续文章的理解有很大帮助。 面板1:默认节点选项列表 安装Node-RED后默认的节点分为这5大类

知无涯 1万+

AI OS与LLM as OS:人工智能操作系统的崛起

近年来,随着大语言模型(Large Language Model, LLM)技术的突飞猛进,人工智能领域掀起了新的革命浪潮。以ChatGPT、GPT-4等为代表的LLM模型展现出了惊人的自然语言理解和生成能力,使得人机交互前所未有地拟人化、情境化。在此背景下,业界开始探索将LLM作为操作系统(Operating System, OS)的可能性,由此催生出"AI OS"和"LLM as OS"的概念。本文将深入解读这两个前沿概念,分析其内涵、技术原理、应用前景及面临的挑战。

AI天才研究院 993

《软件架构师应该知道的97件事》阅读随想

昨天新书到货《软件架构师应该知道的97件事》,吃完饭的养膘时间大致浏览了一遍,将一些阅读随想放在了推上。今天将这些内容整理于此…… 《软件架构师应当知道的97件事》如果用#97TESASK 作为标签,应该没人反对吧?“架构决定性能“如果我的前老板能深刻体会出这句话的含义,也许我就不必花那么多时间来告诉他,其实erlang也解决不了当时的性能问题。在读到这句话

1073

Couldn‘t agree a key exchange algorithm(available:curve25519-sha256,curve25519-sha256@libssh.org解决方案

本文主要介绍了Couldn’t agree a key exchange algorithm(available:curve25519-sha256,curve25519-sha256@libssh.org解决方案,希望能对使用winscp的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 方案一 2.2 方案二

weixin_43178406的博客 4万+

软件架构师应该知道的97件事-书签

引用说明:原文来自于一本书《软件架构师应该知道的97件事》,本文只是摘要了目录,但已经足够形成粗略认知。真的是一本好书,如果真的需要的话。哥说的不是架构,是哲学。   1、客户需求重于个人简历 2、简化根本复杂性,消除偶发复杂性 3、关键问题可能不是出在技术上 4、以沟通为中心,坚持简明清晰的表达方式和开明的领导风格 5、架构决定性能 6、分析客户需求背后的意义 7、起立发言 8...

cnmqw的专栏 189

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

软件架构师应该知道的 97 件事

软件架构师应该知道的 97 件事         1.客户需求重于个人简历(Nitin Borwankar)         客户需求至上。为了自己的简历更炫而采用新技术是沽名钓誉,往往事与愿违。         2.简化根本复杂性,消除偶发复杂性(Neal Ford)         分析问题好比拨云见月、水落石出。         3.关键问题可能不是出在技术上(Mark R

冰河的专栏 4549

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 做好软件项目的配置管理
下一篇: Project Server 2010安装和配置攻略
一等兵
博客等级 码龄24年 15粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值