??xml version="1.0" encoding="utf-8" standalone="yes"?>国产人成在线视频,视频一区亚洲,亚洲欧洲avhttp://www.aygfsteel.com/nehu/category/12092.html加入Java阵营zh-cnFri, 02 Mar 2007 06:49:31 GMTFri, 02 Mar 2007 06:49:31 GMT60Java入门指南[好文转蝲]http://www.aygfsteel.com/nehu/articles/52120.html李E式李E式Mon, 12 Jun 2006 01:51:00 GMThttp://www.aygfsteel.com/nehu/articles/52120.htmlhttp://www.aygfsteel.com/nehu/comments/52120.htmlhttp://www.aygfsteel.com/nehu/articles/52120.html#Feedback0http://www.aygfsteel.com/nehu/comments/commentRss/52120.htmlhttp://www.aygfsteel.com/nehu/services/trackbacks/52120.html 很多|友问我学习(fn)Java有没有什么捷?我说“无他,唯手熟尔”。但是我却很愿意自己学?fn)的一些经验写出来Q以便后来者少走弯?帮助别h是最大的快乐嘛!

要想学好JavaQ首先要知道Java的大致分cR我们知道,自从Sun推出Java以来Q就力图使之无所不包Q所以Java发展到现在,按应用来分主要分Z大块QJ2SE,J2ME和J2EE,q也是Sun ONE(Open Net Environment)体系。J2SE是Java2的标准版Q主要用于桌面应用Y件的~程QJ2ME主要应用于嵌入是pȝ开发,如手机和PDA的编E;J2EE是Java2的企业版Q主要用于分布式的网l程序的开发,如电(sh)子商务网站和ERPpȝ。J2SE开发桌面应用Y件比起VC,VB,DELPHIq些传统开发语a来说Q优势好象ƈ不明显。J2ME对于初学者来_(d)好象又有Ҏ(gu)奥,而且一般开发者很难有开发环境。所以现在应用最q泛又最好学的就是J2EE?jin)。J2EE又包括许多组Ӟ如JSP,Servlet,JavaBean,EJB,JDBC,JavaMail{。要学习(fn)h可不是一两天的事?/p>

那么又该如何学习(fn)J2EE呢?当然Java语法得先看一看的QI/O包,Util包,Lang包你都熟(zhn)了(jin)吗?然后再从JSP学v。如果你学过HTMLQ那么事情要好办的多Q如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语aQ有点象ASP。然后你p学一学Servlet?jin)。Servlet是服务器端程序,他负责生成发送给客户端的HTML文g。JSP在执行时Q也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代ServletQ这也是SUN推出JSP的本意,可是Servlet用来控制程跌{q是挺方便的Q也令程序更清晰。接下来你应该学?fn)一下Javabean?jin),可能你早q不管JSP在HTML中嵌Java代码的؜乱方式了(jin)Q这U方式跟ASP又有什么区别呢Q还好,SUN提供?jin)Javabean可以把你的JSP中的Java代码装hQ便于调用也便于重用。接着是EJB?jin),EJB是Enterprise JavaBeanQ看名字好象它是JavabeanQ可是它和Javabeanq是有区别的。它是一个体pȝ构,你可以搭建更安全、更E_的企业应用。它的大量代码已׃间gQ也是我们常听到的Weblogic,Websphereq些J2EE服务器)(j)完成?jin),所以我们要做的E序代码量很,大部分工作都在设计和配置中间件上。至于JDBCQ就不用我多说了(jin)Q你如果用java~过存取数据库的E序Q就应该很熟(zhn)。还有,如果你要用Java~发送电(sh)子邮件的E序Q你得看看JavaMail?jin)?/p>

好了(jin)Q对Java和J2EE有了(jin)一些基本概念之后,你就应该~一些程序了(jin)Q千万不要纸上谈兵哦。最好找一些有实例且带光盘的书来看Q这L(fng)到好的程序就可以直接Ctrl+C再Ctrl+VQ也不用x老大架再亲自把它 再输一遍吧Q再说直接复制还不用怕出错,何乐而不为呢Q还有就是要l常上一些好的Java~程文章Q有好的文章要Cut下来Q有问题管问,只要问题不是太傻Q一般高手都?x)回{你的。下面介l几个好的Java斚w的编E网站:(x)
CSDN论坛 http://www.csdn.net/ 中国最有名的技术论坛,《程序员》杂志就是他们出版的Q你可以在上面提出问题,马上有人回{你Q如果你觉得好,你可以给那h加分Q?
Java研究l织 http://www.javaresearch.org/ 上面有很多原创文章,高手q是挺多的;
Java开发?http://www.chinajavaworld.com/ 那里Java资料比较全;
java.com.cn http://www.java.com.cn/ 看这域名q道有多牛Q注册用户快接近一万了(jin)Q同时在UhC在一千左叻I人气很旺的;
IBM的开发者网l?http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM永远的蓝色巨人;

那么我书也看?jin),E序也做?jin),别h问我的问题我都能解决?jin),是不是就成?f)高手?jin)呢Q当然没那么单,q只是万里长征走完了(jin)W一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么l织人员q行开发吗Q你现在脑子里除?jin)一些散q代码之外Q可能再没有别的东西?jin)吧Q你现在最~的是实际的工作l验Q而不是书本上那些凭空惛_来的E序。所以你快去找一份Java的编E工作来做吧Q如果是在校学生可以dD啊)(j)Q在实践中提高自己,那才是最快的。不q你得祈在公司里碰C个高手,而且他还愿意不厌其烦(ch)地教你,q样好象有点隑֓Q?

q有一个办法就是读开放源码的E序?jin)。我们知道开放源码大都出自高手,他们设计合理Q考虑周到Q再加上有广大的E序员参与,代码的h(hun)D然是字字珠叽Q铿锉|力(对不P偶最q《金装四大才子》看多了(jin)Q。学Java必读的两个开源程序就是Jive和Pet Store?/p>

Jive是国外一个非常著名的BBSE序Q完全开放源码。论坛的设计采用?jin)很多先q的技术,如Cache、用戯证、Filter、XML{,而且论坛完全屏蔽?jin)对数据库的讉KQ可以很L的在不同数据库中UL。论坛还有方便的安装和管理程序,q是我们qx~程时容易忽略的一部䆾Q中国程序员一般只注重~程的技术含量,却完全不考虑用户的感受,q就是我们与国外软g的差距所在)(j)。Jive的资料在很多|站上都有,大家可以找来研究一下。相信你d代码后,?x)有p换骨的感觉。遗憄是Jive?.5以后׃再无条g的开放源代码Q同时有licence限制。不q幸好还有中国一的JavaE序员关注它Q外国h不开源了(jin)Q中国h׃能开源吗Q这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名鼎鼎的banq在Jive 2.1版本基础上改~而成, 全中文,增加?jin)一些实用功能,如脓(chung)图,用户头像和用戯料查询等Q而且有一个开发团队在不断升。你可以讉Kbanq的网?http://www.jdon.com/ M载,或到同济技术论坛的服务器上 ftp://nro.shtdu.edu.cn MQ安装上有什么问题,可以到论坛上L问?/p>

Pet StoreQ宠物店Q是SUN公司Z(jin)演示其J2EE~程规范而推出的开放源码的E序Q应该很h权威性,惛_J2EE和EJB的朋友不要错q了(jin)?

你一定会(x)高兴地说Q哈哈,原来成ؓ(f)Java高手p么简单啊Q记得Tomjava也曾到q一个项目经理,L(fng)Java很简单,只要三个月就可以学会(x)。其实说q种话的人就如当q小日本L(fng)“三个月拿下中国”一样大a不惭。不是TomjavaghQ你现在只是学到?jin)Java的骨Ӟ却还没有学到Java的精髓。接下来你得研究设计模式?jin)。设计模式是高E序员真正掌握面向对象核?j)思想的必修课。设计模式ƈ不是一U具?技?,它讲q的是思想Q它不仅仅展CZ(jin)接口或抽象类在实际案例中的灵zd用和智慧Q让你能够真正掌握接口或抽象cȝ应用Q从而在原来的Java语言基础上跃q一步,更重要的是,设计模式反复向你一个宗旨:(x)要让你的E序可能的可重用?/p>

