﻿<?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-J2EE剑侠行-随笔分类-J2EE应用类</title><link>http://www.blogjava.net/heweiya/category/6066.html</link><description>直觉我的J2EE应用生涯，打造我心中的一把利剑。</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:30:18 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:30:18 GMT</pubDate><ttl>60</ttl><item><title> ROR:习惯约定优于配置(学习ROR的第一天)   </title><link>http://www.blogjava.net/heweiya/archive/2006/09/29/72764.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Fri, 29 Sep 2006 03:47:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2006/09/29/72764.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/72764.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2006/09/29/72764.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/72764.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/72764.html</trackback:ping><description><![CDATA[
		<p>    今天学习了一下ROR，有一些学习经验东西要与大家分享。
<br />    给ROR加一个座右铭--------狭窄心肠的日本产物。
<br />    首先，不要一个一个的下载Ruby,Rails,建议使用一键安装，下载地址如下：
<br /><a href="http://rubyforge.org/frs/download.php/9731/InstantRails-1.3-win.zip" target="blank">InstantRails-1.3-win</a><br />   版本说明：ruby 1.8.4 (2005-12-24) [i386-mswin32]
<br />   其次，下载一个目前为止比较好的一个ROR的实践工具：RadRails
<br />   下载地址：<a href="http://nchc.dl.sourceforge.net/sourceforge/radrails/radrails-0.7.1-win32.zip" target="blank">radrails-0.7.1-win32</a><br />   接下来，设置一下Radrails的环境
<br />   1)、Windows/perferences/Ruby/Installed Inteperters/ -&gt;add ruby所在路径：比如D:\InstantRails\ruby\bin\ruby.exe
<br />   2)、Windows/perferences/Rails/Configuration -&gt;Rails path：比如D:\InstantRails\ruby\bin\rails
<br />                                               -&gt;Rake path:比如D:\InstantRails\ruby\bin\rake 绝不是bat/cmd
<br />                                               -&gt;mogrel path:比如D:\InstantRails\ruby\bin\mongrel_rails绝不是bat/cmd</p>
		<p>    有了如上的配置后，就只需要和在JAVA当中ANT一样使用。(成功用过APPFUSE的人就不用害怕了)
<br /><br />    看看日本人写的第一步:
<br />    1),在RadRails中创建一个Rails Project，怎么样会出来一堆的东东。
<br />    2),进入DOS命令吧，后面的工序都是这样的，好象买了海尔的洗衣机，第一次是送货、第二次是用户回访，第三次是.....
<br />       进入到你的项目处，运行ruby script\generate controller MyTest，
<br />       则得到的服务如下：
<br />      exists  app/controllers/
<br />      exists  app/helpers/
<br />      create  app/views/my_test
<br />      exists  test/functional/
<br />      create  app/controllers/my_test_controller.rb
<br />      create  test/functional/my_test_controller_test.rb
<br />      create  app/helpers/my_test_helper.rb
<br />      修改一下my_test_controller.rb
<br /></p>
		<div class="code_title">代码</div>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<span style="color: rgb(0, 0, 0);">      </span>
				<span style="color: rgb(0, 0, 255);">class</span>
				<span style="color: rgb(0, 0, 0);"> MyTestController </span>
				<span style="color: rgb(0, 0, 0);">&lt;</span>
				<span style="color: rgb(0, 0, 0);"> ApplicationController<br />      def index<br />        render_text </span>
				<span style="color: rgb(0, 0, 0);">"</span>
				<span style="color: rgb(0, 0, 0);">Hello world!!</span>
				<span style="color: rgb(0, 0, 0);">"</span>
				<span style="color: rgb(0, 0, 0);">
						<br />      end <br />      end</span>
		</div>
		<br />      在浏览器里输入：http://127.0.0.1:3000/my_test/
