<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 34, 文章 - 1, 評論 - 2, 引用 - 0
    數據加載中……

    2010年1月15日

    產品經理編寫MRD和PRD

    MRD(market requirement document )和PRD(production requirement document)區分

     
    http://hi.baidu.com/%D9%DC%D5%BC%BE%FD/blog/item/937c921603e2220c4a90a794.html

    正確編寫PRD產品需求文檔
    http://hi.baidu.com/wenlym%CD%E5/blog/item/8fff94ac81727d1c4b36d6db.html




    posted @ 2011-06-07 17:21 河馬虎 閱讀(315) | 評論 (0)編輯 收藏

    需求分析誰來寫?很不錯的文章


    http://news.ccidnet.com/art/1032/20060829/884159_1.html

    posted @ 2011-03-16 14:30 河馬虎 閱讀(269) | 評論 (0)編輯 收藏

    Java靜態檢測工具的簡單介紹


    轉自
    http://qa.taobao.com/?p=9015

    靜態檢查:靜態測試包括代碼檢查、靜態結構分析、代碼質量度量等。它可以由人
            工進行,充分發揮人的邏輯思維優勢,也可以借助軟件工具自動進行。
            代碼檢查代碼檢查包括代碼走查、桌面檢查、代碼審查等,主要檢查代碼和
            設計的一致性, 代碼對標準的遵循、可讀性,代碼的邏輯表達的正確性,代
            碼結構的合理性等方面;可以發現違背程序編寫標準的問題,程序中不安全、
            不明確和模糊的部分,找出程序中不可移植部分、違背程序編程風格的問題,
            包括變量檢查、命名和類型審查、程序邏輯審查、程序語法檢查和程序結構
            檢查等內容。”。看了一系列的靜態代碼掃描或者叫靜態代碼分析工具后,
            總結對工具的看法:靜態代碼掃描工具,和編譯器的某些功能其實是很相似的,
            他們也需要詞法分析,語法分析,語意分析...但和編譯器不一樣的是他們可
            以自定義各種各樣的復雜的規則去對代碼進行分析。

    靜態檢測工具:
    1. PMD
         1)PMD是一個代碼檢查工具,它用于分析 Java 源代碼,找出潛在的 問題:
    1)潛在的bug:空的try/catch/finally/switch語句
    2)未使用的代碼:未使用的局部變量、參數、私有方法等
    3)可選的代碼:String/StringBuffer的濫用
    4)復雜的表達式:不必須的if語句、可以使用while循環完成的for循環
    5)重復的代碼:拷貝/粘貼代碼意味著拷貝/粘貼bugs
    2)PMD特點:
    1)與其他分析工具不同的是,PMD通過靜態分析獲知代碼錯誤。也就是說,在
    不運行Java程序的情況下報告錯誤。
    2)PMD附帶了許多可以直接使用的規則,利用這些規則可以找出Java源程序的許
    多問題
    3)用戶還可以自己定義規則,檢查Java代碼是否符合某些特定的編碼規范。
    3)同時,PMD已經與JDeveloper、Eclipse、jEdit、JBuilder、BlueJ、
    CodeGuide、NetBeans、Sun JavaStudio Enterprise/Creator、
    IntelliJ IDEA、TextPad、Maven、Ant、Gel、JCreator以及Emacs
    集成在一起。
    4)PMD規則是可以定制的: 可用的規則并不僅限于內置規則。您可以添加新規則:
    可以通過編寫 Java 代碼并重新編譯 PDM,或者更簡單些,編寫 XPath 表
    達式,它會針對每個 Java 類的抽象語法樹進行處理。
    5)只使用PDM內置規則,PMD 也可以找到你代碼中的一些真正問題。某些問題可能
    很小,但有些問題則可能很大。PMD 不可能找到每個 bug,你仍然需要做單元測
    試和接受測試,在查找已知 bug 時,即使是 PMD 也無法替代一個好的調試器。
    但是,PMD 確實可以幫助你發現未知的問題。
    
    1. FindBugs
         1)FindBugs是一個開源的靜態代碼分析工具,基于LGPL開源協議,無需
    運行就能對代碼進行分析的工具。不注重style及format,注重檢測真正
    的bug及潛在的性能問題 ,尤其注意了盡可能抑制誤檢測(false positives)
    的發生。以bytecode(*.class、*.jar)為對象進行檢查。除了單獨動作,還可
    以用作Eclipse 的plug-in,以及嵌入Ant作為task之一 進行利用。
    2)findbugs自帶檢測器的介紹:  findbugs自帶60余種Bad practice,80余種
    Correntness,1種Internationalization,12種Malicious code
    vulnerability,27種Multithreaded correntness,23種Performance,
    43種Dodgy。
    3)Findbugs的一些特點:
    1)FindBugs主要著眼于尋找代碼中的缺陷,這就與其他類似工具有些區別了,
    直接操作類文件(class文件)而不是源代碼。
    2)FindBugs可以通過命令行、各種構建工具(如Ant、Maven等)、獨立的
    Swing GUI或是以Eclipse和NetBeans IDE插件的方式來運行。                
    3)FindBugs輸出結果既可以是XML的,也可以是文本形式的。
    4)開發者可以通過多種方式來使用FindBugs,最常見的是在新編寫模塊的代碼
    分析以及對現有代碼進行更大范圍的分析。   
    5)不注重style及format,注重檢測真正的bug及潛在的性能問題,
    尤其注意了盡可能抑制誤檢測(false positives)的發生。    
    4)FindBugs可檢測的bug pattern舉例:
    檢測java programing中容易陷入的bug pattern,equals() 實現時的一般規約違反
    Null pointer的參照 ,Method的返回值的check遺漏 ,初始化前field的訪問,
    Multi-thread的正確性, 同期化處理的矛盾, 無條件的wait(),  Code的脆弱性 ,
    可以變更的靜態object ,內部數列參照的return等
    
    1. Checkstyle
         1)定義: Checkstyle是一款檢查Java程序源代碼樣式的工具。
    2)特點:
    1)它可以有效的幫助我們檢視代碼以便更好的遵循代碼編寫標準,特
    別適用于小組開發時彼此間的樣式規范和統一。
    2)Checkstyle提供了高可配置性,以便適用于各種代碼規范,所以
    除了使用它提供的幾種常見標準之外,你也可以定制自己的標準。
    3)Checkstyle提供了支持大多數常見IDE的插件,大部分插件中就含有
    最新的Checkstyle,就不用費心再部署一份了。
    4)Checkstyle可以檢查代碼的很多方面,從傳統觀點看,它主要是用來
    檢查代碼層面的,自從第三版以后,它的內部架構作了重大改變,很多
    其它意圖的檢測加了進來,現在Checkstyle可以檢查像類設計的問題,
    重復代碼,如鎖的雙重檢查的bug模式。
    3)CheckStyle的主要流程是:
    1)對Java文件進行詞法語法分析,生成語法樹。
    2)載入配置文件(checkstyle-metadata.xml以及自定義的配置文件)
    register check事件。
    3)按照深度優先遍歷對語法樹進行解析,按照注冊的事件,在到達某些節點
    ( AST ) 時進行style檢查(AST,A child-Sibling Tree,是語法
    樹中的某個節點,其類型在TokenTypes類中定義。)
    4)我們所說的自定義Style的檢查,就是在第二步設定的。
    這里牽涉到一個叫com.puppycrawl.tools.checkstyle.api.Check 的類,
    我們通常需要重載其中的兩個函數: public int[] getDefaultTokens()
            public void visitToken(DetailAST ast). 這兩個函數的含義為,
    在遍歷語法樹的過程中,每當到達getDefaultTokens函數所返回的AST類型,
    程序就進入visitToken進行具體的檢查和分析,即,真正的分析檢查過程是在
    visitToken中實現的。
    
    1. Hammurapi
         1)定義: Hammurapi它是一個開源的代碼審查/評審(review)工具。它可以幫助改進
    Java代碼的質量。它可以基于一套設計規范來分析代碼庫。當它碰到違反規
    范的地方,會在報告中標識。就像Checkstyle一樣,它與Ant無縫集成并且
    由基于XML配置文件來驅動。
    2)特點:
    1)Hammurapi是用來強制代碼設計規范的。
    2)Hammurapi是一個遵循設計的工具,提供了自動而且一致的方式來實現設計規范,
    因此使代碼評審更加有效而輕松。
    3)Hammurapi如何工作:
             Hammurapi這樣的代碼分析工具都帶有語言分析器。語言分析器是一種輸入
    語言代碼并輸出抽象語法樹的工具。這個樹上的節點代表語言標識。例如,考
    慮一下簡單的算術表達式:3+4. 語言分析器會解析他成為一個如圖5所示的語
    法樹。在這個樹中,節點+代表操作符標識。節點3和4是操作數標識Hammurapi
    使用ANTLR(另一個語言識別工具)作為語言分析器。然而ANTLR API是相當底層的。
    為改善可用性,Hammurapi使用另一個API,基于ANTLR 的JSEL(Java源程序
    工程類庫),來訪問抽象語法樹。 一旦樹構建完成,一種樹遍歷算法就被用來訪
    問樹中每一個節點。每次訪問到一個節點,一種回調機制(Visitor模式)被用來
    提示相應的檢查器。在這些回調方法中,檢查器收集相關的信息來確定是否有違反
    規范的地方存在。  
    
    1. Lint4j
         1)定義:Lint4J是一個針對Java的源代碼分析工具,它可以對Java源碼和字節
    碼進行靜態分析,判斷其中是否存在死鎖、性能問題或者伸縮性問題。
    它可以集成到任何IDE種或構建系統
    2)特點:
    1)檢測代碼語法規則
    2)潛在的bug
    3)檢測編碼模式對代碼可讀性及大小的影響
    4)檢測是否違反EJB規范
    
    1. Sonar
         1)定義:代碼質量管理工具Sonar提供了設計與架構度量。Sonar 2.0引入了
    針對Java應用的設計分析、架構與面向對象的度量,Sonar 2.1可以
    檢測到未使用的方法以及對不建議使用方法的調用。是一個集成了
    CheckStyle,PMD,Findbugs的代碼校驗規則 ,重復代碼發現,
    代碼測試覆蓋率, 代碼注釋率,及所有的檢測率變化追蹤的完美
    代碼質量檢查工具。它包含了代碼質量檢測的七個方面,如下圖
    2)特點:
            1)代碼覆蓋:通過單元測試,將會顯示哪行代碼被選中。
    2)改善編碼規則。
    3)搜尋編碼規則:按照名字,插件,激活級別和類別進行查詢。
    4)項目搜尋:按照項目的名字進行查詢。
    5)對比數據:比較同一張表中的任何測量的趨勢。
    6)單元測試
    3)Sonar2.1:
    Sonar還基于Squid引入了一個全新的規則引擎、Sonar解析器既可以處
    理源代碼,也可以處理字節碼,解析器帶有內建的規則,可以檢測未使用
    的私有與保護方法以及客戶端對不建議使用的方法的調用。
    Squid通過分析應用源代碼、Java API和外部程序庫
    的字節碼來決定哪些方法、類和屬性是不建議使用的。
    Sonar 2.1的新特性:
    1)一個全新的“Libraries”頁面,顯示了項目中所有的程序庫和依賴,該特性要求使用
    Maven來構建項目。
    一旦在Sonar站點的主頁上選擇了一個項目,該服務就會以
    可視化的樹形結構展示出項目依賴。此外,還有一個可選的
    動態過濾器,可以根據名稱過濾程序庫以便在應用的依賴間導航。
    2)用于搜索程序庫使用情況的“Dependencies”頁面。比如說,可以
    搜索到使用了第三方框架如Commons Logging 1.1的所有項目。
    3)可以使用各種插件擴展Sonar的功能。現在有一個全新的
    “System Info”頁面顯示了系統屬性、已裝插件和Java虛擬機內存
    統計信息。該頁面還給出了關于Sonar配置和數據庫統計的詳細信息。
    4)一個用于管理已裝插件和系統信息的管理控制臺。
    最新版的Sonar為這些插件引入了一個測試框架和一個客戶化的Maven
    生命周期管理工具。它還帶有一個用于集成項目事件的
    Web Service并在項目的size widget中增加了一個新的度量模塊。
    
    1. JDepend
         1)JDepend一個開放源代碼的可以用來評價Java程序質量的優秀工具,
    它遍歷Java class的文件目錄,以Java包(package)為
    單位,為每一個包/類自動生成 包的依賴程度,穩定性,可靠度等
    的評價報告,根據這些報告,我們可以得到包或類之間的依賴關
    系,并分析出包的穩定程度,抽象程度,是否存在循環依耐關系等 。
    可以根據JDepend給出的報告數據,分析出我們的包是否是
    可靠的,穩定的,健壯的包,是否符合面向對象的設計原則。
    2)特點:
    1)評價設計質量
    2)翻轉依賴性
    3)支持并行開發和極限編程
    4)獨立的發布模塊
    5)識別package的循環依賴
    3)Depend生成的Java包的質量評價報告主要包括:    
    1)Number of Classes and Interfaces:實現類與抽象接口的數目
    2)Abstractness (A):包的抽象度。指一個包內包含的抽象類或接口
    占整個包中的類的比重。
    3)Afferent Couplings (Ca):向心耦合。依賴該包(包含的類)的外
    部包(類)的數目(i.e. incoming dependencies),該數值越大,
    說明該包的擔當的職責越大,也就越穩定。
    4)Efferent Couplings (Ce):離心耦合。被該包依賴的外部包的數目
    (i.e. outgoing dependencies),該數值越大, 說明該包越不獨
    立(因為依賴了別的包),也越不穩定。
    5)Instability (I):衡量一個包的不穩定程度。I=Ce/(Ce+Ca)。它的值處于
    [0,1]之間。I=0時說明包是最穩定的,反之I=1則說明包極不穩定。
    6)Distance from the Main Sequence (D): 該指標主要用來評價包的抽象
    程度與穩定程度的平衡關系,它可以用二維直線圖 A + I = 1 來表示。
    7)Package Dependency Cycles:包的循環依賴度。
    8.  IBM Checking Tool for Bugs Errors and Mistakes(簡稱BEAM)
    1) 定義:是 IBM 開發的一個靜態分析工具,可以用于分析并查找出 C, C++ 和 Java
    代碼中的一些不容易發現的潛在錯誤,從而達到提高代碼質量的目的。同動態
    分析工具和其它靜態分析工具相比,它擁有一些可貴的特性。
    2)特點:
    1)對代碼進行語法掃描,通過算法對代碼進行檢查分析
    2)和一些 bug 模式進行比較,最終標明問題區域,輸出分析結果
    3)使用了額外的定理證明(theorem proving)技術來判斷一個潛在的錯誤是否
    是真正的錯誤,從而減輕了程序員判斷錯誤真偽所需的工作量
     9. LDRA Testbed  
    1)定義:LDRA Testbed為應用軟件的確認和驗證提供強大的源代碼測試和分析功能,
    是獨特的質量控制工具。 它有助于提高計算機軟件必需的可靠性,健壯性和盡
    可能的零缺陷,它的使用帶來時間、成本和效率上真實的節省,這些都是無法衡
    量其價值的。它是強大和完整的集成工具包,使先進的軟件分析技術應用在開發生
    命周期的關鍵階段。
    2)LDRA Testbed提供強大的分析功能,用于兩個主要的測試領域,靜態分析和動態分析。
    1)靜態分析: 分析代碼,并且提供對代碼結構的理解。
    2)動態分析: 利用源代碼的插裝版本,使用測試數據執行,在運行時發現軟件
    缺陷
    3) 使用LDRA testbed 的好處
    軟件開發和測試過程的成本效率分析工具
    單元、集成和系統測試的理想工具 
    貫穿于軟件開發的整個生命周期
    LDRA Testbed應用于許多不同的領域 
    過程改進
    軟件測試
    軟件維護
    LDRA Testbed的優點:
    改進軟件質量
    定位軟件缺陷
    強制執行工業標準
    減少維護費用40%以上
    減少開發和測試成本75%以上
    通過自動化過程提高員工動力
    10.   Yasca 
    1) 定義:yasca是一個開源靜態代碼分析工具插件框架, 集成流行的多語言靜態分析工
    具如findbugs/pmd/jlint/rats/cppcheck,由于插件本身多樣故可支持java
    c++等語言靜態分析.Yasca是一個用來尋找安全漏洞,在程序的源代碼中檢測代
    碼質量、性能以及一致性的軟件。它集成了其他開源項目,其中包括FindBugs
    PMD ,JLint , Cppcheck ,并掃描某些文件類型,以及自定義掃描書面的
    Yasca 這是一個命令行工具,與報告中生成的HTML , CSV格式, XML的,的
    SQLite ,和其他格式。
    

    posted @ 2011-03-01 17:12 河馬虎 閱讀(2111) | 評論 (1)編輯 收藏

    Servlet 工作原理解析

    Servlet 工作原理解析
    http://www.ibm.com/developerworks/cn/java/j-lo-servlet/

    posted @ 2011-02-26 09:47 河馬虎 閱讀(358) | 評論 (0)編輯 收藏

    JAVA操作WORD EXECEL PDF等文檔

     http://danadler.com/jacob/
      http://jakarta.apache.org/poi/
      http://www.onjava.com/pub/a/onjava/2003/01/22/poi.html
      http://www.csdn.net/develop/article/15/15311.shtm
      http://forum.java.sun.com/thread.jsp?forum=40&thread=382666&tstart=0&trange=15

      Java Excel API 文檔

      http://www.andykhan.com/jexcelapi/

    posted @ 2011-01-07 10:47 河馬虎 閱讀(272) | 評論 (0)編輯 收藏

    界面設計總結

    界面設計時應考慮幾個問題;

    1、界面的布局一定要合理,首先根據應用行業和業務特點,把整個界面切成幾個大塊,每個塊的承擔的功能或者任務一定要明確。

    2、界面的可不配置化,通過界面的可配置化來屏蔽或者啟用一些功能。如果你做的產品或系統被用到同行業的許多項目現場,十幾個或者幾十個項目現場,那么在界面設計時候就一定要考慮到界面的可配置化。作為特定行業產品或者系統一般都實現了行業的核心的共性功能,但多個項目現場會提出自己本地化或者個性化的需求,在只有一個開發團隊維護一個版本情況下,盡量在界面設計的時候,實現界面可配置化,這樣A項目現場的本地化需求就不會擴散到B項目的現場,這樣有效的控制的需求擴散。另外,產品在不同的產品現場銷售或者客戶的時候,通過界面的可配置化來屏蔽非本地化的功能,避免無償將系統功能提供給客戶。

    3、界面客戶配置化,在實現的時候一定要考慮到性能問題,一般為了界面實現可配置,界面是動態生成的,如果界面生成的配置參數放在數據庫,那么在系統參與者很多的情況先,界面生成就會很慢,可以考慮將界面配置參數存放在文件中,
     
    4、對于界面配置參數文件存放位置,界面配置參數文件一般不要放在客戶機上,這樣在客戶端更新的時候,有可能覆蓋了以前的界面配置參數文件,  因此,界面配置參數文件可存放在應用服務器上(例如部署tomcat或者JBOSS服務器上),工程人員或者系統維護人員在系統升級之后,更新該界面配置參數文件, 客戶端在啟動的時候,從應用服務器上統一讀取,這樣保持了各個客戶端的一致性和可配置性。

    5、界面可配置化的程度問題,界面上大塊要可配置、數據項或者指標項也要實現可配置。因為不同的項目現場會對大的功能有不同的要求甚至對數據項也有不同的要求。


    以上界面設計經驗適用于,一個研發團隊開發一個產品部署到各個客戶現場的情況。如果是小的項目或者各個現場本地化要求不多的,則不適用。

    posted @ 2011-01-07 09:51 河馬虎 閱讀(668) | 評論 (0)編輯 收藏

    java 基礎知識

    struts是一個很好的開源項目,它所涉及到的技術在這個頁面基本列出。也是java的基本技術。

    http://struts.apache.org/primer.html

    posted @ 2010-10-20 17:35 河馬虎 閱讀(230) | 評論 (0)編輯 收藏

    java jdk & java api 幫助文檔(中文、英文版)

      java api 幫助文檔 chm 1.5 1.6 中文版英文版. 收藏
    Sun 公司提供的Java API Docs是學習和使用Java語言中最經常使用的參考資料之一。但是長期以來此文檔只有英文版,對于中國地區的Java開發者來說相當的不便。目前Sun 公司正在組織多方力量將此文檔翻譯成中文,并于2005年10月31日在Sun 中國技術社區(http://gceclub.sun.com.cn/)正式發布第一批中文版Java API文檔(包括java.lang和java.util類庫API 文檔的中文版)。經過將近10個月的努力,目前我們已經將Java SE 5.0的全部API文檔中文化。開發人員可以通過Sun 中國技術社區的網站在線瀏覽相關文檔,也可以將全部文檔下載到本地以方便檢索和使用。
    J2SE DK & API下載
    -------------------------
    http://java.sun.com/j2se/1.3/download.html
    http://java.sun.com/j2se/1.4.2/download.html
    http://java.sun.com/javase/downloads/index_jdk5.jsp
    http://java.sun.com/javase/downloads/index.jsp
    J2EE DK & API下載 
    -------------------------
    http://java.sun.com/j2ee/1.3/index.jsp
    http://java.sun.com/j2ee/1.3/download.html
    http://java.sun.com/j2ee/1.4/index.jsp
    http://java.sun.com/j2ee/1.4/download.html
    http://java.sun.com/javaee/downloads/index.jsp
    JDK1.6API中文版(全)
    -------------------------
    * HTML 格式(在線英文) http://java.sun.com/javase/6/docs/
    * HTML 格式(在線中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html/zh_CN/api/index.html
    * zip 格式(中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html_zh_CN.zip
    * CHM 格式(中文)  http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/chm/JDK_API_1_6_zh_CN.CHM

    JDK1.5API中文版(全)
    -------------------------
    * HTML 格式(在線英文) http://java.sun.com/javase/5/docs/
    * HTML 格式(在線中文)  http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html
    * zip 格式(中文) http://gceclub.sun.com.cn/Java_Docs/html_zh_CN.zip
    * CHM 格式(中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/JDK_API_1_5_zh_CN.CHM

    相關網站
    -------------------------
    http://java.sun.com
    http://gceclub.sun.com.cn/
    http://developers.sun.com/downloads/
    http://java.sun.com/javaee/downloads/
    http://java.sun.com/javase/downloads/
    http://www.netbeans.info/downloads/
     

    本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zhsp1029/archive/2008/04/05/2253865.aspx

    posted @ 2010-06-17 08:53 河馬虎 閱讀(11953) | 評論 (1)編輯 收藏

    Java 類加載器

    類加載器(class loader)是 Java™ 中的一個很重要的概念。類加載器負責加載 Java 類的字節代碼到 Java 虛擬機中。

    http://www.ibm.com/developerworks/cn/java/j-lo-classloader/index.html

    posted @ 2010-06-09 17:27 河馬虎 閱讀(277) | 評論 (0)編輯 收藏

    Use Case 中 include 與 extend 的區別

    Use Case 中 include 與 extend 的區別:
    http://wakan.blog.51cto.com/59583/7222



    例如打印用例 就可以提取出來,作為被包含(include)的用例

    通知用戶用例可以作為基礎用例,那么e-mail通知用戶用例或者短信通知用戶用例就是2個擴展(extends)的子用例

     

    posted @ 2010-06-07 15:37 河馬虎 閱讀(779) | 評論 (0)編輯 收藏

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實例詳解

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實例詳解
    http://bolo.blogjava.net/

    posted @ 2010-06-02 17:03 河馬虎 閱讀(272) | 評論 (0)編輯 收藏

    依賴注入DI

    什么是依賴注入
    http://blog.csdn.net/taijianyu/archive/2008/04/28/2338311.aspx


    深度理解依賴注入(Dependence Injection)

    http://www.cnblogs.com/xingyukun/archive/2007/10/20/931331.html


    Inversion of Control Containers and the Dependency Injection pattern
    http://www.martinfowler.com/articles/injection.html



    posted @ 2010-05-27 13:32 河馬虎 閱讀(178) | 評論 (0)編輯 收藏

    J2EE Patterns Catalog

    從J2EE藍圖模式分類http://java.sun.com/blueprints/patterns/catalog.html中就可以很清楚的看到J2EE這樣一個框架軟件的架構與設計模式的關系

    posted @ 2010-04-26 15:31 河馬虎 閱讀(194) | 評論 (0)編輯 收藏

    WLAN中的VLAN劃分方法

    VLAN的好處在于有效地限制了L2的廣播域。對于有線網絡,常見的VLAN劃分方法包括基于交換機端口的劃分、基于MAC地址的劃分、基于L3的IP劃分以及基于802.1x的安全憑證劃分等,這方面的資料比較多,支持的產品也很多,應用很成熟。

    但對于WLAN,該如何劃分VLAN呢?

    WLAN的網絡結構基本單位是BSS。BSS有兩種形態:獨立基礎結構(IBSS,也叫自組網Adhoc)和基礎結構Infrastructure。自組網就是多個站點自發組成一個可以互通的WLAN,而基礎結構模式則以AP為中心,其它站點都先與AP關聯,然后才能與BSS中的其它站點進行通信。以下所提到的BSS僅指基礎結構。

    WLAN中的VLAN劃分必須要有AP的支持。每一個VLAN由一個VLAN ID來標示,因此以什么作為VLAN ID的依據,決定了VLAN在哪個層次劃分。根據VLAN與BSS的關系,WLAN中的VLAN劃分有幾種情況。

    1. 以MAC層依據作為VLAN ID

    一個AP至少可以組建一個BSS,而且不少實際的產品還支持同時虛擬出多個BSS,每個BSS擁有不同的BSSID。對于每個BSS,一些AP產品還可以同時支持多個SSID,不同的SSID共享大部分的BSS配置和Radio接口配置,可以有少部分配置不一樣(比如密鑰)。

    1.1 以SSID或BSSID為劃分依據

    一種容易實現的VLAN劃分方法就是以SSID為劃分依據,每個SSID對應一個VLAN ID。這種劃分依據完全來自于802.11 MAC層的SSID,因此可以完全在AP內部實現。根據AP對多SSID支持情況的不同,具體情況又有所不同。

    1.1.1 AP支持多個BSS,每個BSS又支持多個SSID

    這種情況下按照SSID來劃分VLAN,所有連接到該SSID的站點都屬于同一個VLAN。每個SSID提供給STATION的接入端口均為VLAN的Access端口,是不帶tag的端口。

    由于一個BSS內有多個SSID,因此一個BSS內就會有多個VLAN。由于這些SSID均屬于同一BSS,因此如果位于兩個VLAN內的STATION要通信,只需要經過AP內部的轉發橋接即可。

    1.1.2 AP僅支持一個BSS,每個BSS支持多SSID

    這種情況下按照SSID來劃分VLAN,跟上面的情況類似。

    1.1.3 AP支持多個BSS,每個BSS僅支持一個SSID

    這種情況下SSID與BSSID一一對應,因此根據SSID來劃分VLAN與根據BSSID來劃分是一樣的。這種情況下屬于同一個BSS的站點屬于同一個VLAN,位于兩個VLAN內的STATION要通信,只需要經過AP內部的轉發橋接即可也僅僅需要AP內部的轉發。

    1.1.4 AP僅支持BSS,每個BSS僅支持一個SSID

    這種情況下如果按照SSID或BSSID來劃分VLAN,則整個BSS均屬于同一VLAN。由于不存在多個VLAN,因此不存在VLAN互通的問題。

    可見,如果在同一AP內部劃分不同的VLAN,那么這些VLAN間的互通僅需要AP內部的MAC橋接即可實現,而不需要將數據交到更高層進行轉發或橋接。

    1.2 以MAC地址為劃分依據

    這種情況根據STATION的MAC地址在BSS內劃分VLAN。AP根據從STATION發來的幀中的源地址決定該STATION所屬的VLAN,從而可以保證同一VLAN的互通和不同VLAN的橋接。

    上面的兩種劃分均是以802.11 MAC層的信息作為VLAN ID的劃分依據,因此同一VLAN內部的轉發和不同VLAN之間的橋接均可在AP內部實現,而不需要分發。

    在上面的兩種情況下,在AP內部只需要維護兩張表即可:一張表是VLAN ID與VLAN依據(SSID/BSSID或MAC地址)之間的對應表,另一張表示VLAN ID與VLAN接口之間的對應表。Access端口上的數據收發情況如下:

    進入Access端口的數據:可以不帶tag。如果需要分發到AP外(目的地址不是BSSID且不是任何BSS中的其它站點),則加上tag通過分發接口分發;如果不需要分發到AP外,則有幾種情況:

    DA為BSSID,則由AP接收并處理;
    DA為同一VLAN中的其它STATION,則MAC層轉發;
    DA為不同VLAN,但同一AP中的其它STATION,則執行VLAN之間的橋接協議。
    從Access端口發出的數據:不帶tag,直接發到STATION。

    這種劃分的缺點僅適合于較小的網絡,靈活性較差。比如,無法實現跨AP的VLAN,也就是連接到不同AP的兩個STATION無法劃分到同一個VLAN。

    2. 動態VLAN劃分方式

    動態劃分方式并不由AP來決定VLAN ID,而是由其它更高級的設備來決定。一種方法是由RADIUS服務器來劃分。當一個STATION與AP關聯時,AP中的RADIUS客戶端與RADIUS服務器進行通信,從而得到該STATION所屬的VLAN ID。RADIUS決定STATION服務器所屬VLAN的依據可以是用戶名、IP地址等,因此具有很大的靈活性。當用戶的位置改變后,他所屬的VLAN仍然不變。

    采用動態VLAN方式后,同一個AP的同一個SSID中的兩個STATION可能屬于不同的VLAN,而連接到兩個不同AP中的STATION卻可能屬于同一VLAN。因此這種情況下,要實現同一VLAN中不同STATION之間的互通,需要更高層的轉發和橋接,可能需要經過位于WDS接口或以太網DS接口等接口之上的VLAN trunk、hybrid端口。

     

    本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/rangzh/archive/2008/07/02/2606778.aspx

    posted @ 2010-04-21 14:44 河馬虎 閱讀(2363) | 評論 (0)編輯 收藏

    需求分析--從用例到代碼

    從用例到代碼, 第一部分: 用例分析


    http://www.ibm.com/developerworks/cn/rational/rationaledge/content/mar05/5383/index.html#N1083A

    從用例到代碼,第二部分:用例設計

    http://www.ibm.com/developerworks/cn/rational/rationaledge/content/mar05/5670/

    posted @ 2010-03-30 21:02 河馬虎 閱讀(365) | 評論 (0)編輯 收藏

    需求調研步驟和方法

    參考:http://www.ibm.com/developerworks/cn/java/l-anareq/

    第1章前言

    目的

    需求調研是為需要說明書做前期工作,可以說需要說明書說是從需求調研表中得到或抽取而出。

    需求調研是要了解現實世界中做實際工作的人們真正需要什么樣的程序的過程,再把這些需求開進細節整理由設計部開發,再由銷售部銷售給用戶。

    用戶:系統分析人員





    回頁首


    第2章前期準備

    2.1. 確定工具

    • 沒有什么工具是好還是壞的問題,問題是關鍵是如何使用它們,無論是什么工具也只是一個輔助工具,也不是生成工具。
    • 工具的選取要求是自己(本組)熟悉的工具,不能是一件最新時髦工具而自己對它了解很少,結果大部分時間化在學習工具上,而不是使用它為你工作。
    • 工具最好也是要求是普通流行的,因為要考慮交流的問題。

     

    2.2. 要做什么就要先了解什么

    • 如果做的項目是你所不了解的一個行業(專業)同組有要最好有要專家----最終用戶做為這個專家是最好的,最少你有了解這個專業,不是要你成為專家,但最少要了解一定的專業知識(最少專來詞匯你要知道),不然您甚至不知道去問什么問題或者如何去問他們,甚至于人家在說什么你也不知道。
    • 相應的專業資料是必須的,最少要有專業入門書籍和對應的資料,也需要求更深入的一些資料。當然有專家的參入就另當別論。
    • 如果行業的難度不是很大,可以通入分析人員的自我學習在短時間內了解行業,也許可以不用專家,否則專家是必須的。

     

    2.3. 建立設計環境

    一定建立一個專門的設計環境來為本項目服務,進行一定的資源分配,進行必要的文件管理。

    2.4. 真正了解自己和用戶

    • 那些是用戶可能明確要達到的目地
    • 要知道那些是自己能做到的,那些是自己不能做的。
    • 對于不能做的處理方法,如拒絕,轉包等
    • 那些是用戶想要做到的

     

    2.5. 列出人員分配表和所有工具列表

    • 明確項目人員分工
    • 統一項目所用的工具
    • 統一項目文件模版
    • 其它資源列表(資料,相關網站,資詢電話。。。)

     





    回頁首


    第3章調研過程

    3.1. 搜集需求得到需求說明書

    注意:

    1. 雖然最終必須要編成基于計算機解決方案的描述,但到目前為止,我們關注的焦點的文檔在相應領域方面的部分。
    2. 記住這里沒有計算機方面的行話,如果是編寫一個會計軟件,那么一位會計師都應該清楚地理解程序員寫的會計方面的問題說明書
    3. 需求說明書問題中,不要太正式。只要描述能表達您想要做的事情就行了,就和另外一個人在說話一樣就可以。
    4. 對于客戶或相應人員了解問題時,一定要有記筆記的習慣,談上幾個小時,很多細節是記不住的。

     

    3.2. 整理,檢查和細化需求說明書

    1. 對于客戶的需要進行必要的整理和分類有進從用戶那里會得到很多信息,不行進必要的整理就不能從中進行合理的分析
    2. 分清有用功能、可選功能用、無用功能及不可實現功能對于用戶來講他可以說出他想要的很多功能,但這些功能間的關系有時是清晰的,但對于很多用戶來講想通過計算機或新系統實現他以前沒有的功能,在這時他所提出的新需求的可行性和與其它模塊之間的關系就已經不清,所以對于分析員來講,要從用戶的需求中分清有用功能和無用功能和可選功能,進行分別區分處理,比如不可實現功能請用戶放棄。
    3. 不要忽略明顯的錯誤用戶倒是不經常提及他需要的東西,而這些東西對問題來說都是很基本的,要細化檢查一定有注意這個問題。
    4. 你認為的也許不是對的對于系統分析員對需求分析的自認為的情況要加以注意,對于一個行業來說,有些規則可以不是最合理,但它就是那樣存在和使用,所以對于每一個非明確確定的需求,要由專業人員來審定。除非你就是專家。

     

    3.3. 改進

    最初的第一次需求在分析,細化一定有不明及不確定之處,那么就把整理出一份問題細化問詢表,對發現的問題進行整理,列出不明之處,可根椐以下格式

    問詢人:
                問題:
                業務不清問題列表(業務描述不清):
                1 ….是什么含義?
                2 …..與XX是什么關系?
                多種選擇可以列表(請用戶進行選擇):
                1 ……有多個可能,那么現在我們使用
                A ……   B…….   C……..  D ……

    3.4. 審核需求

    1. 自我審枋
      把自己從用戶的角度來考慮
      是否合理,是否可以提高效率,是否可以達到目的,是否有完整
    2. 由用戶來評價
      由最終用戶來評價你所列的需求是否達到了用戶要求(用戶人數1-3人,再多也沒有什么益處)。
    3. 重復過程,最終通過審核完成需求說明書

     



    參考資料

    • 標準版API 規范,JAVA 2 核心技術和其他方面的信息。


    posted @ 2010-03-30 20:32 河馬虎 閱讀(7996) | 評論 (0)編輯 收藏

    需求調研

    軟件項目需求調研總結 :
    http://blog.csdn.net/success_dream/archive/2007/10/14/1824730.aspx

    軟件項目調研內容分為:項目管理方面調研和業務調研,其中項目管理方面調研包括:項目目標、項目時間、資源、地點、需要協調的事宜等,二:業務調研包括:業務目標、業務范圍、業務流程等,因此每次調研應該分兩部分來整理調研報告。

    posted @ 2010-03-03 11:36 河馬虎 閱讀(160) | 評論 (0)編輯 收藏

    產品設計

    這是一個產品分析和設計不錯的一個網站
     http://www.kuliqiang.com/?p=1345 
     
    http://hi.baidu.com/myey8

    posted @ 2010-01-23 17:22 河馬虎 閱讀(202) | 評論 (0)編輯 收藏

    Robert Eckstein blog


    Robert Eckstein  blog (  mvc)

    http://www.java.net/blog/105271

    posted @ 2010-01-15 11:19 河馬虎 閱讀(232) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲成av人片天堂网老年人| 亚洲色少妇熟女11p| 国产精品免费看久久久无码| 99久久人妻精品免费二区| 一级A毛片免费观看久久精品| 亚洲一区在线免费观看| 亚洲中文字幕在线第六区| 日韩中文无码有码免费视频| 24小时日本韩国高清免费| 又粗又长又爽又长黄免费视频 | 黄页网站在线视频免费| 亚洲五月综合缴情婷婷| 亚洲2022国产成人精品无码区 | 免费激情网站国产高清第一页| 亚洲偷自精品三十六区| 91大神亚洲影视在线| 亚洲一区二区三区在线观看精品中文 | 1000部拍拍拍18勿入免费视频下载 | www.亚洲成在线| 久久久亚洲欧洲日产国码是AV| 亚洲最大激情中文字幕| 亚洲高清视频一视频二视频三| 四虎影院免费视频| 黄色网址免费大全| 免费看又黄又无码的网站| 免费视频成人手机在线观看网址| 国产免费A∨在线播放| 一道本不卡免费视频| 一级午夜免费视频| 一区二区三区免费电影| 乱爱性全过程免费视频| 无码人妻一区二区三区免费视频| 国产精品亚洲AV三区| 老司机午夜在线视频免费| 日本一区二区在线免费观看 | 久热中文字幕在线精品免费| 中文免费观看视频网站| 99在线视频免费观看视频| 在人线av无码免费高潮喷水| 国产在线国偷精品产拍免费| 精品久久久久久久免费人妻|