软件架构经验总结

程序员架构修炼之道:软件架构设计的37个一般性原则 原则37:不要有任何借口。如果你是一个系统的开发者,把它做好是你的责任。要承担这个责任。要么做好,要么就压根不做。序言如果,软件工程真的是一门工程学科,那么它是对经过验证的“原则、技术、语言和工具”的智慧的运用,用于创造和维护能够满足用户需求的软件。原则是关于软件工程的基本原理、规则或假设,不管所选的技术、工具或语言是什么,其都有效。当桥梁或建筑物倒塌时,调查人员会尝试确定是什么地方出了问题。通常... 阅读详情

软件架构经验总结

任何一款软件,从无到有,从初级到完善,一般都会经历一个漫长的过程。在这个过程当中,架构师的水平和软件体系架构本身的灵活性,就会处于一个很关键的位置。太多的软件,因为架构的问题,造成产品发布日期延迟,或者项目交付工期延迟,给测试、实施、售后等工作等造成一系列的问题。

还有些情况是因为在同期有很多种竞争技术,由于架构师选择了其中一种技术,而这种技术,在长期发展过程当中,败给了其他的竞争技术,使得基于这种技术的产品不得不重新开发。比如,我以前基于Java Swing做了一款工作流和SOA架构的产品,在世界500强的公司当中,很多都是我们这款产品的客户,客户对它的评价也相当高,它曾是公司很赚钱很核心的产品。但是Java Swing在跟Eclipse的SWT竞争过程中败下阵来,使得我们不得不基于Eclipse插件机制,重新开发了一套功能类似的产品,以方便以后升级。在这个转型过程当中的损失,是很难计算出来的。再比如,现在火热的移动平台开发,是选择Android平台,还是选择iPhone平台?是选择Symbian平台,还是选择Windows Mobile平台?也是一个很恼人的问题,架构师选错了平台,就可能给公司造成难以估算的影响。

而程序员本身,也会给架构师带来压力和困惑。例如:SSH(Spring、Struts、Hibernate)架构流行很多年了,很多公司和程序员都拿它来开发,而把自己公司的不是基于以上开发框架的自主开发框架,称之为“山寨框架”(跟Struts、Hibernate、Spring比较起来)。他们一般信奉拿来主义,不重新发明“轮子”的理念深入人心。我自己面试过无数人,也曾被无数人面试,问到难度稍微大一些的问题,比如线程、Web服务器负载均衡以及Java垃圾回收机制等,一般都回答不出来,或者讲不明白,这就是程序员“重商主义”、“拿来主义”的弊端,只知道如何使用,对其原理一概不知。说实话,不查资料,很多我也不明白,也是只知道个大概。客观原因是平时很少使用,主观原因是自己的懒惰。我个人是非常不赞同“不重新发明轮子”这个理念的,不重新发明轮子,你就不知道这个轮子的架构机制。对很多问题的细节,被人问起来,也只能很含糊地说:也许大概可能是,不过恐怕不见得,其实这还是没有掌握。而这些机轮子本身,会用到缓存、多线程等很多需要深入研究的问题。弄明白了别人的轮子,那些很含糊的问题,一般也就解决了。

很多程序员,包括工作十几年的所谓老程序员,都自觉不自觉地遵循着某种理念,比如他会告诉你“Action只能调用一个Manager,所有与数据库打交道的地方,只能写到DAO层”,如果你不这么做,他就会告诉你,你的代码不是面向对象的,不友好的,是不符合某某设计模式的。还有的所谓很牛的程序员,用垒鸡窝和盖大厦,来标榜他的架构是多么多么符合所谓的范式和架构,或者遵循某大师的XP理论。可是他们都忘记了,我们编写程序代码的最根本的目的是什么?我们开发软件并不是为了让它面向对象化,或遵循某些设计模式,我们开发软件是为了解决问题。所谓为了以后的扩展或者10年之后的需求,你的架构到时候真的就不用做任何修改吗?我这么说的意思,不是鼓励大家不遵循任何开发的方法论,不做任何代码的约定,随意随心乱写,毕竟我们是一个团队作业,而不是自己一个人在根据自己的喜好开发个人软件。我的意思是说,我们不要迷信什么,山寨架构也好,官方架构也好,我们一定要根据自己项目的实际情况,加以改进,不要生搬硬套。 

