`
chixianhuadeyu
  • 浏览: 67627 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

首先,何谓系统架构师?


IBM工程师的说明是:
   架构师的主要责任是提供开发人员和项目经理之间的共用沟通媒体。他们负责让业务规则及需求与工程实践及限制相适应,以确保成功

中文Wiki上的说明是:
   系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单

这两个解释,加起来基本说明了系统架构师的定义。


JAVA系统架构师应该看的几本书
Thinking in Java
Effective Java

UML基础、案例与应用
UML入门提高

软件工匠
设计模式——可复用面向对象软件的基础

重构-改善既有代码的设计
敏捷软件开发-原则、模式、实践

企业应用架构模式
Expert One-on-One J2EE Development without EJB

软件工程——实践者的研究方法
软件领导--成功开发软件的指导准则

后面的两本书,其实已经有点属于项目经理的范畴了,不过还不是很深入,看看对做成功的系统架构师是很有好处。

企业应用的系统架构师应该关注的几个方面
数据持久层的设计
在Spring和Hibernate,ibatis出来以前,几乎每家公司都有自己的一套方法和架构,而架构师的50%的精力也会集中到这上面,EJB只是增加架构师的负担。在Spring出来以后,基本上,大多数的架构师都从重复设计这个轮子的无用功中解脱出来了。Rod的轮子太好用了,基本上,大家只要套上去就行了,或者,剩下最重要的事情,是选择一个合适的数据库连接池的开源项目吧

MVC架构的具体设计
MVC只是个概要的概念,具体如何实现的具体技术很多,根据项目设计最恰当的架构

大并发性访问
使用缓存,在数据量达到一定程度时,使用集群技术,优先考虑利用服务器的集群,其次是硬件集群,最后才是应用本身加入集群功能

超大数据量返回结果
尽量使用分页,优化SQL语句,循环处理数据时尽可能共用对象,只保留关键数据,及时释放内存占用

超大文件的读取和生成
尽可能快的读取大文件,并进行分析。写入大文件时,如何及时释放内存。学会适当利用操作系统的命令行资源来更快完成任务。

多线程的应用和管理
线程池的管理和监控,线程的启动(包括定时启动),结束,回收,线程资源的释放

用户界面可用性设计
平衡速度和可用性,恰当的使用异步和同步技术,展现关键数据为重点

分布式的数据交流和集成
选择恰当的数据交互方式,从最泛滥低效的Web Service到最实用的文件共享

群集系统的管理
如何确保缓存的同步?如何确保对象唯一性?如何保证各台机器的同步?
是否采用EJB?如何利用J2EE的特性(例如JNDI)

复杂的业务规则
规则引擎和工作流引擎场景和应用

其实,作为一个真正的系统架构师,不应该局限于企业应用的系统,这种系统往往有数据库的局限性,有时候,应该考虑是否可以横向跨越,直接对其它系统做一些架构考虑,在没有丰富的实战经验的前提下,而只是看了其它人的系统和代码,就能够给出有效的设计指导。

例如对于一个下载软件,可以有如下考虑:

1. 未明和非法url的检验,已经下载失败的容许,信息记录
2. 多线程下载一个文件,文件的切分和拼合,部分切片丢失的拼合可能性
3. 下载线程管理
4. 服务器或者P2P的机器之间的通讯协议
5. 速度监控和限制
6. 下载进度的监控和显示

作为一个在线播放软件,可以做如下考虑

1. 播放速度的保证
    机器的问题基本不存在了,关键是网络问题。如何在检测网络速度,根据影片的质量,并缓冲足够多的内容,保证播放一直尽可能顺利的完成。

2. 播放质量的保证
    如何利用DirectX等技术,最快的进行渲染,是自己写底层,还是利用已有的API

由于没做过类似的项目,可以写的东西还是少很多了。

系统架构师应该有的素质:
1、 实际的编程经验
   最少2年吧,多了就不说了,其实从大学就开始钻研的话,

2、 书面表达能力和口头交流能力
    综合利用架构图,UML图,文字和代码片断,表达自己设计思想,至于是Word还是ppt,应该通吃

   在开发人员中发现架构师的最有价值标准是有效的沟通。您需要技术娴熟、经验丰富的开发人员,这样的人员需要有就项目中的业务相关问题进行沟通的经历。架构师经常必须对理解方面的差距进行预计,然后才能有所贡献。他们必须愿意克服困难来确保技术和业务观点的融合。他们并不必对意见交换工作进行计划和协调;这仍然主要是项目经理的工作。他们的任务是确定表述系统设计时的最佳工具和构件,以促进有效的意见交换。他们必须能够判断当前方法显得不足而需要采用新方法的情况。写作技能也非常重要,还需要具有制作草图的技能或使用制图软件的能力。

3、 自觉主动;积极解决设计问题
   架构师的日常工作目标经常并不明确。很多开发人员直接参考功能规范来列出任务清单。架构师通常则是向这些开发人员提供所需结构的人员,以便尽可能提高工作效率。好的候选者不仅进行沟通方面的工作,而且也会预计各种设计问题并加以解决——通常在没有任何具体指示的情况下自觉进行。无论所分配的职责如何,积极参与项目的开发人员都有机会从一起工作的人员中脱颖而出。

4、 抽象思维能力和总结能力
   架构师,顾名思义,在系统未搭建好之前,就要能够有一个草图在心。而如果是对现有系统的改造,那么能在看过系统的文档(如果有的话)和代码后,就能总结出系统的架构特点。
   架构师必须能够理解表述模糊的概念并将其变成相关各方能够理解的项目构件。他们必须能够理解抽象概念,并以具体的语言对其进行沟通。开发人员中好的候选者经常要求或自己主动解释开发生命周期中容易混淆的问题。他们能迅速评估各种想法并将其纳入后续工作的操作建议中。

   开发人员经常具有很强的数学能力,而好的架构师则倾向于表现出更强的口头表达能力。管理人员经常说开发人员具有“工程意识”,而这是一个用于评估架构师的非常有意义的方面。架构师应该具有很强的解决技术问题的能力,但还必须能够准确获知更为全面的人员如何与技术交互的信息。这要求具有某种形式的抽象思维(而不再是代码的细节),这种思维能力可能较难形成。

5、 全面的技术资讯吸收能力和选择鉴别能力
   作为开发人员出身,对于某一个具体问题的研究能力(虽然很多人总结为google能力),已经相当具备了。但是对技术资讯的全面接受和选择性深入了解能力,并且做出正确的判断,那些技术无非是厂家的噱头,而那些技术是真正可以用到项目,提高项目质量的好技术,这种能力确实至关重要的。

 

分享到:
评论
30 楼 fsxxl 2010-03-26  
上一个老兄说得有道理,并且实际。
另外补充一点的是:要实现一件事情,如果任由程序员自由发挥,会有很多种不同的方法去实现,由此会让程序的结构混乱,不方便后续的代码变更。
架构师就需要对整个程序的结构模块、接口、命名等进行划分并且统一。
29 楼 xiao-qiang163 2010-03-01  
说的有点道理,可以参考一下,不过楼上有两种人:很多人反对,或是太过夸大架构师的能力,都是不可取的!

其实搞应用开发,只要技术牛,自己可以带一个团队,又会从整体的观念来看软件并构思设计,都可以称为架构师,  应用开发,相对底层的开发,可能技术上要求就不会那么精,但是一定得要看得广,想得远.............

技术综合能力强,表达能力强。。。就可以了。。。。。当然了,还得有人给你机会。。。

个人意见'!!!!  不要拍我!!!
28 楼 androider 2010-02-21  
怎么说呢,不要一棒子打死,楼主的观点还是很实在的,虽然有点蚂蚁看老鼠的感觉,但是我觉得更多的应该是:如果回复者你认为你站在了老鼠的层次,那么就给一些作为老鼠对于他的架构师的意见,而不是一味的去冷嘲热讽。

或者从另外一个角度,如果没有能够达到楼主所列的一条一条,那么想做到架构师,也基本是很难的。
27 楼 pipilu 2010-02-20  
不知道数学能力怎么衡量?
26 楼 zhizhesky 2010-02-14  
怎么说呢? 举个例子,大并发性访问 ,仅仅是缓存?集群? 它包括了从广域网到服务器到web app server到业务层再到软件架构再到程序、数据库的各种调优,而这些系统架构师都必须考虑到。
25 楼 hepeng421 2010-02-14  
还有就是软件方面的能力和实际工作经验无关,很多所谓多年经验的人才,其实只是1*N的人才,建议楼上别以经验来定能力。
24 楼 hepeng421 2010-02-14  
个人理解架构师,至少应该掌握两门专业语言比如java和c++之类的,然后就是能够承担接收新的开发领域,比如除了掌握pc开发,也应该顺应潮流掌握智能手机软件的开发;最后就是能有软件领域的大局观。
23 楼 lsb 2010-02-10  
   恩,修炼ing~
22 楼 neora 2010-02-09  
应该得有10年的相关领域经验吧,起码得有6、7年在编码、工程维护等前线领域的工作经验。
21 楼 huziaijuzi 2010-02-08  
讲的不错!同意楼主的观点。
20 楼 askyuan 2010-02-07  
都是在扯蛋
19 楼 zcy860511 2010-02-04  
dongya1987 写道
JAVA系统架构师??还有这个概念?
架构师只会Java这一种语言的话能架构吗?

架构师已经脱离了语言范畴了,他的工作是很牛叉的
18 楼 shinkadoki 2010-02-04  
熟悉流程中各个环节所需要的东西,能够了解各环节中的衔接点,预知推进过程中可能会遇到的问题,并能提出可供参考的解决方案。
需要掌控的包括 业务,技术,功能,数据,以及需要提供整个架构的可实施,可扩展,可追溯等支持。
17 楼 litianyi520 2010-02-04  
牛逼!大发了!
16 楼 shwangwells 2010-02-04  
fjilyfe 写道
架构师应该具备四个方面的能力,1.业务架构2.技术架构3.数据模型架构4.功能架构

加个可用性、可运营性构架
15 楼 zy_pub 2010-02-03  
zli.ray 写道
lelong 写道
系统架构师应该有的素质:
1、 实际的编程经验
   最少2年吧,多了就不说了,其实从大学就开始钻研的话,

-- 其实是5年以上,2年,无论你怎么牛,都是菜鸟。

同意!
受时间与精力的限制,知识深度与广度,往往不可兼得。没个5、6年的研究实践,很难融会贯通。

在理。
14 楼 fjilyfe 2010-02-03  
架构师应该具备四个方面的能力,1.业务架构2.技术架构3.数据模型架构4.功能架构
13 楼 20029388 2010-02-01  
大概意思就是:十八般武艺样样精通
12 楼 darklipeng 2010-02-01  
说的很实在
11 楼 elvishehai 2010-02-01  
我觉得你说的不是很正确,真真的还是要看实力,1

相关推荐

    微软软件架构师的修炼之道

    首先,我们来理解“何谓架构师”。软件架构师并非只是编写代码的工程师,他们是技术团队的领导者,负责制定技术战略,定义软件组件和接口,解决系统设计中的关键问题。在微软的语境下,这可能涉及到Windows操作系统...

    第1章何谓操作系统.pdf

    操作系统是计算机系统的核心组成部分,它是一组控制和管理计算机硬件及软件资源的系统软件,为用户提供接口,并作为运行和开发应用程序的平台。本章详细介绍了操作系统的基本概念、功能和服务,以及其作为抽象层次和...

    1、何谓通信系统?通信系统由哪些部分组成?各组成部分的作用是.docx

    通信系统是信息传输的核心,它是通过电信号或光信号来传递信息的系统。通信系统的主要构成部分包括信源、输入变换器、发送设备、接收设备、输出变换器以及信道。 1. **信源**:信源是信息的源头,它可以是语音、...

    学习第1章何谓操作系统.pdf

    操作系统是计算机系统中的核心软件,它位于硬件和应用程序之间,提供了一个标准的接口和一系列服务,使得用户和应用程序能有效地与计算机硬件进行交互。本章主要介绍了操作系统的定义、功能、接口、服务以及平台的...

    计算机操作系统课后习题答案

    ### 计算机操作系统知识点详解 #### 一、设计现代操作系统的四大目标 现代操作系统的四大设计目标包括:方便性、有效性、可扩充性和开放性。 - **方便性**:指用户可以简单、高效地使用操作系统提供的服务和资源...

    操作系统课后习题答案

    - **计算机体系结构的不断发展**:随着计算机架构的发展,系统可以支持更加复杂的程序设计和执行机制。 **5. 何谓脱机I/O和联机I/O?** - **脱机I/O**:用户事先将含有程序和数据的介质(如纸带或卡片)输入到外部...

    何谓pem——心理体检与心理健康管理系统?.doc

    PEM,全称为心理体检与心理健康管理系统,是一个创新的SaaS(Software as a Service)服务平台,专注于提供全面的心理测评和心理健康管理服务。该系统在中国独树一帜,它结合了现代科技与心理学理论,旨在帮助个人和...

    何谓网路礼仪.pptx

    何谓网路礼仪.pptx

    何谓外交哲学.docx

    何谓外交哲学.docx

    MySQL5.1性能调优与架构设计.mobi

    以MySQL数据库的基础及维护为切入点,重点介绍了MySQL数据库应用系统的性能调优,以及高可用可扩展的架构设计。 ●基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份恢复知识 ●性能优化...

    何谓电子商务.pptx

    何谓电子商务.pptx

    《系统辨识与自适应控制》考核试题+答案

    5. 何谓闭环系统的可辨识性问题,它有那些主要结论? 闭环系统的可辨识性问题是研究如何在闭环系统中进行系统辨识的可行性问题。主要结论包括系统辨识的可行性条件、可辨识性的充分条件等。 6. 何谓时间离散动态...

    何谓Linux PC.pdf

    例如,网络PC(NC)没有硬盘、光驱和软驱,依赖宽带网络运行,而Linux PC则拥有更广泛的功能,既可以是基于x86架构的,也可以是基于国产CPU如“方舟”或“龙芯”等非Intel架构的自主研发产品。后者虽然目前在市场上...

    何谓资讯融入教学.pptx

    何谓资讯融入教学.pptx

    何谓智慧财产权.pptx

    何谓智慧财产权.pptx

    何谓班级民主管理.doc

    何谓班级民主管理.doc

    何谓“Linux城市”.pdf

    何谓“Linux城市”.pdf

    计算机操作系统答案 第三版

    4. 何谓脱机 I/O 和联机 I/O? 回答:脱机 I/O 是一种输入输出方式,它减少了 CPU 的空闲等待时间,提高了 I/O 速度。脱机输入输出方式是指在一台外围机的控制下,将用户程序和数据预先从低速输入设备输入到磁带上,...

Global site tag (gtag.js) - Google Analytics