软件架构经验总结

软件架构经验总结

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

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

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

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

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 软件架构软件系统的基础结构,它定义了系统的组织方式、模块之间的关系以及各个模块的功能和职责。在软件开发过程中,良好的架构可以提高系统的稳定性、可维护性和可扩展性。 电子版CSDN是一种基于互联网的技术社区平台,通过提供技术文章、博客、问答、培训等服务,为广大开发者和技术爱好者提供信息交流和学习的场所。其软件架构需要具备以下几个关键特点: 1. 可扩展性:电子版CSDN是一个大规模的社区平台,在用户和内容方面都需要支持大量的数据和用户访问。因此,其架构需要具备良好的可扩展性,能够随着用户量和内容增长而进行水平扩展。 2. 高可用性:电子版CSDN作为一个面向全球用户的平台,需要提供稳定可靠的服务。为了保证服务的高可用性,其架构需要考虑多个服务器(主备或者集群)的部署,以及灵活的负载均衡机制。 3. 安全性:电子版CSDN作为一个技术社区平台,用户的隐私和数据安全至关重要。其架构需要具备高级别的安全防护机制,包括加密算法、访问控制、数据备份等。 4. 效率:电子版CSDN需要保证用户在平台上的操作和访问速度,以提供良好的用户体验。因此,其架构需要优化数据库设计、采用缓存技术、利用异步消息等方式提高系统的响应速度和处理效率。 综上所述,电子版CSDN的软件架构需要具备可扩展性、高可用性、安全性和效率等关键特点,以满足用户对于稳定、安全、高效的服务需求。只有在良好的架构下,电子版CSDN才能实现长期稳定的发展,并持续为广大技术爱好者提供优质的技术支持和交流平台。 ### 回答2: 软件架构是指在设计和开发软件系统时所考虑的整体结构和组织方式。它涉及到软件系统的各个组成部分之间的关系和交互方式,以及如何将这些组件组合起来实现系统功能。 软件架构的目标是实现软件系统的可靠性、可维护性、可扩展性和可重用性。一个好的软件架构能够提供清晰的模块划分和接口定义,使得不同模块之间的变化不会影响整个系统的稳定性和功能性。 在软件开发过程中,软件架构需要进行合理的设计和选择。常见的软件架构模式包括分层架构、客户端-服务器架构、面向服务架构等。不同的架构模式适用于不同的应用场景,开发者需要根据实际需求选择最合适的架构模式。 CSDN是一个知名的技术社区,提供了丰富的技术文章、教程和交流平台。在CSDN上,可以找到关于软件架构的各种资料和经验分享。阅读CSDN上的软件架构文章,可以了解到各种不同的软件架构设计思路和实践方法,对于提升自己的软件架构能力是有很大帮助的。 总结来说,软件架构软件系统的骨架,它决定了系统的整体结构和组织方式。良好的软件架构能够提高系统的可靠性和可维护性,CSDN是一个提供软件架构相关资料和交流平台的优秀网站。希望通过学习和实践,能够提升自己的软件架构能力,设计出更好的软件系统。 ### 回答3: 软件架构是指将软件系统划分为不同的组件和模块,并规定它们之间的关系和交互方式的过程。它是一个设计蓝图,用于指导软件开发过程中的决策和实现。 软件架构的目标是实现软件系统的高性能、可扩展性、可维护性和可重用性。它考虑了软件系统的整体结构、模块的功能划分、数据流动、用户界面和与外部系统的集成等关键方面。 在软件架构中,有几种常见的架构风格,如分层架构、客户端-服务器架构、微服务架构等。不同的架构风格适用于不同的应用场景。例如,分层架构软件系统划分为多个层次,每个层次负责不同的功能,便于团队开发和维护。微服务架构软件系统划分为多个独立的服务,每个服务拥有自己的数据库和业务逻辑,提高了系统的灵活性和可扩展性。 在电子版CSDN中,软件架构是一个重要的主题。CSDN提供了大量关于软件架构的文章、教程和案例分享,帮助开发者了解和应用不同的架构模式和技术。这些资源可以帮助开发者在软件设计和开发过程中做出更好的决策,提高软件系统的质量和可靠性。 总之,软件架构是指将软件系统划分为不同组件和模块,并规定它们之间关系和交互方式的过程。它是一个设计蓝图,能够指导软件开发过程中的决策和实现。在电子版CSDN中,我们可以找到丰富的关于软件架构的资料和资源,帮助开发者了解和应用不同的架构模式和技术,提高软件系统的质量和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值