关于设计模式的资料,q是向大家推荐banq的网?http://www.jdon.com/ Q他把GOF?3U模式以通俗易懂的方式诠释出来,UJava描述Q真是经怸的经典。有旉再研I一下MVCl构Q把Model-View-Control分离开的设计思想Q吧Q现在很行的Struts是它的一U实现方式,不过Struts用v来实在是很繁Q我们只要学?fn)其_N卛_Q我们完全可以设计自qMVCl构。然后你再研I一下Y件Refactoring(重整)和极限XP~程Q相信你又会(x)上一个台阶?

做完q些Q你不如整理一下你的Java代码Q把那些l典的程序和常见的应用整理出来,再精?j)打造一番,提高光用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧,你可以去承接一些项目做?jin),一开始可能有些困难,可是你有技术积累,又考虑周全Q接下项目来可以q速作完,怿大家以后都会(x)来找你的Q所以Money哗啦啦的来?jin)。。。。。?

当然你也可以参加一些开源项目,一斚w可以提高自己Q另一斚w也是Z国Y件事业做贡献嘛!开发者在互联|上用CVS合作开发,用QQ,MSN,E-mail讨论联系Q天南v北的E序员分散在各地却同时开发同一个YӞ是不是很有意思呢Q?
下面介绍两个好的开源项目网站:(x)
湖北省Y件公共开发^?http://gro.clinux.org/
共创联盟 http://cosoft.org.cn/

哇,好高兴哦Q我l于成ؓ(f)高手?jin)!非也Q非也。古ZQ“识时务者ؓ(f)俊杰”。你知道计算机界现在的发展Ş势吗Q你知道微Y?NET蓝图和SUN ONE计划之间的明争暗斗吗?你知道计机技术将向何处发展吗?其实从各大计机厂商最q的动作,都可以看出来“Web服务是下一代互联网应用的制高点”,而微软的.NET蓝图和SUN ONE计划的斗争焦点,也就是Web服务。Web服务是一个崭新的分布式计模型,它是一pd标准的综合(XML,SOAP,UDDI,WSDL和W(xu)SFL{)(j)。它使得不同语言~写的Y件能够轻易的集成hQɾ|络资源和W(xu)eb站点变成一U服务而不是؜q垃圾场。不q的来Q我们就可以在家里点M下鼠标,可以完成出门旅游的全部准备工作Q包括定飞机,定旅游线路,定好戉K{。请注意Q这所有的一切都是Web站点间自动完成的Q再也不用象现在一P表面上是?sh)子商务Q实际上很多环节都是人工操作。也怽?x)觉得这是天方夜谈,不过p的说Q你也很有可能承接一个项目,要集成两个企业的ERPpȝ。很有可能上怼业的pȝ是用Delphi~的Q而下怼业的pȝ是用Java~的。你说你是Java高手Q大安看者你怎么做呢。所以啊Q你q得学习(fn)新技术,如Web服务Q而且你Delphi也要懂一点吧QDelphi6现在已经提供Web服务的控件了(jin)Q?你编的JavapȝQ可能要?NET集成Q所以你.NET要懂一点吧Q到最后,你可能发C已经成ؓ(f)Java高手?jin),但很多时间却在搞别的技术。太极张三丰里说Q最厉害的招式就是没有招式,可能是q个道理吧!

因ؓ(f)刚刚兴vQ所以网上Web服务的资料不是很多,我还是给大家推荐几个|站吧:(x)
中国UDDI技术联?http://www.uddi-china.org/
CSDN的柴晓\专栏 http://www.csdn.net/develop/author/ColumnAuthor/fennivel/ Q注Q柴晓\也是互联|上一个有名的人物Q他发表q很多关于Web服务的文章,q出?jin)一书,应该U的上是中国Web服务技术的先行者)(j)
IBM的开发者网l的XML&Web Service专栏: http://www-900.ibm.com/developerWorks/cn/xml/index.shtml?csdn IBM可是Web服务的力推?

呜…你费劲千心(j)万苦Qȝ成ؓ(f)Java高手?jin),怎叫Z由喜极而泣呢!是啊Q真不容易,真不单,真叫人感动啊Q那么打个电(sh)话告诉我吧,什么?我的?sh)话L(fng)是多?昏到Q你打电(sh)话问不就知道?jin)吗Q真是的…?
why edited on 2004-11-13 19:52


初学Java的朋友,(zhn)看一?br />--------------------------------------------------------------------------------

初学Java的朋友,(zhn)看一?
JavaL它的千般好处使你选择它,但这些随便翻M或在|上逛一圈就能找到答案。在本文中,W者把自己学习(fn)Java的一些切w体?x)和q程写出来,供初学者做个参考?

我在学习(fn)Java的过E中主要围绕以下几个斚w来学?fn)?x)

1Q时L醒自己Java是一UOOP语言工具Q而不仅仅是编码,只有q样才能M把握和运用Java?

2Q在学习(fn)的过E中Q最好能够了(jin)解Java的底层机Ӟ而不是仅仅停留在表层Q不是抄书上的例子运行出l果可以。要注意Q即便对一个简单的例子也要有耐心(j)ȝ、调试、改动?

3Q在学习(fn)的过E中一定要动手做、写代码Q而不是抱一本书看看p。很多东西和体会(x)必须自己动手才能真正属于自己Q最好能参与一些实际的目?

4Q在学到一定阶D后Q你开始希望用学过的东西做些什么。这时的你应该开始学?fn)一些更多、更复杂的知识,比如J2EEq_的构建、EJB的开发等。对于这一部分Q我最好找一本较薄的书先?jin)解一个大概,?j)里有个M的认识,Ҏ(gu)多的技术术语做个初步掌握。我认ؓ(f)q个阶段看看《J2EE技术实c(din)很不错Q它可以让你?jin)解J2EE包含的各U技术和框架Q同时提供很多实际的例子来加深对J2EE的整体了(jin)解?

学习(fn)Java的兴和军_(j)起了(jin)很关键的作用。在有了(jin)上述基础后,我便开始一步一步地学习(fn)Java?

Java环境的搭?

要运行JavaE序Q必d装JDK。JDK是整个Java的核?j),其中包括了(jin)Java~译器、JVM、大量的Java工具以及(qing)Java基础API?

可以?img src="http://free.76e.net/sitop/images/url.gif" align="absMiddle" />http://Java.sun.com下蝲JDKQ有1.4版本?.31版本。我的学?fn)环境中首先Q采用的?.31版本?

解压安装。然后,q行环境讄?

1.对于Windowsq_要进行以下设|:(x)

set PATH=YOUR_INSTALL_ DIR\bin; C:\Windows;C:\Windows\Command
set classpath=. YOUR_INSTALL_DIR\lib\tools.jar

2.对于Linuxq_要编?etc/profile文gQ?

JAVA_HOME=your_install_dir/JDK/j2sdk
CLASSPATH=$JAVA_HOME/lib/tools.jar JAVA_HOME/lib/td.jar JAVA_HOME/jr
-e/lib/rt.jar:.
PATH=$PATH JAVA_HOME/bin
export PATH PS1 USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE
INPUTRC JAVA_HOME CLASSPATH RESIN_HOME

最后,在终端上输入Java看能不能扑ֈq个命o(h)Q如果能扑ֈ安装成功了(jin)?

下面介绍一下JDK的几个重要的命o(h)Q?

◆Java执行工具Q是启动JVMQ虚拟机Qƈ执行classQBYTE CODEQ文件的命o(h)Q?

◆javac ~译器,?java文g生成.class文gQ?

◆jar Java压羃打包工具Q?

◆Javadoc 文档生成器?

最后就是JDK documentQtionQ这是JDK的联机帮助文档,是最有用和最重要的学?fn)参考文档,应该多看?

开始写自己的代?

现在环境有了(jin)Q应该写个简单的代码q行试?jin)。还是从l典的“hello word”开始?

1Q?先用~辑器写一代码Q我用的是Linux的viQ:(x)

[stone@coremsg work]$ vi Hello.Java
public class Hello{
public static void main(String []argc){
System.out.println("Hello Word!");
}
}

2Q?~译Q?

[stone@coremsg work]$ Javac Hello.Java

3Q?执行Q?

[stone@coremsg work]$ Java Hello
Hello Word!

成功?jin)!q就是我的第一个JavaE序。从那时h知道已开始走qJava的世界,接下来就靠自q努力?jin)。在q个q程中,W者认为有几点需要注意?

