﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Ginew.Z 的博客-随笔分类-Java</title><link>http://www.blogjava.net/ginew/category/9092.html</link><description>一切，为了让生活更简单、更自然</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 02:34:27 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 02:34:27 GMT</pubDate><ttl>60</ttl><item><title>resin使用security-manager的问题</title><link>http://www.blogjava.net/ginew/archive/2006/06/09/51636.html</link><dc:creator>无风之雨</dc:creator><author>无风之雨</author><pubDate>Fri, 09 Jun 2006 03:00:00 GMT</pubDate><guid>http://www.blogjava.net/ginew/archive/2006/06/09/51636.html</guid><wfw:comment>http://www.blogjava.net/ginew/comments/51636.html</wfw:comment><comments>http://www.blogjava.net/ginew/archive/2006/06/09/51636.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/ginew/comments/commentRss/51636.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ginew/services/trackbacks/51636.html</trackback:ping><description><![CDATA[
		<p>     我们打算为用户架设单独的虚拟主机服务器，可以让企业自主上传jsp、htm、php等程序。其中resin用来做jsp的容器。<br />     由于是用户自主通过FTP上传程序，我们必须控制这些程序可以执行的权限，不能让用户随便浏览硬盘上的文件，但又要能让resin可以正常运行。比如：/data/user_a目录中的程序，只能在/data/user_a目录及其子目录中读写，如果想要访问其他目录，就没有权限。<br />     通过研究resin的文档以及JAVA的机制，我认为要实现以上构想，可以通过使用java权限管理器来构建一个resin的沙箱来对java的具体操作进行授权。<br />参考文档：<a href="http://www.caucho.com/resin-3.0/security/securitymanager.xtp">http://www.caucho.com/resin-3.0/security/securitymanager.xtp</a> ，<a href="http://www.jscud.com/srun/news/viewhtml/3_2005_10/148.htm">http://www.jscud.com/srun/news/viewhtml/3_2005_10/148.htm</a></p>
		<p>     当我认为胜利在望的时候，发现resin好像不支持grant codeBase "file:xxxx 。<br /><br />grant codeBase "file:/data/ftpdata/user01.test.com/-" {<br /> permission java.io.FilePermission "/data/ftpdata/user01.test.com/-", "read,write,delete";<br />};<br />     上面的语句，语法上没有问题，但就是不起作用。那个codebase目录下的文件，对本目录没有任何权限。<br /><br />        resin的官方论坛里面，有人在2001年，针对resin1.2.5就提出了和我一摸一样的疑问（<a href="http://www.caucho.com/support/resin-interest/0105/0106.html">http://www.caucho.com/support/resin-interest/0105/0106.html</a>），作者发现问题是由于resin的classloader是非安全的，因此改了resin原文件后解决了问题（<a href="http://www.caucho.com/support/resin-interest/0105/0112.html">http://www.caucho.com/support/resin-interest/0105/0112.html</a>），但是我看resin3的源代码，里面已经基于java.security.SecureClassLoader，因此应该不是这个原因了。<br />     以下是我的resin.policy文件：</p>
		<p>grant codeBase "file:${java.home}/lib/-" {<br /> permission java.security.AllPermission;<br />};</p>
		<p>grant codeBase "file:${java.home}/jre/lib/-" {<br /> permission java.security.AllPermission;<br />};</p>
		<p>grant codeBase "file:${resin.home}/lib/-" {<br /> permission java.security.AllPermission;<br />};</p>
		<p>grant {<br /> permission java.util.PropertyPermission "*", "read";<br /> permission java.io.SerializablePermission "enableSubstitution";<br /> permission java.lang.reflect.ReflectPermission "suppressAccessChecks";  <br /> permission java.lang.RuntimePermission "accessClassInPackage.*";<br /> permission java.lang.RuntimePermission "getClassLoader";<br /> permission java.lang.RuntimePermission "accessDeclaredMembers";<br /> permission java.lang.RuntimePermission "modifyThreadGroup";<br /> permission java.lang.RuntimePermission "setContextClassLoader"; <br /> permission java.lang.RuntimePermission "setIO";<br /> permission java.lang.RuntimePermission "stopThread";<br /> permission java.lang.RuntimePermission "createClassLoader";<br /> permission java.lang.RuntimePermission "getProtectionDomain";<br /> permission java.lang.RuntimePermission "defineClassInPackage";<br /> permission java.security.SecurityPermission "putProviderProperty.SunJCE";<br /> permission java.security.SecurityPermission "insertProvider.SunJCE";<br /> permission java.util.logging.LoggingPermission "control";<br /> permission java.lang.RuntimePermission "getAttribute";<br /> permission java.util.PropertyPermission "jaxp.debug", "read";<br /> permission ognl.OgnlInvokePermission "invoke.*";<br /> permission java.net.SocketPermission "localhost:3306","connect";<br /> permission java.io.FilePermission "${resin.home}/-", "read";<br /> permission java.io.FilePermission "${java.home}/-", "read";<br /> permission java.io.FilePermission "/tmp/-","read,write,delete";<br /> permission java.io.FilePermission "/tmp","read,write,delete";<br /> permission java.io.FilePermission ".","read";<br /> permission java.io.FilePermission "/home/apps/java/jdk/lib/tools.jar","read";<br /> permission java.io.FilePermission "/bin/sh", "read,execute";<br />};</p>
		<p>//以下语句没有任何作用，/data/ftpdata/user01.test.com/下的jsp对这个目录没有读的权限<br />grant codeBase "file:/data/ftpdata/user01.test.com/-" {<br /> permission java.io.FilePermission "/data/ftpdata/user01.test.com/-", "read,write,delete";<br />};<br /></p>