<br />      会出现 Hello world!!字样，
<br />      不过有意思的是你可以输入：http://127.0.0.1:3000/My_test/
<br />      http://127.0.0.1:3000/My_Test/
<br />      http://127.0.0.1:3000/my_Test/
<br />      都可以得到这个值，可能没有JAVA哪样严格吧。
<br />     3)、还有对数据库的操作，要配置一个database.yml(好象Log4j的东东)
<br />     4)、创建数据库表的时候只能够使用复数起名，比如User就不行，只能够起Users
<br />         下面只要执行几个命令就可以使用增删改查了。
<br />         如下是我的操作，下班了，就不多写了，例子能够说明一切问题：
<br /><div class="code_title">代码</div><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 128, 128);"> 1</span> <span style="color: rgb(0, 0, 0);">E:\RORProject\demo</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">ruby script</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">generate model user<br /></span><span style="color: rgb(0, 128, 128);"> 2</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 3</span> <span style="color: rgb(0, 0, 0);">      exists  app</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">models</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 4</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 5</span> <span style="color: rgb(0, 0, 0);">      exists  test</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">unit</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 6</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 7</span> <span style="color: rgb(0, 0, 0);">      exists  test</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">fixtures</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 8</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 9</span> <span style="color: rgb(0, 0, 0);">      create  app</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">models</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">user.rb<br /></span><span style="color: rgb(0, 128, 128);">10</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">11</span> <span style="color: rgb(0, 0, 0);">      create  test</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">unit</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">user_test.rb<br /></span><span style="color: rgb(0, 128, 128);">12</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">13</span> <span style="color: rgb(0, 0, 0);">      create  test</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">fixtures</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">users.yml<br /></span><span style="color: rgb(0, 128, 128);">14</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">15</span> <span style="color: rgb(0, 0, 0);">      exists  db</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">migrate<br /></span><span style="color: rgb(0, 128, 128);">16</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">17</span> <span style="color: rgb(0, 0, 0);">      create  db</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">migrate</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">001_create_users.rb<br /></span><span style="color: rgb(0, 128, 128);">18</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">19</span> <span style="color: rgb(0, 0, 0);">E:\RORProject\demo</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">ruby script</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">generate controller user<br /></span><span style="color: rgb(0, 128, 128);">20</span> <span style="color: rgb(0, 0, 0);">exists app</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">controllers</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">21</span> <span style="color: rgb(0, 0, 0);">exists app</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">helpers</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">22</span> <span style="color: rgb(0, 0, 0);">create app</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">views</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">user<br /></span><span style="color: rgb(0, 128, 128);">23</span> <span style="color: rgb(0, 0, 0);">exists test</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">functional</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">24</span> <span style="color: rgb(0, 0, 0);">create app</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">controllers</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">user_controller.rb<br /></span><span style="color: rgb(0, 128, 128);">25</span> <span style="color: rgb(0, 0, 0);">create test</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">functional</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">user_controller_test.rb<br /></span><span style="color: rgb(0, 128, 128);">26</span> <span style="color: rgb(0, 0, 0);">create app</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">helpers</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">user_helper.rb<br /></span><span style="color: rgb(0, 128, 128);">27</span> <span style="color: rgb(0, 0, 0);"></span></div><br />     修改user_controller.rb如下：
<br /><div class="code_title">代码</div><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 128, 128);">1</span> <span style="color: rgb(0, 0, 0);">   </span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> UserController </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> ApplicationController<br /></span><span style="color: rgb(0, 128, 128);">2</span> <span style="color: rgb(0, 0, 0);">       scaffold:user<br /></span><span style="color: rgb(0, 128, 128);">3</span> <span style="color: rgb(0, 0, 0);">   end</span></div><br />  最后你的浏览器当中输入:http://127.0.0.1:3000/user/list,就包括了对数据库表的四个操作.当然你也可以自己定义四个操作的任意一种.

     <span style="color: red;"><br />最后总结：
