??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲喷奶水中文字幕电影,亚洲JIZZJIZZ中国少妇中文,亚洲国产精品嫩草影院http://m.tkk7.com/conans/category/32510.html你越挣扎我就兴?/description>zh-cnFri, 11 Jul 2008 03:37:22 GMTFri, 11 Jul 2008 03:37:22 GMT60选择一个框架的权衡 http://m.tkk7.com/conans/articles/214165.htmlCONANCONANFri, 11 Jul 2008 01:12:00 GMThttp://m.tkk7.com/conans/articles/214165.html     下面是我们对选择一个框架的一些思考,希望能对读者有所启发?br /> 1) 首先看对l护带来的什么效?br />     其实很多争论是没有意义的Q比如在没有一个大前提之下p行UNIX和WINDOWS谁好的争论只能是费旉Q同样做一个网站可以用10多种技术,一个公?特别是小公司)Q采用一U最适合自己客户要求的框架作Z要的开发要求应该是Ҏ培训新手和维护的?br /> 2) 在封闭和开放之间选择一个^衡点
    太开攑֒灉|会导致比较高的学习曲U,那样别hq不如直接用原生的工具呢Q太闭对公司虽然更安全(比如有些公司的组件只有二q制代码和用说?Q但是对开发h员的前途是不利的,如果人员留不住,最l也会拖慢公司的竞争能力?br /> 3) 不断U篏和持l过E才是正?br />     我们l新手培训时很强调用一个框架虽然站在别人的肩膀上了Q但是这q是一个v点而不是终点!一个框架最初用时Q肯定会发现有好多客戯的功能框架不能提供。那通过目逐步U篏lg吧,千万不要老是拯_脓搞开发。让每个开发者都有机会成为框架和lg库的贡献者,那这L文化氛围才是别的公司不能一下走学走的?br /> llano的三个版本集成如下:
llano for java
  ExtJS/Spring/Hibernate/SiteMesh/Freemaarker/log4j/JUnit
llano for .net 2.0
  ExtJS/NHibernate/log4net/NUunit
llano for .net 3.5
  ExtJS/LINQ/log4net

alex 7-10

CONAN 2008-07-11 09:12 发表评论
]]>
持箋集成工具hudson http://m.tkk7.com/conans/articles/213462.htmlCONANCONANTue, 08 Jul 2008 15:01:00 GMThttp://m.tkk7.com/conans/articles/213462.html一.什么是持箋集成

持箋集成的核心概?/span>

