每日一得

          不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發(fā)
          最近關(guān)心的內(nèi)容:SSH,seam,flex,敏捷,TDD
          本站的官方站點是:顛覆軟件

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks
          key words: 如何做設(shè)計 設(shè)計步驟
          轉(zhuǎn)自robin

          一。需求分析(抽象Use case + 分析Use case之間的關(guān)系)

          分析軟件需求,以用戶的角度來使用軟件,找出發(fā)生的scenerio,抽象成為一個一個Use Case,分析出Use Case之間的關(guān)系,這一步是非常重要的,這一步做好了,設(shè)計就成功了一半。Use Case的抽象有一些可以遵循的原則,這里不詳細(xì)談。

          然后用語言描述每一個Use Case,描述用戶使用一個Use Case發(fā)生的主事件流以及異常流。

          這樣就完成了需求分析階段。

          二。概要設(shè)計(找出實體 + 分析實體類之間的關(guān)系 + 提取控制類 + 畫序列圖)

          接下來做概要設(shè)計,針對每個Use Case,讀Use Case的描述,看事件流,找出所有的實體類,這也有一些可以遵循的原則,例如找出所有的名詞,畫表格排除等等方法。

          然后分析實體類之間的關(guān)系,是包含,聚合還是依賴,是1:1,還是1:n,還是其他....,根據(jù)這些關(guān)系,就可以得出實體類和別的實體類想關(guān)聯(lián)的屬性,然后再找出每個實體類本身重要的屬性。

          然后再次分析Use Case的事件流,一方面check實體類的設(shè)計是否合理,另一方面你可以找出動詞,分析對實體類的控制邏輯,這樣就可以可以設(shè)計出業(yè)務(wù)控制類,一般你可 以一個實體類一個控制類,也可以業(yè)務(wù)邏輯相關(guān)的實體類由一個Facade Session Bean(非EJB含義)來統(tǒng)一控制,這里面的控制類的顆粒度就由你自己來掌握了。一般來說先可以設(shè)計一些細(xì)顆粒度的控制類,然后再按照模塊,用粗粒度封 裝細(xì)顆粒度的控制類,提供給Web層一個Facade。

          然后你可以畫序列圖,就是用序列圖來表達(dá)事件流,在這個過程中,你需要不斷回到類圖,給控制類添加方法,而序列圖就是控制類的方法調(diào)用。

          至此,你已經(jīng)在Rose里面完成了概要設(shè)計,當(dāng)然你不可能一次設(shè)計完善,會有很多次迭代,因此你不能一開始把類設(shè)計的太詳細(xì),只抓住主要的屬性和方法,特別需要注意的是,是抽象的設(shè)計,不要用具體的編程語言來表達(dá)類。

          三。實施(結(jié)合xdoclet和Schema工具自動生成代碼)

          然后你就可以拋開Rose了,轉(zhuǎn)到Eclipse+Togehter里面,根據(jù)那些類,規(guī)劃一下package層次,然后在Together里面進(jìn)行類的詳細(xì)設(shè)計,所有需要的屬性一一寫上,當(dāng)然你還是不可能一下把所有的屬性方法寫全,不過沒有關(guān)系,把重要的寫好就行了。

          然后類框架已經(jīng)生成好了,給所有的實體類加上xdoclet,然后生成hbm,然后用Hibernate的ExportScheme生成DDL,運(yùn)行一遍自動創(chuàng)建好所有的表。這樣所有的實體相關(guān)類全部做好了。

          你現(xiàn)在就集中精力把控制類那些方法里面的代碼填寫上就OK了,在這個過程,你會發(fā)現(xiàn)有些實體類缺屬性,沒有關(guān)系,加上屬性,然后寫好xdoclet,運(yùn)行一遍,自動生成hbm,自動創(chuàng)建好表,然后繼續(xù)寫你的方法,也有可能你發(fā)現(xiàn)控制類缺方法,那么就加上。

          基本上實體類就是getter/setter,和少量的實體相關(guān)方法,所有的控制邏輯都寫在控制類里面。

          最后你的軟件就基本寫好了,用Eclipse生成好一堆你的testCase運(yùn)行測試,反復(fù)修改,除bug。

          看看使用OOAD的設(shè)計思路,是多么的爽的事情阿!你只需要把精力放到Use Case的抽象,實體類的關(guān)系總結(jié),控制類的歸納。而當(dāng)你使用Eclipse+Together之后,你所需要寫的代碼只不過是控制類的方法實現(xiàn)代碼,其 他的都已經(jīng)生成好了。另外可能需要寫少量工具類。


          posted on 2006-09-20 09:02 Alex 閱讀(963) 評論(1)  編輯  收藏 所屬分類: design 、建模

          評論

          # re: [zt]做設(shè)計的步驟 2009-01-02 14:17 it_com
          寫的很好,這其實也是我一直想總結(jié)的東西,就是這樣的了!  回復(fù)  更多評論
            

          主站蜘蛛池模板: 茌平县| 揭西县| 宜兰县| 长泰县| 凤山县| 庐江县| 兴国县| 资兴市| 七台河市| 阜康市| 兰溪市| 双柏县| 广灵县| 洛阳市| 武鸣县| 栾川县| 丰县| 秭归县| 顺昌县| 饶河县| 美姑县| 福泉市| 绥德县| 湘潭县| 鄂州市| 高安市| 海宁市| 开平市| 无锡市| 康乐县| 顺昌县| 通江县| 右玉县| 泾源县| 塔河县| 瑞金市| 南阳市| 富蕴县| 南雄市| 江津市| 营山县|