<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>jackyrong</title>
    <description></description>
    <link>http://jackyrong.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>flex3+blazeds+spring+hibernate整合小结 </title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/248991" style="color:red;">http://jackyrong.javaeye.com/blog/248991</a>&nbsp;
          发表时间: 2008年10月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp; 近来flex盛行，因此这两天也借了本书看了两天，发觉作为非页面设计人员，flex 还是很好的，flex builder很好用，拖拉就有很ＣＯＯＬ的界面了，而且flex总的来说基本东西不难学，有编程基础的人很快掌握，当然要精通就要时间了，因为库，ＡＰＩ等很多．</p>
<p>&nbsp;&nbsp;&nbsp; 下面就<span style="font-family: Verdana;">flex3+blazeds+spring+hibernate整合作个小结，是之前读外国好文的心得，而见国内这方面的文比较少，因此笔记之．</span></p>
<p>&nbsp;</p>
<p>　　　首先要知道，flex3是做前端的，其实就是view层的东西了，可以替换掉struts 2，如果项目中你喜欢的话．而blazeds是adobe免费的转换网关（可以理解成转换网关），负责把后端的数据与actionscript进行转换，当然也可以用</p>
<p>收费的那个livecycle data services了．而spring+hiberate的组合很传统了．</p>
<p>&nbsp;</p>
<p>１　准备好东西<br />　　　Ａ　下载blazeds，这里下载<span style="font-family: Verdana;">blazeds_turnkey_3-0-0-544</span>的版本，因为自带了tomcat还有些好的例子</p>
<p>　　　Ｂ　FLEXBUILDER 3</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C MYSQL 5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D SPRING+HIBERNATE,myeclipse，这些就不说了．</p>
<p>&nbsp;</p>
<p>２　本文是根据<span style="font-family: Verdana;"><a href="http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&amp;productId=2&amp;postId=7923">http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&amp;productId=2&amp;postId=7923</a></span></p>
<p>　去小结的．其中在<span style="font-family: Verdana;"><a href="http://www.adobe.com/devnet/livecycle/articles/blazeds_spring.html">http://www.adobe.com/devnet/livecycle/articles/blazeds_spring.html</a></span>中，讨论了如何跟spring结合，如何跟<br />hsqldb结合．那么文中是举了blazeds自带的例子来做说明的，在它的基础上进行修改，变成hibernate+spring.</p>
<p>&nbsp;</p>
<p>３　先从<span style="font-family: Verdana;"><a href="http://download.macromedia.com/pub/developer/flex_spring.zip">http://download.macromedia.com/pub/developer/flex_spring.zip</a></span>下载例子文件，其中包括了例子和作者写的<br />用spring调用的组件．</p>
<p>　　　解压flex-spring.zip <br />将/flex-spring/factory/bin/flex/samples/factories 目录下的class文件拷贝到/WEB-INF/classes/flex/samples/factories目录中 </p>
<p>&nbsp;</p>
<p>４　在/WEB-INF/flex/services-config.xml文件中注册spring factory <br />&lt;factories&gt; <br />&lt;factory id="spring" class="flex.samples.factories.SpringFactory"/&gt; <br />&lt;/factories&gt; </p>
<p>&nbsp;</p>
<p>５　配置web.xml <br />&lt;context-param&gt; <br />&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; <br />&lt;param-value&gt;/WEB-INF/applicationContext.xml&lt;/param-value&gt; <br />&lt;/context-param&gt; <br />&lt;listener&gt; <br />&lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;/listener-class&gt; <br />&lt;/listener&gt;</p>
<p>６　在下载的程序中，我们重点关注samples\store这个目录下的程序．<br />其中flex目录是写好了的flex界面了，大家可以用flexbuilder去看．</p>
<p>而java目录其实就是后端的目录．无非就是用spring来实现对product对象的增，删改．</p>
<p>７　我们先用mysql　５在建立数据库　flexhibernate,表结构如下：<br /><span style="font-family: Verdana;">CREATE TABLE `product` (<br />&nbsp; `productId` int(11) NOT NULL auto_increment,<br />&nbsp; `name` varchar(40) NOT NULL,<br />&nbsp; `category` varchar(40) NOT NULL,<br />&nbsp; `image` varchar(255) NOT NULL,<br />&nbsp; `price` double NOT NULL,<br />&nbsp; `description` varchar(255) NOT NULL,<br />&nbsp; `qtyInStock` int(20) NOT NULL,<br />&nbsp; KEY `productId` (`productId`)<br />)</span></p>
<p>&nbsp;</p>
<p>8 ,我们编写一个product.hbm.xml如下，放在samples\store\java目录下<br />　　　<span style="font-family: Verdana;">&lt;?xml version="1.0"?&gt;<br />&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"[]&gt;<br />&lt;hibernate-mapping package="flex.samples.spring.store"&gt;<br />&nbsp;&lt;class name="Product" table="PRODUCT"&gt;<br />&nbsp;&nbsp;&lt;id name="productId" type="long" column="PRODUCTID"<br />&nbsp;&nbsp;&nbsp;unsaved-value="0"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;generator class="identity" /&gt;<br />&nbsp;&nbsp;&lt;/id&gt;<br />&nbsp;&nbsp;&lt;property name="name" column="NAME" length="40" /&gt;<br />&nbsp;&nbsp;&lt;property name="category" column="CATEGORY" length="40" /&gt;<br />&nbsp;&nbsp;&lt;property name="image" column="IMAGE" length="40" /&gt;<br />&nbsp;&nbsp;&lt;property name="price" column="PRICE" type="double" /&gt;<br />&nbsp;&nbsp;&lt;property name="description" column="DESCRIPTION" length="255" /&gt;<br />&nbsp;&nbsp;&lt;property name="qtyInStock" column="QTYINSTOCK"<br />&nbsp;&nbsp;&nbsp;type="integer" /&gt;<br />&nbsp;&lt;/class&gt;<br />&lt;/hibernate-mapping&gt;</span></p>
<p>&nbsp;</p>
<p>9 编写applicationContext.xml,注意要放在<span style="font-family: Verdana;">blazeds_turnkey_3-0-0-544\tomcat\webapps\blazeds\WEB-INF</span>下</p>
<p>内容如下<br />　　　　</p>
<p><span style="font-family: Verdana;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&gt;<br />&lt;beans&gt;<br />&nbsp;</span><span style="font-family: Verdana;">&nbsp;&lt;bean id="dataSource"<br />&nbsp;&nbsp;class="org.apache.commons.dbcp.BasicDataSource"<br />&nbsp;&nbsp;destroy-method="close"&gt;<br />&nbsp;&nbsp;&lt;property name="driverClassName" value="com.mysql.jdbc.Driver" /&gt;<br />&nbsp;&nbsp;&lt;property name="url"<br />&nbsp;&nbsp;&nbsp;value="jdbc:mysql://localhost:3306/flexhibernate" /&gt;<br />&nbsp;&nbsp;&lt;property name="username" value="root" /&gt;<br />&nbsp;&nbsp;&lt;property name="password" value="abc" /&gt;<br />&nbsp;&lt;/bean&gt;</span></p>
<p><span style="font-family: Verdana;">&nbsp;&lt;bean id="sessionFactory"<br />&nbsp;&nbsp;class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&gt;<br />&nbsp;&nbsp;&lt;property name="mappingResources"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;list&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;value&gt;flex/samples/spring/store/Product.hbm.xml&lt;/value&gt;<br />&nbsp;&nbsp;&nbsp;&lt;/list&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="hibernateProperties"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;props&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="hibernate.dialect"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.hibernate.dialect.HSQLDialect<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&lt;/props&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="dataSource"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;ref bean="dataSource" /&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&lt;/bean&gt;</span></p>
<p><span style="font-family: Verdana;">&nbsp;&lt;bean id="txManager"<br />&nbsp;&nbsp;class="org.springframework.orm.hibernate3.HibernateTransactionManager"&gt;<br />&nbsp;&nbsp;&lt;property name="sessionFactory"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;ref local="sessionFactory" /&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&lt;/bean&gt;<br />&nbsp;&lt;bean id="productDAOBeanTarget"<br />&nbsp;&nbsp;class="flex.samples.spring.store.HibernateProductDAO"&gt;<br />&nbsp;&nbsp;&lt;property name="sessionFactory" ref="sessionFactory" /&gt;<br />&nbsp;&lt;/bean&gt;</span></p>
<p><span style="font-family: Verdana;">&nbsp;&lt;bean id="productDAOBean"<br />&nbsp;&nbsp;class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"&gt;<br />&nbsp;&nbsp;&lt;property name="transactionManager" ref="txManager" /&gt;<br />&nbsp;&nbsp;&lt;property name="target" ref="productDAOBeanTarget" /&gt;<br />&nbsp;&nbsp;&lt;property name="transactionAttributes"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;props&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="create*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="update*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="delete*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="*"&gt;PROPAGATION_REQUIRED,readOnly&lt;/prop&gt;</span></p>
<p><span style="font-family: Verdana;">&nbsp;&nbsp;&nbsp;&lt;/props&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&lt;/bean&gt;<br />&lt;/beans&gt;</span></p>
<p>　　很典型的传统spring+hibernate的配置了．</p>
<p>&nbsp;</p>
<p>10 修改<span style="font-family: Verdana;">blazeds_turnkey_3-0-0-544\tomcat\webapps\blazeds\WEB-INF\flex</span>目录下的<br />remoting-config.xml文件，增加如下部分：<br />　　<span style="font-family: Verdana;">&lt;destination id="productService"&gt;<br />&lt;properties&gt;<br />&lt;factory&gt;spring&lt;/factory&gt;<br />&lt;source&gt;productDAOBean&lt;/source&gt;<br />&lt;/properties&gt;<br />&lt;/destination&gt;</span>　　</p>
<p>&nbsp;&nbsp;</p>
<p>11 准备spring,hibernate,mysqljdbc等驱动包，可以先放在<span style="font-family: Verdana;">blazeds_turnkey_3-0-0-544\tomcat\webapps\blazeds\WEB-INF\lib</span>下，</p>
<p>当然也可以通过下面写ＡＮＴ文件去指定，道理都是一样的．注意我用的是spring 1.2.8的包，２．０Ｘ的还没试过，各位可以试下．</p>
<p>&nbsp;</p>
<p>12 可以看到，原文作者在sample\store目录下，有个build.xml，但其中因为我是windows下的，所以修改了路径符号为＼，</p>
<p>如下<br />　　</p>
<p><span style="font-family: Verdana;">&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;project name="Store Application" basedir="." default="main"&gt;</span></p>
<p><span style="font-family: Verdana;">&nbsp;&nbsp;&nbsp; &lt;property name="FLEX_HOME" value="C:\Program Files\Adobe\Flex Builder 3\sdks\3.1.0"/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;property name="DEPLOY_DIR" value="L:\blazeds_turnkey_3-0-0-544\tomcat\webapps\blazeds"/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;property name="CONTEXT_ROOT" value="blazeds"/&gt;<br />&lt;property&nbsp;&nbsp; name="lib.dir"&nbsp;&nbsp; value="L:\blazeds_turnkey_3-0-0-544\tomcat\webapps\blazeds\WEB-INF\lib"/&gt; <br />&lt;path&nbsp;&nbsp; id="classpath"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;fileset&nbsp;&nbsp; dir="${lib.dir}"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;include&nbsp;&nbsp; name="*.jar"/&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/fileset&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/path&gt;&nbsp;&nbsp; </span></p>
<p><span style="font-family: Verdana;">&nbsp;&nbsp;&nbsp; &lt;taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}\ant\flexTasks.jar"&nbsp; /&gt;</span></p>
<p><span style="font-family: Verdana;">&nbsp;&nbsp;&nbsp; &lt;target name="main" depends="compile-flex,html-wrapper,compile-java"/&gt;<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;target name="compile-flex"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mxmlc file="flex/storeadmin.mxml" <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;services="${DEPLOY_DIR}\WEB-INF\flex\services-config.xml"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;context-root="${CONTEXT_ROOT}"<br />&nbsp;&nbsp;&nbsp;output="${DEPLOY_DIR}\storeadmin\storeadmin.swf"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mxmlc file="flex/store.mxml" <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;services="${DEPLOY_DIR}/WEB-INF\flex\services-config.xml"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;context-root="${CONTEXT_ROOT}"<br />&nbsp;&nbsp;&nbsp;output="${DEPLOY_DIR}\store\store.swf"/&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&lt;copy todir="${DEPLOY_DIR}\store\pic"&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;fileset dir="flex\pic"/&gt;<br />&nbsp; &nbsp;&nbsp;&lt;/copy&gt;<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;/target&gt;</span></p>
<p><span style="font-family: Verdana;">&nbsp;&nbsp;&nbsp; &lt;target name="compile-java"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;javac srcdir="java" destdir="${DEPLOY_DIR}\WEB-INF\classes"&gt;<br />&nbsp;&nbsp; &lt;classpath&nbsp;&nbsp; refid="classpath"/&gt;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/javac&gt;<br />&nbsp;&nbsp; &lt;copy todir="${DEPLOY_DIR}/WEB-INF/classes/flex/samples/spring/store"&gt;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;fileset dir="java" includes="**/*hbm.xml"/&gt;&nbsp; <br />&nbsp; &lt;/copy&gt; <br />&nbsp;&nbsp;&nbsp; &lt;/target&gt;</span></p>
<p><span style="font-family: Verdana;">&nbsp;&lt;target name="html-wrapper"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;html-wrapper <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; application="app"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width="100%"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height="100%"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; swf="storeadmin"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version-major="9"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version-minor="0"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version-revision="0"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; history="true"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; template="express-installation"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; output="${DEPLOY_DIR}\storeadmin"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;html-wrapper <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; application="app"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width="100%"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height="100%"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; swf="store"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version-major="9"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version-minor="0"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version-revision="0"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; history="true"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; template="express-installation"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; output="${DEPLOY_DIR}\store"/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/target&gt;<br />&nbsp;&nbsp;&nbsp; <br />&lt;/project&gt;</span></p>
<p>&nbsp;</p>
<p>　要注意的是，因为flex 3的ant扩展了ant,因此，要保证<span style="font-family: Verdana;">Adobe\Flex Builder 3\sdks\3.1.0\ant</span>下有文件<span style="font-family: Verdana;">flexTasks.jar</span>，</p>
<p>也要把<span style="font-family: Verdana;">flexTasks.jar</span>　ＣＯＰＹ到ant的目录下去．</p>
<p>　　之后就可以在sample\store根目录下，运行ant打包运行了．</p>
<p>&nbsp;</p>
<p>13 之后启动tomcat，运行<br />　　　<a href="http://localhost:8400/blazeds/store/index.html" target="_blank">http://localhost:8400/blazeds/store/index.html</a><br />　和&nbsp;<a href="http://localhost:8400/blazeds/storeadmin/index.html" target="_blank">http://localhost:8400/blazeds/storeadmin/index.html</a>,<br />&nbsp; 就可以看到效果了．</p>
<p>&nbsp;</p>
<p>１４　简单分析其调用过程<br />　　把其中一个flex文件打开，比如<br />　　　</p>
<p><span style="font-family: Verdana;">&lt;Product id="product"<br />&nbsp;&nbsp;name="{productName.text}"<br />&nbsp;&nbsp;category="{category.text}"<br />&nbsp;&nbsp;price="{Number(price.text)}"<br />&nbsp;&nbsp;qtyInStock="{int(qtyInStock.text)}"<br />&nbsp;&nbsp;image="{image.text}"<br />&nbsp;&nbsp;description="{description.text}"/&gt;</span></p>
<p><span style="font-family: Verdana;">&nbsp;&lt;mx:RemoteObject id="srv" destination="productService"/&gt;</span></p>
<p><span style="font-family: Verdana;">&nbsp;&lt;mx:Form width="100%"&gt;<br />&nbsp;<br />&nbsp;&nbsp;&lt;mx:FormItem label="Name"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;mx:TextInput id="productName" text="{product.name}"/&gt;<br />&nbsp;&nbsp;&lt;/mx:FormItem&gt;<br />&nbsp;<br />&nbsp;&nbsp;&lt;mx:FormItem label="Category"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;mx:TextInput id="category" text="{product.category}"/&gt;<br />&nbsp;&nbsp;&lt;/mx:FormItem&gt;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&lt;mx:FormItem label="Image"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;mx:TextInput id="image" text="{product.image}"/&gt;<br />&nbsp;&nbsp;&lt;/mx:FormItem&gt;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&lt;mx:FormItem label="Price"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;mx:TextInput id="price" text="{product.price}"/&gt;<br />&nbsp;&nbsp;&lt;/mx:FormItem&gt;</span></p>
<p><span style="font-family: Verdana;">&nbsp;&nbsp;&lt;mx:FormItem label="In Stock"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;mx:TextInput id="qtyInStock" text="{product.qtyInStock}"/&gt;<br />&nbsp;&nbsp;&lt;/mx:FormItem&gt;<br />&nbsp;<br />&nbsp;&nbsp;&lt;mx:FormItem label="Description" width="100%"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;mx:TextArea id="description" text="{product.description}" width="100%" height="100"/&gt;<br />&nbsp;&nbsp;&lt;/mx:FormItem&gt;<br />&nbsp;&nbsp;<br />&nbsp;&lt;/mx:Form&gt;</span></p>
<p><span style="font-family: Verdana;">&nbsp;&lt;mx:ControlBar&gt;<br />&nbsp;&nbsp;&lt;mx:Button label="Update" click="srv.updateProduct(product)"/&gt;<br />&nbsp;&lt;/mx:ControlBar&gt;</span></p>
<p>&nbsp;</p>
<p>　　其中，关注&lt;mx:Button label="Update" click="srv.updateProduct(product)"/&gt;，这里，就是调用srv的updateProduct(product)了，</p>
<p>其中,srv是一个<span style="font-family: Verdana;">&nbsp;&lt;mx:RemoteObject id="srv" destination="productService"/&gt;</span>,destination="productService"是什么？</p>
<p>就是第１０步中指定的那个productService了，呵呵，应该大致明白了吧？</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://jackyrong.javaeye.com/blog/248991#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 05 Oct 2008 01:39:16 +0800</pubDate>
        <link>http://jackyrong.javaeye.com/blog/248991</link>
        <guid>http://jackyrong.javaeye.com/blog/248991</guid>
      </item>
          <item>
        <title>软件工程心理学之9----乙方如何面对甲方2</title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/244491" style="color:red;">http://jackyrong.javaeye.com/blog/244491</a>&nbsp;
          发表时间: 2008年09月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp; 在<a href="http://jackyrong.javaeye.com/admin/blogs/241523">http://jackyrong.javaeye.com/admin/blogs/241523</a>中，大概谈了下如何应对甲方的领导。这次要谈的<br />就是很重要的如何应对甲方的信息项目的负责人了。这其实也是相当重要的一部分，在打通了和甲方领导这<br />个关卡后，如何处理好跟甲方信息项目负责人的关系，直接影响到接下来项目的顺利高效进行。平时乙方<br />跟甲方打交道最多的，其实也就是跟甲方信息项目负责人打交道。为方便论述，下文将甲方信息项目<br />负责人简称甲方负责人。<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; 首先，必须简单归纳下一般来讲，甲方负责人的一般身份和组成。一般来说，常见的甲方负责人有如下几类型，简单分<br />分类吧<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 1) 学术型。这类型的有比如博士，硕士以上的，学院派出来的，理论相当丰富，但实际项目不是很丰富。<br />&nbsp;&nbsp;&nbsp; 2）技能强型的。这类型的，在企业中，一般带一些比较多人员的团队去完成任务，一般这些公司都是<br />比较大的企业了，有人数不少的开发团队，但有的东西还是要外包出去。技能型的甲方负责人，是动手<br />型的，很强的实践经验。<br />&nbsp;&nbsp;&nbsp; 3）学术+技能型。学历高，实际项目能力高。<br />&nbsp;&nbsp;&nbsp; 4） 技能一般型的。这类型的甲方负责人，在企业中带的团队人数不多，平时也要做一些开发，<br />&nbsp;&nbsp;&nbsp; 5） 单一管理型。这类型的，在甲方的企业中，一般是懂些技术，但不是太多，但偏向做信息管理的，<br />理论多。<br />&nbsp;&nbsp;&nbsp; 6） 基本啥都不知道型。这类型的很多的，特别在一般的中小企业中，可能之前搞维护，不搞开发，<br />或者跟IT沾边的，更多的是临时老板抽掉来负责的。</p>