学习(fn)一门新的语aQ参考书是离不开的。我的徏议是开始最好找一本篇q较短的入门书来学习(fn)那些最单、最基本的东西,包括学习(fn)Java语法{。同Ӟ对一个最单的E序也应该多去调试,多想惛_果改动一下会(x)出现什么结果?Z么必那样写Q多L惌些问题然后去操作Q会(x)让你有更多的收获。这样反复地思考是很有用的。此外,在这一阶段q应该多看JDK的联机帮助,量多地掌握JDK提供的Java基本cdAPI?

在有一定基、能够写一些简单的E序后,可以开始看《Thinking in Java》这本书。它比较完整Cl了(jin)Java的语法、面向对象的Ҏ(gu)、核?j)类库等。通过q一层次的学?fn)能够加深对Java的理解和底层原理的运用,同时又可以完整地?jin)解Java的整个体pR在q一阶段Q应该重点学?fn)Java的面向对象编E语a的特性,比如l承、构造器、抽象类、接口、方法的多态、重载、覆盖、Java的异常处理机制等Q要对上q概忉|非常清楚的了(jin)解。这样做的目的,是要让自己把q些技术应用到实践中进行合理的E序设计Q比如,你会(x)考虑一个类是用抽象q是接口来设计等Q。这p求必d大量的实践中d用和学习(fn)。这也是当初很多朋友l我的徏议?

学习(fn)更多

如果要用Java来完成各U功能更强大的Q务,那么p学习(fn)语言以外的更多的东西?

1.Java Web~程

对于Java Web ~程来说Q应该而且必须熟?zhn)和掌握HTTP协议Q可以参?Stevens的《TCP/IP 详解》第三卷。Java Servlet技术提供了(jin)生成动态Web面内容的能力,q在你的Java目中是最基本的功能之一Q所以必d?fn)。通过q一阶段的学?fn)应该掌握Servlet/JSP的Web~程?

2. J2EE的学?

J2EE包含的技术太多了(jin)。如果你惛_在桌子旁Ҏ(gu)着一大堆书来学习(fn)的话Q效果不大的。我在开始这一阶段的学?fn)的时候,可以按以下步骤来做,ȝ思想是“M把握Q各个击破”?

??jin)解J2EE中的技术术语的含义?

我的感觉是J2EE标准中涉?qing)到的各U技术很多,如果一开始就一个一个去学习(fn)的话是不现实的,也是没效果的。我的徏议是Q先对其中的技术有个大概的?jin)解Q比如EJB、JavaIDL、JTA{。可能你不知道怎么d一个EJBQ但是要知道什么是EJB、它能做什么,当有?jin)这L(fng)概念后,再去有目的地学习(fn)它就?x)快很多。我q要再重复一??必须要在实践中动手去做才行?

??jin)解J2EE中的设计模式Q这栯帮助你对J2EE做个整体把握?

MVC开发模式被证明是有效的处理Ҏ(gu)之一。它可以分离数据讉K和数据表现。你可以开发一个有伸羃性的、便于扩展的控制器,来维护整个流E。通过q一层次的学?fn),当你面对一个项目的时候,应该首先把握它的M架构的设计,以及(qing)军_采用J2EE标准中的哪些技术?

??jin)解一些J2EEq_的典型案列,加深对这一技术的概念和理解?

qx可以多留意这斚wQ熟(zhn)一些典型案例,分析它ؓ(f)什么要采用那个旉Q那样做能达C么样的目的?然后联系到自pn边的目是否可以作ؓ(f)参考?

?学习(fn)J2EE下的各种技术?

在有?jin)前几阶D늚学习(fn)后,可以自己搭徏一个J2EEq_开始具体学?fn)每一U技术。你可以参与公司相关目q行学习(fn)Q也可以自己搭徏一个^台进行学?fn)。这时候应该找点相关的书来一步一步学?fn),没有捷径可走。如果你不满于q些Q那么还应该更深入地学习(fn)UML、设计模式等斚w的东?

更多资源Q?br />参与论坛讨论: http://www.java-cn.com/forum/index.jsp
更多技术文? http://www.java-cn.com/technology/index.jsp



JUnit介绍

一、JUnit?br />JUnit是基于面向对象构建的java单元试框架?br />JUnit是开放源代码目Q可按需要进行扩展?/p>

二、安装JUnit
首先获取JUnit的Y件包Q从http://www.junit.org下蝲最新的软g包?br />Y件包在适当的目录下解包?br />q样在安装目录下扑ֈ一个名为junit.jar的文Ӟ这个jar文g加入

CLASSPATHpȝ变量?/p>

三、JUnit框架介绍Q?br />一QTestCase--试用例Q对每个试c,都要定义一个测试用例?br />JUnit支持两种q行单个试的方法:(x)?rn)态的和动态的Ҏ(gu)?
1、静(rn)态的Ҏ(gu)是覆盖TestCasecȝrunTest()Ҏ(gu)Q一般是采用内部cȝ方式

创徏一个测试实例:(x)
TestCase test01 = new testCar("test getWheels") {
public void runTest() {
testGetWheels();
}
}
采用?rn)态的Ҏ(gu)要注意要l每个测试一个名字,q样你就可以区分哪个试p|

?jin)?

2、动态的Ҏ(gu)是用内省来实现runTest()以创Z个测试实例。这要求试的名

字就是需要调用的试Ҏ(gu)的名字:(x)
TestCase test01 = new testCar("testGetWheels");
JUnit?x)动态查扑ƈ调用指定的测试方法。动态的Ҏ(gu)很简z,但如果你键入?jin)?/p>

误的名字׃(x)得到一个o(h)人奇怪的NoSuchMethodException异常。动态的Ҏ(gu)和静(rn)

态的Ҏ(gu)都很好,你可以按照自q喜好来选择?/p>

二)(j)TestSuite
一旦你创徏?jin)一些测试实例,下一步就是要让他们能一赯行。我们必d义一

个TestSuite。在JUnit中,q就要求你在TestCasecM定义一个静(rn)态的suite()?/p>

法。suite()Ҏ(gu)像main()Ҏ(gu)一PJUnit用它来执行测试。在suite()Ҏ(gu)?/p>

Q你测试实例加C个TestSuite对象中,q返回这个TestSuite对象。一?/p>

TestSuite对象可以q行一l测试?br />TestSuite和TestCase都实C(jin)Test接口Q而Test接口定义?jin)运行测试所需的方?/p>

。这允怽用TestCase和TestSuite的组合创Z个TestSuite?br />public static Test suite() {
TestSuite suite= new TestSuite();
suite.addTest(new testCar("testGetWheels"));
suite.addTest(new testCar("testGetSeats"));
return suite;
}
public static Test suite() {
return new TestSuite(testCar.class);
}

三)(j)TestRunner
有了(jin)TestSuite我们可以运行这些测试了(jin)QJUnit提供?jin)三U界面来q行试
[Text UI] junit.textui.TestRunner
[AWT UI] junit.awtui.TestRunner
[Swing UI] junit.swingui.TestRunner
java junit.textui.TestRunner yourTestclass

Fixture
如果需要在一个或若干个的cL行多个测试,q些cd成ؓ(f)?jin)测试的context。在

JUnit中被UCؓ(f)Fixture。当你编写测试代码时Q你?x)发Cp?jin)很多时间配|?

初始化相x试的Fixture。将配置Fixture的代码放入测试类的构造方法中q不

可取Q因为我们要求执行多个测试,我ƈ不希望某个测试的l果意外圎ͼ如果q?/p>

是你要求的,那就另当别论?jin)?j)影响其他试的结果。通常若干个测试会(x)使用?/p>

同的FixtureQ而每个测试又各有自己需要改变的地方?
为此QJUnit提供?jin)两个方法,定义在TestCasecM?

protected void setUp() throws java.lang.Exception
protected void tearDown() throws java.lang.Exception

覆盖setUp()Ҏ(gu)Q初始化所有测试的FixtureQ如建立数据库连接,每个测?/p>

略有不同的地方在testXXX()Ҏ(gu)中进行配|?
覆盖tearDown()Q释放你在setUp()中分配的怹性资源,如数据库q接?
当JUnit执行试Ӟ它在执行每个testXXXXX()Ҏ(gu)前都调用setUp()Q而在执行

每个testXXXXX()Ҏ(gu)后都调用tearDown()Ҏ(gu)Q由此保证了(jin)试不会(x)怺影响?

四)(j)Assert
AssertcM定义?jin)相当多的assertҎ(gu)Q主要有assert(),assertEquals(),