<br />          ROR可能是敏捷开发的一个好实践，但是我觉得他完成复杂应用进不会有大做为，而至于这一点还需要再做探究。不过现阶段最好的需求就是能够给用户快速的写出一个不完整的DEMO，这一点为以后打单取得主动。
</span><img src ="http://www.blogjava.net/heweiya/aggbug/72764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2006-09-29 11:47 <a href="http://www.blogjava.net/heweiya/archive/2006/09/29/72764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EAI项目实施心得</title><link>http://www.blogjava.net/heweiya/archive/2006/01/05/26761.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Thu, 05 Jan 2006 09:57:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2006/01/05/26761.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/26761.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2006/01/05/26761.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/26761.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/26761.html</trackback:ping><description><![CDATA[　　这一段时间，忙于在代码和A公司之间奔波，所以日志也没有时间来写。<br>
　　今天谈谈我近段时间在客户实施的心得。<br>
　　到现场实施情况是比较复杂的，所以从刚刚开头我就没有像专家一样的到处都问（调研时可以像专家一样告诉客户一些大道理）。我们的程序是基于合同技术附件签订的，实施也就跟着签字的需求和目标走。<br>
　　由于前一段时间让一群学生写了一些代码，虽然在质量上我有所“查阅”，但是问题最大的也就是在这里，在实施前只是把大致的错误进行了修改，就匆匆到现场实施。<br>
　　核心代码由于是自己的思想，也让放心的手下写了，但是还必须得测试和验证其准确性。这是一个重要的工作，也可能会涉及到一些改变。<br>
　　第一天，到了客户现场，先是对其环境要求，确定完主机和数据库后，就开始安装布置，1个小时后全部搞定，基本上给客户讲了一遍怎么使用（很粗略，因为
以后我们有培训）。接着就联合PDM系统和ERP系统进行测试，还幸运（不相信迷信也这么写），没有出事，用户的输出结果也正确，呵呵，收工回家。<br>
　　其实，里面的问题很多。只是用户对这个陌生的事物还有好奇的心理，没有深入去学习它。<br>
　　第二天，接着实施，在不断的测试过程当中，问题就出现了，很小的问题让客户对我的软件产生了怀疑，比如供应商编码和供应商PN号为什么输出是一样的？
员工ID为什么传递不过来？假如PDM发布同一个树但有不同的组成结构时，做的处理不符合我们的实际业务？为什么不同层次的装配件再次发布时，数量不相
加？假如我这一次发布错了，能不能删除？<br>
　　客户提出了很多问题，我知道我的程序开始让用户认可了，所以我的态度比较友好，（说实在的，哪时候真想找个替身），我把问题罗列出来后，做了归类，并给客户承诺完成时间，并态度友好、热情、友善、和气。。。。的给用户出错原因。当然心态必须是诚实。<br>
　　一般客户会提出这几类问题。<br>
　　一、软件本身的BUG，是自己的责任，勇敢的承认自己的错误，合同都签定了，还不让修改一个BUG。<br>
　　二、在实际需求时，考虑的不充分，或者是技术实现上有制约的地方<br>
　　三、实际业务和输出结果不符合。<br>
　　这三类问题，前两类我们很积极并承诺尽快得给用户解决，就是不在合同之内的事也加入代码实现，我们的目的就是先让用户使用起来。<br>
　　第三类问题，不管用户多么着急，我们也对之的实现优先级降低，同样必须让用户书面提出需求我们再做。<br>
　　后来的三两天就是修改程序，不过这个时候我手下已经没有人了，所以我自己这两天很辛苦。同样，也发现了很多错误，尤其是表现层，我真是恨这帮学生呀。害的我不得不对之进行修改。<br>
　　再以后就是实施，就算是我的第二个阶段吧。<br>
　　这个阶段里，我就象一只狗似的，看见客户负责人就赶紧用舌头去舔人家的脚，（想起了发廊的小M辛苦的为我按摩），晚上人家都下班了，为了赶进度只得自愿加班，晚上经常9点后回家。<br>
　　这个阶段里，是比较富有成果的，首先把客户前一段时间的BUG和考虑不充分的地方进行了弥补，而且用户对我修改的速度也很佩服。呵呵。（高兴的我自己好象是一个伟大的。。嗯，实施家）<br>
　　等到用户测试结果正确，不，应该是准确（我的认为），而且从长期的测试来说，我心理比较塌实了，我进行第三个阶段。修改需求并加入新的程序。<br>
　　这个过程比一个阶段好一些。我可以坐回公司来，上上网，聊聊天，喝口茶，再写写程序了，一两的活两天干，还能混吃两顿饭。呵呵，目前就实施在这里。<br>
<br>
　　对EAI产品本身我给用户提供了一个规则，因为我的软件当中有版本管理和BUG提交模块，所以我每一次的修改就对版本有所影响，小的改动加小版本，大
的改动加大版本，说来也巧，等正式上线刚才从0.8上升到1版本。呵呵。同样用户的BUG管理只开放给系统管理员，我可以每天收集一下BUG，并及时进行
修改。<br>
<br>
　　对TOMCAT中间件服务器和程序本身的性能优化是一个大问题，现在正在解决当中。<br>
　　程序的稳定性和并发控制也准备在下一期进行修改。<br>
<br>
　　请关注我的贴子。<br>
<br>
<img src ="http://www.blogjava.net/heweiya/aggbug/26761.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2006-01-05 17:57 <a href="http://www.blogjava.net/heweiya/archive/2006/01/05/26761.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我对快速编程的设想</title><link>http://www.blogjava.net/heweiya/archive/2005/12/27/25591.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Tue, 27 Dec 2005 08:11:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2005/12/27/25591.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/25591.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2005/12/27/25591.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/25591.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/25591.html</trackback:ping><description><![CDATA[我没有什么敏捷、什么XP编程的概念，所以我这次的格斗没有套路。<br>
从去年开始我担任了项目经理一职，已经负责公司的三个项目的开发和实施了。<br>
我可以籍以此发表我的看法。<br>
本主题内容是极限开发<br>首先说说我概念当中的极限开发。<br>
项目特点：面向应用、面向服务的中小企业应用。<br><b>
先哆嗦一下业务需求</b>：<br>
我们在实际调研企业现状后，最大限度的了解与我们应用范围相关的实际业务。随后进入业务需求分析，其实就是抽象实际业务到软件功能设计。同时考虑到我们应用
范围外的业务，用户可以不太关心这一块，但是我们必须得做。最终的业务需求分析由公司内部评审，（尽管我们的管理不完善，但是我有权力让什么也不懂的领
导参与），再与客户去交涉。直到取得最终评审。<br><b>
极限开发之前：</b><br>
我们首先要做概要设计，其实是对前业务需求分析的细化，当然这文档是面向业务的，这个文档是修改最多的，所以在你开始写这个文档以前一定要做好版本管理（包括有效版本的管理）。<br>
概要设计长话短说吧，就是对企业实际业务管理的理想模型，是尽可能的去理想（理智的想象，而不是单纯的想象），同时不能够把软件的功能划分在合同的需求功能之外（这个一定要把握一个度的问题）。<br>
概要设计是一个相对漫长的过程，这个过程马虎不得，一定要有耐心说服用户和有权力的领导，说什么能做，什么不能做，我们为什么这么做，以及变通的业务实现等等。<br><b>
极限开发之数据库设计篇</b><br>
大家可能不理解，为什么我首先要对数据库进行设计呀，这个完全和我的习惯有关。（我的地盘我做主）<br>
在对以上概要设计完以后，我的心理就对实际的软件功能有具体的描述了，当然这个是我最清楚了，我在写概要设计的时候会把这些映射成软件的具体实现，并且使
用一些工具比如VISIO在写完概要设计的实际业务时，我会把软件的实现图、逻辑图同时画出来，害怕以后没有时间来想这些，呵呵。<br>
所以在其后的工作当中，我对软件的具体实现就胸有成竹了，所以我直接进行数据库设计。<br>
数据库设计我使用DB　Design，这个工具很好用，我在数据库设计时有两个准原则：<br>
原则一：数据库表对应程序功能模块，一个模块一个前缀，并且如果无太多关系的业务模块对应一张表，并且这些表没有关联关系，都是独立的。<br>
原则二：所有的表如果无复杂关系都使用统一的UUID做为主键，同样，如果处理同样的事务，字段名能够统一的话就统一命名，或者有统一规则生成等。<br>
根据以上原则，我的数据库表没有想象当中的复杂，所以在程序实现时就不用考虑数据库间的关系。<br><b>
极限开发之程序实现－统一增加、删除、修改数据库</b><br>
数据库设计完以后，就建立映射成实体，并根据现行的软件架构实现统一的对数据库的增加、删除、和修改的操作，比如现在的STRUTS+SRPING+
HIBERNATE的架构，我根据数据库表，生成对本数据库表的增加、删除和修改的类接口，剩下的工作由下面的员工完成，（很想自动生成，但没有时间来写
这些东西。以后这个东东肯定会有人发明）<br><b>
极限开发之程序实现－封装业务逻辑层</b><br>
我一般使用VISIO或者现在的WEB　FLOW给手下的员工画出程序实现方式，让他们来完成，我的工作是检查他们的代码是不是符合规范，是不是能够符合
业务需求，所以这个时间我的主要工作是质检和修改程序实现的业务逻辑，（有些刚刚毕业的大学生，你要给他讲明实现的业务关系呀，还不如告诉他你应该往哪个
表插入什么数据来得快，这是一个怪圈）<br><b>
极限开发之程序实现－关键业务实现</b><br>
关键业务的实现是至关重要的，这个我一个可能是不行，而且可能当时用户的需求在改变或者改进等，所以我就要找一个比较实在、能力比较强的员工来担任这个职务，要尽可能的给他讲明实际的业务和用户需要的效果和目的，说不定他还能帮助你的思维呢。<br>
这个是个重要的环节，所以生产的重点就是这里，在最复杂的业务逻辑时，对程序的处理，一定要画个VISIO或者什么图告诉员工每一步的实现如何做，包括很
多的错误处理等。如果你在这里偷懒了，说明你这个项目的有很多的隐患在其中，这个工作比较艰巨，变数也多，需要多多鼓励员工。<br><b>
极限开发之程序实现－单元测试</b><br>
单元测试不是很严格，由公司相关人员测试，不过经过我质检过的代码，一般没有太多问题。<br><b>
极限开发之程序实现－业务测试</b><br>
根据项目的实际业务来测试，由我和能力很强和人来测试，最后由测试人员来测试，<br><b>
极限开发之用户试运行及上线</b><br>
这个就不用说了，要用服务的意识来帮助客户来认知这个东东，就好象到理发店让小妹妹给你按摩一样，不要害羞。也好象很累了到冼足浴室一样，无微不至引导消费。<br>
我的这三个项目分别是库存管理+财务管理、EAI项目和CRM+服务。<br>
用人最多的时候不超过6人，开发周期没有超过2个月的。<br>
库存管理+财务管理　　6人　　1.5个月<br>
EAI项目　　　　　　　3人　　20个工作日<br>
CRM+服务　　　　　　5－6人　不到两个月<br>
所有项目均是新写。<br>
<br>
<br>
<img src ="http://www.blogjava.net/heweiya/aggbug/25591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2005-12-27 16:11 <a href="http://www.blogjava.net/heweiya/archive/2005/12/27/25591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>