随想录(谈谈软件架构)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

最近很少写blog,主要是因为自己一直在看麦子学院的东西,学习的时间偏多一些。麦子学院是一个网上视频学习网站,讲述的主要是it开发的相关内容,有兴趣的同学可以关注一下。另外一个我自己也觉得不错的网站是极客学院。当然这些都是题外话了。

前几天,正好有一位前同事问我,怎么学些软件架构这些东西?正好自己自己最近也在关注这方面的东西,所以我告诉了他一些个人的想法。

1、软件架构离不开具体的业务,也就是说只有理解了业务,才能有好的架构。目前描述业务最多的语言还是uml,通过用例图、类图、顺序图、状态图、活动图、组件图和部署图,就可以把基本的业务模型搭建出来。一开始的时候,你使用uml或许会有一些陌生,但是熟能生巧,自己就会慢慢从中领略到精髓。俗话说,文不如表,表不如图,uml就是那个顺利和别人沟通的图。

2、当然除了uml之外,自己还需要了解一些基本的设计模式,这其中包括mvc、mvvm、move、reactor模式等等。mvc是最基本的设计方法,常用在客户端的开发当中,mvvm和move是它发展出来的新模式。而reactor则用在服务器编程中比较多,云风的skynet开源代码也使用到了它的方法。

3、一些经典的、关于设计的书籍还是要看的,比如说head first、design pattern等等。即使暂时看不懂,关系也不大,可以后面想起来的时候再拿起来翻一番,或许有了工作的积累之后理解得更加深刻。

4、找一些开源的项目练练手,看看别人是怎么做的。不管是pc的代码,还是android的代码,只要你认真分析下来总会有很多收获。就拿android来说,其实大多数app都是相似的,基本上可以分为工具类、游戏类、hybrid 混合开发类三种。如果你可以把这些app流程图画下来,并且进行0像素的copy,那么你就会慢慢找到那个做产品的感觉了,进而将软件架构抽象出来。分析和模仿别人的应用本身并不可耻,只是不要用在商业上就可以了。

5、了解一下移动互联网的基本架构。掌握移动互联网是怎么做到跨平台开发、如果做到统一的服务器api开发、如何缓存、如何均衡负载、如何添加搜索和推荐功能、什么时候cdn加速、如何升级、怎样灰度发布等等?慢慢地做下去,那些你需要解决的问题,会让你勇往向前,不断进步的。

总之,就是找到自己的兴趣点,按照uml的业务流程,结合已有的框架,借鉴别人的设计,不断提高自己软件设计的水平。

时间: 2024-10-04 04:21:21

随想录(谈谈软件架构)的相关文章

谈谈对一些软件架构设计箴言的理解 对软件的过早地优化是万恶的根源

http://www.nowamagic.net/librarys/veda/detail/1897在做项目的时候,有些同事总是提前考虑性能优化,需求变更又是一大堆的重写,让我想起了Donald Knuth 提到的:对软件的过早地优化是万恶的根源.这里就简单的说几条重要的软件名人哲学. 软件中唯一不变的就是变化 在软件开发过程中需求是不停的变化的,随着客户对系统的认识,和现有开发功能和软件的认识,也许一开始他提出的需求就是背离的.记得网上有一句笑话,是说需求变化的: 程序员XX遭遇车祸成植物人,

谈谈对一些软件架构设计箴言的理解

在做项目的时候,有些同事总是提前考虑性能优化,需求变更又是一大堆的重写,让我想起了Donald Knuth 提到的:对软件的过早地优化是万恶的根源.这里就简单的说几条重要的软件名人哲学. 软件中唯一不变的就是变化 在软件开发过程中需求是不停的变化的,随着客户对系统的认识,和现有开发功能和软件的认识,也许一开始他提出的需求就是背离的.记得网上有一句笑话,是说需求变化的: 程序员XX遭遇车祸成植物人,医生说活下来的希望只有万分之一,唤醒更为渺茫.可他的Lead和亲人没有放弃,他们根据XX工作如命的作

谈谈软件的项目管理之道(一)