assertNull(), assertSame(), assertTrue(), fail(){方法?/p>

Failep|是一个期望的被assertҎ(gu)(g)查到的结果?br />Error错误则是意外的问题引L(fng)Q如ArrayIndexOutOfBoundsException?

四、测试流E:(x)
1. 扩展TestCasec;
2. 覆盖runTest()Ҏ(gu)Q可选)(j)Q?br />3. 对应试目标cM写testXXXXX()Ҏ(gu)Q?br />4、扩展TestSuitec,重蝲suite()Ҏ(gu)Q实现自定义的测试过E;
5. q行TestRunnerq行试Q?
zua edited on 2004-12-09 11:56

密码学领域重大发玎ͼ(x)׃大学王小云教授成功破解MD5

2004-09-04 09:39

QL站讯Q?004q??7日的国加州圣巴巴拉Q正在召开的国际密码学?x)议QCrypto? 004Q安排了(jin)三场关于hash函数的特别报告。在国际著名密码学家Eli Biham和Antoine Joux相做了(jin)对SHA-1的分析与l出SHA-0的一个碰撞之后,来自׃大学的王云教授做了(jin)破译MD5、HAVAL-128?MD4和RIPEMD法的报告。在?x)场上,当她公布了(jin)MDpd法?破解l果之后Q报告被Ȁ动的掌声打断。王云教授的报告蘪动了(jin)全场Q得C(jin)与会(x)专家 的赞叏V报告结束时Q与?x)者长旉热烈鼓掌Q部分学者v立鼓掌致敬,q在密码学会(x)议上是少见的盛况。王云教授的报告缘何引起如此大的反响?因ؓ(f)她的研究成果作ؓ(f)密码学领域的重大发现宣告?jin)固若金汤的世界通行密码标准MDQ的堡垒轰然倒塌Q引发了(jin)密码 学界的轩然大波。会(x)议ȝ报告q样写道Q“我们该怎么办?MD5被重创了(jin)Q它卛_从应用中淘汰。SHA-1仍然zȝQ但也见C(jin)它的末日。现在就得开始更换SHA-1?jin)。?

关键词:(x)撞Q漏z=别h可以伪造和冒用数字{֐?

Hash函数与数字签名(数字手印Q?

HASH函数Q又U杂凑函敎ͼ是在信息安全领域有广泛和重要应用的密码算法,它有一U类g指纹的应用。在|络安全协议中,杂凑函数用来处理?sh)子{֐Q将冗长的签名文件压~ؓ(f)一D늋特的数字信息Q像指纹鉴别w䆾一样保证原来数字签名文件的合法性和安全性。在前面提到的SHA-1和MD5都是目前最常用的杂凑函数。经q这些算法的处理Q原始信息即使只更动一个字母,对应的压~信息也?x)变为截然不同的“指U”,q就保证?jin)经q处理信息的唯一性。ؓ(f)?sh)子商务{提供了(jin)数字认证的可能性?

安全的杂凑函数在设计时必L两个要求:(x)其一是寻找两个输入得到相同的输出值在计算上是不可行的Q这是我们通常所说的抗碰撞的Q其二是找一个输入,能得到给定的输出在计上是不可行的,即不可从l果推导出它的初始状态。现在用的重要计算机安全协议,如SSLQPGP都用杂凑函数来进行签名,一旦找C个文件可以生相同的压羃|可以伪造签名,l网l安全领域带来巨大隐(zhn)?

MD5是q样一个在国内外有着q泛的应用的杂凑函数法Q它曾一度被认ؓ(f)是非常安全的。然而,王小云教授发玎ͼ可以很快的找到MD5的“碰撞”,是两个文g可以产生相同的“指U”。这意味着Q当你在|络上用电(sh)子签名签|一份合同后Q还可能扑ֈ另外一份具有相同签名但内容q异的合同,q样两䆾合同的真伪性便无从辨别。王云教授的研I成果证实了(jin)利用MD5法的碰撞可以严重威胁信息系l安全,q一发现使目前电(sh)子签名的法律效力和技术体pd到挑战。因此,业界专家普林斯顿计算机教授Edward Felten{强烈呼吁信息系l的设计者尽快更换签名算法,而且他们q是一个需要立卌决的
问题?

石破惊天 MD5堡垒轰然倒塌

一矛_起千层浪QMD5的破译引起了(jin)密码学界的激烈反响。专家称q是密码学界q年来?最具实质性的研究q展”,各个密码学相关网站竞相报D一惊hH破?

MD5破解专项|站关闭

MD5破解工程权威|站http://www.md5crk.com/ 是ؓ(f)?jin)公开征集专门针对MD5的攻击而设立的Q网站于2004q??7日宣布:(x)“中国研Ih员发C(jin)完整MD5法的碰撞;Wang, Feng, Lai与Yu公布?jin)MD5、MD4、HAVAL-128、RIPEMD-128几个 Hash函数的碰撞。这是近 q来密码学领域最具实质性的研究q展。用他们的技术,在数个小时内可以找到MD5 撞。……由于这个里E碑式的发现QMD5CRK目在随后48时内结束”?

Ҏ(gu)Q?img src="http://free.76e.net/sitop/images/url.gif" align="absMiddle" />http://www.readyresponse.org主页专门转蝲?jin)该报?img src="http://free.76e.net/sitop/images/url.gif" align="absMiddle" />http://www.aspenleaf.com
/distributed/distrib-recent.html和几个其它网站也q行?jin)报道?

权威|站相发表评论或者报告这一重大研究成果

l过l计Q在论文发布两周之内Q已l有q?00个网站发布、引用和评论?jin)这一成果。国内的许多新闻|站也以“演法安全加密功能露出破熾 密码学界一片哗然”ؓ(f)题报道了(jin) q一密码学界的重大事件。(报导?img src="http://free.76e.net/sitop/images/url.gif" align="absMiddle" />http://www.technewsworld.com/perl/board/mboard .pl?board=lnitalkback&thread=895&id=896&display=1&tview=expanded&mview=flat,?
消息在各新闻|站上多ơ{载。)(j)

数字认证 你的未来不是?

׃MD5的破译,引发?jin)关于MD5产品是否q能够用的大辩论。在ȝ理工大学Jeffrey I. Schiller教授L的个坛上Q许多密码学家在标题为“Bad day at the hash function factory”的辩论中发表了(jin)h价值的意见Q?img src="http://free.76e.net/sitop/images/url.gif" align="absMiddle" />http://jis.mit.edu/pipermail/saag/2004q3/000913.htmlQ。这ơ国际密码学?x)议的M席Jimes Hughes发表评论说“我怿q(破解MD5Q是真的Qƈ且如果碰撞存在,HMAC也就不再是安全的?jin),…?我认为我们应该抛开MD5?jin)。?HughesQ程序设计h员最好开始舍弃MD5。他_(d)(x)“既然现在这U算法的q已暴露出来,在有效的d发动之前Q现在是撤离的时机。?

同样Q在普林斯顿大学教授EdwardsFelton的个人网站(http://www.freedom-to-tinker.com/archives/000664.htmlQ上Q也有类似的评论。他_(d)(x)“留l我们的是什么呢QMD5已经受了(jin)重伤Q它的应用就要淘汰。SHA-1仍然zȝQ但也不?x)很长,必须立即更换SHA-1Q但是选用什么样的算法,q需?
在密码研Ih员达到共识。?

密码学家Markku-JuhaniU“这是HASH函数分析领域Ȁ动h?j)的时刻。(http://www.tcs.hut.fi/~mjos/md5/Q?

而著名计机公司SUN的LINUIX专家Val Henson则说Q“以前我们说"SHA-1可以攑ֿ(j)用,其他的不是不安全是未知"Q?现在我们只能q么ȝ?jin)?x)"SHA-1不安全,其他的都完了(jin)"?

针对王小云教授等破译的以MD5Z表的Hash函数法的报告,国国家技术与标准局QNISTQ于2004q??4日发表专门评论,评论的主要内容ؓ(f)Q“在最q的国际密码学会(x)议(Crypto 2004Q上Q研Ih员宣布他们发C(jin)破解数种HASH法的方法,其中包括MD4QMD5QHAVA L-128QRIPEMDq有
SHA-0。分析表明,?994q替代SHA-0成ؓ(f)联邦信息处理标准的SHA-1的减弱条件的变种 法能够被破解;但完整的SHA-1q没有被破解Q也没有扑ֈSHA-1的碰撞。研I结果说明SHA-1的安全性暂时没有问题,但随着技术的发展Q技术与标准局计划?010q之前逐步淘汰SHA-1Q换用其他更长更安全的算法(如SHA-224、SHA-256、SHA-384和SHA-512Q来替代。?

详细评论见:(x)http://csrc.nist.gov/hash_standards_comments.pdf

2004q??8日,十届全国人大常委?x)第十一ơ会(x)议表决通过?jin)?sh)子签名法。这部法律规定,可靠的电(sh)子签名与手写{֐或者盖章具有同{的法律效力。电(sh)子签名法的通过Q标?着我国首部“真正意义上的信息化法律”已正式诞生Q将?005q??日v施行。专家认为,q部法律对我国?sh)子商务、电(sh)子政务的发展起到极其重要的促(j)q作用。王云教授的发现无异于发现?jin)信息化天空的一个惊人黑z。我们期待着王小云教授和她的团队能够成就“女娲补天”的壮DQؓ(f)人类的信息化之\保驾护航?br />
q几天看C(jin)关于开源的热烈讨论Q笔者认L(fng)话题可以再深入讨论,故在此不揣冒昧再C文?/p>

