史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 程式 & 網頁設計技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2004-05-16, 04:53 PM   #1 (permalink)
註冊會員
 
mic64 的頭像
榮譽勳章
UID - 582
在線等級: 級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時
註冊日期: 2002-12-06
VIP期限: 2007-04
住址: MIB總部
文章: 412
精華: 0
現金: 499 金幣
資產: 499 金幣
預設 RUP2 第1章 最好的軟體開發實務經驗

第一部分 流程

第1章 最好的軟體開發實務經驗
作者:Grady Booch
本章提供最好的軟體開發實務經驗,並說明Rational 統一流程的相關背景
知識。
軟體的價值
軟體是現代企業發展、政府運作、社會大眾溝通的原動力。它幫助我們以過
去無法想像的方式和型態去產生、擷取並觀察資訊。在全球各地,軟體快速進步
對全球經濟快速成長居功偉厥。從個人角度看,軟體密集式(Software-intensive)
產品除了拯救病人、讓不會說話的人發出聲音、讓殘障人士行動自如,還讓他們
有更多機會與一般人競爭。從這些觀點看,軟體是現代世界不可或缺的一環1。
對軟體專業人士而言,全球經濟對軟體的依賴性增加是件好消息。為了因應
社會所需,用科技完成的軟體密集式(Software-intensive)系統越來越大、複雜
和廣泛,當然也更重要。
壞消息是系統越大、複雜、廣泛和重要時,從事軟體工業的我們在軟體開發
知識方面也益發不足。把新技術帶入舊系統會產生許多技術和組織的問題。問題
越來越複雜的因素是企業不斷要求增加生產力並改善品質,卻更希望用最短的時
程開發和配置。訓練有素的開發人員永遠供不應求。
最後結果是設定軟體組態和維護軟體都變得很難,而且越來越難。不用說,
期待以可重複、可預期的方式建構高品質的軟體更是難上加難。
軟體開發問題的症狀與主因
有許多軟體開發專案都失敗了,而且不同專案有不同的失敗原因。還好,從
這些專案中我們可以找出相同的症狀並加以歸類2,3:
.. 無法準確了解使用者需要
.. 無法處理需求的改變
.. 模組(Module)間無法配合
.. 軟體很難維護或擴充
.. 太慢發現專案的嚴重瑕疵(Defect)
.. 軟體品質低落
1 Grady Booch, “Leaving Kansas,” IEEE Software 15(1), January-February 1998, pp.32-35.
2 Caper Jones, Patterns of Software Systems Failure and Success. London: International
Thompson Computer Press, 1996.
3 Edward Yourdon, Death March : Managing “Mission Impossible” Projects. Upper Saddle
River, NJ: Prentice Hall, 1997.

.. 無法接受軟體效能
.. 團隊成員彼此妨礙,不知道誰改了什麼、什麼時候改、改那裡和為什麼

.. 不可信賴的建構並發表(Build-and-release)流程
不幸的是改善症狀並不能消災。例如太慢發現專案的嚴重瑕疵祇是大問題的
症狀而已,問題可能是主觀的專案狀態評價和不一致的專案需求、設計(Design)
與實作(Implementation)。
雖然專案有不同的失敗原因,不過很顯然地大多是因為下面幾項原因:
.. 特別的需求管理(Requirement Management)
.. 模稜兩可和不精確的溝通方式
.. 脆弱的架構(Architecture)
.. 很難處理的複雜性
.. 不一致的需求、設計和實作
.. 測試不足
.. 不客觀的專案狀態評價
.. 沒有克服風險
.. 失去控制的改變延遲
.. 自動化不足
最好的軟體實務經驗
如果能克服前述這些原因,不但可以消除症狀,還能有更多優勢,以可重複、
可預期的方式來開發和維護軟體。
這就是最好的軟體實務經驗:它們是商業上被證實可行的軟體開發方式。使
用它們可以解決軟體開發的問題主因4。稱為”最好的實務經驗”,不是說可以
準確測量它們的價值,而是因為它們已經廣被業界的成功組織採用。這些最好的
實務經驗包括:
1. 以反覆式開發方式(Iterative Development)去開發軟體
2. 管理需求
3. 以元件為基礎(Component-based)的架構
4. 視覺式模型製作軟體(Visually Model Software)
5. 持續驗證軟體品質
6. 控制軟體的改變
4 請參考軟體程式經理網(Software Program Manager’s Network)中最好的實務經驗,http :
www.spmn.com.