最后摘抄某大侠在dzone.com(http://java.dzone.com/news/object-orientation-not-goal)一段原话做结尾:通常,当有些很精明的程序员对我的做法说三道四,却又根本不知道我是在解决什么问题时,我很苦恼。这就像是在说“我比你更知道你需要什么,所以我们不能用这个、那个工具/风格/架构”。但事实却是,什么样的工具或思路才是他们解决相应问题所需要的,这些精明的思想家并不比每个开发人员更清楚。做个类比,这极其类似那些精明的政治家宣传自己最知道人们究竟应该怎么活着……

 

简单的eclipse三层架构实例 包含一个简单的三层架构实例,包含了三个html网页,同时还有一个简单的倒计时,适合新手 立即下载

相关推荐

Unity采样器过多导致URP默认的Lit.Shader报错(shader error in ‘universal render pipeline/lit’: maximum ps_4_0 samp)

Shader中多个Sample Texture2D,Sample Texture3D或者类似节点的使用,该类节点都需要一个采样器,如果Shader使用超过了16个纹理采样器,如多个Base Color,Normal Map等,就容易超出。是因为每种Shader Model和GPU都有一个对纹理采样器数量的限制,是因为每个采样器都需要在显卡占用一个独立的寄存器,而寄存器的数量是有限的,当超过限制,显卡无法分配更多的寄存器给新的采样器,因此会导致编译错误。2.什么原因导致纹理采样器超出16个?

qq_41884036的博客 4235

架构经验:一种可行的架构方法论

介绍一种可行的软件架构方法论,其按照从抽象到具体的顺序,将整个过程简单分为三个步骤:详细了解需求内容、抽象软件架构、详细软件架构。

陈海龙的格物之路 668

WebDriverAgent 菜鸟解析篇

WebDriverAgent 是一个用于模拟移动设备浏览器的 Python 库,可以用来在 PC 上模拟移动设备的浏览器操作,从而进行自动化测试。下面是一个菜鸟对 WebDriverAgent 源码的解析篇,希望能对初学者有所帮助。

DJ355的博客 1222

什么是真正的架构设计?十年Java经验让我总结出了这些,不愧是我

在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自然不顺畅。Linux有架构,MySQL有架构,JVM也有架构,使用Java开发、MySQL存储、跑在Linux上的业务系统也有架构,应该关注哪一个?1. 系统与子系统系统:泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能独立完成的工作能力的群体。

jjc4261的博客 619

点击率预测的贝叶斯平滑

概述 电商领域中经常需要计算或预测一些转化率指标,如最典型的CTR(点击率,Click-Through Rate)。这些转化率可以是模型的预测值,也可以作为模型的特征(feature)使用。以商品点击率预测为例,CTR的值等于点击量(Click)除以曝光量(Impression或Exposure)。以rr表示点击率, r=CI(1)r=\frac{C}{I} \tag{1}. 但在实际应

小平子的专栏 3万+

用Linkboy玩转Arduino:3小时搞定智能倒车雷达(附仿真文件下载)

本文详细介绍了如何利用Linkboy图形化编程工具,在3小时内快速搭建一个基于Arduino的智能倒车雷达项目。通过仿真环境,初学者无需硬件即可学习超声波测距原理、报警逻辑设计,并完成从虚拟仿真到实体硬件的完整流程。文章提供了清晰的步骤、调试技巧及功能扩展思路,并附有仿真文件,是入门Arduino和智能硬件制作的绝佳实践指南。

weixin_29159441的博客 403

软件产品设计:软件架构

微服务架构是近年来备受关注的一种架构模式,它将应用分解为一组小的、独立的服务,每个服务实现特定的业务功能,并可以独立部署、扩展和更新。在实际项目中,应根据系统的业务需求、团队技术能力以及技术发展趋势等因素,综合考虑选择合适的架构模式,并遵循相关的设计原则,以打造出高质量、可维护、可扩展且性能卓越的软件产品。例如,在一个 Web 应用中,可以将用户认证、业务逻辑处理和数据持久化等不同的关注点分别放在不同的模块或组件中,每个组件只负责自己相关的任务,使得系统的结构更加清晰,易于理解和维护。

2401_85977751的博客 1268

手把手教你学Simulink--进阶电机控制场景实例:基于Simulink的直流电机双闭环调速系统抗负载扰动仿真

摘要:本文基于Simulink平台构建直流电机双闭环调速系统,重点研究其在工业传送带场景下的抗负载扰动性能。系统采用转速外环(稳速)和电流内环(限流)的嵌套结构,通过工程法整定PI参数,实现了转速跌落<10%、恢复时间<0.5s的优异抗扰性能。仿真结果表明,相比单闭环系统,双闭环控制使转速跌落率降低47%,恢复时间缩短75%。文中详细介绍了数学模型建立、Simulink模块实现及参数优化方法,并提供了完整代码和模型文件,为电机控制系统设计提供实用参考。

MHD0815的博客 179

谈谈架构经验-社区项目

个人认为软件架构是一个由几个阶段构成的过程,输出高层面抽象性多角度的软件结构,可指导开发且可并行开发。需要明确由需求决定架构,并且在过程中需要考虑业务背景 系统规模 技术趋势 开发团队现状等因素。

陈海龙的格物之路 714

[SoC]SoC验证中bootcode与firmware相关验证经验总结

本文总结了SoC验证中bootcode和firmware的验证经验。重点介绍了两种数据加载方法:1)使用Verilog系统函数$readmemh/$readmemb直接写入ROM/ARAM,需注意文件路径、格式和斜杠方向;2)通过Memory Hierarchy在initial块中操作,需要添加适当延时并注意路径拼接。文章还提供了在testcase phase中先读取数据到HASH再写入SRAM的示例,并强调加载后需使能edc_bypass以避免ECC错误。验证过程中需特别注意文件位置、格式要求及路径处理等