本人学了7年电子,毕业后从事软件开发4年,磕磕绊绊,一路走到现在.今天所写的文字权当是个人的一些感悟和心得吧. 谈软件的项目管理,就不得不谈软件项目的两个构成要素:软件项目和实施项目的人员.下面我就按照这两个要素分别谈谈. (一)软件项目 首先是软件项目的管理.我们为什么要管理软件项目?为了不让软件乱七八糟从而能工作么?这只能说是低水平的目标,而我们最根本的目标,是开发高质量的软件.什么事高质量?窃以为就是满足客户的需求,使用户使用起来不仅感到需求得到满足,更感觉非常方便,快速,两个字“巨爽”.

访何红辉:谈谈Android源码中的设计模式

最近Android 6.0版本的源代码开放下载,刚好分析Android源码的技术书籍<Android源码设计模式解析与实战>上市,我们邀请到它的作者何红辉,来谈谈Android源码中的设计模式,以及近期Android开发中的一些热点话题. 受访嘉宾介绍: 何红辉(@MrSimp1e),前友盟Android工程师,活跃于国内各大技术社区,热爱开源,热爱技术,热爱分享.Android开源库 AndroidEventBus . Colorful 作者, 开发技术前线 站长,<Android源码

浅谈企业应用软件架构设计过程

1.引言 本文不是学术性文章,也不是某些标准化理论的阐述,而是根据所从事J2EE应用软件架构设计工作的经验,谈谈自己对软件架构设计过程的理解,希望能让一些徘徊于门口的同学能对企业应用软件架构设计的目标.价值与方法有个大致概念.文中所举例子及分析方法受个人经验背景约束,可能在一定程度上会存在误导性,软件架构设计过程大同小异,例子主要还是用于辅助说明设计过程. 对于架构设计,如果用建筑来比拟的话,有点类似这样:这是我们将修建一座大教堂,甲方有这样的一些特殊要求,比如大堂要能容纳5000人,中间不能有

软件架构杂谈(一)

浅谈软件架构(一) 这个世界上,被人们创造出来的软件架构大概已经有几百种之多了.当然,它们所处的层次,以及应用范围是不同的.本文讨论的是,工作在协议顶层--即应用层,且是机器间联网工作的软件架构.(由于内容荣杂,本文将分多个期次介绍,请读者关注后续博文) 开篇 行文将讨论的软件架构为以下7类: 1. C/S 2. B/S 3. Cluster (HA) 4. Cloud 5. Distributed 6. APNS-like 7. P2P 一,C/S架构. 这个词汇可谓老生常谈了.自高级语言编程

阿里Java架构师谈谈架构和如何成为一个Java架构师

架构的定义 我们来看看软件架构的一般定义: 程序和计算系统软件体系结构是指系统的一个或多个结构. 该结构包括软件的构建,构建的外部可见属性以及它们之间的相互关系. 该体系结构不是可操作的软件. 具体来说,这是一个表达式,它使软件工程师能够: 分析满足监管要求的设计有效性. 在设计更改相对容易的阶段,请考虑架构的可能选项. 降低与软件构建相关的风险. 软件架构的重要性 我为什么说软件架构非常重要? 直接编程直接开发,请多看看以下几点?: 软件架构可以满足系统的质量 体系结构设计允许受益者达成一致的

谈谈对CAP定理的理解

谈谈对CAP定理的理解 CAP定理的常规解释是任何分布式系统只能在一致性(Consitency),可用性(Availability)和分区容忍性(Partition Tolerance)中三选二.这个解释很让人费解,笔者在看了一些文章后谈谈我对它的理解,还请斧正. 从问题出发 假设我们用一台服务器A对外提供存储服务,为了避免这台服务器宕机导致服务不可用,我们又在另外一台服务器B上运行了同样的存储服务.每次用户在往服务器A写入数据的时候,A都往服务器B上写一份,然后再返回客户端.一切都运行得很好,

谈谈我眼中的安徽企腾信息技术集成有限公司

在这里工作一段时间后,说说自己眼中的安徽企腾,我尽量本着客观的原则,不带任何主观因素与感情色彩. 首先,先说说规模,所谓的分成售前与售后,其实就是虚张声势,售前不过是一些笔记本的售后维修,售后与售前基本上没什么关系.而售后,销售加上技术,最多时也不过7个人.平时一些项目,大一点,一些不能做的直接外包出去,小一点的项目,所谓的"施工队",就是全体总动员. 公司里做了好几块业务,其中一块是飕飕商用路由,刚开始,想的是多么好,但是最后却被浇了一盆冷水,市场根本不接受,唯一做了一家宾馆,还是连