CI q程会经常构Y件组Ӟ在许多情况下Q每当源代码存储库(比如 Subversion ?ClearCaseQ中的代码发生变化时Q都要构Y件组件。CI 的好处是Q经常构Y件可以确保尽早遇到问题(比如代码~陷Q,避免问题在Y件开发周期晚期变复杂时才被发现?/span>

工具与过E?/span>

管 CI 实际上是一个过E,但是持箋集成 q个词常怸一个或多个工具相关联。在本教E中Q讲解如何安装、配|和使用 Hudson 作ؓ CI 服务器,但是要记住,CI q不只是个工兗实际上Q用的工具可能?CI 比较ơ要的方面,因ؓ CI 工具所做的仅仅是在代码存储库中探测CҎq行构徏。构E本w比用来q行它的工具重要得多?/span>

开始?CI

开始?CI 需要三个组Ӟ

  • ?Ant ?Maven {工具徏立的自动构徏q程
  • 一个代码存储库Q比?CVS ?Subversion
  • 一?CI 服务器,比如 HudsonQ但?cron 作业也可以满需?/strong>

我们来详l讨些组件?/span>

自动的构?/span>

CI q程会经帔R成YӞq需要通过构徏来完成。在 Java 环境中,Ant 是常用的构徏q_。可以?Ant 可靠地自动执行编译、测试等dQ甚臛_以执行Y件检查和部v。在掌握?CI 的所有组件之后,您会发现构徏{略是成功的 CI q程最重要的方面。如果缺适当的构E,CI 难以发挥作用?/span>

源代码管?/span>

Z?CI 正确地发挥作用,需要一个源代码理QSCMQ系l或存储库,比如 Subversion ?CVS。CI 服务器向 SCM 存储库查询代码修攏V在扑ֈ修改ӞCI 服务器执行签出(x新本地沙)q执行构建。除了执行得更频J之外,构徏q程与在本地环境中执行的构徏相同?

CI 服务?/span>

对于成功?CI q程Q需要用一个自动的q程监视 SCM 存储库ƈ在探到修改时运行构建,q也非常重要。对?Java q_Q有许多可用?CI 服务器,包括开放源码Y件和商业产品。它们的基本配置都很怼Q适合监视特定?SCM q在探测CҎq行构徏。所?CI 服务器都有自q优缺炏VHudson 其让h感兴,因ؓ它容易配|而且h强大的插Ӟq些插g可以昄试l果势{信息?br />

?Hudson ?/span>

Hudson 是一U革命性的开放源?CI 服务器,它从以前?CI 服务器吸取了许多l验教训。Hudson 最吸引人的Ҏ之一是它很容易配|:很难扑ֈ更容易设|的 CI 服务器,也很难找到开即用特性如此丰富的 CI 服务器。Hudson Ҏ使用的第二个原因是它h强大的插件框Ӟ所以很ҎdҎ。例如,一?Hudson 插g可以随时间的推移跟踪 FindBugs 和代码覆盖。它q可以报告测试结果的势Q来?JUnit ?TestNGQ以及构建结果和对应的执行时间?

Hudson 需要运?Java 5。如果需要?Hudson 附带的嵌入式容器QWinstoneQ之外的其他容器Q那么只需使用一U?Servlet 2.4 容器。对于大多数情况QWinstone p够了?br />

?Hudson使用

CI q程的最后一个方面是 CI 服务器本w。CI 服务器在整个开发过E中的主要作用是控制者:当服务器在代码存储库中探到修改Ӟ它将q行构徏的Q务委托给构徏q程本n。如果构建失败了Q那?CI 服务器将通知相关斚wQ然后l监视存储库。它的角色看h是被动的Q但是,它是快速反映问题的关键?/span>

安装 Hudson

使用 Hudson 的主要好处之一是它的设|很单。在最单的情况下,Hudson 只需要两个步骤:

  1. 下蝲最新的版本Q它打包Z?WAR 文gQ?hudson官方|址:https://hudson.dev.java.net/
  2. q行 java -jar hudson.war?

q样可以了。因Z载的是一?WAR 文gQ所以如果愿意,可以它部v?Tomcat ?JBoss {容器中。这完全由您自己军_。当ӞHudson 假设在安装它的机器上q行着 Java 5Q而且如果定义?JAVA_HOME 环境变量QHudson ׃使用它。(正如前面提到的,Hudson 需?Java 5。)

在安装ƈq行 Hudson 之后Q将 WAR 文g部v?servlet 容器或从命o行执?java -jar hudson.warQ,启动览器ƈ讉K默认安装位置。如果通过命o行运?Hudson 而且您在本地机器上,那么可以讉K http://localhost:8080/?/span>


如果一切正常(实际上不太可能出问题Q,应该会看到图 2 所C的 Hudson 启动面?/span>

配置 Hudson

如果讉K Hudson 主页的本地实例ƈ单击左上角的 Manage Hudson 链接Q应该会看到?3 所C的可配|选项列表?/strong>

?3. 配置 Hudson 非常Ҏ

参数说明:
system.message 填写一些说明信?br /> Quiet period:hudson定时构徏工程的时?U?
 :讄hudson登陆的规?默认为匿名登?
TCP port for JNLP slave agents:不了解JNLP不敢胡写M是三种方式:固定(fixed) 随机(Radom) 不?disabled),使用固定时可以填入JNLP信息

security realm:可以使用中间件容?数据?LDAP来验证安?具体怎样用法没用q?以后会有更新,研究?
authorized:可以讄w䆾的验证方?pȝ用户,匿名用户,自定义用?q有l承用户(此处也在研究?使用匿名用户)
JDK installations:讄JDK的安装\?br /> Shell executable:讄window shell命o
Ant installation:讄ant 的安装\?br /> mave installation讄mave的安装\?br /> cvs executable:讄cvsnt执行q程的\?cvs.exe)
.cvspass file:讄cvsnt理员文件的路径(passwd文g)
e-mail notification:讄当发生错误时发送的邮箱地址
hudson url:是hudson的默认地址

q可以配|服务器的其他几个方面,比如?Hudson 提供一个电子邮件服务器的位|,以便在构建失败时接收电子邮g。根据您的组l设|电子邮件的方式Q可能需要让pȝ理员帮助设|这个特性。设|电子邮件ƈ不是必需的;Hudson q支持以 RSS 作ؓ通知机制Q对于某些h来说Q这U方式比电子邮g更好。究竟选择哪些通知机制完全取决于您。(注意Q这里说的是 “哪些”Q也是_可以同时使用多种通知机制Q)

?Hudson 中配|项?/strong>

既然 Hudson 已经能够?SCM 存储库通信了,p配置目了。这个示例所用的目UCؓ solar-ci。在 Hudson 主页上单d上角?New Job 链接。这时会看到?5 所C的屏幕Q?/strong>



该页面可以我们通过hudson来管?/span>cvs里的一个对应的工程

Project name:工程名称

Description:描述信息

Discard build:如果选择此项可以讄build记录保存的天?/span>,或?/span>build记录保存的数?/span>,或者只保存最新的build记录,一般不需填写

Advance project options:可以讄hudson定时?/span>cvs工程的时间间?/span>,q可以指?/span>cvs工程check out到本地的工程路径,一般不需要填?/span>

Source code management:我们选择cvs出C下参?/span>:

Cvsroot:cvs登陆字符?/span>,格式(:protocol:user:password@host:path),例如: :pserver:cvsadmin:1@127.0.0.1:2401:/CVSNT/Repository,使用cvs必填
 

Modules:填写cvs仓库下的具体工程?span lang="EN-US">, 使用cvs必填

Branch:填写分支名称,也可以勾?span lang="EN-US">this is a tag,no a branch指定标记名称

 

选择subversion可以q行相应?span lang="EN-US">subversion

Build trigger可以讄hudson自动执行的一些动?span lang="EN-US">,build after others projects are built指定hudson构徏完成后需要l构建的工程?span lang="EN-US">

Build periodically Ҏhudson定义的语法规则来讑֮自动构徏工程的时间间?span lang="EN-US">

Post-build actions

讄一些构建完成后的动?span lang="EN-US">,如放邮g,打包,产生试报告,产生java doc {?span lang="EN-US">.

点击ok保存讄

使用hudson
q入刚配|的目,可以在左?span lang="EN-US">build history看到历史?span lang="EN-US">build
记录,点击build now 可以手动执行构徏动作,完成后可以通过记录标记的颜色来看是否出?span lang="EN-US">,U色有错,蓝色成功.点击记录查看详细信息,如果有变?span lang="EN-US">hudson列出类信息

elipse插g应用
eclipse updatesite:http://code.google.com/p/hudson-eclipse/
重新打开eclipse在windows->preferences下将出现hudson选项,讄默认的hudson url保存.
然后选择windows->open view打开hudson view
如果你己l配|hudson目列出hudson的项目名U?右键菜单可以看到所有的执行菜单,使用q是很方便的,希望大家来完善这文?


CONAN 2008-07-08 23:01 发表评论
]]>
中小型企业遗留系l{换指?/title><link>http://m.tkk7.com/conans/articles/210661.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Wed, 25 Jun 2008 11:46:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/210661.html</guid><description><![CDATA[<p><a name="N1005B"><span id="2wa66mu" class="atitle">引言</span></a></p> <p>成功的大型企业需要其 IT 部门通过跟上技术发展来保持高水准的竞争力。这通常需要代价很高的l常性投资以l护当前?IT 投资和增L的投资。然而,中小型企业通常只有有限的预来设法C化其 IT 基础设施和资产。通常可以注意刎ͼ中小型企业只有在充分利用当前 IT 投资以后才会考虑重大的升U。他们每隔几q进行一ơ较大规模的C化投资,而不是连l地q行投资?</p> <p>“中小型企?#8221;Qsmall and medium businessQSMBQ这个术语非怸观ƈ取决于若q因素,例如q度营业额、员工数量、业务的地理分布{等。就本文而言Q我们的虚构公司 Mod Communications , Inc.Q以下也UCؓ“该公?#8221;Q是一家ؓ中西部若q个城区的家庭客户和当地企业提供高?Internet 接入、有U电视、本地和镉K电话以及无UK信服务的电信服务提供商。该公司是需要现代化?IT pȝ的中型企业的代表。该公司拥有 200 名员工,已有 20 q的l营历史Q分支机构不过 10 个,q拥有大U?75 ?IT 人员l护其当前的 IT 解决Ҏ?/p> <p>面对新的竞争Q他们感觉到了ؓ当前客户l持较高服务U别的压力。该公司希望着手进行遗留系l{换活动。该公司准备{换活动做出重大投资,q正在寻求现代化路线图规划方面的帮助。本文是?IT N、架构师和解x案开发h员准备的Qƈ解释了如何分析该公司的当前现状、组l动力和挑战Qƈ提供了一l?IT 转换zd。本文还演示了一些可在该解决Ҏ开发过E中提供帮助?IBM 产品和服务?/p> <p>Mod Communications Inc. 的大多数应用E序都是客户信息控制pȝQCustomer Information Control SystemQCICS®Q应用程序,q些应用E序使用 COBOL ~写q运行在 IBM System z™ pd中的 IBM 中端大型机系l上。虽然这些应用程序l尽最大可能地提供核心业务服务Q但是它们非常庞大、独立ƈ且难于修攏V替换或从头重新构徏q些应用E序会对当前业务程产生破坏性的影响Qƈ需要收集在q去 15 q里加入到系l中的业务智能和规则。采用某个基于面向服务的体系l构原则的渐q式遗留pȝ转换q程Q是有选择地替换该公司的应用程序组合的更加l济合算和风险更低的Ҏ。此Ҏ的一个示例是使用 Java EE (Java™ Enterprise Edition) 来开发将在诸?IBM 推出?Websphere® Application Server {应用程序服务器上运行的应用E序。新的应用程序将在可能和适当的Q何场合重用现有的功能。在构徏和部|新lgӞ其用范围超出目前应用程序的部分lg公开为服务,以便在以后的开发工作中重用?/p> <p>下面几个部分解?IT 架构师或N如何执行数据攉、分析和zdQƈ遗留系l{换过E告知公司的重要高层理人员。下面将从数据收集期间的各个步骤、分析阶D得出的各种输出、所定的徏议备选解x案和针对转换规划的指C等斚w对相x动进行描q?/p> <p><a name="N10079"><span id="c6u6ccw" class="atitle">数据攉</span></a></p> <p>数据攉的重点在于获得关于业务活动、所使用?IT 技术和 IT 投资{事的当前状态的信息。然后可以分析该数据以确定{换机会。以下步骤将准备q执行有效的数据攉工作Q?/p> <p><a name="N10083"><span id="2keqm2e" class="smalltitle">步骤 A. 获得或准备公司的l织l构?/span></a></p> <p>务必要了解公司的l织l构图,以便定重要的团队成员和权力人物。Mod Communications, Inc. 的组l结构图表明Q总裁和首席运营官QChief Operating OfficerQCOOQ以及执行副总裁QExecutive Vice President Q将负责监督重要的业务和技术活动以及投资。对于日常职能和zdQ该l织拥有诸如“操作l?#8221;?#8220;业务服务l?#8221;?#8220;财务服务l?#8221;?#8220;通用开发组”{小l。其中每个小l都h业务和技术h员。这些小l的负责人将向执行副总裁报告Qƈ且是主要的业务和技术相兛_{的权力人物?/p> <p><a name="N1008D"><span id="iicaqmg" class="smalltitle">步骤 B. 获得有关公司l营的初步信?/span></a></p> <p>此步骤将为准备用于数据收集的详细问题集奠定基。v初,可以从与高人员q行的讨Z获得有关公司l营的粗略概c在非正式的气氛中提出有兛_司背景、公司发展、公司所属行业、优ѝ弱炏V新Z、察觉到的竞争威胁、所获奖以及类g题的诱导性问题?/p> <p>?Mod Communications, Inc. q行的有兌{换活动的M目标的讨E中Q一名高U员工提到该公司作ؓ中小型企业区D中的最佛_工工作场所之一而感到自豪。大多数员工都已lؓ该公司工作了 15 q以上。另一位高层管理h员提到实现面向服务的体系l构在公司日E上处于优先位置。该信息可以在分析阶D中提供重要的输入,以评估关于组l更改和准备情况的可能徏议所h的媄响?/p> <p><a name="N1009A"><span id="4gqewuk" class="smalltitle">步骤 C. 准备用于详细信息攉的问卯?/span></a></p> <p>此类问卷上的问题应该跨越q泛的主题,例如业务目标、当前流E评估、应用程序组合评估、企业数据体pȝ构、基设施和操作体pȝ构、面向服务的体系l构Q以及治理。以下问题类g一个样本集?/p> <ul> <li>Mod Communications, Inc. 在未来三至五q的业务目标是什么? <li>当前用于为各方(例如客户、供应商{等Q提供h值的业务程Q由人员?或系l执行的zd集)是什么?请列出ƈ提供要的叙述? <li>业务程是否h文档记录Q其中每个业务流E是否存在端到端的业务流E视图? <li>为未来三至五q计划的主要业务目标和远景是什么?其中一些示例包括改q服务请求周转时间、收入增?<em>x</em> 倍、操作成本降?<em>y</em> 倍、改q客h意度指标{等? <li>所定和分析的业务程是否与业务目标和q景持箋一_当前Q哪些业务流E可以认为是与业务目标和q景保持一致的Q哪些是不一致的Q? <li>当前的应用程序是什么,它们支持哪些业务程Q? <li>是否计划在即到来的一q里设计、开发或实现M新应用程序?h据情冉|供详l信息? <li>在当前应用程序中Q业务逻辑x事项是否与操作关注事分,从而支持操作上的松散耦合q促qY件和信息资的重用? <li>是否存在针对遗留应用E序或功能子集的既定{略Q遗留代码中是否存在导致难于随旉推移而停用遗留系l的代码依赖性? <li>h供有兛_前企业数据体pȝ构、数据模型、维护以及增强方法、数据管理方面、数据仓库等的详l信息? <li>对于您的操作的某些方面,您是否必M赖批处理数据传输Q如果是Q请详述? <li>h供有兛_前存在的g和Y件基设施的详l信息? <li>提供当前|络界面Ҏ的详l信息。什么功能通过|络提供Q以及在使用什么体pȝ构和产品Qؓ来的网l界面计划了什么附加功能? <li>h供当前的设计、开发、测试和生应用环境的详l信息? <li>是否准备了够和有效的流E来处理以下有关当前操作环境的事?q将包括用于变更理、引入新技术和服务理Q如果适用的话Q的程? <li>您是否与W三Ҏ务提供商或代理徏立连接?如果是,该连接的性质是什么(例如Q同步、异步、单向、双向)Q? <li>是否存在促进Z服务的体pȝ构的基础设施Q例如,帮助实现应用E序之间的消息交换、消息{换、独立服务查扄技术)Q如果是Q请详述? <li>是否有团体在考虑跨功能应用程序的可重用性? <li>您关?SOA 采用的动机是什么?是定位于实现附加的收入生渠道(例如实现更快的新产品上市或获取新客户Q,q是通过促进当前应用E序及系l的更好可重用性和l护来降低成本? <li>您当前的 SOA 方向是什么?您计划将要用的技术是什么?是否存在M用于目标 SOA 体系l构的现有高U设计? <li>您是否有M现有?Web 服务实现Q如果是Q请提供详细信息?</li> </ul> <p>来自 Mod Communications, Inc. 的高Uh员群{群力,一起合作回{上q问题?/p> <p><a name="N100EF"><span id="ci6keys" class="smalltitle">步骤 D. 计划安排与重要客L团队成员的后l访?/span></a></p> <p>从问L案中Q确定进一步的信息需求领域,q计划安排与重要人员的后l访谈。用组l结构图来确定要访谈的其他h员。完成后l访谈时Q数据收集阶D差不多完成了。随后的解释说明可以通过电子邮g或电话来获得?/p> <p>对于 Mod Communications, Inc.Q将准备一个关于访谈成果的报告。该报告提供了公?IT 环境和基设施、IT l织、主要角色和职责的当前状态摘要、应用程序组合概q、系l和功能摘要Q以及当前治理、未来三至五q的业务q景和目标的要概q。这可用作将来的所有工作的参考?/p> <p><a name="N100FC"><span id="gi4aa26" class="atitle">数据分析</span></a></p> <p>在数据分析过E中Q研I收集到的相兌料和文档信息Q以分析各种备选解x案,从而提供徏议。按以下几个斚w对信息进行组l:</p> <ul> <li>?IT 转换的成功最重要和最关键的业务远景和目标Q以及指标? <li>隄。这些是公司正在试解决的关键业务和技术问题? <li>解决Ҏ所要考虑的约束? <li>应用E序l合分析的发现结果?</li> </ul> <p>对于 Mod Communications, Inc.Q以下是重要的业务远景和目标Q?/p> <ul> <li>实现业务各方之间改进的信息流Q包括客戗客h务代表、技术h员以及销售和市场代表。计划通过此目标削?7 - 10% 的业务开支? <li>通过C化活动和新技术采用来处理公司的客户保留问题。创建现代化路线图。向重要客户和员工传达该路线图? <li>提高软g和应用程序开发这个重要流E的效率。公叔R要简化活动和dQ以推动更高的团队成员效益和工作效率。目前,预计要发布的实际软g或应用程序要在发布日期之前一个星期才能准备就l。通过提高程效率此旉提前Z个星期。满x目标可以降低压力U别Q同时还可以提供更多的时间进行有兌发布的附加测试、交和其他zd? <li>通过新技术和更好的直观用L面降低培训和支持成本。预计通过此目标将培训成本削减 15%? <li>最q的一调查表明,该公司的内部应用E序供应感觉非常~慢Q尽该解决Ҏ所提供的全面功能获得了好评。开发团队需要用最新技术业务解决Ҏ对用h有吸引力。公司应该通过更好的用L面设计来促进易用性和工作职能效率改进? <li>提高市场竞争CQ同时吸引更多销售潜力。通过遗留资的现代化Q销售主能够吸引更多销售潜力ƈ赢得更多业务?</li> </ul> <p>Z与团队成员进行的有关该公怋用的当前程和实늚详细讨论Q以下是重要的难点和问题场景Q?/p> <ul> <li>随着旉推移Q代码变得日益难于维护。因此,引入更改要花更多的旉。这Dl护成本增加Q给定版本所接受的增强功能请求数量减。开发h员的工作效率有待提高? <li>公司不能Ҏ地招募新的开发h员来从事 COBOL 斚w的工作,COBOL 是目前用的主要~程语言。此外,要让新的开发h员在短期内高效地工作也非常困难? <li>技术文档和信息非常有限Qƈ且构建和发布q程很不可靠? <li>需求、设计以及代码和试需求之间的可跟t性非常有限。这Dl护和代码修改工作非常耗时Qƈ且无法准预时间和成本? <li>公司拥有几名对公司的业务、遗留系l和数据库非怺解的q程开发h员,但他们不具备使用C~程语言所必需的面向对象技能? <li>公司~Z用于试发布准备情况的测试用例主集,q且~陷跟踪也不够全面。缺LҎ分析跟踪非常随意Q没有进行广泛的文档记录?</li> </ul> <p>对于 Mod Communications, Inc.Q解x案徏议需要考虑的各U约束如下:</p> <ul> <li>公司在技术方面拥有几名非怺解业务方面、代码结构和数据库的团队成员。然而,׃目前的应用程序维护和对增强功能的承诺Q不能期待这些资源在转换工作期间的大规模可用性和参与? <li>该公司的几乎所有技术团队成员在 COBOL ~程斚w都非怼U。然而,他们~Z有关面向对象的方法和最新技术的知识。该公司希望保留大多数技术h员,因ؓ他们非常了解该业务解x案。该公司q因为善待员工而获奖,据行业调查表明这是个工作的好地方? <li>该公司的代码文档非常有限?</li> </ul> <p>该公司的应用E序l合分析提供了以下信息: </p> <ul> <li>应用E序主要Z大型机? <li>20 个主要应用程序? <li>15 个应用程序有 7 q以上的历史? <li>所有应用程序都随着旉推移而进行了大量的自定义?</li> </ul> <p>该公怸直?IBM Host Access Transformation Services (HATS) 来将某些应用E序从已有基于字W的屏幕界面转换?Web 用户界面。这使该公司可以快速将现有的基于字W的屏幕界面转换为网和表单Q从而将 Web 通道用于光留应用程序。该公司应该通过创徏Z最l用戯入、易用性、导航和上下文内容呈现的新用L面来Ҏq行改进?/p> <p><a name="N10169"><span id="w2k2q2a" class="atitle">解决Ҏ</span></a></p> <p>下一步是为客户交付一l解x案徏议?/p> <p>Z对信息的分析Qؓ重要?Mod Communications, Inc. 高层理人员准备一个解x案徏议,以从资金和项目决{方面说明后l步骤?/p> <p>核心是让公司在保留其当前遗留应用E序l合的h值的同时Q逐渐地迁Ud可促q松散耦合的体pȝ构的新技术。一个徏议是采用 Java Enterprise Edition (Java EE) 作ؓq行遗留pȝ转换的合适应用程序技术。Java EE Ҏ使公司可以开发能够提供出色的囑Ş和多通道用户界面的应用程序,同时qؓ面向服务的体pȝ构做好定位。这D对各U方法进行分析以实现 Java EE 环境。这些方法如下:</p> <p><strong>a) 替换Q?/strong>诸如服务订单管理、问题报告和理及计费系l等当前核心应用E序替换为商业化现成Qcommercial off-the-shelfQCOTSQ应用程序。然后自定义和配|该应用E序和界面。这是实现{换的快速方法,但它在客h受、对现有业务程和功能的影响、组l变更和培训需求方面引入了风险?/p> <p><strong>b) 重新~写Q?/strong>使用 Java EE Ҏ重新~写应用E序。优先重新编写将l历转换的应用程序。对q些应用E序执行ZҎ的完整Y件生命周期开发,包括需求分析、设计以及开发和试。已知当前应用程序的数据库层l构非常良好和高效。在可能的情况下Q新lg可以重用数据库层的功能?</p> <p><strong>c) 大规模{换然后客户化定制Q?/strong>q是选项 b) 的一U变化Ş式。在此情况下Q将使用自动化的工具执行所有应用程序到 Java EE lg的大规模转换。然后修Ҏ得到的组件以适合需求?</p> <p><strong>d) 渐进地{换到目标q_lgQ?/strong>使用Z Java EE 的体pȝ构来构徏q渡环境。从当前遗留pȝ中公开?#8220;q后”模块提供实现。渐q地在目标^C~写代码以取代对遗留模块的依赖?</p> <p><strong>e) 使用W?4 代语aQ?th Generation LanguageQ?GLQ方法渐q地转换Q?/strong>在此情况下,用某U?4GL 语言来定义应用程序。用工具将 4GL l构自动转换?Jave EE lgQ然后将后者部|在目标q_上。例如,此方法可以?IBM 企业生成语言QEnterprise Generation LanguageQEGLQ来实现Qƈ且很适合于非常精通诸?COBOL {程序语a的程序员Q他们将不必学习诸如 Java {面向对象的语言?/p> <p>从诸如成本、工作量、时间和复杂性等斚w分析上述Q然后按照下面图 1 所C的方式对这些徏议进行归c:每个参数都具有一个优先名称—?#8220;?(H)”?#8220;?(M)”?#8220;?(L)”?/p> <br /> <a name="fig1"><strong>?1. 对各U备选解x案方法徏议的分析</strong></a><br /> <img height="376" alt="各种备选解x案的分析图解" src="http://www.ibm.com/developerworks/cn/architecture/ar-legtrans/AlternativeAnalysis.gif" width="482" /> <br /> <p>下面是一些补充徏议:</p> <ol> <li>采用模型-视图-控制器(Model-View-ControllerQMVCQ体pȝ构模式以保体系l构的灵zL。用此ҎQ数据(模型Q和用户界面Q视图)彼此分,以便对一个方面的更改不会影响另一个方面。控制器处理q响应用h作? <li>优先考虑要{换的应用E序Q以便在对业务具有最中断的情况下获得递增的业务好处。优先考虑影响客户感受的应用程序,例如服务订单理、故障单理和新服务的供应。这样可以将重点充分集中在从客户和业务用戯度看来最重要的应用程序上。这样可以帮助获得客户信仅R采用、保留和改进的满意度? <li>建立 IT ȝ理委员会,保 IT 投资处于正轨Q以在可接受的风险预内产生预期的投资回报。该委员会应该监督技术活动、重要参与者之间的交流、标准化zd和体pȝ构审核? <li>采用Ҏ驱动的步骤进行Y件开发。这会提供更好地规划和管理各U{换项目的d、日E安排、预的能力。这q有助于更好地管理风险,例如成本支、时间和功能覆盖率风险。IBM GS-Method ?Rational® Unified Process (RUP) 是此类Ҏ的示例? <li>对于从需求到设计以至开发和试的每个开发生命周期阶D采用最新的工具。这可以实现更好的文档、可跟踪性和控制Qƈ具体化方法驱动的步骤。IBM Rational 产品和工L合具有满Y件开发生命周期和ȝ需求的丰富工具集。请参见<a cmimpressionsent="1">参考资?/a>部分以获得指向更多信息的链接? <li>构徏和主动管理服务模型:各种应用E序lg是在其他应用程序中重用的直接候选组件。通过d辨别跨部门边界所需的服务,来的开发和l护工作会得益不少。这q可以推动功能的重用? <li>执行遗留资的审核:q可以帮助从当前pȝ中获得重要信息,例如业务规则。它q有助于了解业务功能和模块化工作。一些现有的遗留代码可以lg化,q公开为服务以供新pȝ使用Q直到将遗留代码替换为新lg? <li>对于中长期而言Q应评估可在应用E序之间的消息交换、消息变换和转换以及独立服务查找斚wQ进一步促q整个组l中的面向服务的基础设施软g的采用。在q方面,IBM WebSphere l合提供了若q个产品。请参见<a cmimpressionsent="1">参考资?/a>部分以获得指向有兌些品的|页的链接? <li>评估规则引擎技术的采用Q以在捕获和使用业务规则斚w引入效率。目前,该公司的代码资非常脆弱Q因为在q些q来Q代码中已引入了各种对业务规则的更改。目前,业务规则与主代码紧密耦合Q得在做出更改时必d心}慎,同时q增加了试需求? <li>在初始项目中利用外部专家或顾问:q允许更好地集中于现代化工作Qƈ为现有h员提供更多时间来跟上新技术的发展步伐。在C化工作期_完全使用现有人员也许无法应付q去Q因为团队成员将会忙于满_前承诺。此可以通过与服务提供商的一个或多个服务U定来实现。例如,IBM Global Services 拥有这斚w的各U解x案?</li> </ol> <p>提供一l在C化期间优化内部操作的Q以便ؓ当前人员提供更多参与Z。这些徏议包括:</p> <ol> <li>减少软g发布周期数量Q同时将重点更改Z集中于最关键的增强功能领域:q允许将资源集中于对客户满意度、保留和获取非常关键的领域? <li>Ҏ逻辑相关的领域对l护目q行分组Q这有助于提高开发h员的工作效率? <li>创徏q用一套全面的试用例Q在开发和l护周期中,会发生以下一U或多种情况Q?) 更改现有的功?数据l构Q?) 引入新的功能/数据l构Q?) 在完成项?1 ??2 的同时确定ƈ修复错误。由于应用程序具有如此多怺兌的部分,必须以有l织的方式执行测试以实现全面的覆盖率。在q方面,全面的测试套件可以提供好处? <li>评估所要采用的帮助台工P以便提高快速查找、分析和解决问题的能力。此cd兯可以通过分析问题势Q从而帮助确定问题正在增多的应用E序领域。用于处理问题的知识库的更好文档记录和创Z是非常有益的成果?</li> </ol> <p>h意,q些会因情况而异Qƈ且应该基于与某个情Ş有关的相关信息。上q案例研I只是一个用作指导原则的CZ?/p> <p><a name="N101EC"><span id="q6qsqw2" class="atitle">转换规划</span></a></p> <p>Z所选的Qؓ执行团队草拟l的转换计划。这包括短期Q一至两q_、中期(两至三年Q和长期Q五q_的项目计划。创建活动(目Q、活动的业务价倹{持l时间、大致成本和资源需求的摘要。这有助于推动资金分配决{和成果?/p> <p>转换规划期间的重要考虑事项之一涉及到硬件或遗留q_的现代化。在q一点上Q评估重用可能性也是最有利的。例如,客户拥有一?System z pd中的 IBM 中端大型机系l。该pȝ的功能之一是能够在q行 AIX® ?WebSphere Application Server 的单独分Zq行 Java 工作负蝲。该pȝ的此功能可用于实现重用,q且是确定投资需求时的一个重要考虑事项。请参见<a cmimpressionsent="1">参考资?/a>部分以获得指向更多信息的链接?/p> <p><a name="N101FF"><span id="oyk44ay" class="atitle">l束?/span></a></p> <p>本文提供了深入的见解Q说明了如何Z型企业的主要高层管理h员提供遗留系l{换和C化活动的和指对{本文介l了如何通过执行数据攉、分析和步骤Qƈ提供转换规划信息以支持资金分配决{,从而有条不紊地完成该Q务?/p> <img src ="http://m.tkk7.com/conans/aggbug/210661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2008-06-25 19:46 <a href="http://m.tkk7.com/conans/articles/210661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于架构师和架构设计的一些常见误解(3Q?/title><link>http://m.tkk7.com/conans/articles/209891.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Sun, 22 Jun 2008 11:05:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/209891.html</guid><description><![CDATA[3. 架构设计的好坏只取决于架构师的能力, 和开发团队无?br /> <br /> <p>l常会听到这L抱怨,我做出的架构设计Q下面的力不够,无法实现。这个架构是XX推荐的,为啥做下来问题会q么多? 我们的架构师只会_其实水^不行Q做出来的东西很隄{等?br /> <br /> 其实认同我说?的h应该已经明白Q架构既然是渐进验证的,那么架构的可行性就是一个必考虑的问题。架构师需要熟悉自q团队成员的构成和技术特点,在此基础上对设计做权衡,再好再优U的架构也要取决于团队成员的理解能力和执行能力Q这点对很多人来说居然完全不理解?/p> <p>和现在的各\有志青年一P我也曄努力奋斗要做一个架构师Q我?1q参加了sun的架构师认证考试。那时候的SCEA考试q没有什么参考资料和贩卖{案。各路精英只能在一个国外论坛上泡着交流l验Q经常看到某某高分过了的消息Q又看到某某q_表现不错Q又差了多少分没q云云?br /> <br /> 我看了很多书Q也颇有些项目经验,通过成W却一般,80分左叻I所以很想知道别人的设计是如何做的,什么样的设计可以得到更高的分?l过协商Q我和一个挪威hQ一个d国hQ有20q的开发经验)交换了通过考试的作业。让我震惊的是d国h设计的粒度,他的架构设计几乎x本h做的详细设计一P只要单的译工作已l可以runQ即便是对d国h的严谨细致早有所闻,我还是难以想象这是一个小目的架构设计?和d国h做了交流Q他说他必须做得q么l,否则他的团队成员理解会生偏差, face to face的交也不能弥补q个问题Q因Z的小伙子不是都够聪明?br />  <br /> q让我第一ơ意识到Q架构师的工作的一个中心,q不是直接面对客P面对老板而是面对技术团队成员。其后的工作中我又多ơ碰到类似的问题Q?同样的需求,一个架构师面对不同的团队成员的时候,很可能作出截然相反的设计。架构师必须针对团队成员的特点,认真考虑团队成员的技术能力和学习能力Q有针对性的选择和^衡,甚至是牺Ԍ才能保证架构的可行性?/p> <p>在一个理想的技术团队,架构师固然可以只兛_技术,但是q样的团队现实中存在的概率有多少Q?如death to march 2nd中所_现实的Y件开发团队,大部分都要面对一个资源短~问题,<br /> <br /> 不能说服老板l你_的资源,那么只能选择充分使用现有的资源,菜刀也是刀Q对不对?/p> <p>我不知道有多项目架构师q开发团队能获得真正的成功,一般来_架构设计的项目都是中{以上规模的目QhC般都会超q?0个以上,寚w目管理,Ҏ术h员有着更高的要求。不公叔R乐意高薪聘请外援q行架构设计来解决问题,但是l果都不理想Q原因即如此?br /> <br /> 我非正式的咨询过2个项目,架构设计都由大堆q工程师完成,pm哭着脸跟我抱怨,我们的架构没问题Q都是大堆钱做的, 国外啥啥都这么用Q但是我们的E序员不行,无法很好的将架构实现?/p> <p>姑且不谈大堆׃ؓ了推销自己的品加塞的东西Q单pU丝毫不考虑团队成员构成Q千Z面的拯设计Q都已经注定成功只能是偶然了。这L架构Q又如何说没问题Q一个架构师最低限度的责QQ既是将q种大众face裁剪调整到适合自己团队的面孔,交钥匙的做法是没戏的。我只能很无奈的告诉他们Q这样复杂的q度设计Q如果不做裁剪,即便我给你找到合适的E序员,你也无法承担旉上的成本Q何冉|能始终都会是个大问题?br /> <br /> 不少中小公司的同胞们敬Ԓ着大堆钱公司,指望他们能解x本的问题Q殊不知Q某U意义上Q架构设计的工作Q是没法外包的,你可以咨询,可以NQ但是干zL另外一回事。这点和互联|应用什么的Q还是挺大差别的?/p> <img src ="http://m.tkk7.com/conans/aggbug/209891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2008-06-22 19:05 <a href="http://m.tkk7.com/conans/articles/209891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于架构师和架构设计的一些常见误解(2Q?/title><link>http://m.tkk7.com/conans/articles/209890.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Sun, 22 Jun 2008 11:04:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/209890.html</guid><description><![CDATA[<p>2. 架构师是一个纯_的技术工?/p> <p>某方面讲q是对的Q但又不全对Q因为技术工作只是架构师工作做的一个核心关注点而已。一个nb程序员可能在技术方面是nb的,但是在很多方面确实欠~的Qƈ不适合做架构师?/p> <p>做企业应用的Q牵涉的面太q,加上行业生存环境又不是很好,企业理普遍也不规范Q所以很难象某些领域Q架构师是一个纯_的技术工作?br /> <br /> 首先Q如何获取项目经理和理层对你的信Q和支持, 是你开始工作的LQ?q一块和技术ƈ没有直接的关p,取决于你的表达能力和d性,你如何展C的实力,你做事是否够主动,是否有意识和能力L动项目。不能让老板感觉你就是一个greekQ这一条是很多不错的技术h员难以做到的。而实际工作中Q你也绝不能把所有时间都花在技术上Q你臛_要拿?分之一的时间去和pmQ和老板沟通,协商问题Q?才能得到你的生存I间?/p> <p>其次Q如何获得团队成员对你的信Q和支持,是你展开工作的基Q如果你不够传奇Q就需要你做一个牧师或者善于聆听的人, 通过熟悉自己的团队成员的构成和技术特点,才能充分发挥他们的所长,赢得他们的信d支持Q看hq好像是pm的工作,但是不尽Ӟ?所诉,架构设计q是一个个体脱d队的行ؓ。和团队成员打交道,多半又要花掉?分之一以上的时间?br /> <br /> 好吧Q你q要明白Qؓ啥要叫架构师而不是高U工E师Q这个已lout了)Q?是因Zq需要承担售前售后Q务, 如何单清晰的向不懂技术或者半懂技术的客户讲清楚技术问题,q是个学问,要做到这点,按我以前的老板说法Q你必须有常识, 常识要多道可以用一些简单的故事例子把东西讲出来Q所以有I多看看电视,多和销售学学,Zq得学点基本CgAQ上ơ我差点把某公司来给我们推销产品的工E师l踢出去了,在我提了意见以后Q丫居然坚持跟我说他们东西是最好用的,你敬业没错,但是好歹我才是用户吧?br /> <br /> 如果你的公司是做目Z的,恭喜你,你还要学会如何和客户周旋Q如何回避到客户内部以及客户和其他供应商之间的矛N厅R因为某斚wQ作为架构师Q你׃表了技术上的权威,你要明白一点,理上出了问题,从来都是往技术上推是最单的。项目之外的话,说v来一定要谨慎Q再谨慎。比如如果有客户不愿意购买设备和软g实现负蝲均衡Q找你咨询,你随口一_啥啥免费软g可以做,好吧Q你完蛋了,你要么就是得|了某供应商Q搞不好q就是你们公司卖的)Q要么,是{着来客户l你套口子吧?br /> <br /> 而且Q作Z个企业应用的架构师,你不可避免的要和各类厂商打交道,q里面也是大堆的学问Q虚虚实实的东西大把Q偶你甚至会受到美色或者银弹的dQ记住,只是偶尔Qh家一般不乐意在你q个U别上下血本)你要一不小心分不出真假Q很可能做了大堆钱公司的小白鼠Q搞的在客户和公叔R里外不是人?/p> <p><br /> q有Q架构设计往往q需要考虑到技术的生命周期问题Q?那么你对客户公司Q对开发公司的状况的了解,Ҏ个行业的发展势的了解,也会影响C设计的决{,q种东西往往跟市场有养Iq不取决于技术,q考核的就是你的视野和寚w题的敏感E度?打个比方Q你开发了一个很好的pȝQ但是到了你职的时候,客户却发C选择的这U技术已l淘CQ现在很隑ֆ扑ֈ合适的人员q行l护了,q样的架构师Q算合格么?<br /> <br /> 说完了外面的东西Q再说里面的?br /> <br /> 一个成熟的企业应用的架构师Q除了对行业技术应用有准确的把握和l验U篏之外臛_q需要有丰富的业务知识?/p> <p>一般来_架构设计由几个面构成Q其中一个面是技术架构,q有一个面是业务架构, 技术架构必通过后者的验证。积累一个行业的业务知识Q少则一q半载,多则3q?q_q都不是单纯看书阅读资料可以获得的。客户可不会只因Z的技术如何先q,nb 验攉目的?/p> <p><br /> 再有Q?再好的架构,也需要向E序员沟通和推广Q?那么你至也要是个合格的技术讲师吧Q?兄弟们管你叫那个师,你总还得有能力教h家一点东西吧Q?/p> <p>某些目Q技术甚臛_能根本就不是x点,我曾l参与的一个项目,在我加h的时候架构设计和开发工作都已经完成Q而且是基本构建在相对错误的道路上Q基于项目进度的压力Q我已经没有可能重新推到再来Q所以我把工作的重心转移到如何培L高团队成员的技术能力,降低不成熟架构对他们工作的干扎ͼ换句话说Q我q的工作是打补丁。这些看实不够nb的工作大部分都和技术无养I和流E图Q模式无养I但是有效的I补了架构的缺P保证了项目的利q行?</p> <p>既然不能选择dQ那么菜刀也是刀Q对吧?br /> </p> <p><br /> 最最后,你还要有点h脉,有在天Ӌ到处L兄弟Q这样你搞不定问题的时候,卡住的时候,或者他们一个小的提示可以救你于水火之中。不会不是你的错Q?解决不了问题才是你的错?br /> <br /> 在我看来架构师的工作Q是一个؜合了各种知识和经验的工作Q架构师更象酒店里的行政大厨Q只会炒菜那是绝对不行的Q很隑֍U的定义为技术工作。当Ӟ动不动就把架构师抬D术家Q开口闭口XX的艺术,哪还是过了,你以为画ȝ都是艺术家么Q?我家狗仔q能用嘘嘘画地图来着?br /> <br /> 指望多读书,多写代码Q一个h对着电脑pq速成长ؓ架构师,嗯, 我觉得可能性不是很大?br /> </p> <img src ="http://m.tkk7.com/conans/aggbug/209890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2008-06-22 19:04 <a href="http://m.tkk7.com/conans/articles/209890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于架构师和架构设计的一些常见误解(1Q?/title><link>http://m.tkk7.com/conans/articles/209889.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Sun, 22 Jun 2008 11:03:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/209889.html</guid><description><![CDATA[<div id="ose6yu4" class="postcontent"> <p>前几天看C架构师已死的文章,颇ؓ有趣Q仔l想惻I架构师之所以兴盛和之所以必死,多半是因为太多的人对软g架构师的工作存在诸多误解的缘故。而诸多媒体和原厂商出于自w利益在国内行业q行的过度吹捧,l予了架构和软g架构师太多的光芒Q程序员们自然而让的就把个人的职业规划扔到了聚焦点上?/p> <p>写一些自己对架构设计和架构师的一些不是很成熟的看法,写到哪算那,全当口水了?/p> <p><br /> 架构的概念非常广泛,解决的问题域I间也各有差距, 不能从一而论Q?此处单指企业应用的范围而已Q和互联|应用等其他范畴有较大差距?/p> <p>1. 架构是设计出来?/p> <p>q是很多人对软g架构的一个最大误解?</p> <p>传统的瀑布模型里,Zؓ的划分设计和~码实现q程Q也划出了设计和验证q程的`沟,整体设计Q概要设计)的可验证性,要在目的中后期才能得到体现Q这时候ؓ时已晚。而ؓ了保证设计的质量Q回避中后期风险Q又往往会强调加计粒度和评审_度Q这样一来,无Ş中又l箋加大了设计和验证的`沟,拖长了问题反馈周期,规模大的项目,问题ؓH出?/p> <p>据我的印象,业界中最早的最有媄响的关于架构和架构师的界定其实来源于RUP.有别于传l的瀑布模型的中的概要设计,软g架构很难再说是按水U方式设计出来。架构设计和概要设计的最大差别在于架构设计更看重反馈和验证过E,更看重架构师在整个Y件开发过E中的由始而终的参与。在rup中,目早期的关键P代都和架构设计有直接关系?/p> <p>架构设计应该通过更好的反?沟?验证机制Q?能在目的较早期得到技术和业务上的验证Qؓ整个目打下E_的基?在某些敏捷开发过E中Q架构设计ƈ不会作ؓ一个显著的KPI提出Q更多是作ؓ一U隐喅R通过使用q代和其他更好的反馈交流机制Q让目的架构设计在在项目的前期以验证和演进的方式完成。可以说一个真正的架构设计Q必L可以有效验证的?/p> <p>而现在很多公司和l织行的先让大拿组l做设计Q设计做完再评审Q然后丢l小兵去q活的架构设计流E,实际是对瀑布模型的l,我个为是完全背道而驰的。我多次参加q这L架构设计评审Q基本上可以说没有什么有真正营养的东西,只是一些流行概늚堆砌Q昨天EJB,今天SSHQ明天又是OSGIQ这L架构设计作出来也有可能会大幅度修改,或者坚决不修改让下面的人痛苦不堪,所谓的评审和存档过E只是自ƺ欺已。再考虑现在各大公司行的CMM/CMMIQ过E改q管理,q些paper的工作还可能会因为引入复杂的审批修改程把h拖入泥潭?/p> <p>q种做法Q在java圈子里面Q因为早期sun和一些大公司Ҏ构和模式概念的极力鼓吹,大ؓ盛行。某些h甚至只是看完了blueprintQ做了几个tutorialQ就摇n一变架构师Q开始了架构设计生?/p> <p>q样的架构师也往往很少~写代码Q我们可以理解,一个h写完300늚设计文档以后Q还有多意愿再d实现代码Q)Q很参与项目的开发工作,只满_一些试验性质的代码工作(对呀Q现在开源东西这么多Q流行的东西l装一下架构设计就over了么Q还实现什么设计)和指导工作,甚至有些paper的架构师Q完全就是靠_读各种pattern和x宝典来做设计Q设计的可行性和高风险性,可想而知Q早期大量EJB的滥用导致的目p|Q其实根本原因在于甚有架构师以验证演进的手D|军_是否应该使用EJBQ怎样合理的用EJBQ将架构设计草率的外包给各大原厂商鼓吹的概念或者各Ublueprint。而小兵们在面Ҏ?模式两顶大帽的时候也只会怯懦的怀疑自q个h能力Q然后坚持不懈的向架构师q一伟大位置l箋奋斗?/p> <p>而另一斚w目理者也往往会误以ؓ有了正规的架构设计就可以更好的保证Y仉目质量,可以项目的重心攄在需求和非技术工作之外,可以不用再考虑一般程序员的技术能力问题, 可以大幅度的xxxQxxxQ?最后一堆苦_然后再把责Q归咎于架构师不成熟?/p> <p>我早q经历过的几个项目就有此斚w沉痛的教训,事后我个人复审设计,发现基本上整个方向都是错误的Q个别项目设计者甚臌EJB的一些基本概念都没有了解Q自己重头实C一遍。过长的验证周期D后期已经无法再做M修改Q只能咬牙吞下?/p> <p>真正实用的架构是以逐步严}的方式验证出来的Q即便是自称中国java NO.1的袁U岗告诉你EJB非常好,没有EJB的架构就不是真正的J2EE架构Q你也要验证以后再说Q在此顺便bs一下csdn?br /> <br /> 在那架构师之死的小品里Qboss问小兵,你如何说服大家要使用hibernateQ?其实{案很简单,架构又不是设计出来的Q?Z么要说服Q?br /> </p> </div> <img src ="http://m.tkk7.com/conans/aggbug/209889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2008-06-22 19:03 <a href="http://m.tkk7.com/conans/articles/209889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何软g团队的一些问{?/title><link>http://m.tkk7.com/conans/articles/209882.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Sun, 22 Jun 2008 10:54:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/209882.html</guid><description><![CDATA[论坛上关于如何徏讄理Y件团队的一些问{,其中一些对话颇有意义,记录之,分n之?br /> <br /> Q: 啥子是Programmer manager<br /> AQprogram manager的program不是E序啦。。。一般管一个business domain的end to end solution. 在甲方的话,一般还会分成几个teamQ下面的service manageroperation和client managementQ还有initiative manager一堆project manager来deliver project?/td> </tr> <tr> <td valign="bottom"><br /> </td> </tr> Q: h一下,从带10-20人到带更多的人,最需要注意的是什么?<br /> <br /> AQ?br /> h不敢Q我是完全p|的一个典型,呵呵Q经验教训可以简单说说?br /> <br /> 我自ql验Q其实技术团队的理Q?真正质变的大概是从超q?5-30vQ?道理很简单?一个h可以直接充分理的h大概是4-5个ؓ佻I 25个以内,分组可以,过25/30个以后就必须?层,理成本开始剧烈增加,啥问题都出来了?br /> 二层l构的时候,下面人有问题Ҏ及时修补Q对组leader的协调能力要求不高,只要负责卛_Q这U情况下基本没有多少理成本。但是到了三层结构以后对W二层的求比较高Q如果没有合适的W二层h员,基本是个ؕ摊子。老大q时候主要的工作Q其实就是应该在人数过50之前Q尽可能快的培养出适合W二层次的负责hQ而不是急着做大D整天忙着救火。另外分层架构的一个必焉题就是容易生帮z֒分离势力Q不注意q方面出现的内耗杀伤力极大。所以对下属马仔头目的监控会耗费你比较多的精力,而且同时q要充分考虑到如何让q些流氓敏感脆q心理感觉到尊重?br /> <br /> <br /> 我自己感?0个h左右时是个大坎,如果可以H破可以顺利向三层的黑C会l织l构发展Q可以过度到100Z上,我们那时候的问题是老板其实q没有意思到理成本q个问题Q错误的以ؓ可以通过规模q求效益。在基本能突?0个hq个坎的时候,老板被上q的产值弄混了_盲目发v了一场新战役Q又I降了一个一心想做大事的牛hQ两Z合作Q就一起over了。我们当时的架构Q老板热衷于搞大合qӞ把几个事业部合ƈ了弄个大部门Q把一些马仔头目拆分的׃八糟的,说是充分利用资源Q打破部门间的壁垒(扁^化管理?)Q然后又׃八糟塞了一大堆来,原来的三层结构彻底打_l果变成无h负责制?<br /> <br /> 软g目的团队规模,个hq是觉得小好Q可能的情况下尽可能走小而精的道路,在培M团队成员的默契和一些共同的文化认同以后Q再逐步拆分扩充Q要比一开始就上大摊子有效的多?我们之前成功的一个项目,最初的预算?0人,我采取的做法现在看v来非常明智,首先只找?Q?个核心的E序员和数的普通程序员Q通过l对开发的方式让他们彼此熟悉和合Q在q个q程中完成基本的核心开发,?个月以后再补充第二批E序员,把原来h分拆重新l对。通过q种方式逐步q度?0-30的团队?再往后考虑C力和理成本的问题,拒l再加入了,最后以目规划?半左右的资源完成了开发工作。而且q期间培M不少人,大部分h后来又补充到其他目Q逐步建立了整个部门技术团队。这U逐步圈地的做法比较稳妥,也容易培d队之间的信Q文化Q那时候整个工作气氛还是蛮好的Q我们是公司最加班的团队Q但是是公司开发效率最高的团队。而其他几个规模只有一半,一开始就砸进几十个h的项目,都是问题多多那种?br /> <br /> 100个h以上的团队,我只见过Q没过Q?img alt="" src="http://www.hi-pda.com/forum/images/smilies/lol.gif" border="0" smilieid="9" />Q基本上我觉得战斗力要比50人甚?0ZQ吵架pk聊天旉多过做事旉Q别怿?+1>2 。最q听朋友说XXXZ保证销售额Q把销售h员增加了1倍,销售h员Q务降低一半,q种规模游戏也就是骗领导有用吧,地球人都知道Q横竖能q活的就是那么几个h?br /> <br /> 对一个leader来说Q我自己的感觉就?Q?个h的时候啥都可以不,自己把活q大头就好了Q要有nb的小弟就扔给她做?10来个人的时候,p注意大家吃喝玩乐心情愉快Q因为到了这个规模,基本上靠个别牛h发飙已经不可能搞定工作了Q需要你d力拍下属的马Ҏ其所好,让他们赏脸做事,而且一定要有风险控制机Ӟ关键工作岗位一定要有backup。规模再往上走Q自觉往后面站,基本上你工作的中心就是要培养一Ҏ手让他们自己折腾自己?br /> <br /> <br /> PQ? <div style="font-size: 12px">非常喜欢5-10人的团队,我上一个项目就是了Q?个devQ两个是senior两个juniorQ另?个testerQ关pd打理Q每个h知道自己在团队里的职责和位置。虽然个体能力不H出Q但团队战斗力强。跟我们同期的另外一?0人的队,?个牛得不得了的hQmanager和leader之间谁都不服谁,最后项目交付了Q但一大堆bug?/div> </td> </tr> <tr> <td valign="bottom"></td> </tr> <br /> </td> QQ?受教了,多谢分nQ?br /> 一个问题就是:?个月以后Q团队开始扩充时Q如果仍焉用结对的方式Q而不是传l的分组Q几个h一个小l,然后选拔l长Q,如何保证队伍h非常一致的目标和想法,如何保证团结Q?br /> </td> </tr> <tr> <td align="right"></td> </tr> <p><br /> AQ?br /> </tr> 软g工程里面有个著名的brook定理Q大意就是向一个进度落后的目加hQ只会让q个目更加落后Q引甛_来就是应该避免在目的中后期大幅度加人?q里面的主要的原因有几点?br /> <br /> 1. Ch加入团队以后需要获取团队成员的信Q和尊重,q需要比较多的沟通和交流成本QY件开发说到底是一U群体活动?br /> 2. Ch要理解,认同团队的文化,也需要很大的成本<br /> 3. Ch需要对目q行学习和了解,q程会拖累其他开发h?br /> 4. Ch太多Q有可能会彻底摧毁原来团队已l徏立的ql构Q比如团队文化, 团队间的角色定位?br /> 5. 理者会因此大幅度的增加理成本Q另外,理者很可能q未做好理q样团队的准备,有可能会因ؓ不合适的行ؓ和决定导致团队崩?br /> 6. 人员增加以后Q彼此之间的交流沟通成本会大幅度增加,出一般h的想象?br /> <br /> 因此一般正的做法是避免在目中后期加人,虽然q么昄单的道理大部分老板都不怿?br /> <br /> 所以表面上看,逐步圈地的做法是q反brook定理的。但实际情况Q恰恰因为结对工作在很大E度上克服了上述的问题,所以你要是理解了结对的收益Q就可以明白Z么结对可以保?#8220;队伍h非常一致的目标和想法,保证团结”<br /> <br /> <br /> 1. l对可以让新Z间加快了解过E,快的融入团队, 不用结对的方式Q一个新人可能需?Q?周才能和团队相处融洽Q?使用l对的方式以后,1Q?天就可以很熟悉?br /> <br /> 2.l对降低了新人的学习成本Q在l对q程中,原团队的成员采取人盯人的方式快的将技能和团队文化传递给ChQ而新Z开始就可以上手工作Q即便是菜鸟Q在l对q程中也可以通过质疑和提问对老h提供帮助和监督,而出于维护个人的自尊Q团队成员一般都会急于向新人推销Q证明自?img alt="" src="http://www.hi-pda.com/forum/images/smilies/lol.gif" border="0" smilieid="9" />Q,更有成就感和归宿感。对团队也就更容易认同?br /> <br /> 3. l对是分而治之的Q有助于避免Ch因ؓ陌生环境产生分离感,建立自己的帮z?有助于强制性的向新人灌输团队的目标Q保证团队的团结。习惯了l对的工作模式以后,E序员之间必d制性的q行沟通和交流Q也可以避免产生帮派和内耗?br /> <br /> 4.作ؓboss更关心的一点就是,通过l对q种方式Q可以获得够的backupQ可以避免因Zh员流动给目带来毁灭性的风险。因此可以大q度的降低管理成本。我们项目中期流׃q三分之一的hQ进度没有受CQ何媄响,所以前期boss极力反对做ppQ后期大力支持。我们自己有q一个大致统计,正常情况下离职一个hQ要损失臛_半年的h工?br /> <br /> 通过l对q种方式Q互怹间徏立了沟通和信Q机制Q再划分如果有目的的团队,比较自Ӟ另外在不同的团队之间交换结对伙伴也可以做激励和监督作用。而一ơ性投入的新团队,到的问题会更多?br /> <br /> q个目其实p|的一个地方就是中期迫于h员流动而放弃了l对Q最后导致帮z֒内耗,U正q来化了血本,否则q能做的更好。h员流失有一部分是因Z人当时管理经验不I寚w题的解决Ơ妥Q还有一个原因是原材料不合适,老板在团队组Z初盲目的招来了一些ƈ不适合的hQ后来碰C个老板Q居然跟我提?0?的理论,OrzQ,也ؓ后来的内耗埋下了隐患。这也算是一个经验,团队成员的选择leader一定要q问Q对于那些性格比较偏激Q难以控制的人应该尽量回避,l不可以因ؓ资源紧迫充数?/p> <p>按:pp的工作方式,对团队成员性格有一定要求?br /> QQ?br /> M团队的组l划分,一定不是用技术最好的人来做leader。对技术好的h要进行压制。不有多出Ԍ都要力扶持听话的h?br /> 找技术好的h是对的,但是他技术好Q你技术不好,面临挑战了。何冉|术好Q不听话的,到哪里都是干zȝ命,没有Z重视他们的?br /> <br /> AQ?br /> 你老外说话也不真见外,按你q样, 几天大家造反了?br /> <br /> 软g团队和一般的团队区别非常大, 对Y件团队来_最好的理模式是不管理, 让大家自己发挥,做好_的引导工作就好。小团队leaderw先士卒起个带头C左右Q大团队Q?leader要躲在后面做好后援当保姆?技术好的h的做leader是非常自然的Q不懂技术的人做负责人倒是比较Ҏ引v问题Q技术h员都比较骄傲Q除非是个美女mm带头Q那q可以忍忍?不是说不懂技术的人做不好pmQ但是没有技术背景的人天然就和技术h员有鸿沟Q技术h员背后搞的小九九Q花样那个多Q所以没有技术背景,理成本会比较高?<br /> <br /> 有个老外专门写了本书为啥技术好的hp做leaderQ?你可以找扄?/p> <p></td> </tr> <tr> <td valign="bottom"></td> </tr> </p> 按:理层对技术h员的不尊重和_暴压制Q?才是技术h员不听话的一个重要原因? <p> <tr> <td valign="bottom"></td> </tr> </p> QQ?br /> 说v来, 理无所谓,只要肯听话的Q这个是永远的原则?br /> 听话的,能力也强?-q当然最好的Q但是一般听话的能力都比较一般。要是能力强Q不听话Q最好不要,q样的hQ?很容易出问题?br /> <br /> AQ?br /> 软g开发和普通的目是有Ҏ的差别的QY件本质还是个体的脑力力_Q?所以Y件的生力完全取决于个h的能力和工作态度?2个程序员之间工作效率的差别可以轻易超q?0倍, 所以你找找再多听话的h又有什么用Q?br /> <br /> 能力的问题可以D个真实例子: ?00Z业开发的一个业务系l, 投入q?0个hQ?历时2q至今还不能上线。而同L东西Q在另外一个团队只?个h一个月的工作量而已。第二个团队的^均h工是要低于第一个团队的?br /> <br /> 态度的问题也可以举个真实例子Q?某公司开发的一个应用系l,4个hl成的验收团队测试了5个月只找?0个的~陷Q?pȝ提交客户以后Q客h自己l织试Q?天内发C40个以上的重要~陷?br /> <br /> <br /> M一个公司,都必L听话Q执行者)和不听话的hQ创造者和破坏者)的存在,否则q个公司qMq了?理要的不是单的听话与否Q管理者关心的应该是可控和有效性?br /> <br /> QQ?br /> Z辑ֈ目标Q有效性就是听话,完成d辑ֈ目标可控性,也就是要听话?br /> <br /> AQ?br /> 了Q让我去d?br /> <br /> 按:理人员和技术h员的沟通真是鸡同鸭Ԍ呵呵?br /> <img src ="http://m.tkk7.com/conans/aggbug/209882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2008-06-22 18:54 <a href="http://m.tkk7.com/conans/articles/209882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://88109a.com" target="_blank">AV߹ۿ</a>| <a href="http://wlamyx.com" target="_blank">ŷպĶ</a>| <a href="http://clzqb2b.com" target="_blank">˸ӰԺѿ</a>| <a href="http://u6u6u6.com" target="_blank">Ʒ鶹ѹۿ</a>| <a href="http://blcvs.com" target="_blank">޳վ߹ۿ</a>| <a href="http://jastrelax.com" target="_blank">޸ƷӰ߹ۿ</a>| <a href="http://yixinbanks.com" target="_blank">һ</a>| <a href="http://dt677.com" target="_blank">ŷ޹ۺAVþ</a>| <a href="http://caoliusq1024.com" target="_blank">ùƷӰ˾þ</a>| <a href="http://88bgbg.com" target="_blank">57paoƵ</a>| <a href="http://grjeans.com" target="_blank">..ŷһ</a>| <a href="http://jimeng-99.com" target="_blank">һֻ߹ۿ</a>| <a href="http://lzlcp.com" target="_blank">Ů׽Ƶ</a>| <a href="http://lhtjdj.com" target="_blank">þòþüӰԺwwwձ þWWW˳ɡƬ </a>| <a href="http://scycho.com" target="_blank">˳ɫ77777߹ۿ</a>| <a href="http://116com.com" target="_blank">һavĻ</a>| <a href="http://meiluniao.com" target="_blank">רһvavר</a>| <a href="http://baoyutv777.com" target="_blank">40</a>| <a href="http://goeqq.com" target="_blank">޹a777</a>| <a href="http://www96008.com" target="_blank">ˬִ̼APP</a>| <a href="http://xyjxnhcl.com" target="_blank">tsվ</a>| <a href="http://998wc.com" target="_blank">պһ</a>| <a href="http://sjmthanks.com" target="_blank">Ѹ弤Ƶ</a>| <a href="http://sdshfengji.com" target="_blank">߹ۿ</a>| <a href="http://3344088.com" target="_blank">96|</a>| <a href="http://sswg2.com" target="_blank">wŷs</a>| <a href="http://1ygogo.com" target="_blank">޾Ʒ벻߲HE</a>| <a href="http://jimeng-99.com" target="_blank">һһëƬa</a>| <a href="http://dd5566.com" target="_blank">99Ʒ߹ۿƵ</a>| <a href="http://0415ss.com" target="_blank">ѹݮƵ߹ۿ</a>| <a href="http://saohu533.com" target="_blank">jjzzjjzz߹ۿ</a>| <a href="http://dsdkg.com" target="_blank">޳˼</a>| <a href="http://cxljdz.com" target="_blank">˾Ʒձר </a>| <a href="http://xzgfbxg.com" target="_blank">޹Ʒþþþվ</a>| <a href="http://kencery.com" target="_blank">޹ƷþþþþԻ </a>| <a href="http://z88d.com" target="_blank">ҳƵ߹ۿ </a>| <a href="http://blzcn.com" target="_blank">þ޹vwww</a>| <a href="http://ynyinglie.com" target="_blank">ձһ</a>| <a href="http://18888kj.com" target="_blank">޴Ƭѹۿ</a>| <a href="http://yuntao360.com" target="_blank">պѵӰվ</a>| <a href="http://733807.com" target="_blank">պþۺĻ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>