一、重要性:(x)

1、讨Z火爆Q说明现下国内业界h士已对开源有?jin)颇多的接触和认识。这是很好的事情Q如果关于开源的概念和讨论有朝一日能够在业外行开来(如同手机、汽车和D版)(j)Q那怿国内的Y件业会(x)呈现一ơ爆炸性的增长Q这无疑是业界同道们的福?/p>

2、这其实是关pd整个产业铄Ҏ(gu)性关键问题,如果认ؓ(f)不g提的话,只能说是闭目塞听了(jin)。简单D例说明吧Q作为国家信息业的决策者,是重点自d展开源体pȝ软gQ还是与L产商Q主要是MSQ合作?作ؓ(f)各Y件公司的l营者,是采用开源体pY件进行开发,q是采用商用软gQ作为每一位程序员Q在q؜乱无比的时代Q是主要学习(fn)研究开源体p(现在主要是Linux和JavaQ,q是学习(fn)研究商用软gQ以Windows?NETZ表)(j)Q作为最l用P是l沿用D版等待罚单,q是费力学习(fn)使用免费产品……。这些,全是都是有关切n利益与方向的大问题?/p>

二、利?/p>

q样的题目未免太大,W者只能尽量以所学所用所见的l验再加上部分臆而论Q自然不免以偏概全,姑且作ؓ(f)抛砖引玉之用吧,望各位同道能补充指正?/p>

1、利

Q?Q基本上是免费的Q以国内的GNI Per CapitaQh均国民生产d|(j)而论Q商用Y件还是很昂贵的。其实就对于外国h来说Q商用Y件也很贵Q所以Gates{h才能创造商业奇q,而现下国外开源的风才?x)刮得那么猛。特别对于程序员来说Q如果采用商用体pd?fn)开发的话,机器上的软g价值少说也是以万元计吧。“天下没有免费的午餐”,当国人(包括E序员)(j)多年来已l吃惯了(jin)“免费午”的时候,H然说“午不再免费”了(jin)Q这L(fng)打击真是够呛Q所以,如果你没有够的资金享用商用软g的话Q早一天考虑开源体pL怸至于在突然的打击面前束手无策。(W者以前一直是用JB的,半年前考虑到版权问题用?jin)eclipseQ现在发现免费的eclipse竟然更加强大。)(j)

Q?Q开放源代码的对于学?fn)研I的意义Q对于国内大多数的用P包括E序员)(j)Q用开源主要是可以节省资金Q而对于程序员中的高手来说Q开攄代码才是臛_Q原因在于,开源代码是q速提高程序员水^的捷径。这世上本无天才Q所谓的天才正如牛顿所说是“站在巨人的肩膀上”。这是大家所熟?zhn)的武侠小说中Qؓ(f)何以q青侠客奇遇资深侠客获取盖世武功作ؓ(f)ȝ的原因。学?fn)前人的好东西,q在其之上发展,q对于学?fn)研I者来说无疑是一件事半功倍的事情。特别对于系lYӞlinuxQ而言Q通过修改源代码,实现安全定制与特D用途,q真是g很好的事情?/p>

Q?Q开源对于商业h(hun)|(x)客观地说Q开源现在基本上是老外的事情,国内的大多数所谓开源,无非是点很简单的代码Q找本书看看有?jin),没什么值得保密的。这一斚w是技术问题,更重要的是市(jng)场问题,国外现在已经形成?jin)一个具有现实意义的开源市(jng)场,所以开源已l不是什么无利可囄事情?jin)。a、原作者的高声望与高就业机?x)?x)如论坛上《开源还是不开Q难道是个问题》一文中BT作者的事例Q还有就是Linux之父Linus Torvalds、struts的主设计师Craig McClanahan{等。老外的开源YӞ很多是由本n在Y件公司、教育科研机构工作的E序员业余合作的成果Qh家有兴趣、有_֊M人合作,展示他们的天份与惌Q目的,是其作品能够得到广大同道的认可Q能够在与同道的不断交流中获得程序水q的提高与设计艺术的享受。同Ӟ也就获取?jin)更好的工作Z(x)。试惻Iq帮老大如果只是满于像我等使用商用IDE做点所谓Application的话Q即使是C(jin)MSQ相信也不会(x)有什么好前途。b、开源Y件公司运用服务盈利:(x)如MySQL、JBossq样U透半边天的免费YӞlh做做所谓“咨询”,也就是说以低层Y件公ؓ(f)服务对象Q或出点什么书c、资料等{,其收益能低得?jin)吗Qc、免费试用的模式Q先免费试用Q获取认可与?jng)场之后Q再转ؓ(f)商用。这斚wJ2EE界中的Jive和笔者最q用的MyEclipse、JSF Studio{等都是其中的好例子。免费试用,说白?jin)是一U成本低廉的优秀q告Q相当于聪明的水果摊贩试西瓜之cȝ手法。所以说Q开源最l也是一U商业模式(为避免本文太长,详见本h的《浅析集中与分散软g商业模式》,E后完成Q?/p>

Q?Q开源是发展中国家的Z(x)与福:(x)q大概就不用说了(jin)吧。(举个单的例子Q前几天我已l把JBl卸?jin)?j)?/p>

其它的优点就由各位道友一一说来吧…?/p>

2、弊

Q?Q难于用:(x)q是客观事实Q但怽道友如果在n受免费的产品时还在以d务的话,未免有些不qh情了(jin)。这世上本来很难有比MS的品更Ҏ(gu)使用的东西,更何况还是免费的。笔者以为,国内大凡从事软g业的同道Q考虑M问题都不要忘?jin)D版。可以说QD版是一个摇,我们在其中不断成长;而现在,当D版已l开始限制我们成长的时候,是扔掉它q是睡在其中不再长大Q这一个问题。可惜,q其实根本就没有选择Q正如摇一PD版是不可能长久的。所以,是准备必要的资金以n受“好用”的商业软gQ还是费力去学习(fn)、用、发展“难用”的开源YӞq也许才是一个问题。从实际的角度出发,力让品变得easy也正是开源体pd该努力的方向?/p>

Q?Q学?fn)开源体pȝ隑ֺ高,旉?/p>

Linux与Windows、J2EE?NETQ玩q的人都知道Q谁费劲Q表面上看来q个问题很容易定论,其实不然。简单地来说Q低层的应用Q商用Y件的效率较高Q高层的应用Q开源的价D大。现在论坛上l常有h咒骂开发难度的降低D收入下降Q甚而将矛头对准Open sourceQ这实在是冤枉好人。“水涨船高”本是自古以来所有行当的必然规律Q而现今IT业偏偏又是那U涨得最快的行当。这一点上不得不提一下MS和InternetQ可以说Q正是MS与Internet的伟大,PC与Y件传遍了(jin)全世界,~于其方便和易于传播Q可也正因ؓ(f)如此QPC与Y件又如此L地淘C贬倹{再ơ提醒诸位,C的IT是个极其危险的行当。因为其中容易的东西Q如操作、简单维护开发)(j)渐渐于饱和。所以,如果你试图象“(chng)沫年代”那栯易地获取高额利润而到q个行业淘金的话Q或许应该冷?rn)地思考一下了(jin)。现今,发达国家的IT业,基本上是属于高技术选手Q国内开始有q个势Q如果市(jng)Z制比较合理之后,怿10q后大体上也如此。当整个行业成熟之后Q仍然会(x)有较高的薪水Q也有很多机?x),只是隑ֺ来大。所以,与其抱怨像?sh)子论坛那样半小时搞定的东西下蝲满天飞,不如去考虑一下那些即使下载来Q也需要很长时间才能领?x)的事物Q如spring、ofbiz?NET的DuwamishQ。毕竟,ASP.NET好用,MS的收益越高,(zhn)的K就少。当全业界都?x)做WEB的时候,(zhn)是否该考虑点其它的东西Q或是把它做得更优秀。不q,误信一点,如果你考虑收益的话Q“社?x)必要劳动时间”在正常的市(jng)ZpM仍是一个公理?/p>