<img src ="http://www.blogjava.net/ginew/aggbug/51636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ginew/" target="_blank">无风之雨</a> 2006-06-09 11:00 <a href="http://www.blogjava.net/ginew/archive/2006/06/09/51636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GPL协议简述</title><link>http://www.blogjava.net/ginew/archive/2006/05/16/46436.html</link><dc:creator>无风之雨</dc:creator><author>无风之雨</author><pubDate>Tue, 16 May 2006 08:50:00 GMT</pubDate><guid>http://www.blogjava.net/ginew/archive/2006/05/16/46436.html</guid><wfw:comment>http://www.blogjava.net/ginew/comments/46436.html</wfw:comment><comments>http://www.blogjava.net/ginew/archive/2006/05/16/46436.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ginew/comments/commentRss/46436.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ginew/services/trackbacks/46436.html</trackback:ping><description><![CDATA[要了解GPL，一般地，您没有必要耐心阅读<a href="http://www.gnu.org/copyleft/gpl.html">原版的GPL协议</a>，因为 GPL 无非交待了几个原则：<br /><ul><br /><li>确保软件自始至终都以开放源代码形式发布，保护开发成果不被窃取用作商业发售。任何一套软件，只要其中使用了受 GPL 协议保护的第三方软件的源程序，并向非开发人员发布时，软件本身也就自动成为受 GPL 保护并且约束的实体。也就是说，此时它必须开放源代码。 <br /><br /></li><li>GPL 大致就是一个左侧版权（Copyleft，或译为“反版权”、“版权属左”、“版权所无”、“版责”等）的体现。你可以去掉所有原作的版权 信息，只要你保持开源，并且随源代码、二进制版附上 GPL 的许可证就行，让后人可以很明确地得知此软件的授权信息。GPL 精髓就是，只要使软件在完整开源 的情况下，尽可能使使用者得到自由发挥的空间，使软件得到更快更好的发展。 <br /><br /></li><li>无论软件以何种形式发布，都必须同时附上源代码。例如在 Web 上提供下载，就必须在二进制版本（如果有的话）下载的同一个页面，清楚地提供源代码下载的链接。如果以光盘形式发布，就必须同时附上源文件的光盘。 <br /><br /></li><li>开发或维护遵循 GPL 协议开发的软件的公司或个人，可以对使用者收取一定的服务费用。但还是一句老话——必须无偿提供软件的完整源代码，不得将源代码与服务做捆绑或任何变相捆绑销售。 <br /></li></ul><img src ="http://www.blogjava.net/ginew/aggbug/46436.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ginew/" target="_blank">无风之雨</a> 2006-05-16 16:50 <a href="http://www.blogjava.net/ginew/archive/2006/05/16/46436.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>域名和COOKIE的问题</title><link>http://www.blogjava.net/ginew/archive/2006/04/11/40505.html</link><dc:creator>无风之雨</dc:creator><author>无风之雨</author><pubDate>Tue, 11 Apr 2006 09:54:00 GMT</pubDate><guid>http://www.blogjava.net/ginew/archive/2006/04/11/40505.html</guid><wfw:comment>http://www.blogjava.net/ginew/comments/40505.html</wfw:comment><comments>http://www.blogjava.net/ginew/archive/2006/04/11/40505.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ginew/comments/commentRss/40505.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ginew/services/trackbacks/40505.html</trackback:ping><description><![CDATA[今天发现，在IE里面，当一个域名包含_的时候，IE不会给这个网站发送COOKIE，真变态。同事调试了半天，才发现还有这个问题<img src ="http://www.blogjava.net/ginew/aggbug/40505.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ginew/" target="_blank">无风之雨</a> 2006-04-11 17:54 <a href="http://www.blogjava.net/ginew/archive/2006/04/11/40505.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网站项目管理－如何做好需求分析</title><link>http://www.blogjava.net/ginew/archive/2006/04/10/40240.html</link><dc:creator>无风之雨</dc:creator><author>无风之雨</author><pubDate>Mon, 10 Apr 2006 06:53:00 GMT</pubDate><guid>http://www.blogjava.net/ginew/archive/2006/04/10/40240.html</guid><wfw:comment>http://www.blogjava.net/ginew/comments/40240.html</wfw:comment><comments>http://www.blogjava.net/ginew/archive/2006/04/10/40240.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ginew/comments/commentRss/40240.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ginew/services/trackbacks/40240.html</trackback:ping><description><![CDATA[前言
<p>    随着技术的不断发展和用户对网站功能性的需求不断提高，如今网站项目的设计已经不能再仅仅简单地利用静态Html文件来实现，与前几年网站设计由一两名网页设计师自由的创作相比，网站项目的设计和开发越来越像一个软件工程，也越来越复杂，网站项目的设计和开发进入了需要强调流程和分工的时代，建立规范的、有效的、健壮的开发机制，才能适应用户不断变化的需要，达到预期的计划目标。</p><p>    网站项目管理（WPM）的含义为WebbasedProjectManagement，即以Web应用程序为主要表现方式的架构来进行的项目设计及管理，这样的架构中包含了浏览器、网络和Web服务器等关键主体，主要体现在网站设计、以浏览器为客户端的Web应用程序开发（例如信息类网站、网上商店、虚拟邮局、客户关系管理。）等项目管理中。</p><p>    在本文中，笔者将网站项目管理（WPM）与软件工程的统一过程管理（RUP）进行参照比较，并结合实际工作经验，力求将网站工程管理（WPM）的角色、分工、流程进行完整的阐述，使网站项目管理逐渐走向规范化。</p><p>    按照笔者的经验，网站项目管理可以分为以下七个阶段进行控制：<br />    1.需求分析及变更管理<br />    2.项目模型及业务流程分析<br />    3.系统分析及软件建模<br />    4.界面设计、交互设计及程序开发<br />    5.系统测试和文档编写<br />    6.客户培训、技术支持和售后服务<br />    需要说明的是，这些阶段虽然具有一定的延续性，但是并非完全隔断的，例如需求变更管理和测试工作、文档编写都是贯穿整个项目过程的，许多工作时交叉进行或同时进行的。</p><p>    （一）如何做好需求分析及变更管理？</p><p>    业务员与客户进行的沟通，撰写需求分析报告是项目展开的基础。项目是以客户的需求为中心，而不是为技术而迁就需求。<br />    本章包括以下内容：<br />    一.让客户畅所欲言，罗列出所有的需求<br />    二.透过现象分析潜在的需求<br />    三.利用自然的语言描述项目模型<br />    四.利用示意图和图表将用户的需求表现出来。<br />    五.什么人要看需求分析报告？<br />    六.建立需求变更日志，制作新版本的需求分析报告。<br />    七.本阶段重点工作角色<br />    八.总结<br />    <br />    <b>一：让客户畅所欲言，罗列出所有的需求</b></p><p>    让用户将所有的想法尽可能的阐述清楚，并把所有的要求罗列出来，不要遗漏。这时候不应该害怕"勾引"起客户的潜在需求而增加设计开发的工作量，从而被今后客户无止境的变更拖入泥潭，直接明白地跟客户把问题和要求一条条地列出来，把条理、归纳、分析先都扔到一边去，将用户最原始、最完整的要求准确地记录下来就完成了第一步的工作。</p><p>    很明显，假如客户的需求做的都不完整，随时可能会产生意想之外的变更，甚至这个变更会破坏已经做的模型及结构，那么这个项目从开始就注定了会失败；比如站点所有的功能都实现了，本地测试起来也没有什么问题了，但是你却不知道客户的系统是要承受每天100万独立IP的访问，而你原来想当然的以为了不起就是1万独立IP访问的访问流量，稍微有经验的开发人员都会明白这样的设计是个灾难，无论是应用服务器、数据库还是程序全部要重新开发！</p><p>    <b>二：透过现象分析潜在的需求</b></p><p>    很多情况下客户并非专业人士，在他们滔滔不绝的描述中不能指望他们帮助我们整理出重点和技术难关，这需要我们去为客户进行分析、归纳和整理，尤其是客户谈的不多却又是技术上实现难度和强度很高的地方特别值得注意。</p><p>    客户往往对需求的概念是非常模糊的，大多时候给出的需求都是笼统而且尺度难以控制的，这就要求业务人员在倾听了客户的详细说明以后，帮助客户进行整理和分析，同时预测客户在开发过程中变更及今后应用中可能进行修改升级的潜在需求。</p><p>    比如在为客户设计办公自动化系统的时候，也许就要为客户预留将来与他们的业务单位进行交互的通道；在设计邮件系统的时候要考虑可能会需要广告管理服务器；设计网络电子商店时今后增加库存产品进销存统计分析等等；限于时间财力的考虑，客户通常能够接受分阶段实施的开发过程，在需求分析时，提早为客户设想到今后的需求变更除了使项目开发更加顺利以外，也为今后业务的进一步深入打下了更好的基础。</p><p>    笔者曾负责一个大型新闻网站的设计，当客户拿着将近五十页厚的一本设计要求报告时，我发现有四十页的内容对程序开发来说都是重复的，而在其中一页的角落却画了个"搜索其他网站相关新闻"的按钮，并且没有做任何说明，仅仅这10个字所完成的工作量完全顶的上其他整整四十页重复赘述所做的工作，客户完全不知道这个要求引发的问题实际就是一个搜索引擎的开发，通过协商，客人同意了修改成站内搜索的引擎。</p><p>    <b>三：利用自然的语言描述项目模型</b></p><p>    在业务员与客户进行沟通和调查时撰写的需求分析，尽可能用自然的语言进行描述，虽然客户的水平和资历有所不同，但是最自然的描述能够使项目开发的各个成员都能清楚地理解需求含义，不至于在理解上产生偏差。对客户而言，这样的模型描述最接近真实，容易参与修订，并能以此为测试和验收的依据。</p><p>    请比较以下两份关于需求的描述，<br />    "用户在访问首页的时候可以在点击’客户通道’按钮，弹出填写’用户名’和’密码’的窗口，输入正确后在新窗口打开客户通道的首页，在该页显示所有可操作的功能的导航条和最新的导读新闻链接列表"<br />    "站点分为公开和加密两种状态，通过身份验证机制使特有的用户可以访问到加密信息，并提供不同于普通用户的功能。"<br />    前段描述我们就很容易想象的出来设计完成的网站是什么样子，而后一段的描述可能会做出无数不同的版本，造成对需求理解的歧意。</p><p>    <b>四：利用示意图和图表将用户的需求表现出来。</b></p><p>    需求分析无论文字上怎么样表述都还是抽象的，对客户而言理解毕竟是困难的，将基本确定的需求制作出示意图是最直观有效的。</p><p>    制作示意图可以有很多种方式，用PowerPoint或Visio制作流程示意，用Html文档制作界面示意都是可行的，最简单利用画图和Word表格方式也完全可以，关键是利用示意图将客户的需求和即将开始设计的系统体现起来，在进行系统分析和程序开发之前，双方对今后要完成的产品就能够有直观的认识，换言之，就是在产品还没有真正进入开发阶段的时候，双方就对工作的结果达成统一的意见，这将大大地减轻需求变更所带来的困扰，同时客户更容易地参与到项目的开发过程，保证项目往正确的方向进行。</p><p>    在RUP中有这样的描述：<br />    "利用电影、卡通、图片、表格和动画片等制作示意图开始，告诉我们用户是谁，要发生什么事情，如何发生。<br />    以用户友好的方式帮助收集并改进用户需求。<br />    鼓励更有创造性、更加创新的设计解决方案。<br />    鼓励团队复审，并避免所有人都不希望出现的特征。<br />    确保以可理解、直观的方式实施特征。<br />    使访谈过程变得轻松，避免出现访谈没有结果的现象。<br />    简单地说，制作示意图就是使用工具向用户(主角)说明（有时是动画演示）系统如何适应组织的需要，并表明系统将如何运转。协调员将初始示意板展示给小组，小组成员提供意见。之后，在举办研讨班期间，示意板也进行"实时"演进。所以，您需要一种可以轻松更改示意板的画图工具。为了避免分散注意力，一般最好使用简单的工具，比如图表、白板或PowerPoint。"</p><p>    <b>五：什么人要看需求分析报告</b></p><p>    项目经理、系统分析员、开发经理、交互设计师、测试人员、文档人员包括客户代表都应该看需求分析，并进行共同的讨论，达成一致的意见。</p><p>    我们经常会遇到业务人员辛辛苦苦谈下来的项目，对开发人员来说却是难以实现的，而技术人员设计的产品却常常得不到客户的认可，甚至发生纠纷，因此参与项目开发的人员都应该对这份需求有统一清晰的认识，并根据自己的工作对需求提出意见，通过与客户的沟通修订，最终确定项目实现的目标。</p><p>    例如：<br />    项目经理通过需求分析才能组建所需要的团队包括配置工作环境，制定开发周期。<br />    开发周期的限制和功能上的要求可能会影响到程序员采用什么样的语言和工具进行编写；<br />    操作用户的技能水平将影响到交互设计师进行前台设计时做到什么样的精度；<br />    界面设计人员根据项目的性质和定位确定表现方式。<br />    测试人员了解测试环境和条件后才能对项目质量进行跟踪和检测；<br />    通过下表，我们可以看的出不同角色根据需求的变更所进行的工作流程：<br />    <img src="http://www.mypm.net/articles/pictures/2004430135248.gif" /></p><p>    <b>六：建立需求变更日志，制作新版本的需求分析报告</b></p><p>    尽管我们费了许多功夫在需求分析进行了最大可能的努力，但几乎可以肯定的是，这份需求分析在开发过程中一定会发生变化，也许是出自客户的遗漏，也可能是在开发过程中被激发出来的，这种变更有时是如此的频繁和琐碎，以至于往往不能将变更及时反馈到项目的各个角色中，那么做好需求变更日志就显得非常重要。</p><p>    在需求分析后面附上变更日志，并将修改后的需求分析制作成新版本，保留每次更改过的版本，而不是覆盖，这样就比较容易地跟踪到需求变更过程中所带来的工作调整。</p><p>    在新版本的需求分析中，将变更多部分用特殊方式表明出来，并在日志中记录变更多重的明细。<br />    关于需求分析和变更管理可以参照下图示意：<br />    <img src="http://www.mypm.net/articles/pictures/2004430135328.gif" /></p><p>    <b>七：本阶段重点工作角色</b></p><p>    在需求分析和变更管理的过程中，工作量最大的角色为客户代表、业务员和项目经理。</p><p>    客户代表提出需求，业务员帮助整理和分析，项目经理对整个项目进行评估。</p><p>    在实际工作中，很多项目失败的起因都和需求分析有关。客户代表和业务员通常并非从事技术开发的专业人员，在讨论需求的时候往往对项目的技术难度、工作量、时间进度把握不准确，这时候需要项目经理或技术人员进行参谋。</p><p>    为了降低项目的风险，提高工作效率，有必要设计规范的需求管理计划书，帮助客户代表和业务员更好的完成任务。以下提供一份需求管理计划的模板可作为参考：<br />    <img src="http://www.mypm.net/articles/pictures/2004430135400.gif" /><br />     <b>八：总结</b></p><p>    根据笔者的经验，要尽快做好需求分析掌握以下要点，也许能事半功倍： <br />    仔细聆听，罗列客户的所有要求；<br />    将需求进行分析，确认可操作的系统模型；<br />    利用最自然的语言将系统进行描述，使每个开发人员不会产生歧意；<br />    迅速确定网站的用户角色；<br />    比如访客、会员、重要客户、前台管理员、网站管理员、业务员等；<br />    分析确定每个角色的权限及可操作的功能；<br />    比如会员可以查看特别信息、修改个人信息、退出登陆等；<br />    前台管理员能够登录管理系统，能够发布编辑修改信息，能够审查会员资格等；<br />    网站管理员可以更改栏目、修改网站界面等；<br />    制作流程图和示意图将需求表现出来；<br />    让客户参与到示意图的设计中，及时正确的反应出需求变更。<br />    制作需求变更日志，保留升级版本，通过版本控制进行需求管理；<br />    通过需求《管理计划书》使每个参与人员看到共同的努力目标。</p><img src ="http://www.blogjava.net/ginew/aggbug/40240.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ginew/" target="_blank">无风之雨</a> 2006-04-10 14:53 <a href="http://www.blogjava.net/ginew/archive/2006/04/10/40240.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微软资深经理人的网站项目管理经验</title><link>http://www.blogjava.net/ginew/archive/2006/04/10/40224.html</link><dc:creator>无风之雨</dc:creator><author>无风之雨</author><pubDate>Mon, 10 Apr 2006 05:47:00 GMT</pubDate><guid>http://www.blogjava.net/ginew/archive/2006/04/10/40224.html</guid><wfw:comment>http://www.blogjava.net/ginew/comments/40224.html</wfw:comment><comments>http://www.blogjava.net/ginew/archive/2006/04/10/40224.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ginew/comments/commentRss/40224.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ginew/services/trackbacks/40224.html</trackback:ping><description><![CDATA[         这是微软资深项目经理人Stephen Maguire的项目管理经验。软件开发和网站开发有极其相似的地方，我们可以从中学习领会许多知识。 <br /><br />　　第一章 有效团队的基础 <br /><br />　　1、专心改善产品 <br /><br />　　公司付工资给设计师，要他们在合理的时间开发出品质精良的网站，但是设计师们的时间却经常被其它事情占用了。 <br /><br />　　典型的情况是设计师要花大量的时间准备会议，参加会议，读写开会记录和进度报告，还有回复email等等，这些事情都不能改善网站的工作，虽然其中一些是设计师自己主动做的，但更大一部分是项目经理下的命令。 <br /><br />　　虽然项目经理的本意是好的，但是却违背了项目经理的基本守则：项目经理的任务是努力消除设计师工作上的一切障碍，让设计师权利专注在真正重要的工作上---网站开发。 <br /><br />　　这不是震惊世界的发现，只是简单的道理，但是有多少项目经理确实做到呢？ <br /><br />　　2、排除干扰 <br /><br />　　如果你希望团队在期限之内完成网站，就必须尽可能排除一切不必要的工作。在你分派工作给组员前，请问问自己，这件工作真的有必要让大家做吗？身为项目经理，必须时刻问自己一个问题： “我努力的目的究竟是什么？” <br /><br />　　常见的就是让组员写报告。一天8小时工作时间，很可能4个小时花在了写报告上。而正常的开发工作却不得不加班做。 <br /><br />　　请不要误解我的意思，我并不是说不需要进度报告，只是提醒项目经理们，不要过分注重“项目流程”，而忽略了真正的产品----你的网站。我的一点心得是：用一个新的办法了解进度，容易写，而且不花时间。 <br /><br />　　1）当有设计师完成一个功能（子项目），就发一个内部email给大家； <br /><br />　　2）当项目进度可能落后，就和我私下交流，讨论解决的办法。<br /><br />　　3、明确目标 <br /><br />　　什么样的目标是明确的目标呢？其实并不一定是博大精深的，只要足够详细，能够保证项目向正确的方向进行就可以。通常只要项目组长花几小时，或者几天时间就可以制定一个详细的项目目标。例如本站： <br /><br />　　目标1： 建立一个以网站项目管理为主题的网站。评价：目标已经明确主题，但还是不够详细。 <br /><br />　　目标2：为网站项目管理爱好者提供一个交流的平台。评价：目标定位了服务对象和主要功能。但是并没有体现我们建立网站的深层目的。 <br /><br />　　目标3：为网站项目管理爱好者提供一个学习交流，并能够共同制定详细规范的平台。评价：明确的目标，指出了服务对象，最主要的功能和网站本身的目的。 <br /><br />　　在目标确定后，我们就坚持这个大方向，凡是有利于目标实现的最先完成，比如：论坛，规范文章。与目标无关或关系不大的，可以不做或者推迟做，比如人才交流，漂亮的界面等。 <br /><br />　　4、设计的优先考虑 <br /><br />　　我们要建立以下基本观念：项目目标引导项目的方向，而设计的考虑顺序影响设计的过程。 <br /><br />　　每个项目的具体情况不同，考虑的优先顺序也回不同，一般来说，程序设计考虑的优先级表为： <br /><br />　　1）尺寸大小(size) <br /><br />　　2）速度 <br /><br />　　3）安全性 <br /><br />　　4）可测试性 <br /><br />　　5）容易维护 <br /><br />　　6）简洁 <br /><br />　　7）再用性 <br /><br />　　8）可移植性 <br /><br />　　除了优先考虑顺序外，你还应该建立各项考虑点的质量规范。如果事先能够决定最合适的优先考虑顺序，并建立质量规范，团队就不会浪费时间，网站的整体风格就会比较一致。<br /><br />　　第二章 有效的作业方式 <br /><br />　　1、什么时候修改错误 <br /><br />　　微软的经验是：(1).bug越晚清除，时间花得越多； (2).在开发过程中立刻除虫，可以让您早些学到经验，然后不会犯同样的错误；(3).如果能够保证没有任何错误，您就能比较准确的估出项目的完成时间。 所以，设计师应该把找错误当成一件重要的事情，不要为任何理由而耽误。 <br /><br />　　2、email的时间陷阱 <br /><br />　　回复email要分批做，早上一上班，中午休息时间，或者是下班前看一下都可以，但不要有事没事都不停的看email。 <br /><br />　　3、方法让大家分享 <br /><br />　　身为主管，你应该鼓励组员提出改进工作效率的建议。引导组员思考的方法也很重要。比如，下面两个问题： <br /><br />　　a.为什么进度总是一再落后？ <br /><br />　　b.有什么办法可以避免将来再发生进度落后？ <br /><br />　　第一个问题可能的答案是：互相依赖的工作太多，工具太难用，老板是个白痴等等；第二个答案可能是：减少互赖性的工作，购买更好的工具，与老板加强沟通。 <br /><br />　　两个问题的方向不同，第一个是探究原因，导引出抱怨；第二个是未来改进的方法，导引出解决办法。 <br /><br />　　问题越精确，问题越有力，对项目目标的实现就越有益，让我们再看三个问法： <br /><br />　　a.如何保持每次都如期完成项目？ <br /><br />　　b.如何在不加班的前提下，如期完成项目？ <br /><br />　　c.如何在不加班，也不增加人手的前提下，如期完成任务？ <br /><br />　　第三个问法，就迫使大家来点真正有创意的思考和认真检讨工作本身值得改进的地方了。一次比一次更精确的问题，可以刺激思考过程，激发更有创意的答案。 <br /><br />　　4、无意义的惩罚 <br /><br />　　惩罚是一种心理上的负强化作用，惩罚是对员工的责骂，训斥与威胁，就象鞭打马匹使它服从主人的命令。这种管理手段是该受谴责的，如果主管们的用意是希望组员因此而工作更努力的话，就大错特错了。这种责骂只会激起组员心中的愤怒，羞恼和沮丧。实际上，往往这些项目的问题都出在管理方面，目标不明确或者野心太大，设计师只是倒霉的遇上了差劲的主管，其实他们的能力不比其他项目的设计师差。因此放弃责骂吧，责骂只会让项目更糟，绝对没有任何改善的效果。<br /><br />　　第三章 保持进度 <br /><br />　　即使最顺利的项目，也无法完全按照计划执行，但是，如果你放任计划随意进行，有一天你猛然发现项目脱轨太远，来不及完成。项目就象一枚瞄准月球的火箭，只要有一点点不够精确，到时候就无法命中目标，差之毫厘，失之千里，实在不可不慎重。聪明的主管懂得这个道理，他们会经常注意项目的精度，随时修正方向，保持项目不偏离计划进行。本章将介绍一些很有效的策略，帮助项目保持进度。 <br /><br />　　1、向前看 <br /><br />　　我一直相信，项目之所以脱轨，主要原因在于人们没有认真思考如何使项目保持进度，顺利进行。如果没有未雨绸缪，只是坐等问题发生，到那时候就太迟了。一个月前没有花30分钟思考这个问题，现在就可能要浪费几小时或几天的时间去修正。这就是所谓的“被动工作”。 <br /><br />　　解决这种被动工作的方法，就是化被动为主动，事先发掘潜在的问题，并设法避免。有很多方法和技巧可以训练自己“向前看”，但总结起来不过是一句简单的要决：定期暂停手边的工作，然后往前思考，随时做必要的修正，以避免未来的大障碍。 <br /><br />　　我已经有十年以上的习惯，每天花10到15分钟思考下列问题，并且列出答案： 有什么事情是我今天能做，而且可以帮助项目在未来几个月内顺利进行的？ <br /><br />　　2、明确定义需求的范围 <br /><br />　　人们在开口要求的东西未必是他真正想要的，处理他的要求之前，请务必确定他究竟想要做什么。<br /><br />　　在网站项目开发中，经常会遇到客户或者领导层提出一些希奇古怪的需求。一次，首席设计师惊慌失措的跑来找我，告诉我麻烦来了，客户对新设计的界面不满意，要求按照某个著名网站一摸一样的设计。如果真的那样做，需要重新花一个星期才能做出来，可是目前离期限的时间已经很短了。听了他的陈述后，我必须承认如果真得那样做，我们的进度就完蛋了，同时我也很好奇，为什么客户会有这样的要求，所以在我答复他们做还是不做之前，请客户经理去了解一下这个需求的原因。不一会儿，客户经理笑嘻嘻地回来了。 <br /><br />　　“他们只是看中了那个网站的动态下拉菜单，觉得那样比较吸引人” <br /><br />　　呵呵，我知道他在笑什么了，这样的动态菜单我们其实早就有现成的模板了，只要将它替换现有的设计就可以了。而我们的设计师不清楚客户的喜好而已。 <br /><br />　　大部分客户在提出需求时都不解释原因，这种情况太普遍了，甚至你的管理层也会发生这种情况。如果你从他们的请求中无法看出他们的目的，你可以反问他们，在还没有弄清楚究竟想要做什么之前，不要贸然答应，宁可拒绝他们的要求也不要浪费这种时间。<img src ="http://www.blogjava.net/ginew/aggbug/40224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ginew/" target="_blank">无风之雨</a> 2006-04-10 13:47 <a href="http://www.blogjava.net/ginew/archive/2006/04/10/40224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开博第一件事情－给部门招人</title><link>http://www.blogjava.net/ginew/archive/2006/03/28/37879.html</link><dc:creator>无风之雨</dc:creator><author>无风之雨</author><pubDate>Tue, 28 Mar 2006 12:41:00 GMT</pubDate><guid>http://www.blogjava.net/ginew/archive/2006/03/28/37879.html</guid><wfw:comment>http://www.blogjava.net/ginew/comments/37879.html</wfw:comment><comments>http://www.blogjava.net/ginew/archive/2006/03/28/37879.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ginew/comments/commentRss/37879.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ginew/services/trackbacks/37879.html</trackback:ping><description><![CDATA[
		<p>网易企业事业应用部 技术组 招聘程序员<br /><br />工作地点：<br />广州。<br /><br />职位描述:<br />基于WEB应用的系统开发，网站应用；运用jsp+Java进行基于B/S结构的应用系统开发。</p>
		<p>资格要求:<br />1. 具有使用jsp+Java开发大型项目的经验<br />2. 精通Java,JSP,Servlet,JavaBean等Java相关技术<br />3. 熟悉Struts等MVC设计结构<br />4. 熟悉Javascript,HTML等<br />5. 熟练应用UNIX/Linux<br />6. 熟练掌握SQL语言，精通Oracle,MySQL等数据库应用<br />7. 熟悉三层架构并熟练应用Apache，resin等<br />8. 工作认真，细心，有条理；积极性高，求知欲强；具有较强的沟通能力及团队合作精神<br />9. 至少本科学历<br /><br />联系邮箱：<a href="mailto:ginew@163.com">ginew@163.com</a>  </p>
<img src ="http://www.blogjava.net/ginew/aggbug/37879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ginew/" target="_blank">无风之雨</a> 2006-03-28 20:41 <a href="http://www.blogjava.net/ginew/archive/2006/03/28/37879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>