学校网站集约化建设,怎样给建设的网站提意见,做旅行攻略的网站好,网站建站和维护2019独角兽企业重金招聘Python工程师标准 我的经历及对软件架构的理解 我个人从事软件开发8年#xff0c;大大小小软件做过不计其数#xff0c;做过企业应用的架构设计#xff0c;也做过全新的互联网在线SaaS应用的架构设计#xff0c;也做过全新的互联网网… 2019独角兽企业重金招聘Python工程师标准 我的经历及对软件架构的理解 我个人从事软件开发8年大大小小软件做过不计其数做过企业应用的架构设计也做过全新的互联网在线SaaS应用的架构设计也做过全新的互联网网站的架构设计现在在做的是历史遗留的大型互联网应用的架构演进工作。基于我个人先谈谈自己对于软件架构的理解谈谈软件架构。 我理解的软件架构是设计师根据软件的各种类型的需求而设计的软件组成结构的设计。 那么这些需求应该包括业务目标、用户的软件功能性需求非功能性需求软件开发组织内部的开发效率需求代码质量需求软件运维组织的系统运维需求等等综合需求和设计约束等。 软件架构的组成我理解包括软件开发期的包以及类的设计及关系项目工程组成及它们之间的关系发布的应用程序及之间交互关系软件系统最终运行期间的各种终端硬件、服务器、网络设备以及网络连接设备等。 但是我觉得我们很多被称作为“架构师”的人其实天天在做开发做架构设计可能对架构的理解也是比较片面的比较肤浅的有的就好比是“盲人摸象”只知道局部不知道整体了解的内容不够系统和全面有的就好比是”不识庐山真面目只缘身在此山中“在某个领域做的时间太久了思维和认知的局限性太强没有对具体事务进行抽象架构的本质认识不清晰。 《软件架构设计》的评价 我最近在阅读温昱编写的《软件架构设计》一书温昱的个人实践经验更多的在企业级应用开发所以本书中描述的很多内容都是企业级开发的一些具体方法及案例因此对于我们很多骄傲的互联网行业的”架构师“会不屑一顾看这些架构师会更多专注于”高并发、大数据、kafka、zookeeperhadoop、redis等等诸如这些高大上的具人技术上根本看不起做企业应用开发的人。 但是我个人粗略看了本书觉得对自己在理解软件架构及如何做软件架构设计方面有非常大的帮助互联网的软件它本质上也是应用软件只不过由于它的超大规模化部署导致软件架构及具体技术上产生很多巨大的挑战而已但是本书是通用的讲解软件架构的概念及通用方法论的对互联网应用同样是适用的。 《软件架构设计》一书对软件架构的定义 本书应该是总结了软件行业很多大牛对软件架构这个概念的看法提取了大家的一些共识应该是还是具有非常强的普适性的我觉得对于我们从具体的软件架构中跳出来是有帮助的。 本文总结行业大牛对软件架构概念的定义分成两派应该说相互联系但又互为补充。分别是“组成派”和“决策派”。 组成派 定义是”软件系统的架构将系统描述为计算机组件及组件之间的交互“。这里的组件是广泛意义上的是非常抽象的既可以是软件也可以硬件既可以很宏观也可以很微小。它的描述是以软件本身为描述对象。 如上图所示软件架构就是应用了一个组合模式它是有很多部分组成的。 决策派 定义是软件系统是一些重要方面的决策集合。它包括这样一些问题的重要决策 软件系统的组成。这点上又包含了组合派的定义。 选择组成系统的结构元素和他们之间的接口以及当这些袁术交互协作所体现的行为 如何组合这些元素使它们逐渐组合成更加大的子系统 用于指导这个系统组织的架构风格这些元素以及它们的接口、协作和组合。 软件架构不仅这种软件本身的结构和行为还注重其它特性使用、功能性、弹性、重用、可理解性、经济和技术的限制及权衡甚至包括美学等。 这个定义有些复杂理解起来也比较困难我的理解就为了设计出一个符合各种需求满足各种角色的要求在各种约束范围之类的软件组成结构而需要做的各种决策集合。它的定义关注软件架构实践的主体——人以人的决策作为描述对象 这是技术选型的决策示例。 这是系统切分的决策示例。 对我的启示 做一个好的”大架构师“需要做非常多的决策而做出优雅的决策这不仅仅是技术还需要艺术如何在多种复杂的、矛盾的因数中做出一个良好的权衡这是对于人本身的知识、技能经验的深度和广度都有较高的要求本身对我的作用是让自己知道还有哪些差距哪些地方还需要提高。 我曾经亲身经历并了解的一个错误决策带来的后果可以说给大家听听某公司来了一个具有Oracle背景的CTO这位牛人来之后因为自己的技术背景就行政命令要求正在研发的某系统将数据库从MySQL修改为Oracle这位某CTO没干多久就走了现在各部门都在热火朝天的干着去Oracle的事情因为这个错误的决策给我们苦逼的程序猿带来多少额外的工作量这样翻来覆去的改给公司带来多少成本损失。所以说没有科学严谨的决策方法某位具有某种陈旧的经验的某CTO一句话就产生了一个及其错误的决策的事情真是害人不浅。 转载于:https://my.oschina.net/ywbrj042/blog/631653