Q?Q开源的商业价gQ?/p>

考虑到money因素Q也许有Z(x)说Linux即再优UQ甚臛_面超了(jin)WindowsQ全面占据了(jin)?jng)场Q也不可能像Windows赚钱。这(zhn)可太对了(jin)。以现阶D늚商业应用论QMS已经如此优秀Q能挤出的a(b)水大体上已经q了(jin)MS的腰包。就像过ȝ十年QOS、办公Y仉域,是Windows、Office的胜利,DB是Oracle的胜利,今后也许q是如此。然后,C会(x)l济是不断发展的Q新的应用需求是无止境的。现今,软g业正向高度、深度、定制化的方向发展。不q,以笔者估计,今后要想在诞生MS、Oracleq样的通用软g巨无霸只怕是不可能了(jin)QGatesq们可能要失望了(jin)Q?C万计的小型化、专业化、本地化的Y件开发服务公怹许是更ؓ(f)现实的景象。所以,是选择商业软g体系q是开源体p进行开发则是一重要的问题。商业体pL味着较高的成本,较低的层ơ与通常认ؓ(f)较高的效率与暂时较高的市(jng)可度Q开源体pd是较低的成本Q较高的层次与通常认ؓ(f)较低的效率(主要是学?fn)、探索、集成的旉长)(j)与潜在的?jng)场I间。何M从,恐怕还得根据自w实力与周围的市(jng)场环境而定?/p>

Q?Q国内开源的不利形势

众所周知Q国内的技术环境是比较差的。由于体制与文化的原因,U技人员在国内的前途向来就是比较惨淡的。以吹嘘和欺诈ؓ(f)主要能力的权钱阶层掌控着国内的市(jng)场,q从Ҏ(gu)上导致了(jin)技术的低水q_。低层次的经体pM意味着技术与理的低水^化,q同样包括Y件业的。在q样的条件下Q所谓信息系l徏设,往往也就是在g与商用Y件上的大把挥霍。故而以收入和地位而论Q营销人才q高于技术h才是不争的事实。所以在q片土地上,惌l过多年U篏成ؓ(f)像James Gosling或Anders Heilsberg那样的大师,恐怕是极ؓ(f)艰难的。走入开源体pL疑在技术研I积累上是极好的Q最l的收益是高的,但也意味着更多的心(j)血与风险?/p>

其余的弊病望各位道友述…?/p>

三、ȝ

“存在即是合理”,商业与开源Y件现在与未来都将长期存在发展。Y件业是有前途的Q一如它的艰辛。不是商业或开源体p,要想获得成功Q都要走很长的\。应该说QY件业l过?jin)其喧嚣的火爆之后,渐渐回归理性。“\漫O其修q兮”,愿与怽同道共勉?/p>

Q欢q参?img src="http://free.76e.net/sitop/images/url.gif" align="absMiddle" />http://blog.csdn.net/lgx522/archive/2004/07/24/50665.aspx上的讨论Q?br />
需求分析方法探?br />[摘要]本文?jin)需求分析的一般方法。介l了(jin)目前通用的需求分析品特炏V结合系l模型,阐述?jin)需求分析与pȝ建模的关pR?br />[Abstract] This article describe general method of Requirement Analysis. Introduce the characters of pop Requirement Analysis product. With System Model, expatiate the relationship between requirement analysis and system modeling.
一、 概述
据权威部门统计,目前软g的成功率Uؓ(f)25%Q?5%的Y件是p|的。在q?5%的失败中Q约?0%以上的Y件是׃需求的原因造成的。作Y件的设计和开发h员常抱怨用户需求不明确Q需求常处于变更状态。新的需求往往在开发阶D|被用h出。造成软g的完成日期不断的q后?
一般的软g企业Q往往只口头上注重用户需求。但׃没有U学的管理方法,实际上他们描q的用户需求是杂ؕ无章的,只言片语的。不能有效地和系l设计、开发保持同步最后开发出来的软g产品和实际有很大的差异。导致Y件的p|。有证据表明Q在需求阶D修正错误的工作量,是在pȝ设计阶段修正错误?/10Q是在开发阶D修正错误的1/100Q是在发布品阶D修正错误的1/1000。当然这是对大型pȝ而言Q对于不同的pȝQ随pȝ的复杂程度这个比率会(x)有所不同?br />用户的需求的增加h渐进的、增量的特点。随着需求分析h员和用户逐渐深入的交,用户在不断地整理、规范自q需求。需求分析h员须牢记的是用户不可能一下子l出一个完整、清晰、规范的用户需求。需求分析h员需从与用户的交中Q不断地挖掘Qƈ加以整理Q才能得到想要的需求?br />需求分析一般来说需要有一个需求分析的团队Q如用户代表、系l分析h员、开发h员、需求管理h员等Q他们的分工不同各有侧重炏V对于小型或中型目人员可以gQ?br />Z上述原因Q需要从理论上规范用户需求的攉和整理。本文结合系l徏模,l出?jin)需求分析的一般性方法。它如下的包含了(jin)两个斚w:
1、 技术层?br />l出需求分析的pȝ框架Q它包含?jin)需求的目、参与需求分析的用户、用户对于需求的可操作权限(安全性)(j){?br />2、 操作层面
l出?jin)需求收集、整理、分析的一般性方法?br />其中介绍?jin)系l徏模和需求分析间的相互关p,最后介l了(jin)目前几种行的需求分析品及(qing)它们的特炏V?/p>

二、 需求分析的基本概念
需求分析的目的是完整、准地描述用户的需求,跟踪用户需求的变化Q将用户的需求准地反映到系l的分析和设计中Qƈ使系l的分析、设计和用户的需求保持一致?br />需求分析的特点是需求的完整性、一致性和可追溯性?br />完整性:(x)是准、全面的描述用户的需求?br />一致性:(x)是通过分析整理Q剔除用户需求矛盄斚wQ规范用户需求?br />可追溯性:(x)有两个方面的含义Q整理和规范的需求,其一Q需要不断的和用戯一步交,保持和用h新的需求一_(d)其二Q和pȝ分析Q设计)(j)保持一致?br />因此在需求分析之前我们必d立需求分析技术层面的基本框架Q从技术上保证需求分析的要求Q在此基上我们进行的需求分析才能满项目对需求分析的要求?/p>

三、 需求分析的pȝ架构
本节描述的是q行需求分析之前,如何在技术层面上建立需求分析的pȝ架构?/p>

需求分析需要采用需求分析的软g。上囄要描qC(jin)需求分析Y件的架构。需求分析Y件一般采用C/S的结构,需求分析h员作为客户对服务器进行操作,操作主要由四个方面:(x)pȝ理Q含用户的创建和授权Q定义项目的术语表等Q、项目视图(涉及(qing)目的相x作)(j)、需求类型视图(涉及(qing)需求类型的相关操作Q、需求视图(涉及(qing)需求的相关操作Q?br />目包含一个或多个需求类型,需求类型包含一个或多个需求。里E碑是特定版本的需求的集合Q需求分析Y件含有简单的配置理的功能)(j)Q它作ؓ(f)软g产品的功能依据。自动文档生成是通过文档模版里E碑的需求,自动生成相关文档?br />3.1 目
 目在M上定义了(jin)一个应用和pȝ所涉及(qing)到的需求及(qing)需求涉?qing)的范围。它包含?jin)在需求分析过E中参与需求分析的人员、需求类型、包含于需求类型中的需求。此外它q包含了(jin)如下信息Q?br /> 目的相关信息(如创Zh员)(j)
 目的里E碑
 外部的可q溯?amp;#61548;
 安全性框架等?amp;#61548;