用反覆式方法開發軟體
一般軟體開發流程是依照瀑布式生命週期(Waterfall LifeCycle),如圖1-1
所示。在這種方法,開發流程從需求分析(Requirement Analysis)、設計、寫程
式、到單元測試(Unit Testing)、子系統測試(Subsystem Testing)、系統測試(System
Testing)都是以線性(Linear)方式進行。
這種方法的主要問題是:它把風險(Risk)的時間點往前推,因此解決早期
錯誤的成本會很高。如果一開始主要的需求設計(Requirement Design)有瑕疵,
而且太慢發現設計的瑕疵,會導致經費大增甚至取消專案。Tom Gilb 說得好,”
如果你不主動攻擊專案風險,那麼它們反過來會攻擊你”5。瀑布式方法(Waterfall
Approach)容易隱藏專案實際風險,發現時通常已經太慢了。
圖 1-1 瀑布式生命週期
5 Tom Gilb, Principles of Software Engineering Management. Harlow, UK: Addison-Wesley,
1988, p.73.

圖 1-2 漸進的、反覆式流程
除了瀑布式方法(Waterfall Approach),漸進的、反覆式流程(Iterative Process)
是另一種選擇,如圖1-2 所示。這種方法的基礎是Barry Boehm 螺旋模型(Spiral
Model)6,它在生命週期初期找出風險,此時可以以有效、及時的方法去克服風
險。這種方法會持續發掘、創造和實作,在每次反覆(Iteration)強迫開發團隊
以可預測、可重複的方式,完成專案的工作成果。
以反覆式方法開發軟體可以解決許多軟體開發問題:
1. 在生命週期初期明顯發現嚴重錯誤所在,此時還可能來的及反應。
2. 這種方法鼓勵使用者回饋(Feedback),找出系統真正需求。
3. 強迫開發團隊把焦點放在專案重大議題,避免跟專案真實風險無關的議
題。
4. 持續不斷地測試,客觀評估專案狀態。
5. 需求、設計和實作的不一致性(Consistence)可以早期發現。
6. 團隊的工作負荷,尤其是測試團隊,可以平均分散在整個專案生命週
期。
7. 團隊可以活用所學,不斷改善流程。
8. 在整個專案生命週期,專案的關係人(Stakeholder)可以得知專案狀態
的具體事實。
6 Barry W. Boehm, “A Spiral Model of Software Development and Enhancement,” IEEE
Computer, May 1988, pp. 61-72.

管理需求
管理軟體密集式(Software-intensive)系統需求時,最大挑戰為需求是動態
的:在整個軟體專案生命,你必須假設它們是會改變的。而且,找出系統真實需
求是持續的過程,這對系統的財務與技術目標有很大影響。除了最平凡的系統
外,我們不太可能在開發前完整描述系統需求。的確,隨著新系統或系統演進,
使用者對系統需求的了解也會跟著改變。
需求代表系統必須符合的條件或能力。主動的需求管理包含三個活動
(Activity):引導出系統需要的功能和限制、把它們加以組織和把它們放進文件;
估計需求的改變和評估它帶來的衝擊;追蹤並把所有的取捨與決定放進文件。
管理專案需求可以解決許多軟體開發的問題:
1. 建立有紀律的需求管理(Requirement Management)方法。
2. 以定好的需求為基礎進行溝通。
3. 排定需求優先順序、過濾並追蹤它們。
4. 預計達成功能和效能的客觀評估。
5. 更早發現不一致。
6. 如果有適當的支援工具,就可以儲存系統需求、屬性和軌跡,而且還可
以自動連結外部文件。
以元件為基礎(Component-based)的架構
視覺化、詳述、建構軟體密集式(Software-intensive)系統和紀錄文件都需
要從不同觀點看整個系統。每位關係人-終端使用者(End-user)、分析師
(Analyst)、開發人員、系統整合人員(System Integrator)、測試人員(Tester)、
技術寫作人員(Technical Writer)和專案經理(Project Manager)都會給專案帶來
不同的議題,而且在不同軟體生命時期,每個人看系統的方式也不同。系統架構
可能是最重要的產出文件,它用來管理不同觀點,並且在整個生命週期,我們用
它控制系統以漸進的、反覆式方法開發。
系統架構(System Architecture)裡面包含下面幾項重大決定:
.. 軟體系統的組織
.. 選擇結構元素和它們之間需要的介面(Interface)
.. 用元素間的合作(Collaboration)描述結構元素的行為
.. 結合結構元素和行為元素形成更大的子系統(Subsystem)
.. 指引組織的架構風格(Architectural Style):元素、元素間的介面、合作
(Collaboration)和合成(Composition)
軟體架構(Software Architecture)不止跟結構與行為有關,同時也會跟用法、