元直的博客 2498

2026年软考信息安全工程师备考指南

信息安全工程师是信息产业部和人事部举办的软考中新增开的一门考试。软考全称全国计算机技术与软件专业技术资格(水平)考试,这门新开的信息安全工程师分属该考试“信息系统”专业,位处中级资格,是信息产业部和人事部在最新的“国人厅发[2007]139号文件中新增的专业。2016年下半年,第一次开考信息安全工程师(中级)考试。 考试科目: 1.信息安全基础知识,考试时间为150分钟,笔试,选择题; ...

鹿鸣天涯 7397

我的架构经验小结(一)-- 常用的架构模型

      经过这几年的积累,在系统架构方面逐渐积累了一些自己的经验,到今天有必要对这些经验作个小结。在我的架构思维中,主要可以归类为三种架构模型:3/N层架构、“框架+插件”架构、地域分布式架构。 一.三种架构模型 1.3/N层架构        这是经典的多层架构模型,对于稍微复杂一点或特别复杂的系统,不使用分层架构是很难想象的。下图是经典的3层架构:     如今,凡是个程序员都能...

weixin_33675507的博客 453

13.0 针对跳转不存在Activity崩溃处理,改成弹Toast提示,去掉崩溃弹窗,避免app崩溃退出

在开发过程中,在app跳转到某个没注册的Acitivity时,往往会出现崩溃的场景,这样也不好,接下来就从framework中来拦截这个崩溃,改成toast提示,

安卓兼职framework和app工程师的博客 48

云卷云舒:软件架构设计的经验总结

围绕架构设计的通用思想,从可用性、扩展性、高性能、一致性四个方面重点强调了架构设计的基本方法理论,具有较强的通用性和指导性。

云计算、数据库爱好者 696

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java软件架构师结合实际项目经验总结软件架构的发展进程与原理(重点讲微服务架构怎么来的)

笔者结合10年实际软件开发项目经验概况总结Java软件架构的发展进程与原理,当前最火的微服务架构是演变来的?并举通俗易懂的例子解释原理!

nasen512的博客 1211

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

.NET2.0设计模式 (.NET 2.0 Patterns)

设计模式可以说是软件孙子兵法, 设计模式可以说是程序员的哲学. .net1.X发展到3.5.新技术如同大海后浪推前浪.做为一个程序员,特别是三十岁的程序员,你该怎么做? 1,继续学习,WCF,WPF,局部方法. 2,该行不做程序员 3,走向软件架构分析, 我想大多数人的回答是3. 什么是模式(What is Patterns) 你也许要问,为什么要写这个专题,...

dianqiong9604的博客 181

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

高级系统架构师培训笔记

前几天参加了中科院计算所培训中心谢老师的高级系统架构师培训课程,将其中的一些点做了下记录:   系统架构师的工作是复杂设计总体解决方案以及领域对象的逻辑和物理布局,这是一项在复杂环境中高风险、高影响力的活动。 1、软件架构的定义:软件架构(Software Architecture)也称之为软件体系结构,它是一组有关如下要素的重要决策:软件系统的组织,构成系统的结构化元素,接口和它们相互协作...

网络资源是无限的 2万+

机房收费.NET版重构——总结

机房收费系统个人重构版终于要落下帷幕了,这一个半月经历的“痛苦”和成功时喜悦恐怕也只有自己能够体会吧,现在回过头来,进行一下总结,颗粒归仓!       机房收费个人重构大概的经历应该分为四个阶段:需求分析,软件架构(UML图和软工文档),代码编写,程序调试完善。 需求分析        个人重构版的需求分析要比VB版明朗多了,其中有三点需要指出:        a.软件的使用者是

贵宝的博客 2085
上一篇: 新一代电子商务发展趋势
下一篇: 智能Web应用实例
Broadview
博客等级 码龄22年 15粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值