3.2 用户/用户l?br />用户是指参与需求分析的人员Q一般由软g产品的最l用戗Y件开发h员、系l设计员、测试h员等l成。在需求分析品中用户包含用户的基本描q和联系方式Q如?sh)子邮gQ等Q目前大多数需求分析品还含有消息通讯的机ӞcM于QQQ,?qing)时地将需求的变化告知相关的需求分析h员?br />用户l是指具有相同操作权限的一个或多个用户。用L(fng)可以被指定到特定的项目或需求(用户l中的用户对此具有相应得操作权限Q?br />3.3 安全?br />安全性是指在需求分析过E中Q用户对需求的操作权限。安全性防止未授权的用户对关键性需求的操作。安全性是用户/用户l与需求之间的一U关pR?br />一般来说安全性有三个斚w的含义:(x)
 pȝ理
pȝl护Q系l数据备份等Q、用L(fng)理、用L(fng)理{?br /> 安全性框?amp;#61548;
定义用户的基本操作权限。这U操作权限和具体的项目、项目需求无兟뀂如一个用h加的需求只能由q个用户自己删除{。安全性框架又可以分ؓ(f)两类Q?br /> 存取U别QAccess LevelQ创建、查看、维护需求?br /> 删除U别QDelete LevelQ删除需求?br /> 特定需求的安全?amp;#61548;
建立用户/用户l与特定需求的兌Q以定此用?用户l对需求的操作权限?br />3.4 需求类?需?br />需求类型通常是以功能划分的较高层ơ的需求,如用L(fng)面。需求是所要构建的pȝ或应用所要满求的说明Q需求可以由业务规则、处理流E、h员的l织l构获得。需求包含于需求类型之中。需求类?需求一般是用文字描q的Q此外还可以通过需求的属性、外部文件来描述需求?br />3.5 属?br />属性用来描q需求相关特性,属性一般可分ؓ(f)两类?br />pȝ属性:(x)描述需求的pȝ特点Q如需求是否被认{?br />自定义属性:(x)q戯定义用来描述需求的属性。如描述人员的电(sh)话号码等?br />3.6需求网?br />需求网格是一l相关的需求用|格的Ş式表C,主要用于需求的分析。一般来说可以定义显C的方式Q如针对某个用户昄他所创徏的需求、针Ҏ(gu)cd能显C相关的需求等{?br />3.7 需求映?br />考虑q样的背景,在一个实时系l中Q数字信L(fng)采集与传输在不同的控制系l中均用相同的实现方式Q它们的需求也相同。在q种情况下我们可以采用需求映的技术,需求映是在不同的目中用相同的需求?/p>

在图中有三个目Q项目A中的需求R3被共享出来,目B中的R3的需求映到目A中的需求R3?br />3.8 可追溯性(TraceabilityQ?br />可追溯性是需求的一致性表现Ş式。它主要包含以下几个斚w的含义:(x)
 保持和用戯求的同步
必须牢记的是用户需求是不断变化的。需求分析需要适应需求的不断变化?br /> 保持需求之间的完整和一?amp;#61550;
用户从各个层面提出的需求,往往含有相当多的矛盾Q需求分析的一个重要的斚w是要消除q些矛盾Q规范用L(fng)需求。此外需求之间的依赖性也可以通过可追溯性来表示?br /> 保持需求和pȝ设计间的同步
在大多数目中,需求分析和pȝ设计没有的必然联p,q种情况造成的后果是软g产品和实际的需求相差甚q。例如采用手工的Ҏ(gu)Q可以需求与pȝ设计保持一致。但q种Ҏ(gu)是不安全的,因ؓ(f)没有相应的机制来强制相关人员遵守规则。所以必M技术层面来保证需求和设计的一_(d)目前大多数的需求分析工具均有和pȝ设计工具保持同步的插Ӟ如Borland的CaliberRM、IBM的ROSE、Telelogic的DOORS{?br />3.9 报告QReportQ?br />报告可以理解是需求的视图Q从不同的层ơ来描述需求,报告可根据需要进行过滤,如针Ҏ(gu)一需求类型的报告、针对不明确需求的报告{。报告一般可以分为:(x)
 l节报告
描述需求的l节?br /> 状态报?amp;#61548;
描述需求的状态,需求的状态可分ؓ(f)接受、不明确、拒l等?br /> 责Q报告
参加需求分析的人员对其负责的需求生的报告?br />3.10 讨论
讨论是在需求分析过E中Q需求分析团队成员之间的一U协作机制。这U机制可使相关h员就需求的定义、描q、状态、优先、一致性、完整性等q行讨论Q得出正的l论?br />讨论一般来说分两个U别Q项目别、需求别?br />Q?11 文档引用
一个需求的描述可能需要外部的文档Q文档引用是用外部文件来描述相关需求的附加信息。目前需求分析品支持最多的文档cd是MS WORDQ此外根据品的不同Q还支持Excel、图像文件、HTML、及(qing)OLE{?br />3.12 里程(BaseLineQ?br />需求是不断变化的,软g产品Ҏ(gu)不断变化的需求有不同的版本,每一个版本的软g除了(jin)软g自n的BUG外,是满新增加的需求,而Y件品需要其实现的功能具有稳定性。里E碑是需求分析过E的一个阶D늻果,q个阶段l果是固定不变的?br />3.13 文档的自动生?br />参与软g开发的人都有这L(fng)体会(x)Q在软g产品完成之前很难l出软g的各U文档,是l出?jin)相应的文档Q文档之间也有各U各L(fng)矛盾。这是需求、设计、开发缺乏同步的表现?br />如果我们在Y件的开发过E中Q严格遵循Y件的开发规范,采用相应得Y件工E工P上述情况可以避免?br />在需求分析中Q需求分析品均可以自动Ҏ(gu)分析的结果生成相应得文档Q文档的格式可以有MS Word、PowerPoint、HTML{。这里我们主要介l一下Office Word文档的生成方式?br />在自动生成文档之前,我们需要定义文档模版。根据所要生成文档的格式和需求分析Y件的相关命o(h)Q在Office Word创徏文档模版。文档模版创建好之后Q在需求分析Y件中选择里程,自动生成出Office Word文档?br />四、 需求的攉和整?br />需求分析是从用L(fng)角度描述用户的数据、活动、地点(位置Q、h员组l、计划、业务逻辑Q业务目标)(j){相关信息的一个过E,它涉?qing)到如何攉用户的需求,以及(qing)如何这些需求规范化{方面。需求分析的W一步工作是界定需求的边界Q主要描q项目的、项目的业务要求、项目所要满的基本Ҏ(gu)等?br />在第三节中我们简要描qC(jin)如何从技术层面上佉K求分析的q程规范化,本节主要阐述如何q行需求的攉和整理?br />4.1 数据
数据是指需求涉?qing)的相关静(rn)态信息。在需求分析过E中Q数据是从用L(fng)角度来描q的Q在pȝ设计q程中,数据用面向对象的Ҏ(gu)q行整理和规范,最lŞ成Class Diagram?br />4.2 zd
zd是项目要满的业务逻辑和规则。它臛_有二个层ơ:(x)
 基本目标
要描qC务逻辑和规则?br /> 功能描述
描述zd执行的过E,以及(qing)在执行过E中涉及(qing)到的相关资源、活动之间的兌、依赖性、约束性等?br />考虑到需求分析和pȝ设计的一致性。活动在pȝ设计阶段Q可采用用例来表C,通过序列图、活动图、以?qing)状态图来进行细化?br />4.3 人员l织
描述用户人员l织l构。如企业领导、部门、部门h员、相兛_户信息等?br />4.4 地点Q位|)(j)
描述需求和地点、位|相关的pȝ设计中网l、分布式计算的前|条件?br />五、 需求分析Y?br />目前行的需求分析Y件有IBM公司的RequisitePro、Telelogic公司的DOORS、Borland公司的CaliberRM。这些Y件均能满x文中描述的对需求分析功能上的要求,但各有特点,RequisitePro和大多数pȝ设计软g有较好的l合Q目前的版本对Office 2003的支持不够。DOORS在实时系l的需求分析中有良好的表现。CaliberRM对Office有很好的支持Q中文的问题也解军_很好Q支持Office 2003的版本?br />六、 l论
需求具有渐q的Q不断变化的特点。需求分析是一个需求分析团队的工作Q在需求分析理论的指导下需要采用需求分析的商业化品,q样才能保持需求和设计的同步,没有q种同步Q需求分析不?x)有太大的实际意义?br />大多数系l设计品如Rose、Together、Tau、RhapsodyQ实时系l的pȝ设计工具Q等Q具有部分的需求分析功能,严格意义上它们不是需求分析的产品。但他们均有和需求分析品的接口?br />一般说来Y仉目涉?qing)到的很多方面,如需求分析、配|?变更理、系l设?建模、测试等。本文只是简要描qC(jin)作者对需求分析的一些体?x)?br />参考文献:(x)
1、 David C. Hay 《Requirements Analysis :From Business Views to Architecture?002 Hall PTR
2、 Borland 《CaliberRm User Guide?br />3、 ׃潘等?《UML与Rational Rose2002 从入门到_N》电(sh)子工业出版社 2002q??br />4、 周靖{译《XML应用的UML建模技术》清华大学出版社 2003q??br />5、 郭旭?《JAVA 与UML协同应用开发》清华大学出版社 2003q??
palatum edited on 2004-06-14 18:40

Java数据库连接(JDBCQAPI是一pd能够让Java~程人员讉K数据库的接口Q各个开发商的接口ƈ不完全相同。在使用多年的Oracle公司的JDBC后,我积累了(jin)许多技巧,q些技巧能够我们更好地发挥系l的性能和实现更多的功能?

  1、在客户端Y件开发中使用Thin驱动E序

  在开发Java软g斚wQOracle的数据库提供?jin)四U类型的驱动E序Q二U用于应用Y件、applets、servlets{客L(fng)软gQ另外二U用于数据库中的Java存储q程{服务器端Y件。在客户机端软g的开发中Q我们可以选择OCI驱动E序或Thin驱动E序。OCI驱动E序利用Java本地化接口(JNIQ,通过Oracle客户端Y件与数据库进行通讯。Thin驱动E序是纯Java驱动E序Q它直接与数据库q行通讯。ؓ(f)?jin)获得最高的性能QOracle在客L(fng)软g的开发中使用OCI驱动E序Q这g是正的。但我徏议用Thin驱动E序Q因为通过多次试发现Q在通常情况下,Thin驱动E序的性能都超q了(jin)OCI驱动E序?

  2、关闭自动提交功能,提高pȝ性能

  在第一ơ徏立与数据库的q接Ӟ在缺省情况下Q连接是在自动提交模式下的。ؓ(f)?jin)获得更好的性能Q可以通过调用带布?yu)(dng)值false参数的ConnectioncȝsetAutoCommit()Ҏ(gu)关闭自动提交功能Q如下所C:(x)

  conn.setAutoCommit(false);

  值得注意的是Q一旦关闭了(jin)自动提交功能Q我们就需要通过调用Connectioncȝcommit()和rollback()Ҏ(gu)来h工的方式对事务进行管理?

  3、在动态SQL或有旉限制的命令中使用Statement对象

  在执行SQL命o(h)Ӟ我们有二U选择Q可以用PreparedStatement对象Q也可以使用Statement对象。无论多次C用同一个SQL命o(h)QPreparedStatement都只对它解析和编译一ơ。当使用Statement对象Ӟ每次执行一个SQL命o(h)Ӟ都会(x)对它q行解析和编译。这可能?x)你认为,使用PreparedStatement对象比用Statement对象的速度更快。然而,我进行的试表明Q在客户端Y件中Q情况ƈ非如此。因此,在有旉限制的SQL操作中,除非成批地处理SQL命o(h)Q我们应当考虑使用Statement对象?

  此外Q用Statement对象也得编写动态SQL命o(h)更加单,因ؓ(f)我们可以字W串q接在一P建立一个有效的SQL命o(h)。因此,我认为,Statement对象可以使动态SQL命o(h)的创建和执行变得更加单?

  4、利用helper函数对动态SQL命o(h)q行格式?

  在创Z用Statement对象执行的动态SQL命o(h)Ӟ我们需要处理一些格式化斚w的问题。例如,如果我们惛_Z个将名字O"Reilly插入表中的SQL命o(h)Q则必须使用二个相连的?"”号替换O"Reilly中的?”号。完成这些工作的最好的Ҏ(gu)是创Z个完成替换操作的helperҎ(gu)Q然后在q接字符串心(j)服用公式表达一个SQL命o(h)Ӟ使用创徏的helperҎ(gu)。与此类似的是,我们可以让helperҎ(gu)接受一个Date型的|然后让它输出ZOracle的to_date()函数的字W串表达式?

  5、利用PreparedStatement对象提高数据库的M效率

  在用PreparedStatement对象执行SQL命o(h)Ӟ命o(h)被数据库q行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个PreparedStatement对象Ӟ它就?x)被再解析一ơ,但不?x)被再次~译。在~冲Z可以发现预编译的命o(h)Qƈ且可以重C用。在有大量用L(fng)企业U应用Y件中Q经怼(x)重复执行相同的SQL命o(h)Q用PreparedStatement对象带来的编译次数的减少能够提高数据库的M性能。如果不是在客户端创建、预备、执行PreparedStatementd需要的旉长于StatementdQ我?x)徏议在除动态SQL命o(h)之外的所有情况下使用PreparedStatement对象?

  6、在成批处理重复的插入或更新操作中用PreparedStatement对象

  如果成批地处理插入和更新操作Q就能够显著地减它们所需要的旉。Oracle提供的Statement?CallableStatementq不真正地支持批处理Q只有PreparedStatement对象才真正地支持批处理。我们可以用addBatch()和executeBatch()Ҏ(gu)选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()Ҏ(gu)和标准的executeUpdate()Ҏ(gu)选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制Q可以以如下所C的方式调用setExecuteBatch()Q?

PreparedStatement pstmt3D null;
try {
((OraclePreparedStatement)
pstmt).setExecuteBatch(30);
...
pstmt.executeUpdate();
}

  调用setExecuteBatch()时指定的值是一个上限,当达到该值时Q就?x)自动地引发SQL命o(h)执行Q标准的executeUpdate()Ҏ(gu)׃(x)被作为批处理送到数据库中。我们可以通过调用PreparedStatementcȝsendBatch()Ҏ(gu)随时传输批处理Q务?

  7、用Oracle locatorҎ(gu)插入、更新大对象QLOBQ?

  Oracle的PreparedStatementcM完全支持BLOB和CLOB{大对象的处理,其是Thin驱动E序不支持利用PreparedStatement对象的setObject()和setBinaryStream()Ҏ(gu)讄BLOB的|也不支持利用setCharacterStream()Ҏ(gu)讄CLOB的倹{只有locator本n中的Ҏ(gu)才能够从数据库中获取LOBcd的倹{可以用PreparedStatement对象插入或更新LOBQ但需要用locator才能获取LOB的倹{由于存在这二个问题Q因此,我徏议用locator的方法来插入、更新或获取LOB的倹{?

  8、用SQL92语法调用存储q程

  在调用存储过E时Q我们可以用SQL92或Oracle PL/SQLQ由于用Oracle PL/SQLq没有什么实际的好处Q而且?x)给以后l护你的应用E序的开发h员带来麻?ch),因此Q我在调用存储过E时使用SQL92?

  9、用Object SQL对象模式{Ud数据库中

  既然可以Oracle的数据库作ؓ(f)一U面向对象的数据库来使用Q就可以考虑应用程序中的面向对象模式{到数据库中。目前的Ҏ(gu)是创建Java bean作ؓ(f)伪装的数据库对象Q将它们的属性映到关系表中Q然后在q些bean中添加方法。尽这样作在Java中没有什么问题,但由于操作都是在数据库之外进行的Q因此其他访问数据库的应用Y件无法利用对象模式。如果利用Oracle的面向对象的技术,可以通过创徏一个新的数据库对象cd在数据库中模仿其数据和操作,然后使用JPublisher{工L(fng)成自qJava beancR如果用这U方式,不但Java应用E序可以使用应用软g的对象模式,其他需要共享你的应用中的数据和操作的应用Y件也可以使用应用软g中的对象模式?

  10、利用SQL完成数据库内的操?

  我要向大家介l的最重要的经验是充分利用SQL的面向集合的Ҏ(gu)来解x据库处理需求,而不是用Java{过E化的编E语a?

  如果~程人员要在一个表中查找许多行Q结果中的每个行都会(x)查找其他表中的数据,最后,~程人员创徏?jin)独立的UPDATE命o(h)来成批地更新W一个表中的数据。与此类似的d可以通过在set子句中用多列子查询而在一个UPDATE命o(h)中完成。当能够在单一的SQL命o(h)中完成Q务,何必要让数据在网上流来流ȝQ我用户认真学习(fn)如何最大限度地发挥SQL的功能?/p>

李E式 2006-06-12 09:51 发表评论
]]>
վ֩ģ壺 ຣʡ| Դ| ػ| | | ɳ| ʹ| ½| | Զ| | | ˷| | | | | | | ƽ| | ѳ| ƽ| ɽ| | ֳ| | | | ʡ| | Ĭ| ԭ| ɽ| ԫ| ¡| | ̨| ͷ| | |