功能性(Functionality)、效能、彈性、再使用性(Reuse)、可理解性、財務與技
術的限制與取捨和審美觀考量等等相關。
設計一個有彈性的架構很重要,因為它可以很經濟地提昇再使用性
(Reuse)、清楚劃分開發團隊工作、把容易改變的硬體與軟體相依性(Dependency)
獨立出來,改善可維護性(Maintainability)。
對軟體架構(Software Architecture)來說,以元件為基礎(Component-based)
的開發方式是一種很重要的開發方法,它讓各種商業元件(Component)得以再
使用(Reuse)或客製化(Customization)。Microsoft 的COM、物件管理協會(Object
Management Group)的CORBA 和Sun Microsystem 的企業JavaBeans (EJB)都提
供被廣泛支援而且普遍的平台,我們可以在這些平台上建立以元件為基礎的架
構。如圖1-3 所示,元件擴大再使用的規模,使得系統可以由現有零件、協力
廠商提供的現成(Off-the-Shelf)零件、解決特定領域問題的零件或整合其它零件
的零件組成。
為了搭配反覆式開發方式(Iterative Development),以元件為基礎(Component
-based)的架構必須不斷改善系統架構。每次反覆都必須產生一個可執行的架
構,並且測量、測試、評估它是否符合系統需求。這種方式讓開發團隊持續降低
專案的最重要風險。
以元件為基礎(Component-based)的開發方式解決許多軟體開發問題:
1. 使用元件可以很容易形成有彈性的架構。
2. 模組化(Modular)清楚隔離系統中容易改變的元素。
3. 採用標準化框架(Framework)(例如COM+、CORBA、EJB)和業界提
供的元件可提升再使用性(Reuse)。
4. 元件提供一個自然的組態管理(Configuration Management)基礎。
5. 視覺式模型製作工具(Visual Modeling Tool)替以元件為基礎(Component
-based)的開發工作提供自動化。

圖 1-3 以元件為基礎的軟體架構
視覺式模型製作軟體(Visually Model Software)
模型是簡化的真實事物,這裡所指的真實事物是從特定觀點完整描述一個系
統,如圖1-4 所示。模型製作(Modeling)過程讓我們更了解系統;建複雜系統
的模型是因為我們無法理解整個系統。
模型製作(Modeling)很重要,因為它讓開發團隊可以把系統架構的結構和
行為加以視覺化、詳述、建構並製作文件(Documenting)。使用標準的模型語言
(Modeling Language),例如UML,開發團隊成員可以向其它成員明白傳達他們
的決定。
視覺式模型製作工具(Visual Modeling Tool)讓管理模型變得更加方便,它
可以根據需要隱藏或顯示細節。也可以維護系統工作成果間的一致性
(Consistence):系統需求、設計和實作。簡言之,視覺式模型製作(Visual Modeling)
可以增進開發團隊管理複雜軟體的能力。

圖 1-4 從各種觀點製作系統模型
如果結合反覆式軟體開發實務經驗,視覺式模型製作(Visual Modeling)可
以幫你發現並評估架構的改變,並且傳達改變給整個開發團隊。如果有正確的工
具幫忙,在每次反覆後,你可以把模型和原始碼(Source Code)同步。
視覺式模型製作(Visual Modeling)解決許多軟體開發問題:
1. 使用案例(Use Case)和情節(Scenario)可以明白詳述行為。
2. 模型可以清楚表示軟體設計。
3. 非模組化(Modular)和不具彈性的架構可被顯現出來。
4. 可根據需要隱藏細節。
5. 清楚的設計可以更快顯示出矛盾。
6. 應用程式的品質從好的設計開始。
7. 視覺式模型製作工具(Visual Modeling Tool)支援UML 模型。
持續驗證軟體品質
如圖1-5 所示,配置後才發現並修正軟體問題,比事先發現要多付出一百
倍到一千倍的代價。因此,持續評估系統的功能性(Functionality)、可靠性
(Reliability)、應用效能和系統效能品質就顯得很重要。

圖 1-5 修正瑕疵的成本
驗證系統功能代表大量的測試活動,包括為每個主要情節(Scenario)和表
達系統行為的事物作測試。我們可根據什麼情節失敗,那裡、那些情節和相關程
式碼無法運作來
mic64 目前離線  
送花文章: 0, 收花文章: 21 篇, 收花: 61 次
向 mic64 送花的會員:
JieChung (2007-09-18)
感謝您發表一篇好文章
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
RUP2 第3章 靜態結構:流程描述 mic64 程式 & 網頁設計技術文件 0 2004-05-16 04:55 PM
RUP2 第2章 Rational 統一流程 mic64 程式 & 網頁設計技術文件 0 2004-05-16 04:54 PM


所有時間均為台北時間。現在的時間是 08:16 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1