<p>&nbsp;&nbsp;&nbsp; 大致由上面这些。接下来逐一从心理角度分析他们，并简单罗列一些办法，让大家共同探讨和参考。<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 1）学术型的甲方负责人。这类型的，学历高，理论层次很高，有的甚至是大专院校的教师教授。由于<br />他们的特殊身份，他们自视是很高的（哎，他们认为学历比其他人高就高一个档次了），自尊心是<br />相当强的，特别是一些教师教授，说不定还是学术界的牛人呢。对这类人的话，一定要在从开始<br />到最后项目收尾，对他们都要保持一种恭敬崇拜的心态，把他们看做自己的老师。当然，有时遇到的，可能真的<br />是理论多实际经验少的，这样的话，还是能忍就忍，不要跟他们去较真去比较。在有的案例中，<br />就曾经有乙方的老大，不爽一些甲方的这类型的人，认为他们只会吹理论，不会实干，因此经常在某些场合和<br />问题上，想压一下甲方的气势，以求气顺点。其实这是相当错误的，因为这类型的人，的确不少是在学术圈里混，<br />他们心理上 也应该知道，他们不是你们乙方软件公司，可能技术实际项目上不如你们厉害，但他们就认为<br />自己唯一的优势就是理论和学历，地位，他们自己的观点，往往需要得到别人，特别是你们乙方的赞赏，这样<br />他们的心理就很爽舒服了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因此，下面是一些很好的在平常交往中跟他们的可以说的和做的，比如。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A &ldquo;呵呵，张XXX，我看过你在XXXX杂志上发表的文章（论文）哦，哎呀，我们真的收益不浅呀，我还给<br />我的团队去学习去了（或者说：之前我一直想不通的一个技术问题，看了你的文章好，有很大启发）。<br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B&nbsp; &ldquo;呵呵，张XXX，听说你们学校有教学实践基地哦，刚好我们公司也有这方面的人才培养需求，我们<br />能否这方面沟通合作一下&rdquo; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 解析；如果你不是老板，是乙方老大，其实也可以这样说，跟他们通过某些联系拉上些关系，具体的可以让<br />其他人去打交道，但如果你能无意插下柳，又成了阴的话，那样气氛就很好了，对乙方的以后工作很有利。&nbsp;&nbsp; </p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C 每次会议，要恭敬地听他们发完言，不要打断他们，即使他们的观点看法不大正确，也不要当场马上有针对<br />性地太直接说出来，可以委婉地说出来，如果不是太急表态的话，甚至可以回去研究清楚，有充分证据后，EMAIL或者<br />其他书面形式表达出来，这样可以避免当面有时表达得不够好，从而引起他们反感。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D 记得如果要遇到争持不下的问题时，如果你觉得自己有道理的话，你的团队应该充分论证，有十足的把握，<br />否则万一的确是人家的是正确的，你的错误，一交锋，人家会更看不起你们。万一他们的观点最后发现是行不通或错的话，<br />他们知道后，一般是避免再谈的，你们要尽快转移话题，不要老纠缠着。<br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; E 这类型，要交往中分别下，有的人可能真的很学术，性格自我，不大喜欢客套的，也不大喜欢被你公关，那你们<br />就不要拼命去公关了，不要认为这类型人就都很喜欢被公关，要分清楚，否则适得其反。<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D 遇到这类甲方负责人，多点在项目文档，PPT等中引用理论，让他们觉得你这项目是理论充足饱满的。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 2） 技能型人。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这类型负责人，很能搞技术，带的人不少。大家最喜欢遇到这样的人了，可以说是知音了。但也要注意几点。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A 企业毕竟不是软件公司，企业要的是系统项目上马后，最快产生效益，因此甲方领导的压力都压在<br />他们这类人的身上了。他们往往有自己的内部项目和其他项目，由于某些需要外包给你们。因此你们首先<br />要最好在事前跟他们沟通好，摸下他们的难处到底在哪里。就是说，比如探听下，他们在这个项目中，有否<br />苦衷？比如会否抱怨甲方领导的处事方法？会否甲方领导需求不明确，资金投入不到位但又赶时间？这些东西，<br />都最好在项目开始初就公关下他们。因为他们从心理上来说，如果他们遇到压力，由于他们的技术背景，<br />是最容易向你们倾诉的，因此公关时要重点关注这个。</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B 不要小看他们，他们企业由于任务不急，经常有的人是技术牛人来的。对于技术牛人，你们见面不久应该可以察觉<br />出来，对于牛人，你们的团队更加要注意谨慎。曾经有的案例里，有的乙方跟甲方负责人打交道N久，最后才发现<br />原来对方是技术牛人，那可真是对今后工作很不利了。要在项目之初，通过聊天，搜索，第三方打听等各类方式，如实打谈对方的实</p>
<p>力水平，查出对方的发表文章，blog等等，要对你的对手了如指掌<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果发现了对方是牛人大牛了，那更应该多种方法去赞扬对方。在这种情况下，因为对方是牛人，因此可以考虑<br />在项目过程中，在有的问题上，多跟对方讨论，甚至讨论些跟项目相关乃至其他技术问题。因为他们技术牛，你如果能<br />让他们感到讨论能有利于他的水平提升，经常都有个好的学术氛围，他们心理上感到是很喜欢的，因为他们喜欢遇到<br />知音。有的时候，要注意即使你知道的问题，也要扮作不大了解，多让对方去告诉你，多让对方跟你上课，<br />让他们这些牛人感到他们就是比你&ldquo;牛&rdquo;，他们就是老师，那就应该OK了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C&nbsp; 当然，这类型的人是很认真严肃的对技术。因此你们要考虑配团队中精明的人跟对方打交道了，起码让对方觉得<br />你们是有一定力量的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; D 遇到自己方面的错误，一定要尽早补救，有的时候甚至可以主动跟他们说，说我们修补了什么BUG之类的，没必要对他们<br />遮掩，因为如果对他们这些牛人坦诚点的话，他们反而觉得你们是很注重技术的，他们也喜欢。</p>
<p><br />&nbsp;&nbsp; 3） 学术+技能型。这类型是相当牛的了，理论丰富，实践能力强，学历高。他们的应对办法把以上两点结合起来考虑就基本<br />可以了。</p>
<p>&nbsp; 4&nbsp; 技能一般型的。这类型的甲方负责人，在企业中带的团队人数不多，平时也要做一些开发，但不是很深入。往往<br />都是要完成上级完成的任务，平时也很少接触新技术。对这类型人的话，可以考虑：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A&nbsp; 让他们感到，你们的团队开发出来的项目成果，是能帮助他们今后工作的，减轻他们的负担的，要让他们从心理<br />上在项目初期就觉得你们是很厉害，很值得信赖的。<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B 这类型人，有的是完成任务型的技术人员，不大喜欢新东西，但求无事型。这样的话，你们在项目中，就不要<br />老炫耀新技术，老在宣扬自己公司团队的新东西了，他们只要求稳当完成任务。你们就要在项目开发中，多做些让<br />他们放心安稳的工作，用稳定的技术和设备，不要为了自己一时之快或者想卖多些贵些就向人家推销东西，否则<br />人家会适得其反的。还有一类型的技术人员，可能还是想在企业中提高下自己的技术能力的，但苦于<br />自己的能力，因此想多看多学一些新知识技术，甚至有时他们有的因为自己想学和用技术，因而要求你们甲方用的。哈哈，<br />遇到这类人的话，你们就可以向对方疯狂推销了，让他们感到，买了或用了你们的新产品新技术，他们的负责人<br />的水平也会牛起来哦。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p><br />&nbsp;5）&nbsp; 单一管理型。这类型的，在甲方的企业中，一般是懂些技术，但不是太多，但偏向做信息管理的。他们基本不涉及<br />技术层面，因为他们下面还有基层的操作员。对这类人，一定要把握：<br />&nbsp;&nbsp;&nbsp;&nbsp; A 要把设计阶段，需求阶段的东西跟他探讨清楚，如果他技术上把握不了的话，要暗示对方多让基层的技术人员<br />跟你们接触。哎，因为这类型很多都是写方案型的，而且有可能还要做其他企业内的杂事。<br />&nbsp;&nbsp;&nbsp;&nbsp; B 对这类人，一定要在项目初，向他了解更具体的基层技术人员的情况以便联系，否则到时有事找他就麻烦了。<br />这类人，要着重把业务跟他探讨好，不要老向他们塞太具体的技术原理。但这类人，也是向他们推销你们新产品，<br />新技术比较容易的，呵呵，因为他们不是技术牛人，都有从众的心理。因此，建议你们可以在项目初，<br />适当多找时间介绍你们公司的新技术新产品，而且要特别让对方知道，买了用了你们的技术，对方以后更不用去管技术了，<br />更能舒服地做他的leader去了，剩下的都由他的手下去做吧。因为他们这类人的心理，就是想作方案，少去接触烦人的<br />技术，但又不能不接触哦，因此可以适当把大致的原理跟他们讲清楚就行了，没必要让他们知道太细致的东西。</p>
<p>&nbsp;</p>
<p><br />6&nbsp; 基本啥都不知道型。这类型其实是最头疼的，也最麻烦。他们不搞技术的，有可能就是业务部门的代表。对付<br />他们的办法真是很难言语细致表达出来，但感觉起码要把握如下几点。<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; A 他们不搞技术的，因此你们可以将新产品新技术向他们忽悠一下，但要注意&ldquo;度&rdquo;，不要适得其反，到最后搞到<br />他们被你忽悠了，用了你们的花俏东西，结果主要的业务流程的改进却没让他们满意，不要本末倒置。<br />&nbsp;&nbsp; <br />&nbsp;&nbsp; B 最好配上业务需求分析师跟他们沟通，甚至多在对方现场办公。每次拜访他们，让他们从细节上认为你们<br />是很严肃认真的开发团队，不是去忽悠他们的，是确实帮他们提高生产力的。因此重要的会议，要多派你们团队<br />重要的人马去，起码级别要对称，不要某次开会，人家领导到齐，你才派一个分析员去，要让他们觉得你们是高度<br />重视。</p>
<p>&nbsp;&nbsp; C 在项目开始前，跟他们反复强调需求的重要性，要让他们觉得，需要尽可能在他们内部处理好再提交，否则他们<br />自己都没想好的话，会导致多次返工，最后损失的是他们，最好多举一些失败的案例给他们知道。多次向他们布道这点的话，<br />会让他们从心理上重视的，记得是多次。</p>
<p><br />&nbsp; D 公关他们时，要适当谈谈业务的，通过非正式的渠道，多套下他们的一些他们不敢在正式场合说的话，这个，想必大家<br />知道什么意思了，呵呵。</p>
<p>&nbsp; E 让他们感到，你们团队的项目是做的很快很高质量的，比如多用XP的快速原形发布，每隔一段时间，就让他们<br />看到很有功能性的东西，他们不搞技术，最喜欢看到这样了，他们心理上会有错觉，认为这东西估计有快搞好了吧。<br />当然，详细的涉及需求和软件工程的东西，这里就不详细说了，以后再说。</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://jackyrong.javaeye.com/blog/244491#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 20 Sep 2008 01:08:09 +0800</pubDate>
        <link>http://jackyrong.javaeye.com/blog/244491</link>
        <guid>http://jackyrong.javaeye.com/blog/244491</guid>
      </item>
          <item>
        <title>软件工程心理学之8---汇报工作 </title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/242959" style="color:red;">http://jackyrong.javaeye.com/blog/242959</a>&nbsp;
          发表时间: 2008年09月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp; 谁都要汇报工作.无论你是普通职员,中层领导,还是高层领导.在软件项目工程中,无论是团队内部,或者是对客户,都要<br />汇报工作,定期,如何简单,准确,让对方把握要点，不浪费时间,又能觉得你的工作是很有成效的,这是个很重大的问题哦.<br />&nbsp;&nbsp;&nbsp;&nbsp; 不少人汇报工作项目进展时,都是这样说:在本周,首先做了...其次完成了....又做了.....又做了......<br />.这样不是说不行,但有个问题,那就是很多人把 很多工作没进行分解,把重要,不重要的都合在一起说了,<br />没主次重点,拉东及西,最后可能客户或领导听了糊涂,没能把握住重点,可能你本周做了很多事情,但给你一说,<br />都让领导或客户觉得心里没准,不踏实.特别是有的甲方的领导,一天大忙人,如果不是对技术很在行的,可能真的很糊涂.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;比较好的做法是,在汇报工作时,以这样的形式报告<br />第一点(说的时候,要大声点,把重音放在这里,让客户领导都听到),.............<br />第二点...<br />第三点...<br />&nbsp;&nbsp;&nbsp; 总结,本周完成了.....期望下周完成.....<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为人的心理上,是对数字很敏感的,这样用数字一点点的说,很清晰,让人记忆深刻,知道原来你本周是做了这几项工作的,起码知道<br />你没偷懒.其次,如果你觉得本周工作太少,对不起领导和客户,可以尝试把一些工作拆分起几点来去说, 一般一到五点就足够了，太多的不好,<br />领导和客户没时间去听.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 实践中,这个方法其实是很简单的,也不复杂,这个方法是很不错的,大家可以试下. </p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://jackyrong.javaeye.com/blog/242959#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 17 Sep 2008 07:17:26 +0800</pubDate>
        <link>http://jackyrong.javaeye.com/blog/242959</link>
        <guid>http://jackyrong.javaeye.com/blog/242959</guid>
      </item>
          <item>
        <title>设计模式之桥接模式 </title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/242667" style="color:red;">http://jackyrong.javaeye.com/blog/242667</a>&nbsp;
          发表时间: 2008年09月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>今天看了下设计模式中的桥接模式，发现还是很有趣味的，笔记之。举个例子，比如GG要约会MM，不同的MM喜欢喜欢不同的地点，<br />比如rose喜欢去电影院，KITTY喜欢去西餐厅，而TOM，peter 都是GG，他们要分别去约会这两位MM了，而约会的地点，全部由MM决定<br /><br />首先是MM接口<br />package com.liao.bridge1;</p>
