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

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

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

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Hibernate 的確通過 PersistentEnum 接口提供了對標準化 的支持,這使得我們的域對象實現了一個與 ShippingCompany 對象非常類似的結構。然而,我們可能對將域對象與某個特定的持久化實現過于耦合持保守態度。如果我們計劃長期使用 Hibernate ,這可能并不是一個太大的問題,但是請謹慎考慮這個決策。如果我們使用 ibatis ,那么我們就完全沒那么幸運了;它完全不支持標準化。謝天謝地,如果我們的 ORM 導致過耦合或者完全沒有這方面的支持,還有個解決方案——使用 JDBC

    Spring 的支持,使用 JDBC 變得如此簡單,我們不會再因為它的復雜性而將其的優先級打個折扣。可是,如果我們選擇使用某個特定的 ORM 工具,那么我們就很難用基于 JDBC DAO 實現進行替換了——目前我們就是這樣。當我們同時在一個類中包含了 JDBC hibernate 代碼時,我們就無法使用 Spring 提供的支持。因為我們的 DAO 只能擴展 HibernateDaoSupport JdbcDaoSupport 二者之一。幸運的是,這里有一個優雅的解決方案,它允許我們將 Hibernate JDBC 代碼封裝在同一個類之內,而不會因此失去 Spring 的支持。這個方案的關鍵在于將 JDBC 代碼封裝在內部類中,之后將主體 DAO 的調用委托給這個內部類去完成。代碼清單 11-6 提供了一個示例:

    代碼清單 11-16. 在一個單獨的 DAO 中混合使用 Hibernate JDBC

    package com.apress.prospring.ch11.canonicalization;

    ?

    import org.springframework.jdbc.core.support.JdbcDaoSupport;

    import org.springframework.orm.hibernate.support.HibernateDaoSupport;

    ?

    public class MyDao extends HibernateDaoSupport {

    ?

    ?? private MyJdbcDao innerDao;

    ?

    ?? public MyDao() {

    ????? innerDao = new MyJdbcDao();

    ?? }

    ?

    ?? public void update(MyDomainObject obj) {

    ????? // use Hibernate to persist the data

    ?? }

    ?

    ?? public MyDomainObject getById(int someId) {

    ????? return innerDao.getBy(someId);

    ?? }

    ?

    ?? private static class MyJdbcDao extends JdbcDaoSupport {

    ?

    ????? public MyDomainObject getBy(int someId) {

    ???????? // do some real processing

    ???????? return null;

    ????? }

    ?? }

    }

    ?

    盡管這只是一個簡單的實現,我們也可以從中得到啟發。所有的 JDBC 相關代碼都被轉移到一個內部類中,而此內部類擴展了 JdbcDaoSupport , 所有的 Hibernate 相關功能都留在外部,外部類仍然是 HibernateDaoSupport . 的子類。通過這個類,我們可以使用 Hibernate 完成域對象的持久化,但是我們可以將查詢功能交給嵌入的 JDBC DAO 去完成。

    在我們的應用中有效利用標準化 ,可以通過避免大量無謂對象的創建,從而極大提升內存使用效率。如果我們必須更新標準化對象相關的數據,同時我們在 DAO 中使用了 ORM 框架,那么我們就可以以 ORM 無關的形式引入一些 JDBC 代碼來加入標準化 支持。


    來源:Pro Spring中文版 http://book.csdn.net/bookfiles/48/100481407.shtml

    http://hi.baidu.com/%D3%F4%C3%C6%BB%A8%C9%FA%BD%B4/blog/item/7768d41e8c06ceffe0fe0ba6.html

    posted @ 2009-12-18 16:51 leekiang 閱讀(997) | 評論 (0)編輯 收藏

    “Hibernate與JDBC(iBATIS)??都使用 DataSourceTransactionManager 同樣可以保證事務
    原理就是保證了 connection 的唯一性。
    jdbc我是調spring的jdbcTemplate來操作,
    經過測試。在同一個數據源的情況下直接使用Hibernate的TxManager可以同步事務,問題解決。

    Rod Johnson的話:
    引用
    It is possible--and sometimes useful--to have coordinated transactions for both. Your JDBC transactions will be managed by the HibernateTransactionManager if you work with the same JDBC DataSource in the same transaction. That is, create the SessionFactory using Spring's SessionFactoryBean using the same DataSource that your JdbcTemplates use.

    The only issue to watch, of course, is that you may be invalidating your Hibernate cache by JDBC changes. Generally I find it best to use JDBC to update only tables that don't have Hibernate mappings.

    Juergen Hoeller的話:
    引用
    As Rod said, simply keep using HibernateTransactionManager, which auto-detects the DataSource used by Hibernate and seamlessly exposes Hibernate transactions as JDBC transactions for that DataSource. JDBC code that accesses the same DataSource via Spring will automatically participate in such transactions.

    Note that you must specify the DataSource for Hibernate via LocalSessionFactoryBean's "dataSource" property to allow HibernateTransactionManager to auto-detect it. Alternatively, you can explicitly pass the DataSource to HibernateTransactionManager's "dataSource" property.
    http://www.fireflow.org/redirect.php?tid=498

    Rod Johnson在spring 論壇中有一句話很好的總結了如何在測試中處理hibernate緩存:
    Remember that you can clear the Hibernate session, removing objects already associated with it. This is often necessary before requerying in tests, and solves most (if not all) problems.
    I typically use JDBC for verification. The pattern is
    - do Hibernate operation
    - flush Hibernate session
    - issue JDBC query to verify results
    That way I'm verifying what Hibernate did to the database in the same transaction.

    posted @ 2009-12-11 00:14 leekiang 閱讀(1014) | 評論 (0)編輯 收藏

    <jsp:include page=""/> 運行時插入 <%@ include file="" %> 編譯時插入
    這樣后者引入的jap里的java變量可以在include標記后面使用。
    見http://www.tkk7.com/Unmi/archive/2007/08/10/135913.html

    posted @ 2009-12-03 22:07 leekiang 閱讀(350) | 評論 (0)編輯 收藏

    1,基本用法
    http://blog.163.com/fxf_java/blog/static/59268637200822833715185/
    2,JdbcTemplate的連接
    http://www.javaeye.com/topic/89845
    http://forum.springsource.org/showthread.php?t=63444
    3,ConnectionCallback
    http://blog.csdn.net/lin49940/archive/2009/10/22/4712883.aspx

    public interface ConnectionCallback

    Generic callback interface for code that operates on a JDBC Connection. Allows to execute any number of operations on a single Connection, using any type and number of Statements.

    This is particularly useful for delegating to existing data access code that expects a Connection to work on and throws SQLException. For newly written code, it is strongly recommended to use JdbcTemplate's more specific operations, for example a query or updat variant.

    doInConnection

    ObjectdoInConnection(Connection?con)
    throws SQLException,
    DataAccessException
    Gets called by JdbcTemplate.execute with an active JDBC Connection. Does not need to care about activating or closing the Connection, or handling transactions.

    If called without a thread-bound JDBC transaction (initiated by DataSourceTransactionManager), the code will simply get executed on the JDBC connection with its transactional semantics. If JdbcTemplate is configured to use a JTA-aware DataSource, the JDBC Connection and thus the callback code will be transactional if a JTA transaction is active.

    Allows for returning a result object created within the callback, i.e. a domain object or a collection of domain objects. Note that there's special support for single step actions: see JdbcTemplate.queryForObject etc. A thrown RuntimeException is treated as application exception: it gets propagated to the caller of the template.

    Parameters:
    con - active JDBC Connection
    Returns:
    a result object, or null if none
    Throws:
    SQLException - if thrown by a JDBC method, to be auto-converted to a DataAccessException by a SQLExceptionTranslator
    DataAccessException - in case of custom exceptions
    See Also:
    JdbcTemplate.queryForObject(String, Class), JdbcTemplate.queryForRowSet(String)


    2,

    posted @ 2009-11-30 04:46 leekiang 閱讀(1502) | 評論 (0)編輯 收藏

    NetReptile推薦?[2005-2-1]
    出處:來自網上
    作者:truely,bylsfboy等
    ?

    truely眼中的設計定義:設計的過程就是將事務處理抽象成計算機模型的過程。
    1. 首先要明白設計遠比編程重要。
    2. 平時注重訓練自己的思維嚴謹性和從全局考慮問題的能力。建立冷靜思考問題的處事態度。
    3. 設計時(尤其是數據庫設計時)不要完全被規矩約束,設計好比作詩,懂得韻律是對的,但完全被韻 律所束縛,就作不出好詩了。
    4. 多做設計,經常總結自己的不足之處和成功之處,向他人請教。
    5. 專門去找別人設計的漏洞和不足,也是提高自己設計水平的重要手段。
    (記住:這個好方法不要順便外傳,自己知道就行了,嘻嘻-:)
    6. 經驗是重要的,但如果觀念老化而不善于總結提高,所謂的經驗就成為束縛自己進步的枷鎖。
    7. 學好數學特別是理論數學如數學分析、運籌學、數學模型等。多玩策略性經營游戲也是有益的。推薦 《帝國時代》和《模擬首都3000》以及《大富翁4》。(但不要沉陷在里面)
    8. 根據項目情況和開發平臺工具的特點確定最佳的設計方法。模塊化設計方法和面向對象設計。兩種設 計方法的結合使用。
    9. 將復雜無序的過程用模塊化的方法進行分解,但要注重事務間的聯系,并且用開放的眼光去設計。
    10. 設計時對嚴謹性、靈活性、開發效率、客戶要求四個方面做衡量取舍。
    11. 設計時還要根據整個工程的進度安排和客戶對軟件的要求而決定是否設計得足夠靈活和嚴謹。
    12. 復雜而無條理是最糟的設計,簡單實用并不一定是最好的,但一定不是最壞的。(不要說我偷懶喲)
    13. 訓練自己良好的表達能力,能用清晰明確而且簡單的描述表達出自己的基本思路。
    14. 在一個項目中建立統一的系統分析模式和文檔模板,同時,一個項目中必須至少有一個人對整個系統 設計進行檢查和進行全局的考慮。


    再談如何成為一個好的系統分析員?

    bylsfboy

    系統分析員基本功:

    好的系統分析員都是從優秀的程序員中產生的,堅實的編程功底、豐富的經驗是今后做系統分析的基礎。
    沒有對系統本身進行過透徹剖析過,很難領會到其中一些難以言述的精華。但并不等于好的程序員就能夠 成為好的系統分析員。

    合 理的知識結構。語言能力、文字表達能力、技術的全面性等是對系統分析員的基本要求。比如說c/s和3 層開發,如果僅僅對netscape公司的產品熟悉還不夠,還需要了解比如微軟等產品,并且要了解他們中產 生歷史,發展思路,技術優劣,以應付各種窮追猛打的提問。但更重要的是,這是你為應用定制技術要求 的前提。

    系統分析員思想:

    全 局觀念是系統分析員必須具備的觀念。如果系統分析員設計時太注重細節,往往會陷入在某個問題上糾 纏不清的泥潭。(93年,我論文指導老師的一席話影響了我隨后幾年對軟件開發的理解----今后計算機會 越來越快,多寫幾行代碼少寫代碼無關緊要,最重要的是整體;一開始就錯了,某個部份編得再好,也是 沒有用的)

    任務難度的預測能力

    系 統分析員要具備快速的任務難度預測能力以及具備快速確定開發小組人員構成和任務劃分的能力。(我 將這條歸為思想,而不是能力)昆蟲自然會長出翅膀,而思想卻需要長期的浸潤。要做到這點,需要大量 的思考、學習。設計遠比編程重要。當今軟件業的發展,各種開發工具的出現,編程已經不是什么問題, 程序員的工作某種程度上講是將別人現成的東西拼湊堆砌起來。系統分析員要清楚的認識到,現在大多數 程序員沒有學會怎么去整體的了解一個系統,有些甚至不了解編程(這不是說他們不會寫代碼)。可視化 的開發工具加五花八門的控件,程序員可以偷點懶了。(這可不是夸大,我好幾年的管理工作,接觸過大 量的程序員)基于技術,跳出框架。基于現有技術結合用戶需求思考問題,設計時跳出框架。

    系統分析員思想:

    系統分析 員要有面向用戶的思想。系統分析員應當有能力將自己扮演成用戶,來了解要交付的項目看起來 想什么樣式,感覺想什么,從而了解用戶的想法并挑選出合理部份去開發。從這個意義上說,系統分析員 才能獲得有意義的見解去引導他的開發組成員。系統分析員頭腦中要對項目結局有一個清楚的認識,并保 證項目不偏離方向。系統分析員要有根植于技術,高于技術思考問題的思想。純粹的程序員通常對最終結 果考慮的不是很多,當一種新的技術在市場上出現時,他們對能否按時交付的考慮就比較少,而強烈希望 他們的計劃能夠建立在新的技術之上。因此,系統分析員的想法和行動要象一個用戶,又要能夠站在技術 的高度,成為真正的用戶、程序員之間的代言人。

    系統分析員的關鍵

    獲得信任。系統分析員最重要的素質是獲得信任,這是成為優秀系統分析員的關鍵。成熟最為關鍵。成熟 可以為整個項目組提供正確的支持,能夠理解技術怎樣才能解決用戶的需求。

    系統分析員的準備工作

    統 一的各種文檔模式,這其中包括今后軟件變量、字段命名規則。我推薦用pb制定的規則做基礎,通過改 造成為適合自身實用的標準。統一的文檔管理。統一的分析軟件。比如說rose(uml太規范,國內的軟件 管理水平根本用不上,只不過盡量應用,你自己對系統分析的理解有好處) 方法是思想的放映,在具體方法上就不多說了。我托人從u$a弄到幾本書,用于面向對象系統開發的使 用》、《面向對象的分析》、《項目管理》等都是很不錯的,推薦大家看看。

    我在拙作"在中國沒有人懂計算機"里發了點牢騷,聽說挨了部份人(習慣性的)罵。其實,bbs本來就是 發泄的地方,在這里從來就罕有有內容的文章。

    自 從"維納斯"登陸深圳后,大家更著眼于從宏觀看中國的it業了。中國it這棵小樹,說實在的,長到今天 實在是不容易。一些人提出了"反對微軟霸權"的口號,不少人呼喚中國"硅谷"的出現。微軟的成功不是技 術的成功,更多的是商業運作的成功。中國it這棵樹能長多高,取決于他所植根于的土壤。而現在的事實是,這片土壤實在是太貧瘠了!如果按我們現在的思路和 搞法,是長不成大樹,更別指望能結出"微 軟","硅谷"這樣豐碩的果實。如果說,我們的軟件技術落后美國十年,我們的硬件制造技術則落后美國 二十年,我們的管理水平落后美國至少三十年。而最終決定發展速率的恰恰是我們的死穴──低劣的管理 水平。低劣的管理水平的形成的原因有著深厚的背景和多方面的原因。

    系統分析工作是解決一個問題的工作,目標是將一個對計算機應用系統的需求轉化成實際的物理實現,其中 復雜就復雜在實際的面太多.在系統分析過程之中注意問以下的問題,可能會所進行的系統分析設計工作有 幫助.

    1)您所完成的系統目的是什么?注意不是功能要求,而是目的.也就是為什么要建設、為什么要現代建設。

    2)您所完成的系統有哪些方面參與,各方面的初衷是什么?那些人可能在系統建設中起重要作用,他們 會采取什么樣的態度?你對他們有多少影響力?

    3)您的系統是否有一個明確的評價標準?最好從參與的各方面都進行考慮。

    4)你的系統設計思想是什么?是否能夠得到各方面的認可。

    5)你對參與系統設計開發的人員了解嗎?他們的特長在哪里,是否愿意與你合作,為什么?你對他們有 足夠的影響力嗎?

    6)你的系統開發計劃是否完善?你的計劃表有明確的階段嗎?任何一階段都應該怎樣完成?如何對這一 階段完成的情況進行評價?

    7)你對所采用的系統開發方法以及工具是否熟悉?你的夥伴是否熟悉?

    8)你所完成的系統是否有原型?計算機的或者物理的。

    以上的幾個問題都是在系統分析以及系統規劃時涉及到的,供各位參考。

    系統分析工作是解決一個問題的工作,目標是將一個對計算機應用系統的需求轉化成實際的物理實現,其中 復雜就復雜在實際的面太多.在系統分析過程之中注意問以下的問題,可能會所進行的系統分析設計工作有幫助

    1)您所完成的系統目的是什么?注意不是功能要求,而是目的.也就是為什么要建設、為什么要現代建設。在考慮系統目的時,我更多的側重于系統的最終目標考慮,因為一個系統不可能一下子完美,為系統留些 余地。

    2) 您所完成的系統有哪些方面參與,各方面的初衷是什么?那些人可能在系統建設中起重要作用,他們 會采取什么樣的態度?你對他們有多少影響力?中國it行業的失敗之一就是人"太年輕",一定要有領導的 支持,否則完蛋。不要認為自己對他們會有多少影響力,即便有,也要盡可能的認為是決策者再影響他 們。在中國,一個技術員,你算老幾?說到這里我很悲哀。哪些人在系統中起重要作用并弄清楚他們的態 度,這點十分關鍵。

    3)您的系統是否有一個明確的評價標準?最好從參與的各方面都進行考慮。不知道這樣說對不對,在系 統建設之前,對你的程序員、對你的領導要有至少不同的兩種評價。

    4)你的系統設計思想是什么?是否能夠得到各方面的認可。如果高明,對領導、對程序員都采用引導, 得到認可的最好辦法,就是讓他們認可他們自己的想法。(我力圖這樣做,但做得不好,系統分析員有一 點要學會韜光養晦,忍)

    5)你對參與系統設計開發的人員了解嗎?他們的特長在哪里,是否愿意與你合作,為什么?你對他們有 足夠的影響力嗎?軟件發展到一定的程度,不是編程,不是數學,而是管理。

    6)你的系統開發計劃是否完善?你的計劃表有明確的階段嗎?任何一階段都應該怎樣完成?如何對這一 階段完成的情況進行評價?

    7) 你對所采用的系統開發方法以及工具是否熟悉?你的夥伴是否熟悉?事實上,不是每種好的工具都要 使用,也并不一定都要他們熟練掌握。提醒諸位一句,當你將方案做得可以不依賴某個程序員,你在程序 員面前就無信任可言,因為從此程序員將受到更大的生存壓力。我堅決不在公司使用rose。

    8)你所完成的系統是否有原型?計算機的或者物理的。

    以上的幾個問題都是在系統分析以及系統規劃時涉及到的,供各位參考。

    這文章很好,我的話是:"需求分析實際應該是問題分析"。含義是系統要解決的是問題。而不是用戶提出 的需求。經常發現系統完成后,客戶說"我的問題還沒有解決"。可是,需求分析稿上的目標都搞定了。

    既然是問題分析,所以,熟悉目標系統的知識就是必要的。甚至,可以說,一個好的系統分析員也應該是 好的業務專家。

    我 很高興在這里遇到許多分析高手,可以交流分析中的問題。我贊同從來的觀點。在中國作分析重要的是 人氣,因為中國的企業級信息系統的建設在很大程度上可以說并非確有需求,而是迫于某種壓力。用戶在 很多時候考慮的不是系統的長遠發展,而只是短期的成果,要求開發單位在很短的時間內完成一個很大的 系統的開發,沒有時間對系統進行周密的分析,在這種情況下,很多開發商就會粗分析,粗設計,盡快進 入編碼階段,這樣的系統的生命周期肯定不會很長。說了這么多,只是想說,系統分析員確實應是業務和 管理專家,并且需要有很好的語言組織能力,他需要根據問題域中存在的問題去盡力說服用戶,引導用戶 需求,畢竟,我們是專家,如果讓用戶牽著鼻子走,系統不會是成功的系統。(當然了,這要建立在用戶 是可引導的前提下)本人拙見。

    在理解和分析用戶的需求時,應說服用戶明白:建立計算機應用系統并不是簡單地用計算機代替手工勞
    作,它更應該是管理思想的一次革命,是現用戶模式的一次升華和提高。如果系統不能高于現實,開發的系統將長期陷入需求的反復修改,其軟件的生命周期也短了。

    針對我對您的問題的理解,試著作如下一般性/理論性的回復:

    需求分析(您可以采用usecasedriven的方法進行需求分析)在明確需求分析的基礎上,確定需要采用的系統分析方法(結構化/面向對象/構件式)應用您的開發團隊所確定采用的分析/設計方法,進行系統分析.根據您所采用的分析方法,依次或反復進行系統設計/建模.

    http://www.sawin.cn/doc/SA/SATech/NetReptile14.htm

    posted @ 2009-11-26 23:59 leekiang 閱讀(305) | 評論 (0)編輯 收藏

    作者:一詳
    來源:http://go5.163.com/?

    軟件開發需要綜合考慮系統模型,環境因素,軟件工程,網絡連接,用戶界面,數據流和網絡。?

    開發即為寫程序且寫到非常熟練嗎?程序設計也許是永遠的基本技能和高度藝術,但今后決不是開發者的主業。?

    真正需要的乃是搭積木式的系統構筑和維護,故必須對各個積木塊進行深入了解。作為一個程序員不算是最辛苦,最辛苦的是系統分析員。最辛苦的不是設計和搭出 多少個系統,而是登山不止的知識獲取和吸收。學習和研究已成為當今開發人員最為堅苦的一項工作, 系統的概念也已深如人心!?

    這世界變化得真快,當我還在埋頭查閱 NT4.0巨大的文檔時,身旁有人很是令我心驚地說了一句," 別折騰了,留點兒體力給 NT5.0 吧 !"

    老實說,每當面對這樣的現實,我總是有一種氣喘吁吁的感覺。自從我開始接觸計算機,仿佛每一天都在不停地奔跑,都在賣力地追趕。但結果總是會落后,在我還沒有完全從?? 找回感覺時,我在網上又發現了??的蹤跡,頓時,我感覺自己沒希望了。?

    開發是一種思路,利用別人的成果才是最高的境界,在設計時應盡量多找一些已有的核心代碼。在開發中積累的應該是對問題之分析能力,對出錯情況之診斷能力, 對結構之設計能力, 而不僅僅是編寫代碼的能力。 打好基礎,計算機課程設置的都是基礎課。學習其他技術的基礎沒有過時不過時之說,現在一些新技術往往華而不實,不能告訴你本質的東西,對大家不會有質的提 高。?

    一味講用工具,頂多叫程序員,IT許多行業需要理解和融會貫通的理論及技術。開發工具只是輔助性的,掌握開發的思想和理論精華才是一名程序員向高層次發展的真正任務,否則只有一輩子當代碼工人了! 說系統分析員編程弱恐怕有失偏頗。>?

    可以說大多數好的系統分析員都是從優秀的程序成長起來的。很難想象一個對編程不甚了解的人可以劃分好模塊,更不要說較準確的估計出工作量和工作進度的了, 可以說系統分析是建立在程序編寫上的一種學問。也 可以說是一種宏編程。我想我們不應該把做軟工和做程序員對立起來。任何事物在不同的階段都有它的表現形式。同樣一個人,開始工作的一年他是程序員,一年后 他就是系統分析員了。干的活其實差別不大,只是把注意力和精力從細節轉移到宏觀上罷了。 我老是有一種比較天真的想法,那就是:軟件工程是需要創造性思維的。?

    換句話說,好的軟件絕不僅僅是漂亮的代碼。不論從純計算機技術角度來說, 還是其他的角度也好,沒有過人的想法都是不行的。寫程序不應該只考慮到: 一段代碼如何。思路寬廣 是一個相當重要的素質。 但是,編程編得多了,往往會自己閉塞自己的思路,把自己限制在一個比較狹小的范圍內。系統分析員也許寫代碼根本就很弱,但是思路寬廣,統籌全局的能力一定 要有,一定要看到很多程序員考慮不到的地方。因為,用戶在意的往往不是某些程序員孜孜以求的東西。比如,某個Button放的位置不好, 經常比較緩慢的執行速度等等會更令用戶不滿。
    http://www.sawin.cn/doc/SA/SATech/sp2sa.htm

    posted @ 2009-11-26 23:56 leekiang 閱讀(294) | 評論 (0)編輯 收藏

    出處:Java夜無眠
    作者:蔡學鏞

    1、系統分析是什么?

      系統分析工作是解決一個問題的工作,目標是將一個對計算機應用系統的需求轉化成實際的物理實現,其中復雜就復雜在實際的面太多.在系統分析過程之中注意問以下的問題,可能會所進行的系統分析設計工作有幫助。
      
      1)您所完成的系統目的是什么?注意不是功能要求,而是目的.也就是為什么要建設、為什么要現代建設。

      2)您所完成的系統有哪些方面參與,各方面的初衷是什么?那些人可能在系統建設中起重要作用,他們會采取什么樣的態度?你對他們有多少影響力?

      3)您的系統是否有一個明確的評價標準?最好從參與的各方面都進行考慮。

      4)你的系統設計思想是什么?是否能夠得到各方面的認可。

      5)你對參與系統設計開發的人員了解嗎?他們的特長在哪里,是否愿意與你合作,為什么?你對他們有足夠的影響力嗎?

      6)你的系統開發計劃是否完善?你的計劃表有明確的階段嗎?任何一階段都應該怎樣完成?如何對這一階段完成的情況進行評價?

      7)你對所采用的系統開發方法以及工具是否熟悉?你的伙伴是否熟悉?

      8)你所完成的系統是否有原型?計算機的或者物理的。

      以上的幾個問題都是在系統分析以及系統規劃時涉及到的,供各位參考。

      “需求分析實際應該是問題分析”。我們的軟件系統要解決的是問題。而不是用戶提出的需求。經常發現系統完成后,客戶說“我的問題還沒有解決“。可是,需求分析稿上的目標都搞定了。

      既然是問題分析,所以,熟悉目標系統的知識就是必要的。甚至,可以說,一個好的系統分析員也應該是好的業務專家。

      在中國作分析重要的是人氣,因為中國的企業級信息系統的建設在很大程度上可以說并非確有需求,而是迫于某種壓力。用戶在很多時候考 慮的不是系統的長遠發展,而只是短期的成果,要求開發單位在很短的時間內完成一個很大的系統的開發,沒有時間對系統進行周密的分析,在這種情況下,很多開 發商就會粗分析,粗設計,盡快進入編碼階段,這樣的系統的生命周期肯定不會很長。說了這么多,只是想說,系統分析員確實應是業務和管理專家,并且需要有很 好的語言組織能力,他需要根據問題域中存在的問題去盡力說服用戶,引導用戶需求,畢竟,我們是專家,如果讓用戶牽著鼻子走,系統不會是成功的系統。(當然 了,這要建立在用戶是可引導的前提下)

     2、基本素質

      a、系統分析員基本功

      好的系統分析員都是從優秀的程序員中產生的,堅實的編程功底、豐富的經驗是今后做系統分析的基礎。

      沒有對系統本身進行過透徹剖析過,很難領會到其中一些難以言述的精華。但并不等于好的程序員就能夠成為好的系統分析員。

      合理的知識結構。語言能力、文字表達能力、技術的全面性等是對系統分析員的基本要求。比如說c/s和3層開發,如果僅僅對 netscape公司的產品熟悉還不夠,還需要了解比如微軟等產品,并且要了解他們中產生歷史,發展思路,技術優劣,以應付各種窮追猛打的提問。但更重要 的是,這是你為應用定制技術要求的前提。
    ?
      b、任務難度的預測能力

      系統分析員要具備快速的任務難度預測能力以及具備快速確定開發小組人員構成和任務劃分的能力。(我將這條歸為思想,而不是能力)昆 蟲自然會長出翅膀,而思想卻需要長期的浸潤。要做到這點,需要大量的思考、學習。設計遠比編程重要。當今軟件業的發展,各種開發工具的出現,編程已經不是 什么問題,

      程序員的工作某種程度上講是將別人現成的東西拼湊堆砌起來。系統分析員要清楚的認識到,現在大多數程序員沒有學會怎么去整體的了解 一個系統,有些甚至不了解編程(這不是說他們不會寫代碼)。可視化的開發工具加五花八門的控件,程序員可以偷點懶了。(這可不是夸大,我好幾年的管理工 作,接觸過大量的程序員)基于技術,跳出框架。基于現有技術結合用戶需求思考問題,設計時跳出框架。?

      c、系統分析員思想

      系統分析員要有面向用戶的思想。系統分析員應當有能力將自己扮演成用戶,來了解要交付的項目看起來想什么樣式,感覺想什么,從而了 解用戶的想法并挑選出合理部份去開發。從這個意義上說,系統分析員才能獲得有意義的見解去引導他的開發組成員。系統分析員頭腦中要對項目結局有一個清楚的 認識,并保證項目不偏離方向。系統分析員要有根植于技術,高于技術思考問題的思想。純粹的程序員通常對最終結果考慮的不是很多,當一種新的技術在市場上出 現時,他們對能否按時交付的考慮就比較少,而強烈希望他們的計劃能夠建立在新的技術之上。因此,系統分析員的想法和行動要象一個用戶,又要能夠站在技術的 高度,成為真正的用戶、程序員之間的代言人。
    ??
      d、系統分析員的關鍵

      獲得信任。系統分析員最重要的素質是獲得信任,這是成為優秀系統分析員的關鍵。成熟最為關鍵。成熟可以為整個項目組提供正確的支持,能夠理解技術怎樣才能解決用戶的需求。

    3、葵花寶典

      設計的過程就是將事務處理抽象成計算機模型的過程

      1. 首先要明白設計遠比編程重要。

      2. 平時注重訓練自己的思維嚴謹性和從全局考慮問題的能力。建立冷靜思考問題的處事態度。

      3. 設計時(尤其是數據庫設計時)不要完全被規矩約束,設計好比作詩,懂得韻律是對的,但完全被韻律所束縛,就作不出好詩了。

      4. 多做設計,經常總結自己的不足之處和成功之處,向他人請教。

      5. 專門去找別人設計的漏洞和不足,也是提高自己設計水平的重要手段。

      6. 經驗是重要的,但如果觀念老化而不善于總結提高,所謂的經驗就成為束縛自己進步的枷鎖。

      7. 學好數學特別是理論數學如數學分析、運籌學、數學模型等。多玩策略性經營游戲也是有益的。推薦《帝國時代》和《模擬首都3000》以及《大富翁》。(但不要沉陷在里面)

      8. 根據項目情況和開發平臺工具的特點確定最佳的設計方法。模塊化設計方法和面向對象設計。兩種設計方法的結合使用。

      9. 將復雜無序的過程用模塊化的方法進行分解,但要注重事務間的聯系,并且用開放的眼光去設計。

      10. 設計時對嚴謹性、靈活性、開發效率、客戶要求四個方面做衡量取舍。

      11. 設計時還要根據整個工程的進度安排和客戶對軟件的要求而決定是否設計得足夠靈活和嚴謹。

      12. 復雜而無條理是最糟的設計,簡單實用并不一定是最好的,但一定不是最壞的。

      13. 訓練自己良好的表達能力,能用清晰明確而且簡單的描述表達出自己的基本思路。

      14. 在一個項目中建立統一的系統分析模式和文檔模板,這其中包括今后軟件變量、字段命名規則等。同時,一個項目中必須至少有一個人對整個系統設計進行檢查和進行全局的考慮。

    http://www.sawin.cn/doc/SA/SATech/blueski1178.htm

    posted @ 2009-11-26 23:52 leekiang 閱讀(273) | 評論 (0)編輯 收藏

    1,OS_WFENTRY表其實放的是流程實例.就三個字段,ID是實例ID,主鍵;name是流程名;state表示流程的內置狀態。CREATED = 0;ACTIVATED = 1;SUSPENDED = 2;KILLED = 3;COMPLETED = 4;UNKNOWN = -1

    2,OS_PROPERTYENTRY(GLOBAL_KEY, ITEM_KEY聯合主鍵)存儲propertyset的值。
    GLOBAL_KEY這個值是在JDBCWorkflowStore類的public PropertySet getPropertySet(long entryId) {
       HashMap args = new HashMap(1);
       args.put("globalKey", "osff_" + entryId);
       return PropertySetManager.getInstance("jdbc", args);
      }賦值的。
      規則如上面代碼。Osff+entryid。
      ITEM_KEY即在每一個entry的Key值,propertyset(“即為key”,……
    詳見osworkflow 自帶表結構分析

    posted @ 2009-11-17 18:48 leekiang 閱讀(286) | 評論 (0)編輯 收藏

    使用ORACLE數據庫的游標錯誤( maximum open cursors exceeded )
    最近開發第一次遇到“ maximum open cursors exceeded”這個錯誤。表示已經達到一個進程打開的最大游標數
    游標:當返回一個含有多條記錄的結果集時,游標就像指向結果集中當前記錄的指針,通過游標我們可以處理結果集中的每一條記錄。
    對于出現ORA-01000 maximum open cursors exceeded錯誤這種情況,單純的加大open_cursors并不是好辦法,那只是治標不治本。實際上,代碼中的隱患并沒有解除。 而且,絕大部分情況下,open_cursors只需要設置一個比較小的值,就足夠使用了,除非有非常特別的要求。

    從網上查了一下這個錯誤的原因,主要還是代碼問題引起的。

    這樣的錯誤很容易出現在Java代碼中的主要原因是:Java代碼在執行 conn.createStatement()和conn.prepareStatement()的時候,實際上都是相當于在數據庫中打開了一個 cursor。尤其是,如果你的createStatement和prepareStatement是在一個循環里面的話,就會非常容易出現這個問題。因為游標一直在不停的打開,而且沒有關閉。

    一般來說,我們在寫Java代碼的時候,createStatement和prepareStatement都應該要放在循環外面,而且使用了這 些Statment后,及時關閉。最好是在執行了一次executeQuery、executeUpdate等之后,如果不需要使用結果集 (ResultSet)的數據,就馬上將Statment關閉。

    我就是在循環里調用con.prepareStatement(sql)導致的這個錯誤。
    修改方法,
    在遍歷完ResutSet后關閉rs和stmt就可以了。

    轉自http://ltc603.javaeye.com/blog/71540


    一般來說是游標不夠用了。
    只需在initSID.ora文件中加上一行
    open_cursors = ****
    但是,很可能是由于你的程序或數據庫的結構存在著一些潛伏的問題,如jlandzpa所說,沒有關閉游標等。

    我的程序有一陣一直在報這個錯誤,把OPEN_CURSOR加大到了300甚至1000還在出錯,后來發現是表的STORAGE設置有問題。

    建議你查一下自己的程序。
    昨天說的有些錯誤,應該是physical_attributes_clause語句。

    我們系統的數據量比較大,近200張表,有些表一天要插入1000000條左右的數據。

    表是使用ER/STDIO設計的,然后直接生成建表的腳本,由于沒有設置physical_attributes_clause語

    句中的建表參數,因此使用了默認的參數。好像是INITIAL 10K NEXT 10K PCTFREE 20 PCTUSED 50

    由于表的存儲空間太小,在很短的時間內就會裝滿,因此ORACLE就需要不停為30多張表(數據量較大的)申請空間。于是在程序運行了一段時間后,開始出現ORA-01000: maximum open cursors exceeded的錯誤。 我將游標大小改到了300,還是出現錯誤,改到1000以后開始出現了ORA-01001:invalid cursors。再怎么加大open_cursors的數量都無濟于事。

    使用select * from v$open_cursors查詢,發現有幾百條的INSERT語句游標沒有釋放。

    開始懷疑是程序調用的問題,仔細檢查程序沒有發現問題。但是發現對某張表進行TRUNCATE操作后,對此表進行插入的游標全部釋放,于是開始懷疑是表結構本身的問題。

    重新設置了建表參數,將數據量最大的表的INITIAL和NEXT均設置為50M。

    至今未再出現同樣的錯誤。

    再次提問ORA-01000: maximum open cursors exceeded問題

    這個問題yangtingkun講的非常詳細,使我茅塞頓開,但我還有一些問題向諸位高人請教。
    我這里出的問題也是ORA-01000: maximum open cursors exceeded ,我將游標數由300提高到500仍然不能解決這個問題。看了這篇帖子我非常高興,但有一些問題不明白。
    我使用了select * from v$open_cursor進行查詢后看不出來哪些游標未被釋放。一共有近4000條記錄,hash_value字段象特殊點,值從幾萬到幾百萬都有,請問怎樣判定哪些游標未被釋放,有多少。
    另外請教一下,怎樣重新設置了建表參數,能指點一下所需命令嗎。數據庫里表數量極大,怎樣找到數據量最大的表啊。
    我是菜鳥,請不要見笑。不吝賜教。

    首先通過v$open_cursor中的SQL_TEXT字段可以查出沒有釋放的SQL是大致是什么語句。

    由于建表參數設置不當,會有很多的INSERT語句無法釋放。

    SELECT * FROM V$OPEN_CURSOR WHERE SQL_TEXT LIKE 'INSERT%‘

    找一找哪些表的INSERT語句沒有釋放的游標比較多。
    從ALL_TABLES里查看該表的建表參數是否合適。

    ALTER TABLE tablename STORAGE( NEXT N);

    建議加入精華區,我也碰到同樣的問題。也是調整的存儲結構,另外調整了一些索引和程序,一直不知道是存儲結構的問題,調整的東西多,就不知道是什么原因了

    原帖由 becochow 于 2009-3-25 18:56 發表
    我也出現這樣的問題,我現在數據庫在運行,可能是存儲過程中未關閉游標,

    我如何手動關閉呢?查詢v$open_cursor 有幾千條

    今天我也碰到了這個錯誤,我這么關閉的:
    查詢v$open_cursor,看哪些是由于"存儲過程中未關閉游標"引起的會話,找到SID,SERIAL#,然后KILL掉就可以了.
    以上來源于http://www.itpub.net/viewthread.php?tid=24806



    我昨天犯的錯誤就是把創建statement放到了循環之內,結果導致cursor猛增,到達了數據庫設置的最大數。
    雖然解決了問題,也清楚了游標是何時創建的,但還有幾個問題比較迷糊。
    1、通過查詢,JDBC是將所有的查詢結果一次性放到ResultSet中,還是一次只放一定數目的記錄?例如,查詢結果為2000條數據,JDBC是一次性將2000條數據放到結果集中,還是分批放置呢?

    2、當通過ResultSet.next(),移動結果集指針時,此時是否還與數據庫發生交互?


    首先結果集resultset在你的java程序處。其中有個fetchsize設置,這個表示每次從數據庫處取多少條記錄到resultset.
    當通過ResultSet.next(),移動結果集指針時,此時是否還與數據庫發生交互?

    不發生交互,數據庫執行完查詢后,已經把查詢結果交給ResultSet了,以后的操作,和數據庫無關。
    交互,如果1個查詢有10000條記錄,resultset中只有fetchsize條,當next時還會在一定時機去交互
    不是將查詢結果一次性放到ResultSet中, 而是分批放入ResultSet中,一般情況下是每次10條記錄.
    當通過ResultSet.next(),移動結果集指針時,此時還會與數據庫發生交互.

    導致maximum open cursors exceeded這個問題一般是代碼本身的問題.
    比如執行一個查詢沒有關閉游標,或是在存儲過程中打開了游標而沒有關閉.
    特別是出現異常情況是沒有關閉游標.嚴重時會導致系統崩掉
    啊~!~`我剛也犯了這種錯誤!!``看到這里的貼子,小妹又明白了:"哦!``原來conn.createStatement()和 conn.prepareStatement()的時候實際上都是相當與在數據庫中打開了一個cursor。!!"明白了這點過后,我就在循環里新建一個 prepareStatement對象,操作完一次,成功過后就馬上關掉!這樣,循環里每次一個insert都新new 一個prepareStatement 操作成功完成之后再馬上關閉.嘎嘎.~這樣,cursor就不會溢出拉.
    http://www.tkk7.com/snoopy/archive/2005/01/27/744.html

    posted @ 2009-11-13 18:16 leekiang 閱讀(1169) | 評論 (0)編輯 收藏

    在weblogic環境下要對字符集進行顯式的說明,否則weblogic平臺不識別,方法如下: ?
    ?????????? SAXParserFactory? sf??? =? SAXParserFactory.newInstance(); ?
    ?????????? SAXParser? sp? =? sf.newSAXParser(); ?
    ?????????? ParseClass? reader? =? new? ParseClass(); ?
    ?????????? FileInputStream? inputStream? =? new? FileInputStream(file); ?
    ?????????? Charset? charset? =? Charset.forName("GBK");??? //? 在此處聲明GBK方式 ?
    ?????????? Reader? r? =? new? InputStreamReader(inputStream,? charset); ?
    ?????????? InputSource? source? =? new? InputSource(r); ?
    ?????????? sp.parse(source,reader);?

    posted @ 2009-11-11 20:19 leekiang 閱讀(328) | 評論 (0)編輯 收藏

    僅列出標題
    共54頁: First 上一頁 19 20 21 22 23 24 25 26 27 下一頁 Last 
    主站蜘蛛池模板: 亚洲色偷偷偷网站色偷一区| 亚洲成色www久久网站夜月| 亚洲天堂一区二区三区四区| 中文字幕免费不卡二区| 国产性爱在线观看亚洲黄色一级片| 在线观看亚洲免费视频| www亚洲一级视频com| 成人精品综合免费视频| 国产AV无码专区亚洲AV手机麻豆 | 国产亚洲精品资在线| 二级毛片免费观看全程| 久久影视综合亚洲| 爽爽爽爽爽爽爽成人免费观看| 国产精品亚洲成在人线| 99久久精品国产免费| 波多野结衣亚洲一级| 精品国产麻豆免费网站 | 国产免费牲交视频免费播放| 亚洲无线观看国产精品| 欧洲人成在线免费| 日本亚洲免费无线码| 国产在线a不卡免费视频| 一级午夜免费视频| 婷婷亚洲久悠悠色悠在线播放| 永久黄色免费网站| 亚洲GV天堂无码男同在线观看| 亚洲中文字幕无码爆乳av中文| 国产午夜无码精品免费看| 亚洲国产成人无码av在线播放| 毛片免费视频播放| 一级做a爰片久久毛片免费看| 亚洲午夜久久久影院| 久久精品免费一区二区喷潮| 美女视频免费看一区二区| 亚洲AV无码专区电影在线观看| 2021国产精品成人免费视频| 狠狠综合亚洲综合亚洲色| 亚洲春色在线视频| 日本免费网站在线观看| 久久香蕉国产线看免费| 亚洲AV一区二区三区四区|