潛魚在淵

          Concentrating on Architectures.

          posts - 77, comments - 309, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          應用軟件的合理性

          Posted on 2006-03-29 00:28 非魚 閱讀(16872) 評論(11)  編輯  收藏 所屬分類: 面向對象設計
          ??? 我們在討論應用軟件的需求和設計的時候,常常會說:“我覺得這個需求不合理。”或者說:“按照我的經驗,這樣子設計是不合理的。”往往我們這樣說的時候, 是根據自己的經驗和直覺來判斷的。這樣的理由往往不被認同和接受,所以最終的結果可能并沒有向我們所想象的方向發展,直到最終我們得到一個教訓。

          ??? 為什么應用軟件的“合理性”很重要?

          ??? 理解應用軟件的“合理性”,對于軟件的構造者非常重要。合理性不僅是最終評價一個軟件質量的標準之一,同時還是軟件構造過程中的一個重要原則。

          ??? 黑格爾說:凡是合理的東西都是現實的,凡是現實的東西都是合理的(《法哲學原理》)。這里的“理”并不是指道德、法律或法則,而是指事物的本質和發展規 律。現實是指長期、穩定的現實存在,而不是偶然的現象、表象、感覺、主觀想象等等東西。對于應用軟件開發而言,現實的系統(尚未實現的系統)是合理的,而 只有目標系統成為一個合理的系統,它才會是現實的,才可以長期、穩定的存在,才可以最大限度的降低系統維護的成本。但現實卻是軟件的合理性長期得不到足夠 的重視,這給后期軟件的維護增加了很多不必要的麻煩,而這又往往是人們認識之外的。

          ??? 從軟件自身的發展看來,也附合一般事物的發展規律:隨著用戶對軟件的理解越來越深刻,他們提出和要求也越來越合理。但在早期軟件設計,特別是架構設計存在 不合理的情況下,一般只存在兩種結果——要么推倒重來,要么變成一堆垃圾,越來越難以維護,最終不得不被放棄。由此看來,應用軟件的合理性,特別是在應用 軟件生命周期的早期,具有至關重要的地位。

          ??? 從開發過程的角度來說,合理性是評價一個應用軟件的需求、設計的重要指標。我們在實際的開發過程中,總是在有意無意的使用它來衡量一個軟件需求可設計的好 壞。但是這種對合理性的應用是自發的,并不具備很大的說服力。在了解合理性的重要性之后,我們應該把對它的應用變成一種自覺的、主動的行為,有意識的去利 用它來幫助我們的應用軟件構造。

          ??? 需求合理性

          ??? 在需求階段,主要的任務的就是識別不合理的需求,并努力把合理的需求變得更加合理。

          ??? 對于應用軟件來說,初期的需求獲得一般是間接的。即需求分析人員通過用戶、客戶得到第一手資料,然后在這個基礎上進一步完善,逐漸形成一個完善的軟件需 求。所以需求在開始的時候主要由用戶、客戶對于現實系統的認識構成。這個時候的需求受限于用戶、客戶對現實系統的理解力,用戶、客戶對于現實系統的不正 確、不合理的認識不可避免的滲入了原始的需求中。例如,當一個工作流完成后,需要通知最初起動流程的用戶,這樣一個需求可能會被用戶認為:當一個工作流完 成時,需要流轉到最初起動流程的用戶。也就是說,用戶可能認識不到“通知”和“流轉”的區別。辨別原始需求中的不合理成份,并通過和用戶、客戶溝通來促使 其認識更加合理,是需求分析階段的重要工作內容。

          ??? 另外,軟件往往不僅僅是對現實系統的簡單模擬。限于現實系統手工操作的難度,很多自動化的、重復的勞動,以及對于系統數據的深加工操作,多數時候并沒有包 括在現實系統之內。在目標系統完成后,大規模自動計算的條件已經具備,喜歡思考的用戶、客戶會很快“發現”這些需求,這也是用戶、客戶對系統的認識進化的 合理結果。所以當我們考慮軟件的合理性時,應當把這些潛在的需求考慮在內。這就需要需求分析人員對系統需求進行深度挖掘,盡可能多的找到用戶、客戶的潛在 需求。

          ??? 我們需要理性的需求人員,憑借我們對于技術的深刻理解,來說服、引導、教育用戶和客戶。但在實際的操作過程中,并不能保證所有的說服、引導和教育都是成功 的。有些用戶相當固執,這意味著需求人員有時候不得不妥協。但妥協并不等于接受,需求人員有責任把其對不合理的需求的思考寫入需求文檔,以便在設計中還能 夠補救。

          ??? 設計合理性

          ??? 設計階段在需求階段之后,所以設計的合理性自然依賴于需求的合理性。另一方面,設計是形成目標系統模型的過程,它又依賴于計算機軟件的內容和形式。

          ??? 首先考慮的是設計對需求的順應。在需求合理的情況下,順應需求的設計自然也具有了和現實系統一樣的合理性。如果需求的合理性不能得到保證,則做為設計階段 不可缺少的嘗試是使設計本身具備一定的前瞻性,即設計要足夠靈活以適應將來需求的變化——在這種情況下,需求是最容易發生變化的。然而設計也不是要覆蓋所 有可能的需求變化,而是通過分析找到需求最可能合理的發展的方向,在這個方向上努力。

          ??? 畢竟應用軟件在形式和內容上都囿于計算機這個載體,其設計必然要適應這個世界的游戲規則。從某種意義上說,計算機軟件是人類思想動態的、模擬的存在,它是 人類思想的一種表現形式。人類對于外部世界的認識是逐日加深的,它越來越接近這個世界的本質。同時,作為人類思想形式化存在的軟件也必然需要保持同步的進 化。這種進化就是軟件存在的最基本的思想,它深刻的體現在軟件的移交和改進過程中。一直以來,從軟件設計理論中所提出的模塊化,模塊之間的高內聚、低偶 合,到做為架構師主要職責的軟件變化的控制和復雜性控制,都是這個思想的具體表現。

          ??? 另外,軟件運行過程中的性能、可靠性要求也是軟件合理性的一個方面。它可以被看作思想和數字空間的契合程度。當然,我們不能說一個低性能、低可靠性的應用是合理的。


          評論

          # re: 應用軟件的合理性  回復  更多評論   

          2006-03-29 08:44 by 應用軟件的合理性?!
          我汗啊,你從哪里抄來這些空洞的說教?

          # re: 應用軟件的合理性  回復  更多評論   

          2006-03-29 08:48 by 蕭遠山
          如何評價需求的合理性是很重要的.....我們做需求采集時,要懂得引導客戶,并向客戶描述使用軟件后的前景和操作方式,看看客戶能不能接受.....

          # re: 應用軟件的合理性  回復  更多評論   

          2006-03-29 09:22 by Harryson
          受益,謝謝!
          最終設計出來的系統要合理,用戶才能接受!

          # re: 應用軟件的合理性  回復  更多評論   

          2006-03-29 13:11 by 小陸
          說的太對了,現在我們正在維護的系統就深受不合理之害。營業員做的業務無法跟蹤狀態,出現了異常情況需要系統部的人去查。經常是客戶拿著帳單來投訴,才發現幾個月以前的帳單就是錯的。
          并不是只有技術才是實在的,非技術的都是空洞的。項目的好壞成敗,技術因素是很少的一部分。
          需求的理解是一種更加重要的技術。要把眼睛從代碼上移開,看看客戶是如何工作的。

          # re: 應用軟件的合理性  回復  更多評論   

          2006-03-29 15:18 by LiuYang
          作為乙方而言,需求也沒什么合理不合理,反正都是要實現的,我碰到的客戶一般都只對最后的實現結果感興趣,如果在業務上走不通,或者說與其他需求有沖突,那才是不合理的需求。處于我們的經驗,對于一些更好的實現方式客戶還是會接受的,但是要從他的角度來解釋,千萬不能說在技術上這樣做比較合理,對于業務人員,這樣的說法是站不住腳的。

          實現過程我們盡量不要寫一些很細節的if else之類的對應某個需求的異常處理,應該就好了。否則對于接手的人來講就太痛苦了,他們會覺得以前做的需求不合理。

          # re: 應用軟件的合理性  回復  更多評論   

          2006-03-29 22:05 by 非魚
          @LiuYang
          在需求階段,是不應該說“在技術上這樣做比較合理”這樣的話的,過早進入對實現的考慮,這本身就是不合理的。

          # re: 應用軟件的合理性  回復  更多評論   

          2006-04-07 16:24 by Felice
          我贊同樓上的說發,ERP實施過程,首先是對業務需求的理解和分析,分析整合完成的業務過程,確定完整的業務環境和條件,然后再決定業務的哪些環節在軟件系統中實現,哪些不在軟件系統中實現。系統與非系統之間要合力的銜接。這個后面過程才是初步考慮,是否以技術實現。

          業務是合理的(雖然可能還不夠合理),但技術上是不可能實現完整的業務的,那是不實際的,很多時候要考慮到具體操做用戶的素質和水平,才決定技術上實現業務的多少,怎么實現。比如很多情況在實際中操做比在系統上操做更實際、更靈活、更高效,那么就應該確定不要浪費力氣再去用技術實現系統。

          用戶始終是本源,從用戶出發考慮才是實際的和合理的。

          # re: 應用軟件的合理性  回復  更多評論   

          2006-04-14 18:01 by kevin.guo
          @Harryson
          先別激動的發抖
          系統是否能被用戶接受,合理是一個因素,但不是決定性的。
          合理又是一個空洞的概念,何為合理,怎么評價,這個不是數據分析,有標竿界定
          sap在歐洲很合理,在中國就“不合理”,不一而論。
          最后不得不再提到中國特色。
          切~

          # re: 應用軟件的合理性  回復  更多評論   

          2006-04-26 08:23 by 23452
          234223

          # re: 應用軟件的合理性  回復  更多評論   

          2006-04-29 19:04 by pc
          不錯謝謝

          # re: 應用軟件的合理性  回復  更多評論   

          2007-09-17 16:11 by 同聲傳譯
          您好,我們公司是一家中國境內的專業翻譯公司,從事各專業翻譯服務,包括筆譯、口譯、同聲傳譯和同聲傳譯設備租賃等。我們需要招聘兼職翻譯、同傳譯員和外籍英文校對人員。
          希望有機會合作.
          主站蜘蛛池模板: 泸西县| 迁西县| 永修县| 洪江市| 祁东县| 和硕县| 容城县| 兴隆县| 淳安县| 青铜峡市| 砚山县| 威远县| 旌德县| 合江县| 武宁县| 台南市| 日照市| 河北区| 通许县| 读书| 商河县| 苍溪县| 辛集市| 拜泉县| 威海市| 民乐县| 高雄县| 黄骅市| 原平市| 合肥市| 南澳县| 甘孜| 宁夏| 乐陵市| 云阳县| 连州市| 金乡县| 桐城市| 芜湖县| 吉木萨尔县| 图木舒克市|