<p>public interface MM {<br />&nbsp;void date();<br />&nbsp;}<br /><br />Rose:<br />package com.liao.bridge1;</p>
<p>public class Rose implements MM {<br />&nbsp;public void date()<br />&nbsp;{<br />&nbsp;&nbsp;System.out.println("我是Rose,我喜欢去电影院");<br />&nbsp;}</p>
<p>}<br /><br /><br />Kitty:<br />package com.liao.bridge1;</p>
<p>public class Kitty implements MM {<br />&nbsp;public void date()<br />&nbsp;{<br />&nbsp;&nbsp;System.out.println("我是kitty,我喜欢去西餐厅吃西餐");<br />&nbsp;}</p>
<p>}<br /><br /><br />GG的接口<br />package com.liao.bridge1;</p>
<p>public abstract class&nbsp; GG {<br />&nbsp;protected MM mm;<br />&nbsp;public abstract void dateplace();<br />&nbsp;<br />//根据不同约的对象，返回不同的MM实例<br />&nbsp;protected&nbsp; MM chooseplace(String girl)<br />&nbsp;{<br />&nbsp;&nbsp;if (girl.equals("rose"))<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;return new Rose();<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp; else if&nbsp; (girl.equals("kitty"))<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;return new Kitty();<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;}//默认约ROSE<br />&nbsp;&nbsp; else{<br />&nbsp;&nbsp;&nbsp; return new Rose();<br />&nbsp;&nbsp; }<br />&nbsp;}<br />&nbsp;<br />&nbsp;}<br /><br /><br />TOM：<br />package com.liao.bridge1;</p>
<p>public class TOM extends GG{<br />&nbsp;private MM mm;<br />&nbsp;public TOM(String girl)<br />&nbsp;{<br />&nbsp;&nbsp;mm=chooseplace(girl);<br />&nbsp;}<br />&nbsp;public void dateplace()<br />&nbsp;{</p>
<p>&nbsp;&nbsp;<br />&nbsp;&nbsp;mm.date();<br />&nbsp;&nbsp;<br />&nbsp;}</p>
<p>}<br /><br />Peter:<br />package com.liao.bridge1;</p>
<p>public class Peter extends GG{<br />&nbsp;private MM mm;<br />&nbsp;public Peter(String place)<br />&nbsp;{<br />&nbsp;&nbsp;mm=chooseplace(place);<br />&nbsp;}<br />&nbsp;public void dateplace()<br />&nbsp;{<br />&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;mm.date();<br />&nbsp;&nbsp;<br />&nbsp;}</p>
<p>}<br /><br /><br />主程序<br />package com.liao.bridge1;</p>
<p>public class Client{<br />public static void main(String[] args) {</p>
<p>&nbsp; System.out.println("我是TOM,我想约rose");<br />&nbsp;GG tom=new TOM("rose");<br />&nbsp;tom.dateplace();<br />&nbsp;<br />&nbsp; System.out.println("我是TOM,我想约kitty");<br />&nbsp;&nbsp; tom=new TOM("kitty");<br />&nbsp;&nbsp;tom.dateplace();<br />&nbsp;&nbsp;<br />&nbsp;&nbsp; System.out.println("我是Peter,我想约rose");<br />&nbsp;&nbsp;&nbsp;GG peter=new Peter("rose");<br />&nbsp;&nbsp;&nbsp;peter.dateplace();<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; System.out.println("我是Peter,我想约kitty");<br />&nbsp;&nbsp;&nbsp; peter=new Peter("kitty");<br />&nbsp;&nbsp;&nbsp;&nbsp;peter.dateplace();<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;<br />}<br />}<br /><br />运行起来<br />我是TOM,我想约rose<br />我是Rose,我喜欢去电影院<br />我是TOM,我想约kitty<br />我是kitty,我喜欢去西餐厅吃西餐<br />我是Peter,我想约rose<br />我是Rose,我喜欢去电影院<br />我是Peter,我想约kitty<br />我是kitty,我喜欢去西餐厅吃西餐<br /><br />&nbsp;&nbsp; 可以看到桥接模式还是很不错的哦，在实际应用中，比如一个程序，有三类不同的功能，而这个程序需要分别在不同的操作平台运行的话，可以大大减少子类的数量哦，当然对桥接模式更深的讨论可以参见园子里其他朋友的文章</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://jackyrong.javaeye.com/blog/242667#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 16 Sep 2008 12:15:25 +0800</pubDate>
        <link>http://jackyrong.javaeye.com/blog/242667</link>
        <guid>http://jackyrong.javaeye.com/blog/242667</guid>
      </item>
          <item>
        <title>软件工程心理学之7---遇到客户发火怎么办</title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/242572" style="color:red;">http://jackyrong.javaeye.com/blog/242572</a>&nbsp;
          发表时间: 2008年09月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近的一个项目中,碰到个很实际的问题,一家很大的公司,委托一间中介公关公司负责一个网站项目的策划工作,而这间公司之前是请了一间搞页面的公司去搞页面和程序,结果发现搞的程序不符合要求,结果找到我们,要求只做程序,不用做页面.要命的是，他们时间紧,而且页面又做的不规范.更要命的是,他们负责的MM,听说是毕业1年不够,但却负责要把用户的需求反应给我们,但我们却不可能接触到客户,于是我们就只能一切听这位MM说了，可能她经验不足,而且对网站理解不深入,我们估计她经常把用户的需求A说成是B(在做的两三周中,经常要我去纠正她的一切错误,荒诞的想法).更更要命的是,她还经常中午临时提个需求,说用户要(说不定是她自己想搞成那样的),要下班前<br />做出来.</p>
<p>&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 好了，讲到这里.我还发现她有时还说话语气不大友善,经常高高在上,丝毫不考虑实际进度情况需要.那怎么对付这样的客户呢?又不能得罪之哦,但又不能有时接受她的无理需求.刚好,有一次她不在的时候,她的同事说有个文件的内容要发给我们更改,但从早上说要发,一直到下午了，催了他几次,都说没搞好,这可急死我们了，因为我们还有很多其他东西要搞,下午催了几次，说等下,等下，结果一直拖到5:30临下班前一刻才发给我们更改.当时我就很坚决的语气(注意不能发怒,但要带警告的性质,让人听下去觉得是友善的提示)说:你们这样拖下去,我们是不能保证XXX之前完成的,因为你们连基本的资料都没给我们,我们也要其他项目,也有原来的工作计划的.最后，那家伙也表示抱歉了.</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好了,在前几天,这MM又来了，中午突然说客户要加个功能,说你们下班前给我完成吧.我一听，就知道这个不大可能的了,但又不想得失她,于是说:</p>
<p>&nbsp; 我:XXX小姐,由于网站项目已完成了,这个功能属于是临时的,我们的项目组有原来的项目计划的,可能暂时不能因为你这个</p>
<p>非重要紧急的需求而临时抽掉出来做,但我们可以明天开始实施,可以么?</p>
<p><br />&nbsp;&nbsp; XXX:哎呀，不行呀，这个是客户催的很紧的哦.<br />&nbsp;&nbsp;&nbsp; 我:真的不好意思,因为你这个功能,需要我们新设计数据表,而且和原来的数据库要做一些修改,还有做后台录入,编辑，删除,还有最后前台需要展示,是需要时间的,你总不能让到时出来的效果达不到要求吧,为了这个非关键的需求,最后让网站的首页出了错的话，我看大家都难交代.<br />&nbsp;&nbsp; XX:这个呀...能加快点么</p>
<p>.<br />&nbsp;&nbsp; 我:我们明天安排已是最快的了,希望XX小姐也理解下吧,大家都有工作的计划.上次你同事不是说也要急着让我们改东西,但搞了一天最后还是最后才把资料给到我们么?当时你们不是说也因为计划的安排问题么,对吧,XX小姐,有的东西是急不来的，麻烦你向客户沟通下吧.</p>
<p><br />&nbsp;&nbsp;&nbsp;最后,XX终于同意了,也没啥大的意见,也没象以前那样高高在上的语气了.<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; &nbsp;关键:在对付一些高高在上的客户时,要多沟通,多理解,要不温不火,但有时适当也要给些提示,特别是原则性的立场问题时,<br />千万不要因为客户一句话"改",就要全部迁就.有的时候,当客户犯错时,自己要记下,象上面的例子那样,让客户知道:你们<br />也是人,人就要互相体谅,你们也曾经做过错事,你们也有计划进度安排表的,我们搞技术的不可能随便听一句话,一个想法<br />就去变更需求,对需求我们要确认，评估,分析的.在上面的例子中,由于抓住了客户曾经犯过的错和不足 ,从而在对话中,就可以让一时高高在上的客户的态度大为改变,知道自己也有不足和理亏的时候,这样和你的谈判的筹码双方就平衡了</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 还有特别要注意的是,象本文中的案例说的,有时会遇到一些什么用户的中间需求方,也就是简称"公关公司".有时有的公司会把好多项目全部都委托给这些公关公司做,这也是很麻烦的事,因为毕竟是"二手的需求"了,有时他们往往不能很好的<br />给乙方表达好甲方的需求,有时甚至是自己空想一些东西出来.这样的话,更加要多留个心眼,通过一些规范的手段,</p>
<p>去彻底了解甲方的真实需求,该拒绝的就拒绝,但还是要注意分寸的.</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://jackyrong.javaeye.com/blog/242572#comments" style="color:red;">已有 <strong>9</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 16 Sep 2008 07:34:15 +0800</pubDate>
        <link>http://jackyrong.javaeye.com/blog/242572</link>
        <guid>http://jackyrong.javaeye.com/blog/242572</guid>
      </item>
          <item>
        <title>软件工程心理学之6--提前感知用户的需求 </title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/241645" style="color:red;">http://jackyrong.javaeye.com/blog/241645</a>&nbsp;
          发表时间: 2008年09月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp; 这次想讲解下如何能提前感知用户的需求，初看起来，这个题目比较怪诞，但我感觉中，其实在某些时期和某些场合，这是要需要适当把握下用户的心理的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先，在工作中，曾经遇到一个这样的情景：有次，一个项目经理在和一个客户方负责信息项目的负责人在闲聊，这个时候项目已经进入维护阶段了，钱已经付了给开发方了，但客户方的这位信息项目负责人在闲谈中，谈到了对系统的一些不足和希望改进的需求。当然，气氛是很好的，丝毫没正式谈判那么严肃，这位负责人期间抱怨了很多系统的问题，但同时又感叹项目的资金就这么少了，心有力而不足的感觉。开发方当然没当是回事，结果这样就过去了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结果，三个月后，客户方突然通知开发方开会，说可以继续投入资金，要求开发方增加新功能和改进旧的功能，而其需</p>
<p>求正好是三个月前和开发方闲谈时所谈到的那需求,结果，开发方只好又开始和客户方开会探讨需求，结果为了钱，开发方接下项目，但发现其中有到的技术对自己有难度，而且遇到了不少阻碍，结果又和客户磨了不少嘴皮，去否定了客户一些不切实际的需求，自己的团队又花了不少时间学为了项目而学习新的技术，浪费了时间。</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp; 可以看到，在平时和客户的打交道中，要特别留意客户的一些看似不成熟的想法，无论是饭桌上的闲谈，还是私下的谈话，特别是客户方的信息负责人的言论，都要特别留意。因为人的心理是很微妙的，有时客户负责人的一些看法，意见不一定要在项目会议上提出来，可能在一些非正式场合就提出来了，虽然不是正式，但既然他是负责人，尽管不是领导拍板的，但怎能肯定他没有决策影响力呢？象上文说的，如果开发方能早的察颜观色，起码能知道客户方将来的一个趋向，一个可能的决策，那是相当有益的，甚至可以将客户方不合实际的想法消灭在谈判桌之外，甚至可以知道客户方领导的一些想法。</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 又如一个例子，一队TEAM新接手一个系统，一边摸索一边修改系统。项目负责人还是比较聪明，每次改完一个BUG后，在平时没事的时候，都问下用户方最近大概有什么新的需求计划，用户方的这位MM也不时将自己的一些想法和希望的修改意见反馈给客户，虽然不是正式通过官方下单的需求，但开发方还是比较留意，提早解决了一些技术上自己不大熟的问题，结果在真正需要实现用户提出的官方需求时，很快实现了。假如他之前不和用户搞好关系，在平时空闲时，不去注意听取用户的意见和倾向意见，结果是十分麻烦的</p>
<p><br />&nbsp;&nbsp;&nbsp; 所以，总结一下，在和用户打交道时，<br />1&nbsp; 不要轻视用户在非官方场合对系统发表的意见，要及时细心听取，会有意外发现<br />2&nbsp; 平时搞好和客户的关系，有可能的话，在非官方场合尽早消灭客户不切实际的想法 </p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://jackyrong.javaeye.com/blog/241645#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 15 Sep 2008 07:48:58 +0800</pubDate>
        <link>http://jackyrong.javaeye.com/blog/241645</link>
        <guid>http://jackyrong.javaeye.com/blog/241645</guid>
      </item>
          <item>
        <title>软件工程心理学之5---乙方如何面对甲方之1 </title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/241523" style="color:red;">http://jackyrong.javaeye.com/blog/241523</a>&nbsp;
          发表时间: 2008年09月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp; 在之前的软件工程心理学系列的文章中，谈到了关于在整个软件项目工程范围内，甲方领导，甲方以及乙方的之间的一些关系，以及作为甲方负责人，如何能揣摩好领导以及乙方的心理，更好地有利于工程项目的进行。在接下来的文章里，将开始谈谈作为乙方，如何揣摩好用户（这里是说甲方了）的心理，如何在项目过程中搞好和用户的关系，如何在项目过程中最大限度优化自己的资源，保护好自己的利益，又能跟用户愉快合作，不得失用户，还会谈下作为乙方的负责人，如何把握好团队的心理，更好地建设团队。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先，我们总的概括来看下乙方在项目中处于的地位和遇到的问题和特点，还是继续看这个图：<br /><img src="http://images.cnblogs.com/cnblogs_com/jackyrong/xinli1.gif" border="0" height="545" alt="" width="682" /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 留意这里的3和4，它们道出了甲方负责人和乙方的关系：<br /><br />&nbsp;3的含义可以理解为：甲方负责人给乙方施加压力，限定的时间要求获得高质量的产品，因为用户是上帝，心态上往往会高高在上，如果甲技术负责人水平很高的话，那有时更加会是不可一世的样子。因此，要把握好甲方的心理状态有可能是：急躁，紧张工程，放任工程进度，严肃认真，公平公正，指手划脚，盛气棱人等等。。。。。。。</p>
<p><br />&nbsp;&nbsp;&nbsp; 而4的含义可理解为：乙方定期要和甲方负责人沟通，汇报，接受甲方的意见，接受甲方的批评，呵呵，更多的还要受甲方以及甲方负责人的气。因此乙方往往需要和甲方负责人有很好的沟通，保持很好的关系，而且要作好和甲方负责人的公关工作。<br />&nbsp;&nbsp;&nbsp; 由于乙方和甲方负责人交流时间最多，因此注意的问题也很多，所以放到以后的篇幅去讲，这里先不表。<br /><br /><br />&nbsp;&nbsp; 而乙方和项目高层领导的关系也是十分微妙的，因此在该部分的前几篇，会先讲乙方如何和项目的高层领导搞好关系，把握好心理。<br />&nbsp;&nbsp;&nbsp; 在上图中，9和10表明了它们的关系，首先看下9：<br />&nbsp; 9表明了一个很重要的环节，那就是要充分重视乙方和甲方高层领导的关系！这点相信很多朋友都可能忽视了，又或者是明明知道要&ldquo;讨好甲方领导&rdquo;，但实际工作下来，还是最后取得不了甲方高层领导的信任，还是事事碰壁。有的朋友说：不是项目开始，对人家领导狠狠好好的&ldquo;公关&rdquo;一下，让人家领导吃喝玩乐一下不就可以了么？其实这是很大的误解的，以为单靠传统意识上的&ldquo;公关&rdquo;就可以和甲方领导搞好关系了。事实上，先来揣摩下甲方领导的心理<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 作为领导，是项目的发起人，倡议者，提出者，处于最高层，对项目的时间，质量，成本有着很高的期望。如果该领导本身是技术出身的话，那就更加紧张，更加重视。而且领导人在心理上的感觉一般是：急切盼望自己的想法，意见能得到实现，而一般很少去考虑其他因素，有时会比较主观；有时当遇到项目出现和自己预料的方向相反或者问题时，一般会比较急躁，这时经常会不分理由的找地方&ldquo;出气&rdquo;，呵呵。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp; 如果假如项目有甲方的负责人存在的话，领导人直接和乙方相处的机会不会太多（要知道，人家毕竟是领导）。因此我们谈下乙方在这个情况下要如何和甲方领导人打好交道，下面是一些建议，仅供参考<br /><br /><br />1、充分重视和甲方领导人的第一次见面<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第一次，一般都是最重要的，是成功的开始。乙方在和甲方领导人见面前，最好先做好准备功课，比如以下一些：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A&nbsp; 是单独和领导见面么？还是一起开集体的会议？第一次会议有哪些人参与，角色如何？<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;事先最好通过各类途径，了解下甲方领导的背景，可以通过公开的或者小道的消息，打听下领导的职位，具体工作，曾经参与的<br />工作，呵呵，最好尽可能收集多些资料，能把人家简历都搜索到那最牛B了，记得多利用网络，因为可以从这些完整或者零碎的资料，大概可以判断出甲方领导人处事风格，性格特点等。当然，很多一般的公司的话，如果是刚开始接触，你是不一定能了解人家那么多东西的，那没关系，可以多看下该公司的相关资料，介绍等。总之，要知己知彼。<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp; C&nbsp; 第一次和领导见面，要打算跟领导介绍什么，这很重要，建议高度重视，列出提纲，并且让乙方公司的高层审核一些，该说什么，不该说什么。一般来说，往往第一次见面，会向领导人概述乙方对项目的看法，对整个项目的工作计划。这里要特别注意的是，不要急于向领导表决心，有的乙方往往第一次见面，就急于向领导表现乙方的实力，以为可以让领导相信自己的团队，这样往往会给以后造成不必要的麻烦。所以，要趁第一次见面的时候，在向领导介绍的同时，认真记住领导的一些期望，知道领导的心里是如何想的，对项目有啥看法和要求，因为这个时候，领导面对的是技术的实施方，而不是甲方的技术负责人，这个时候最有可能最直接的得到领导的最原始的需求，看法和愿望。同时，如果乙方估计到在将来的项目过程中会遇到什么困难的话，也可以在这个时候如实的向甲方领导反应，这是个很好的时机，<br />往往能得到领导正面的积极响应。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最后，要了解领导在该项目计划中，参与的力度如何，能参与的时间表如何。比如大家要协定好有领导在场参与的会议周期，领导的联系方法等，这些都是很重要的。<br /><br /><br /><br />2、在第一次和甲方领导人见面后，要马上研究下会议要点，比如，将有关的情况向领导汇报，并且应该可以大概初步摸清甲方领导人的性格特点，为人处事的方式了，可以知道今后在和该领导人打交道方面，要注意些什么，并采取相应的策略。比如可以从第一次的交谈中看出领导的期望值，可以和之前对项目的初步预想做个对比，看有没有出入；还可以判断领导对项目的重视程度如何，比如领导经常要一起和乙方开会的话，重视程度就很高了；</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无论如何，接下来都要制定一份详细的和领导沟通的计划，比如每隔多久要找专人负责同领导进行沟通汇报，如果对方领导人很忙，那起码也要通过EMAIL，电话，QQ等方式，把每次会议的记要或其他报告发给对方领导人；又比如要计划好，大概什么时候，要乙方的领导高层一起出来，和甲方的领导人一起&ldquo;沟通活动娱乐一下&rdquo;（呵呵），&ldquo;公关&rdquo;的活动把握，是很有技巧的，要先了解好对方的性格特点，才能做好公关工作，公关活动太密集不好，太少也不好，不利于双方维持好的关系。</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp; 还有个误区可能不少朋友会认为，定期和甲方领导的沟通和报告，由乙方技术人员（比如CTO去）就可以了，其实不一定的，最好乙方能在项目前期，凡是和乙方领导人见面的场合，有条件的话，都派出专门的如销售人员，售前代表等市场人员，由他们和技术人员一同面对乙方的领导，这样的一个好处是，能让掌握市场活动技巧的人员，更好的和乙方领导人沟通，做好公关工作，同时在某些场合可以弥补技术人员的一些不足，还可以做一个第三方监督的作用，因为往往有的时候，技术人员在沟通方面不一定那么专业，一不小心，就会误了大事的。当然，销售人员和技术人员在每次和甲方领导人见面时，也是要先做足功课，口径一致的。<br /><br /><br />3、与甲方领导人建立朋友关系<br />&nbsp;&nbsp;&nbsp;&nbsp; 除了定期将项目进度向领导人汇报了，还平时一些&ldquo;公关场合&rdquo;，要抓紧机会了解甲方领导人的爱好，需求等，要多和他们拉拉家常，让对方感到，你做为乙方，除了帮甲方做事外，还是他的好友，是战略上的合作伙伴，是能真真正正长久给甲方带来各类交易的，所以这个时候，包括乙方领导，销售人员，项目经理，甚至实施项目的程序员，都要一起上阵了。往往有很多项目经理和程序员有误解，认为和领导沟通，是咱们家CEO和市场的事，和自己没多大关系，有时不能放下架子去面对，实际上这是不大恰当的。因为往往是在&ldquo;公关场合&ldquo;，技术人员也是最能了解整个甲方团队的好时机，包括了解甲方的领导，甲方负责人，甲方的基层等等，甚至有的时候，可以在公关场合，可以婉转的表达自己遇到的困难，提出需要的帮助，指出甲方的一些不和实际的需求等等。<br /><br /></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://jackyrong.javaeye.com/blog/241523#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 14 Sep 2008 00:09:08 +0800</pubDate>
        <link>http://jackyrong.javaeye.com/blog/241523</link>
        <guid>http://jackyrong.javaeye.com/blog/241523</guid>
      </item>
          <item>
        <title>软件工程心理学之4--甲方错误范例做法剖析 </title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/241387" style="color:red;">http://jackyrong.javaeye.com/blog/241387</a>&nbsp;
          发表时间: 2008年09月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在本系列的文章中，在<a href="../../blog/240417" title="&lt;&lt;软件工程心理学之2--甲方负责人&gt;&gt;">&lt;&lt;<span style="color: #444444;">软件工程心理学之2--甲方负责人&gt;&gt;</span></a>我们谈了如何做好甲方负责人以及其中要注意的地方，<br />在<span style="color: #444444;"><a href="../../blog/240873" title="&lt;&lt;软件工程心理学之3--甲方负责人 PK 乙方》">&lt;&lt;软件工程心理学之3--甲方负责人 PK 乙方》</a></span>中，我们谈了甲方负责人在项目过程中，在和乙方打交道时要注意的问题和应该避免的错误。接下来，将以几个错误的范例来进一步分析一下在实际工作中甲方往往遇到的一些问题，都是之前工作中遇到的案例或者是一些相关例子，给大家参考下，可以揣摩下如何在其中适当用好心理学的各类策略。<br /><br /><br />1、<br />&nbsp;&nbsp;&nbsp;&nbsp; 这是一个好友遇到的一个案例，可能情况有点特殊，事情是这样的：甲方负责人A所在的公司，要上系统，规模中等，A所在的公司开发力量不多，因此要求外包，但偏偏A公司的老板请了一间顾问公司来做顾问咨询，而且甲方负责人A，老板，乙方，顾问公司都在项目会议上碰面一起商议了。问题是，可能这间顾问公司也依仗着比较牛，又或者有可能和乙方有些不知明的关系，于是顾问公司的人在会议上提出要用方案A，而且态度很坚持，但负责人A却认为，从公司发展的角度以及成本来说，用方案B比较好。于是，双方到最后，争持不下，而这位负责人A，之前也搞了多年开发，有经验，可能性格也倔强些，也可能看不起那间顾问公司，最后，结果是搞到气氛十分尴尬，几乎和那间顾问公司翻了脸，会议的目的也没达到，老板听说最后也不满意。后来，这位好友对我说：我很不爽那间顾问公司，因为以前他们其实本事不多，靠吹牛皮吃饭。。。。。。。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在上面这个例子中，可以看到，甲方负责人A是处理不妥当的。首先，甲方出发点是好的，可能是根据自己长期的经验和为公司考虑，但他本人一开始在心理上，就已经&ldquo;有罪推断&rdquo;了，认为顾问公司和乙方是一气的，认定那间顾问公司的方案是有问题的，但是A负责人忽略了一点：他本人没100%把握证明自己的方案有利于公司，而且，他没能揣摩好老板的心理。他后来对我说：我觉得老板是不信任我，因为<br />故意找来间顾问公司来搞。。。。。。。。</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实，老板的心理有可能象A所说的那样，有可能是看下A是否真的有水平，真的是为公司着想，但老板也毕竟要从公司大局出发，希望有顾问公司在的话，为项目提供更好的服务。如果A能按后面的说法来揣摩老板的心理的话，就应该不会从私人的角度去看这件事了，就应该从大局出发，从公司的整理利益出发，认为顾问公司的到来，应该是有利于甲方的工作的，而不应该认为是阻碍自己的工作，这样心理上就会爽很多。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其次，A负责人在会议上遇到这样的问题，大可不必和顾问公司争论不休。假如他有足够的把握证明自己的方案有利，他可以先&ldquo;按兵不动&rdquo;，让顾问公司把方案的好处全部列举出来，去聆听其方案的好处和弊处，然后逐一记录下来，再仔细分析对方的方案和自己的方案有什么不同，比自己的好在哪里，不好在哪里，找出对方的弊端所在，再结合自己公司的实际情况，最后一举击中对方的弊处，并且向老板予以汇报。<br />&nbsp; &nbsp;&nbsp;&nbsp; 当然，有可能在会上不可能马上能做这么东西，所以因此不妨在会上，先把工作做一部分，先&ldquo;以退为攻&rdquo;，把对方的一些看法记下来，快速分析并和自己的对比一下，然后以简单对比的方式向老板简单汇报，或者再跟老板说，由于问题重大，涉及公司的利益，因此希望会后再仔细研究，一般来说，你讲的严重些，老板也会同意的，不会轻易在一次会议上就马上拍板的。然后会后再用鲜明对比的方法，比如搞个PPT，生动形象地向老板予以解析你的方案的好处，这样，就几方面都照顾到了，即使再次面对顾问公司和乙方，自己心里也有底子了。<br />&nbsp;&nbsp;&nbsp; 所以，记住，在紧急的关头或者争持不下的关头，不妨&ldquo;以退为进&rdquo;，效果比强硬地争论要好。<br /><br /><br /><br />2&nbsp;&nbsp;&nbsp;甲方负责人不要太自我。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 虽然说顾客是上帝，甲方和乙方在一开始中，甲方自然成为乙方的上帝了，但不要忘记，凡事要有度，过犹不及。举个例子，之前在一个项目中，甲方负责人是为博士，可谓十分高高在上了，在项目中，一直也很强势，有时也不按章办事，向乙方提出了很多项目期间&ldquo;合情不和理&rdquo;的要求，就是说，他喜欢新的技术玩意，往往要乙方增加修改的东西，都是有些&ldquo;炫耀性质&rdquo;的东西，因此，给乙方做成了很大的麻烦和困绕。而乙方的开发组也不是闲着的，也有不少博士在，因此私下都不爽这位甲方负责人。最后，在项目的后期阶段，这位甲方博士，居然把监理和乙方叫来，说前段时间看到人家一个政府系统，采用了某某新技术，所以想乙方短期也加一个&ldquo;小功能&rdquo;，以增加项目的知名度。乙方和监理都提出，可能会涉及问题比较多，时间上等会有些问题，不想影响主体进度。但这位博士居然当面说：这个功能很简单呀，我如果自己来写的话，1到两天就写好拉。。。。。。。</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最后，乙方十分不爽，被迫加班加人来搞这个功能，当然证明那甲方博士的话是错误的。后来，乙方因为不爽甲方这位负责人，在项目其他地方的一些问题上也难为了下他，最后搞到大家都不大高兴，这些就题外话了不说了。<br />&nbsp;&nbsp;&nbsp; 所以，假如你是甲方，要记得：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A 保持强势是需要的，但要有度，不要过犹不及<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B&nbsp; 要搞清楚乙方人员的身份，学历，经验，特长，技术等，对于乙方主要负责人，更甚至要了解其性格特点，爱好等，这样是有好处的。<br />&nbsp;&nbsp;&nbsp;&nbsp; C&nbsp; 适当的场合要讲适当的话，千万不要口出狂言，态度要中庸，实事求是。<br /><br /></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://jackyrong.javaeye.com/blog/241387#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 13 Sep 2008 01:00:22 +0800</pubDate>
        <link>http://jackyrong.javaeye.com/blog/241387</link>
        <guid>http://jackyrong.javaeye.com/blog/241387</guid>
      </item>
          <item>
        <title>软件工程心理学之3---甲方项目负责人 PK 乙方 </title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/240873" style="color:red;">http://jackyrong.javaeye.com/blog/240873</a>&nbsp;
          发表时间: 2008年09月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="postText">(注意：本写列文章，未经本人同意，谢绝转载，版权所有，如需转载，请与本人联系，谢谢）<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; 系列之二主要是闲聊了关于甲方项目负责人如何和甲方的领导相处配合，以及其中要注意的地方。在本文里，将探讨下在整个项目过程中，作为甲方的项目负责人，应该如何于乙方进行配合，如何揣摩好乙方的心理，如何能和乙方和谐相处。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先，我们继续来复习上次提到的图。<br />&nbsp;&nbsp; <img src="http://images.cnblogs.com/cnblogs_com/jackyrong/xinli1.gif" border="0" height="545" alt="" width="682" /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 这次我们着重谈的是箭头中的&ldquo;3&rdquo;。首先我们来看看，作为甲方信息项目负责人，在面对乙方的情况下，会遇到一些什么样的问题（普遍而言）。我列举了大概下面一些常见的：</div>
<div class="postText"><br />1、来自领导各方面的压力比较大，领导期望大，自己也有很高的期望，但时间紧迫，又第一次做甲方，觉得没把握；有的人原来做技术的，现在角色转换了，觉得做甲方无聊枯燥。<br /><br />2、项目大，自己觉得在实施方面经验不足，自己的知识体系结构与乙方有很大的差距，面对乙方提出的要求，新技术，新的实施方法，自己<br />了解的不多，老有感觉被&ldquo;乙方牵着鼻子走&rdquo;的感觉。<br /><br /><br />3 、感觉对乙方的监督不到位，老是感觉乙方进展慢，不合当初提出的要求，于是老是催乙方，但又提不出很好的对乙方的具体要求。<br /><br />4、和乙方的工作中，经常意见不一，双方理解分歧大，老觉得乙方偷工减料，经常和乙方发生争执<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在上面的这些原因中，有的是由于甲方负责人本身的问题做成的。比如第1点，我就见过有甲方负责人出现过这样的情况，当然，出现这样的情况的一般是甲方负责人的经验问题，或者是做信息项目的新手，又或者是以前是专搞技术的，这次转换角色有点不适应。<br />&nbsp; <br />&nbsp;&nbsp; &nbsp;&nbsp; 在这样的情况下，建议先做下心理上的调适。假如你是由于经验问题或者是角色刚转到甲方来的话，建议你可以这样想：我毕竟以前是搞技术的，虽然现在转了角色，虽然要做的东西不同了，但起码不用做编码CODING了&nbsp;，可以站在更高的角度去把握问题了，可以学到更多的软件工程的知识以及管理规划的知识，可谓海阔天空了，可以做&ldquo;监工&rdquo;了，有做&ldquo;小老板&rdquo;的感觉了。呵呵，上次我有位朋友，在单位原来是搞技术的，属于技术狂，后来由于有项目要外包给其他公司做了，他自然成了甲方负责人，开始他觉得不爽，觉得做甲方负责人无聊枯燥，整天要上听领导指示，下要面对乙方。后来我让他按上面的讲法重新思考，重新调整自己的心理状态，重新去感觉做甲方的乐趣所在，最后，由于他技术功底好，加上肯学习，很快就转换了角色了，在整个项目中对各类问题，以及和各方的关系处理的很好。</div>
<div class="postText"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 而对于第2点的情况，应该是普遍存在的。原因可能是：可能是由于经验的不足，工程庞大，自己在这方面的业务知识还是不足够，对一些新技术之类的和乙方提出的方法不大熟，但时间又紧。在这样的情况下，建议有几点：</div>
<div class="postText"><br />&nbsp;&nbsp;&nbsp;&nbsp; 1、你自己的心理上要坚信：你是甲方的负责人，你不是全能的，你的职责是把需求较好地告诉乙方，配合，监督乙方完成工作，而不是去做乙方的参谋。因此对于知识方面的缺陷，你要有个清楚的认识，如果不是涉及太核心的业务流程知识，而只是涉及到一些花俏的知识和技术，则无必要过分强调自己去全盘照收，毕竟你的精力是有限的。要搞清楚，乙方提出的新东西，是否真正适合本项目使用。这就涉及到一个评估的问题。这时建议你先把乙方的有关方案仔细研读记录，并要求乙方提出明确的根据和理由，千万不要轻信乙方表面上的东西。打个比方，乙方说要上。NET系统，吹到如何如何好，但做为甲方的你，你可以结合项目目前的具体情况，再让乙方提出根据理由进行判断，就是：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;仔细研究项目的业务流程和具体情况+要求乙方真正举出理由根据+咨询第三方意见+查询同类案例的经验<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这样的做法的好处是&ldquo;反客为主&rdquo;，因为要知道，有时设置甲方的负责人有可能根本不是搞技术出身！还可以咨询第三方的意见，最简单的是可以和手下开会（手下的一般都是搞技术的），和他们探讨乙方的方案。注意做为甲方负责人的你，不要那么直接让你的下级清楚你知识上的缺陷（否则太明显的话，有可能让下级对你产生不信任和认同），要通过和他们讨论，间接布置任务给他们，由他们来进行解答，从中听取相关意见。最后，还可以多查询同类案例的成功或者失败经验，搜集好这些资料，以便在开会时和乙方讨论时有根据可以提出来。</div>
<div class="postText"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在做好这些工作后，对于乙方提出的新玩意，你最好还是自己了解其基本原理和应用就可以了，太深的东西你根本没必要去了解，或者你让你的手下去做和整理。<br /><br />&nbsp;&nbsp;&nbsp; 2、心理上要认为自己是掌握主动权的，因为毕竟你是甲方，你是客户，是上帝。在同乙方打交道的时候，要让乙方觉得你做为甲方的负责人，是对项目整体的把握是到位的，是有大局观的，是有很好的掌控能力的，是有领导风范的，是有经验的。因为这点是很重要的，特别是假如甲方负责人刚接手，或者是经验不足的，或者是根本不是技术出身的话，更加要在乙方面前表现得镇静自若。建议如果你手下有搞技术的人员的话，每次开会都带上他们；如果碰到乙方吹新技术，新方案的话，自己要保持冷静，如果不熟的话，可以在会上适当拖延下，让下次再讨论答复，或者让技术人员解答，有时也要在乙方面前，多表现自己的权威（甚至做下戏有时也要的，呵呵）。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 而对于第3，4点，主要是由于缺乏对乙方的量化监督。很多情况下，如果没有第三方监理的话，甲方很容易陷入盲目的监督中，比如表现在形式上的监督，要乙方定期汇报进度，缺乏在细的方面上的监督。因此有如下建议：<br />1、在项目一开始，就要拟订好对乙方的监督计划。比如定义的会议制度，会议需要乙方参加人员，乙方的长期联络人。监督计划最好按照里程碑来实现，不能过于太粗糙，比如等乙方完成需求调研才进行审核，可以改为：要求乙方完成需求调研中的某个部分的调研，就要提交给甲方审核一次，就象XP里一样，小规模审核。而且最好也留一定的余地给乙方，比如要求乙方在某个时间段内提交，有的时候不能对乙方太过苛刻，否则会引起乙方的不满意，影响接下来的工作。<br /><br />2、&nbsp; 每次和乙方开会讨论问题时，要做好记录，最好能录音。开会前，按出现问题的严重程度，由高到低列出来，会上向乙方提出来，最好能搞成一个表格的形式，比如能记录乙方当时的响应，会后的响应，实际的效果等，这样以后一目了然，知道乙方到底做了些什么工作了。对于原则性问题，要明确地向乙方指出，不怕得罪乙方，而对于乙方提出的意见和方案，自己也要记录，不急于做结论，因为主动权在你手。<br /><br />3 比如一份典型的监督计划的模版有可能是这样的（仅供参考）<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; </div>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="mso-spacerun: yes;">&nbsp;</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">监督计划</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt;"><span lang="EN-US">1、<span style="font: 7pt 'Times New Roman';">&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">需求分析阶段中乙方对需求调研效果的监督</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US">&nbsp;</span></p>
<div class="postText">
<table cellspacing="0" border="1" width="595" cellpadding="0" style="width: 446.4pt; border-collapse: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt;">
<tbody>
<tr>
<td valign="top" width="91" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 68.4pt; padding-top: 0cm; background-color: transparent; border: windowtext 0.5pt solid;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; tab-stops: 53.25pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">原计划内容描述</span><span lang="EN-US"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">乙方计划开始日期</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">乙方计划结束日期</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="mso-spacerun: yes;">&nbsp;</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">实际开始日期</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">实际结束日期</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">完成情况</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">滞后情况乙方描述</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">乙方提出的解决方案</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; tab-stops: 2.25pt;"><span lang="EN-US"></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">乙方提出的问题</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; tab-stops: 2.25pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">甲方对本阶段的意见问题</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; tab-stops: 2.25pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">双方对下阶段的意见</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">甲方：</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">乙方：</span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; tab-stops: 2.25pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">下一任何的起始时间：</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; tab-stops: 2.25pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">本阶段备注</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">这里可列出本阶段双方可参考的已有制品或文档情况</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
<tr>
<td valign="top" width="91" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 0.5pt solid; width: 68.4pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; tab-stops: 2.25pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">双方领导签名：</span></p>
</td>
<td valign="top" width="504" style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 378pt; padding-top: 0cm; border-bottom: windowtext 0.5pt solid; background-color: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">甲方</span><span lang="EN-US"><br /></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">乙方</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;<span lang="EN-US"></span></p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="postText"><br />&nbsp; 当然，如果有第三方监理方的话，则上面加上监理的意见和看法及签名等。这样在实际操作中，就量化了，有规范了，大家都要遵守。<br />先写到这里，下次继续写，欢迎各位继续批评和补充，发表看法<br /></div>
          <br/><br/>
          <span style="color:red;">
            <a href="http://jackyrong.javaeye.com/blog/240873#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 12 Sep 2008 00:07:10 +0800</pubDate>
        <link>http://jackyrong.javaeye.com/blog/240873</link>
        <guid>http://jackyrong.javaeye.com/blog/240873</guid>
      </item>
          <item>
        <title>软件工程心理学之2----关于甲方项目负责人 </title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/240417" style="color:red;">http://jackyrong.javaeye.com/blog/240417</a>&nbsp;
          发表时间: 2008年09月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>(注意：本写列文章，未经本人同意，谢绝转载，版权所有，如需转载，请与本人联系，谢谢）<br /><br /><br />&nbsp;&nbsp;&nbsp; 现在开始写了，由于工作关系，只能每次写些，估计也不会太连贯，但还是会围绕一条主线：如何在软件工程的各个环境中，打好&ldquo;心理战&rdquo;，运用各种技巧处理好其中的人际关系。因为我觉得在软件工程中，看上去人是围绕者工程转，围绕者产品转，以产品项目为中心，但归跟到底，始终是要和人打好交道，无论从需求分析，设计，编码，测试，评审，维护，如果&ldquo;人&rdquo;这一关把握好了，什么都好办。嘿，毛主席也说过：关键是人。所以，写这系列的小结的目的，更主要的是希望能引起大家对这方面问题的重视和讨论，大家不妨将有关的经验或者看法，无论成功失败，都于大家分享之，让大家都从中受益。<br />&nbsp;&nbsp;&nbsp;&nbsp; 这次先来谈谈甲方的问题。首先，甲方是软件工程的投资方，启动方，信息工程受益方。这里说的甲方，在整个项目工程中其实<br />一般主要由以下三类人组成<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、高层领导（或高层领导及投资方）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、信息项目的总负责人<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、信息项目的有关和乙方的联系人，信息基层项目的使用者，简称信息实施员的角色。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在这里，应该着重谈作为2的信息项目总负责人，应该如何处理好各种关系和乙方的关系，如何与高层领导和乙方展开心理博弈。首先我们来看下1，2，3和乙方的关系和地位图：<br />&nbsp;&nbsp;&nbsp; <img src="http://images.cnblogs.com/cnblogs_com/jackyrong/xinli1.gif" border="0" alt="" /><br />&nbsp;&nbsp;&nbsp;&nbsp; 我们来看下这几方在心理上的期待（一般情况下）<br />&nbsp; <br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 做为最高领导人，心理上最容易揣摩的，无非就是：希望花最少的钱，最短的时间，干出来的项目质量最好，以后不用再麻烦，作为企业的领导的话，希望能产生经济效益，如果做为政府或一些事业单位的领导，希望项目上马后，可以运行起来，甚至可以向再上一级领导邀功，报政绩。高层领导可能懂技术，而更多的是不懂技术，两者都要求其中的角色2：项目总负责人有如下的要求期待：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A&nbsp; 负责提出甲方的需求，负责招标等环节，负责和乙方谈判等细节以及整个项目的全程跟进。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B&nbsp;&nbsp; 要求负责人定期向自己汇报，解答自己的疑问。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好，我们要特别注意其中的B环节。因为根据我所知道，有的甲方负责人，可能本身是技术出身，本身可能工作也忙，要做统领全局的元帅，可能把精力都放在A环节上了，却最B环节不大重视，认为反正做到差不多阶段的话再找领导汇报一下也不迟，有的认为反正领导也忙，估计没时间去经常关心；有的认为在实施过程中，出现了一些意外的问题，或者是自己有点责任，想等改善好了再报告领导。。。。但其实，这是很危险的。因为一般来说，做为最高者的领导，他会认为自己始终是在整个金字塔的最高层，他才是项目的最高权力者，甲方信息负责人只是他手下的兵而且（这是事实，无可否认），而如果负责人把自己位置摆不正，认为合同一签，领导既然已经拍板了，自己就可以做元帅操刀了，那就不大好了。做为负责人的你，应该做到多为你的领导考虑，要努力做好B环节。特别是如果你的领导不是搞技术出身，对有关项目方面的知识不是很了解时，你就更应该注重B环节，要让领导知道，在整个项目中，你是他的好帮手，好军师，然后才是好的统领人，让领导不会感到孤单。因为我曾见过有个案例，项目负责人缺乏和领导的沟通，全心放在项目上，有时甚至1个月才向领导汇报一次，有次甚至想隐瞒自己的出错，最后越来越多问题，最后终于纸包不住火，给领导发现了。。。。所以在上图的标号2中，做为乙方应该做到：<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 定期向领导汇报项目真实进展，为领导解答疑问，听取领导意见，合理解释拒绝领导不切实际的想法。注意，有时领导会经常有不切实际的想法突然冒出来，有时可能是一时兴起，有时是受到了外界其他因素的刺激。这是做为甲方负责人的你，如果在做过调查研究和系统分析后，真的确认领导的想法是在当前项目的当前阶段是不可行的（一般发生在项目需求分析阶段）话，就要及时向领导解释，但要注意，要有技巧和艺术，要揣摩好领导的心理。比如，我见过曾经有领导在出外学习后看到另外一个信息系统有十分好的点子，于是在一次项目会议上就滔滔不绝的说，希望这次项目要上这个点子，十分高兴。这个时候，有的负责人可能会马上意识到不妥，认为不可行，有的负责人会认为领导是疯了，而此时，乙方的负责人当然很不爽拉，因为看到甲方领导这样搞法。但此时，建议做为甲方负责人的你：</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp;不要轻易在会上马上否定领导的想法，因为你要保持相对的中立，毕竟有可能你的判断不是正确的，有可能领导的突然的点子会对项目有举足轻重的。即使假如你很肯定当前的项目无法实现领导的需求，你也要婉转地指出来，因为领导的心理是，希望乙方能把自己的点子予以实现，假如乙方和甲方负责人马上就否定了的话，有的领导可能会心理觉得很不爽的。所以你可以这样：先把领导的想法清楚地记下来，然后一边要和乙方进行讨论一下（起码也要谈一下，不能敷衍了事），然后你可以看情况予以决定，比如跟领导说：由于目前项目的资金，时间以及轻重缓急等原因，这个点子需要我和乙方再进一步讨论，在下次会议中再做出答复，本次会议还要继续讨论其他上次遗留的问题。。。通过用这样的方式缓冲一些，这样，既给了领导面子，让领导能尽情完整地把想法表达出来，又能给自己以思考评估的时间；即使领导的点子不可行，下次会议时，就可以把它否决掉。</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此外，作为甲方负责人，在和领导在整个项目过程中相处，还要注意如下一些问题，仅供参考：<br />&nbsp;&nbsp; 1、首先要明白和打探清楚领导在这个项目中的角色和地位。因为有的时候，可能你的领导是多人的，多等级的，但始终会有一个和你接触比较紧密的领导，你一定要清楚这位和你接触紧密的领导在整个项目中的地位是什么？实际权力有多大？和其他领导的关系如何？其对项目需要的业务流程知识是否熟悉？个人性格处事方式如何？记得千万不要找错你的直接领导人，否则后果不堪设想。假如在这点上你和领导们不能达成共识，那你应该花点时间先理顺这里的关系，千万不要侥幸，认为反正项目开始后，我的上头始终有领导在，不用怕。<br /><br />&nbsp;&nbsp;&nbsp;2、仅可能多和领导交流对于项目的想法，这里的想法不是说对项目已经确定下来，签了合同的想法，而是说领导对于项目的整个大局观的看法，比如打探领导对乙方，监理方的看法，就项目本身来说，领导本身的压力如何，领导对项目将来的一些期望和打算。这些可以在一些较轻松的环境下，通过轻快的交流来获得，有可能会得到你意想不到的结果和惊喜哦，呵呵（我就试过了。。。）<br /><br />&nbsp; 3、无论自己多忙，制定好和领导反馈的计划，比如约定多久要开三方会议（领导，甲方有关技术负责人员，乙方，监理），多久要单独和领导进行汇报（面对面的汇报，书面的汇报，电话汇报，视频会议，EMAIL汇报，QQ，MSN汇报。。。甚至让你手下代为转达汇报），记得，无论出现什么问题，都要及时如实汇报。当然，汇报的形式你要掌握好，领导时间宝贵，建议事先先打好腹稿，要汇报的形式建议分为<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;上次会议后到目前解决了什么问题，存在什么问题和目前的解决对策<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B&nbsp;&nbsp;&nbsp;急需领导拍版定夺的问题。<br />&nbsp;&nbsp;&nbsp; 有人可能会说，每次会议后的会议记要同时给领导，不就行了么？但其实，那个是必须的，但做为项目负责人的你，有时有的东西是需要<br />你亲自向领导汇报和解释的，这就不能偷懒了，因为领导在心理上最依赖和最信任的人就是你了。<br /><br />&nbsp;4、定期主动询问领导，针对目前的项目有什么疑问，自己予以解答，更显得你对领导的关心和积极，呵呵。。。。。。<br /><br /><br />&nbsp;5、在项目的每一个里程碑阶段，都要争取机会和领导面对面的交流反馈，要搞一份每个里程碑的详细报告给领导看，内容包括<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、预期本阶段完成的进度<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、本阶段已经完成的情况，尚解决完成的问题及原因<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3、乙方的表现如何，自己对乙方的评价和乙方存在的问题。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp; 希望领导定夺的问题有哪些（按轻重缓急），希望领导配合调解的问题有哪些<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 下一阶段甲方，乙方的计划。</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://jackyrong.javaeye.com/blog/240417#comments" style="color:red;">已有 <strong>8</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 11 Sep 2008 07:20:12 +0800</pubDate>
        <link>http://jackyrong.javaeye.com/blog/240417</link>
        <guid>http://jackyrong.javaeye.com/blog/240417</guid>
      </item>
          <item>
        <title>hibernate 缓存中的一些要注意的地方</title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/240382" style="color:red;">http://jackyrong.javaeye.com/blog/240382</a>&nbsp;
          发表时间: 2008年09月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>1 hibernate 中的缓存问题</p>
<p>&nbsp;&nbsp; A 一级缓存和session的生命周期一样的，在比如<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student student=(Student)session.load(Student.class,1);<br />&nbsp;&nbsp;&nbsp;&nbsp; 这样的语句中，如果两次发出这样的语句，是可以用到缓存的。<br />&nbsp;&nbsp;&nbsp;&nbsp; 同样，用get也是可以用缓存的。</p>
<p>&nbsp;&nbsp; B 如果是用迭代查询，比如这样：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student student=(Student)session.createquery("from student s where s.id=1").iterate().next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 之类的话。是能用缓存的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但如果查询普通属性的话，比如<br />&nbsp; <br />&nbsp;Student student=(Student)session.createquery("select s.name from&nbsp; student s where s.id=1").iterate().next();<br />&nbsp;&nbsp;&nbsp; 如果两次查询的话，则不能用缓存，是要再发多条sql语句的。</p>
<p>&nbsp;&nbsp;&nbsp; 所以一级缓存是缓存实体对象的。<br />&nbsp;&nbsp; <br />&nbsp; B&nbsp; 以上说的是在一个session中发出的。如果在两个session中的话。它们之间不能用缓存。</p>
<p>&nbsp; C&nbsp;&nbsp; 在同一个session中，先用session.load查询，然后session.clear(),<br />再用session.load(),则很明显不能用缓存了，肯定要发出sql.可见<br />session.clear()是可以清除一级缓存的。可以看到，hibernate的一级缓存<br />是咱们控制不了的。<br />&nbsp;&nbsp; D&nbsp; 避免一次性大量实体数据入库，先flush,后clear.</p>
<p>&nbsp;</p>
<p>2 hibernate 的ecache的设置，见<a href="http://www.cnblogs.com/jackyrong/archive/2008/08/29/1279083.html">http://www.cnblogs.com/jackyrong/archive/2008/08/29/1279083.html</a></p>
<p>&nbsp;</p>
<p>3 查询缓存：<br />&nbsp;&nbsp; Query query=session.createQuery(".......");<br />&nbsp;&nbsp;&nbsp; query.setCacheable(true);<br />&nbsp;&nbsp; <br />&nbsp; 要注意的是，查询级缓存，只对如query,list()起作用，对query.iterate()不起作用</p>
<p>&nbsp;&nbsp; 注意查询缓存的时候，在hibernate.cfg.xml中<br />&nbsp;&nbsp; &lt;property name="hibernate.cache.use_query_cache"&gt;true&lt;/property&gt;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://jackyrong.javaeye.com/blog/240382#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 10 Sep 2008 23:19:48 +0800</pubDate>
        <link>http://jackyrong.javaeye.com/blog/240382</link>
        <guid>http://jackyrong.javaeye.com/blog/240382</guid>
      </item>
          <item>
        <title>软件工程心理学之1----开篇 </title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/239984" style="color:red;">http://jackyrong.javaeye.com/blog/239984</a>&nbsp;
          发表时间: 2008年09月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于最近本人把博客园的博文都打算搬迁到这里,感觉这里的讨论气氛好些,因此把之前写的一些关于软件工程的文章发布到这里,跟大家共同探讨和分享<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近偶然翻了下以前做过的项目或者做过的咨询或者监理的一些记录，文档之类的，又听了和看了一些<br />讲座和相关的资料，觉得应该要重视软件工程中的心理学应用。因为之前自己在大学学过心理学，当时以为没什么用，<br />但现在回顾一下，觉得心理学无论在哪一方面都是应用的很广泛的。比如在软件工程里，无论从用户需求调查，分析，<br />需求管理，团队管理，开发管理，团队激励机制，测试等等环节，如果能运用好心理学，将对整个团队很有好处，甚至能<br />起到事半功倍的作，感觉尤其深的是在同用户打交道的方面，和团队人员相处和管理中，能用好心理学的话，<br />揣摩好用户和团队成员的心理，效果十分好。所以打算陆续将自己的一些看法和心得记录之，欢迎各位提出指正意见和讨论。<br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 首先，我不想在这里大摆心理学教材上的那些概念，因为学完之后，那些东西是死的，关键是如何用到咱们的软件工程中去。我打算分以下几部分去学习和总结，边写边学和边整理，也欢迎大家对以下的话题进行讨论，因为觉得十分实际<br /><br />1、在工程项目中甲方如何和乙方进行心理博弈，如何处理好和乙方（或监理）的关系<br />2、在工程项目中乙方如何和甲方进行心理博对弈，如何处理好和甲方（或监理）的关系<br />3、在需求管理中，乙方如何有效地和甲方配合<br />4&nbsp; 在团队管理中，如何有效和团队成员合作，沟通</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://jackyrong.javaeye.com/blog/239984#comments" style="color:red;">已有 <strong>9</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 10 Sep 2008 07:43:54 +0800</pubDate>
        <link>http://jackyrong.javaeye.com/blog/239984</link>
        <guid>http://jackyrong.javaeye.com/blog/239984</guid>
      </item>
          <item>
        <title>九型人格,工作中的好帮手</title>
        <author>jackyrong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jackyrong.javaeye.com">jackyrong</a>&nbsp;
                    链接：<a href="http://jackyrong.javaeye.com/blog/238618" style="color:red;">http://jackyrong.javaeye.com/blog/238618</a>&nbsp;
          发表时间: 2008年09月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp; <font face="Verdana">九型人格,工作中的好帮手</font>.今天偶看电视的心理节目，认识到这个东西,觉得不错,一搜索,居然发现是很大规模的学术界的东西了,</p>
<p>做了下测试题,也觉得比较准,起码好过网上那些乱来的心理测试题了.打算以后有空也分阶段关注学习之,觉得搞软件工程的话,</p>
<p>这个还是要应当掌握的，特别是带领团队时.</p>
<p>&nbsp;</p>
<p>9型的简单介绍,这里有个概括的:<font face="Verdana">http://baike.baidu.com/view/510310.htm</font></p>
<p>一个权威的站:<font face="Verdana">http://www.cnenn.cn/?</font> 这里还有个测试题</p>
<p>&nbsp;</p>
<p>附上9型各性格的介绍<br />
</p>
<p>1号完美型： 内向、被动、批判关注错误，纠正错误、持续监测，喜欢每件事都井井有条，顺序编排；急于把事情办好，努力完美；有理性、独立、勤奋工作有责任、成熟、有目标、且看中效率；对自己和他人都很喜欢批评、没耐性、吹毛求疵；先工作，后享乐；压抑冲动和渴望；过度刚性；将高尚作为自己的报酬；嘴边常挂着『应该怎样做』这句话；一向坚持自己的原则，很难容忍其他不同意见；个性严谨，严格没有笑容，不拘言笑；很少顾及家人，喜欢鸡蛋里挑骨头，常埋怨和生气他人做事不够好；是一个合理、实际、脚踏实地的人。 　　</p>
<p>2号助人型：外向、主动、感情丰富；关注去满足重要的其他人；乐于付出，努力满足他人的需要；想成为他人不可缺少的；压抑或疏忽自己的感受；有时会有强烈的寂寞感觉；不直接表达自己人感受；缺乏自主和想法；很希望被他人接受、并获得他人的认同、尊重、爱护及钦佩；喜欢朋友并乐于倾听他们的事情；对人热情、友善、有爱心和有耐心；借着对别人的付出来表现自己；重视人际关系；不会直接向某人表达自己不满的情绪，但可能会向其他人抱怨；会掩饰或不去触自己的焦虑；很难拒绝有求于自己的人，即使拨不出时间，也会牺牲自己成全他人；是一个关怀、乐于助人、慷慨的人； 　</p>
<p>&nbsp;</p>
<p>3号成就型： 外向、主动、擅于交际；关注任务（包括休息时间）；相信世上无难事，只怕有心人；别人会觉得自己是一很有野心的人；执行、做、争先；注意力集中在结果，而非意义；基于成绩，得到认可和接受；疏忽自己的感受；喜欢与人竞争，借由超越他人来建立自己的优越感；坚持自己的目标，达不到目标就恼火；效率高，有时会为了求效率而牺牲完美走