首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 系统设计师们如何思考的
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • loveamanda
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-24 15:52:54 楼主
    俺很郁闷,一些庞大的系统是如何设计的  我想知道系统设计师是如何做的
    有些比较弱的问题想问明白了

    1.设计师是如何统观全局的?
    2.他们如何学习,他们主要学习什么?
    3.他们需要训练什么能力吗?  是不是智商都比较高
    4.他们如何分析事物, 他们对需求的理解一定很透彻, 需要借助工具吗?
    5.他们需要掌握哪些技术吗?
    6.他们如何与用户做最有效的沟通?


    如果您懂,或者说您是一位系统设计师, 能否解开我心中的疑团

    对一个成长中的程序员来说, 我很想知道这些  谢谢

    10  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • caimps
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 22:03:431楼 得分:0
    经验
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • loveamanda
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 15:27:472楼 得分:0
    与成功者为伍, 我也能渐渐成功  我现在太孤独了,连个讨论的人都没有
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • woliyingsheng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 11:19:133楼 得分:0
    LZ问出了我的心声。我也很想知道
    帮顶了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kelph
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 20:42:554楼 得分:0
    分析问题的基本方法
    经验
    努力
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • loveamanda
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-27 08:40:505楼 得分:0
    我也想经验可能是决定性因素, 想想自己,没做过什么太大的项目, 公司不是纯软件公司那种, 所以只是自己找点活来做,

    可能有些想法或思考方式是自己做了之后才能体会到的吧,
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • redcn2004
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-27 09:05:426楼 得分:0
    引用 2 楼 loveamanda 的回复:
    与成功者为伍, 我也能渐渐成功  我现在太孤独了,连个讨论的人都没有
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • loveamanda
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-29 08:16:257楼 得分:0
    有经验的朋友能否聊聊你们的心得,
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • a123lm
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-02 10:58:108楼 得分:0
    引用 3 楼 woliyingsheng 的回复:
    LZ问出了我的心声。我也很想知道
    帮顶了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tobylee999
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-02 12:47:449楼 得分:0
    如果你有这个追求。那就跳槽吧,去家正规公司。
    如果不能跳,找一个公认设计得比较好的开源软件,仔细使用,仔细分析。

    个人的能力总是有限的,很多好的系统是一代人甚至几代的人智慧结晶,
    好的软件有一个逐渐成熟完善的过程,通常不是一个人灵光一现想出来的,所以有时候也别对自己要求太高

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaxiaorui2003
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-02 15:41:3610楼 得分:0
    引用 8 楼 a123lm 的回复:
    引用 3 楼 woliyingsheng 的回复:
    LZ问出了我的心声。我也很想知道
    帮顶了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • loveamanda
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-02 17:11:3211楼 得分:0
    赞同tobylee999 的说法, 目前正在考虑跳槽, 找个合适的地儿 
    谢谢伙计们
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • loveamanda
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-02 17:12:3612楼 得分:0
    转自:http://lucene-group.group.javaeye.com/group/topic/2538
    [软件架构师成长之路 ]

    对于任何一个软件开发人员来说,架构师都是一个令人向往的角色。就连世界首富比尔盖茨在2000年卸任公司CEO的同时,也担任了微软公司的荣誉角色“首席软件架构师”,可见“架构师”这一称谓的吸引力。架构师是公司的“金领”,有着非常高的收入,很少需要考虑生存的问题,从而有更多的精力思考关键技术问题,形成“强者愈强”的良性循环。部分优秀的开发人员在工作了一定时间后,就要开始考虑自己的未来到底向哪个方向发展。如果开发人员的沟通能力强过技术能力,在补充一定的项目管理知识后,可以向技术管理的方向转型。如果其对技术一直很感兴趣,而沟通能力也不弱,则可以试着进一步加强技术修养,以期向架构师的方向发展,最终“修成正果”。
    那么,到底什么是架构师呢?所谓的架构师,应该是一个技术企业的最高技术决策者。他主要负责公司软件产品或软件项目的技术路线与技术框架的制订。好的架构师都是善良的独裁者,具有很强的技术、良好的写作能力、良好的口头表达能力,能够在各个层次进行沟通。从开发人员到架构师的成长应该是阶梯式的,一般来讲开发人员在刚刚开始工作时只能开发简单的独立软件模块,慢慢的随着经验的增长,他开始接触一些相互之间有信息传递的模块,而后来,他会发现自己接到的开发任务已经不是一个独立的单体,这些任务由一些专门的软件部分组成,可能包含数据库,工作流引擎,消息服务等等各种功能模块,可能分布在不同的服务器上,所有的部分协同起来,完成软件功能。而这时候,体系结构的好坏将直接决定了系统的性能和可扩展性,而就在这时候,这名优秀的开发人员也开始思考架构师应该思考的问题了,或者说,他向成长为架构师的道路迈出了一大步。
    什么是架构师最具价值的技能呢?就是要了解不同的知识,做一个“杂家”或者说“博学家”。当然,如果你的数据库技术非常棒,或者你在工作流引擎方面具有不可超越的专家知识,那也是很不错的。好的架构师有好多都是从专家成长过来的。但是,这不是架构师应该做的事情,架构师应该做的是了解所有的东西,既了解技术的宏观面,又了解技术的细节。真正的架构师不仅仅要了解软件,也要了解硬件,在关键的部位使用合适的硬件来取代软件,可以成倍甚至成百倍的提高整个系统的效率。下面我将会以互联网行业对的架构师的要求为例,向大家讲解作为架构师应该具备的知识。
    互联网行业是当前最激动人心的行业之一,很多的创新都来自于这个行业,而每一个大型的网站如Google,Yahoo,Myspace等都需要解决一个非常复杂的问题,就是网站的分布式向外扩展(Scale Out)的问题。解决这个问题,需要最优秀的架构师对业务进行剖析,利用软硬件将网站进行重构,甚至根据业务研发相应的分布式技术,解决网站复杂的分布式计算的问题。如果你想在这个行业中成为一名架构师的话,需要至少掌握网络知识,硬件,软件,网站优化等方方面面的知识:
    网络知识。
    当前的软件已经绝对不是那种仅仅跑在一台单机上的孤立应用了。不仅仅是在互联网行业,任何一个行业的软件,都要求其具有网络功能。因此,网络知识是架构师必备的知识。我们所说的网络知识,不仅仅包括TCP/IP,http等互联网行业常用的软件协议,也包括网络规划,甚至更具体的说,根据网站应用所处的地理环境进行网络规划。比如人们常说:“这世界上最远的距离不是生与死的距离,而是电信到网通的距离”(笑)如果应用是建立在中国的,就要考虑电信用户和网通用户访问网站的速度应该都比较快才可以。这时候的解决方案可能有多种,比如采用CDN(Content Delivery Network内容分发网络)使得网站的内容发布到离用户最近的服务器,又可以采用把服务器放在一些所谓的双线机房中,甚至将几种方案结合起来使用。这些都统统归到网络知识中。做为公司的架构师,要对这些知识都有所了解,才有助于在遇到问题时找到最佳答案。
    硬件知识。
    了解硬件的极限,是架构师的基本功。我见过一些人,他们的眼中软件硬件都是没有极限的,需要资源就申请,系统性能下降了就买更高级的设备。然而,硬件的性能有很大一部分取决于I/O设备。而这些I/O设备依靠的都是机械物理运动,这种运动是有极限的。因此当资源访问量增大到一定的程度时,这种物理运动将成为瓶颈。比如说,在开发网站的过程中,记录访客的状态是一件很重要的事情,一般来说可以使用HttpSession来记录。而 HttpSession的存储问题将是一个很大的挑战,尤其是多机共享Session时,将HttpSession存成文件并通过多机共享或网络备份的方式来解决分布式的问题是常用的方案,然而,架构师必须考虑到这种方案是有I/O极限限制的,很难扩展到超过一定规模的大型网络。同时,架构师应该了解目前最近的硬件发展是否对软件系统会造成一定的影响,比如在多核的条件下是否对软件编程有新的要求,是否会对运行在虚拟机和非虚拟机上的程序有影响等等。
    软件知识。
    软件知识所包含的范围就更加广泛了。对于互联网行业来讲,架构师要了解操作系统,数据库,应用服务器等各方面的知识。比如说,如果网站使用的操作系统是Linux,就要了解这个Linux版本的性能与局限性,比如说最多可以存放的单个文件为多大。有的数据库的数据是以单个文件来存放的,虽然我们很少见到数据库中的数据多到不能再放入一条记录的情况,但是作为架构师,请时刻注意,这种可能性是有的。而且如果你有幸在一家高速成长的互联网企业中,而你所负责的应用又没有经过优化的话,可能你会很快见到这种现象。这种现象的发生可能是由于操作系统不支持大文件的原因,也可能是数据库不支持大文件。不论如何,架构师应该在这种现象发生之前就把一切都准备好。对数据库中表的拆分是架构师应该遇到的另外一个困难。一般来说增加应用服务器比较简单而增加数据库服务器则是比较复杂的问题,如果一个站点由多个数据库支持,架构师需要考虑如何在保证数据一致的情况下,让多个数据库分担压力。有些解决方案是将数据库的读写分开,使得大多数的查询sql不经过核心数据库,而只是访问数据库的副本,但事实上,这种方式也只能维护规模不大的网站。对于大型的网站来说,把业务分散到不同的数据库中,只共享必要的数据,才是合理的提高网站扩展性的解决方案。
    其他知识。
    作为系统架构师,可能还需要对分布式系统,负载均衡,网络安全,数据监控等等各方面都有所了解。不仅仅是了解理论知识,也要对相关的产品和业界进展有一定的认识。比如说做负载均衡最好的产品是那种。目前最常用的备份策略是什么,有什么缺点。如何使用缓存,如何做好日志分析等等。

    刚刚谈到的是架构师需要掌握的知识,然而,冰冻三尺非一日之寒。这个过程需要我们慢慢的积累。如果你已经进入到公司进行软件开发,请时刻关注你所开发软件的性能与可扩展性,而不仅仅局限在功能上,时刻想着任何一个简单的问题:我开发的模块如果放在多人并发的环境下会怎样,慢慢的就会有所心得。如果你还是一个在校学生,不要想着自己离架构师这个职位还很遥远。要知道,成为架构师的修炼之路是很长的,甚至可以说是终身的,因此早点进入学习状态,不断修炼自己。在学校期间学好离散数学,数据结构,操作系统,编译原理,体系结构,数据库原理等关键课程,并积极寻找机会到外面实习,增长自己的工作经验。如果有机会去到一些技术主导的公司中工作,就一定不要放弃这种机会,慢慢就会成长起来。最重要的,你会养成关注技术,勤于思考的好习惯。当有一天你发现自己对任何技术难题都可以一眼看到其本质,并能够将其分解为一个个可轻松解决的模块,你会由衷的感觉到知识给你带来的快乐,或许那一天,你已经是一个架构师了。


    作者:万欣
    原IBM CRL (China Research Lab,IBM中国研究中心) 资深软件工程师,光线传媒系统架构师。企业级应用方案设计解决专家。曾负责众多大型项目,包括:光线传媒E网、中国联通"联互通"信息管理系统、国家863项目基于角色的通用权限控制系统、国家863项目Thsswf工作流引擎、清华大学博学网投票系统(轻量级J2EE)、IBM Web sphere下Strategy Map 插件的开发 (Eclipse, GEF, EMF, Hibernata) 及斯伦贝谢(Horizon Viewer) 全球联合开发项目和斯伦贝谢产品使用记录组件。清华大学信息学院硕士。 东方标准国际java软件软件工程师讲师。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • loveamanda
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-02 17:13:5313楼 得分:0
    上周在Amazon买了两本书 《head first 设计模式》和《UML实务手册》  明天就可以拿到手了, 心情激动

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gonxi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-04 08:50:1914楼 得分:0
    首先要有宽广的知识面,对硬件网络软件都有深入的了解,对其他行业也要有足够的知识
    同时对技术的应用有特别的敏感性
    有良好的创新能力,可以举一反三

    有较多的项目经验,也可以大量积累别人的成功案例

    自己有良好的解决难题的能力,

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • loucc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-16 17:29:0815楼 得分:0
    呵呵,经验很重要,当然啦,最重要还是你明白你现在得做什么,你的产品得做什么,然后再到其它的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • leech125
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-27 14:46:0616楼 得分:0
    其实高级架构师可以有时间写本这方面的书了,太多需求了,我们现在只关注国外的这方面书籍,其实中国也有太多这方面人才,可以考虑写书的方式共享知识,鼓励写书
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zeng16107
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-28 21:20:3017楼 得分:0
    记下!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • 333sunshine
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-11 19:09:2118楼 得分:0
    中国很多系统设计师们看起来很牛,但只是花架子。

    并且很多设计师喜欢把一些国际标准,当前流行的架构等等放在嘴边。

    其实他们自己也不懂那些东西,只知道怎么用,但不知道为什么要那样用。

    讲不出道理来,只能照本宣科的搞。

    所以很多设计师说起来是很牛,你会感觉他讲出来的是一堆流行英文单词,

    让你觉得新奇,让你觉得神秘。

    一个架构师,真正要做的就是提供让客户满意的软件。

    一个好的设计师最好能够站着客户的角度,帮他想想他没想到的需求。

    你是否是一个好的设计师,问问你客户就知道。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mengge
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-21 10:09:4019楼 得分:0
    1.设计师是如何统观全局的?
    我想是一种抽象能力吧,他们眼里的系统已经不是一般人所见的系统了 ^-^
    2.他们如何学习,他们主要学习什么?
    学习架构、学习建模、学习OO...
    3.他们需要训练什么能力吗?  是不是智商都比较高
    IQ不一定高,但是做事情、想问题可能会比较透彻、有条理。
    4.他们如何分析事物, 他们对需求的理解一定很透彻, 需要借助工具吗?
    是的,能够借助于工具最好。
    5.他们需要掌握哪些技术吗?
    见2
    6.他们如何与用户做最有效的沟通?
    杀猪杀尾巴,各有各的杀法 :D
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lude8880
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-30 16:24:0620楼 得分:0
    直觉,嗅觉
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cy_9i0
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-31 22:45:1021楼 得分:0
    我想这些能力大概都是在工作过程中积累的吧,接触的多了,分析的多了,纵观全局的能力就有了、。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved