sdlc
軟體產生直到報廢的生命周期
sdlc(系統生命周期,系統生存周期)是軟體的產生直到報廢的生命周期,是軟體工程中的一種思想原則,即按部就班、逐步推進,每個階段都要有定義、工作、審查、形成文檔以供交流或備查,以提高軟體的質量。
SDLC(Software Development Life Cycle),即軟體生命周期,軟體生存周期,是軟體的產生直到報廢的生命周期,周期內有問題定義、可行性分析、總體描述、系統設計、編碼、調試和測試、驗收與運行、維護升級到廢棄等階段,這種按時間分程的思想方法是軟體工程中的一種思想原則,即按部就班、逐步推進,每個階段都要有定義、工作、審查、形成文檔以供交流或備查,以提高軟體的質量。但隨著新的面向對象的設計方法和技術的成熟,軟體生命周期設計方法的指導意義正在逐步減少。
SDLC方法一般包括如下幾步:
1、評估現有系統。(問題定義與規劃)
2、確定新系統的要求。(需求分析)
3、設計提議的系統。(軟體設計)
4、開發新系統。(程序編碼)
5、新系統投入使用。(軟體測試)
6、新系統完成以及運行一段時間后,需要進行徹底評估,並時刻進行嚴格維護。(運行維護)
問題定義及規劃
此階段是軟體開發方與需求方共同討論,主要確定軟體的開發目標及其可行性。
需求分析
在確定軟體開發可行的情況下,對軟體需要實現的各個功能進行詳細分析。需求分析階段是一個很重要的階段,這一階段做得好,將為整個軟體開發項目的成功打下良好的基礎。“唯一不變的是變化本身。”,同樣需求也是在整個軟體開發過程中不斷變化和深入的,因此我們必須制定需求變更計劃來應付這種變化,以保護整個項目的順利進行。
軟體設計
此階段主要根據需求分析的結果,對整個軟體系統進行設計,如系統框架設計,資料庫設計等等。軟體設計一般分為總體設計和詳細設計。好的軟體設計將為軟體程序編寫打下良好的基礎。
程序編碼
此階段是將軟體設計的結果轉換成計算機可運行的程序代碼。在程序編碼中必須要制定統一,符合標準的編寫規範。以保證程序的可讀性,易維護性,提高程序的運行效率。
軟體測試
在軟體設計完成後要經過嚴密的測試,以發現軟體在整個設計過程中存在的問題並加以糾正。整個測試過程分單元測試、組裝測試以及系統測試三個階段進行。測試的方法主要有白盒測試和黑盒測試兩種。在測試過程中需要建立詳細的測試計劃並嚴格按照測試計劃進行測試,以減少測試的隨意性。
運行維護
軟體維護是軟體生命周期中持續時間最長的階段。在軟體開發完成並投入使用后,由於多方面的原因,軟體不能繼續適應用戶的要求。要延續軟體的使用壽命,就必須對軟體進行維護。軟體的維護包括糾錯性維護和改進性維護兩個方面。
概念
任何軟體都是從最模糊的概念開始的:為某個公司設計辦公的流程處理;設計一種商務信函列印系統並投放市場。這個概念是不清晰的,但卻是最高層的業務需求的原型。這個概念都會伴隨著一個目的,例如在一個“銀行押匯系統”的目的是提高工作的效率。這個目的將會成為系統的核心思想,系統成敗的評判標準。99年政府部門上了大量的OA系統,學過一點Lotus Notes的人都發了財(IBM更不用說了),但是更普遍的情況是,許多的政府部門原有的處理模式並沒有變化,反而又加上了自動化處理的一套流程。提高工作效率的初衷卻導致了完全不同的結果。這樣的軟體究竟是不是成功的呢?
從概念提出的那一刻開始,軟體產品就進入了軟體生命周期。在經歷需求、分析、設計、實現、部署后,軟體將被使用並進入維護階段,直到最後由於缺少維護費用而逐漸消亡。這樣的一個過程,稱為“生命周期模型”(Life Cycle Model)。
典型模型
典型的幾種生命周期模型包括瀑布模型、快速原型模型、迭代模型。
瀑布模型(Waterfall Model)首先由Royce提出。該模型由於酷似瀑布聞名。在該模型中,首先確定需求,並接受客戶和SQA小組的驗證。然後擬定規格說明,同樣通過驗證后,進入計劃階段…可以看出,瀑布模型中至關重要的一點是只有當一個階段的文檔已經編製好並獲得SQA小組的認可才可以進入下一個階段。這樣,瀑布模型通過強制性的要求提供規約文檔來確保每個階段都能很好的完成任務。但是實際上往往難以辦到,因為整個的模型幾乎都是以文檔驅動的,這對於非專業的用戶來說是難以閱讀和理解的。想象一下,你去買衣服的時候,售貨員給你出示的是一本厚厚的服裝規格說明,你會有什麼樣的感觸。雖然瀑布模型有很多很好的思想可以借鑒,但是在過程能力上有天生的缺陷。
迭代式模型是RUP推薦的周期模型,也是我們在這個系列文章討論的基礎。在RUP中,迭代被定義為:迭代包括產生產品發布(穩定、可執行的產品版本)的全部開發活動和要使用該發布必需的所有其他外圍元素。所以,在某種程度上,開發迭代是一次完整地經過所有工作流程的過程:(至少包括)需求工作流程、分析設計工作流程、實施工作流程和測試工作流程。實質上,它類似小型的瀑布式項目。RUP認為,所有的階段(需求及其它)都可以細分為迭代。每一次的迭代都會產生一個可以發布的產品,這個產品是最終產品的一個子集。迭代的思想如上圖所示。
迭代和瀑布的最大的差別就在於風險的暴露時間上。“任何項目都會涉及到一定的風險。如果能在生命周期中儘早確保避免了風險,那麼您的計劃自然會更趨精確。有許多風險直到已準備集成系統時才被發現。不管開發團隊經驗如何,都絕不可能預知所有的風險。”(RUP)二者的區別如下圖所示:
由於瀑布模型的特點(文檔是主體),很多的問題在最後才會暴露出來,為了解決這些問題的風險是巨大的。“在迭代式生命周期中,您需要根據主要風險列表選擇要在迭代中開發的新的增量內容。每次迭代完成時都會生成一個經過測試的可執行文件,這樣就可以核實是否已經降低了目標風險。”(RUP)
快速原型模型(Rapid Prototype)在功能上等價於產品的一個子集。注意,這裡說的是功能上。瀑布模型的缺點就在於不夠直觀,快速原型法就解決了這個問題。一般來說,根據客戶的需要在很短的時間內解決用戶最迫切需要,完成一個可以演示的產品。這個產品只是實現部分的功能(最重要的)。它最重要的目的是為了確定用戶的真正需求。在我的經驗中,這種方法非常的有效,原先對計算機沒有絲毫概念的用戶在你的原型面前往往口若懸河,有些觀點讓你都覺得非常的吃驚。在得到用戶的需求之後,原型將被拋棄。因為原型開發的速度很快,設計方面是幾乎沒有考慮的,如果保留原型的話,在隨後的開發中會為此付出極大的代價。至於保留原型方面,也是有一種叫做增量模型是這麼做的,但這種模型並不為大家所接受,不在我們的討論之內。
上述的模型中都有自己獨特的思想,其實軟體組織中很少說標準的採用那一種模型的。模型和實用還是有很大的區別的。
軟體生命周期模型的發展實際上是體現了軟體工程理論的發展。在最早的時候,軟體的生命周期處於無序、混亂的情況。一些人為了能夠控制軟體的開發過程,就把軟體開發嚴格的區分為多個不同的階段,並在階段間加上嚴格的審查。這就是瀑布模型產生的起因。瀑布模型體現了人們對軟體過程的一個希望:嚴格控制、確保質量。可惜的是,現實往往是殘酷的。瀑布模型根本達不到這個過高的要求,因為軟體的過程往往難於預測。反而導致了其它的負面影響,例如大量的文檔、繁瑣的審批。因此人們就開始嘗試著用其它的方法來改進或替代瀑布方法。例如把過程細分來增加過程的可預測性。
同步數據鏈路控制(Synchronous Data Link Control,SDLC)協議是一種 IBM 數據鏈路層協議,適用於系統網路體系結構(Systems Network Architecture,SNA)。
通過同步數據鏈路控制(SDLC)協議,數據鏈路層為特定通信網路提供了網路可定址單元(NAUs:Network Addressable Units)間的數據差錯釋放(Error-Free)功能。信息流經過數據鏈路控制層由上層往下傳送至物理控制層。然後通過一些介面傳送到通信鏈路。SDLC支持各種鏈路類型和拓樸結構。應用於點對點和多點鏈接、有界(Bounded)和無界(Unbounded)媒體、半雙工(Half-Duplex)和全雙工(Full-Duplex)傳輸方式,以及電路交換網路和分組交換網路。
SDLC 支持識別兩類網路節點:主節點(Primary)和次節點(Secondary)。主節點主要控制其它節點(稱為次節點:Secondaries)的操作。主節點按照預先確定的順序選擇次節點,一旦選定的次節點已經導入數據,那麼它即可進行傳輸。同時主節點可以建立和拆除鏈路,並在運行過程中控制這些鏈路。主節點支配次節點,也就是說,次節點只有在主節點授權前提下才可以向主節點發送信息。
SDLC 主節點和次節點可以在四種配置中建立連接:
點對點(Point-to-Point):只包括兩個節點:一個主節點,一個次節點。
多點(Multipoint):包括一個主節點,多個次節點。
環(Loop):包括一個環形拓樸:連接起始端為主節點,結束端為次節點。通過中間次節點相互之間傳送信息以響應主節點請求。
集線前進(Hub Go-Ahead):包括一個Inbound通道和一個Outbound通道。主節點使用Outbound通道與次節點進行通信。次節點使用Inbound通道與主節點進行通信。通過每個次節點,Inbound通道以菊花鏈(Daisy-Chained)格式回到主節點。
為適應不同環境,SDLC具有一些派生類:
HDLC,一種 ISO協議,適用於x.25網路;
LAPF,一種 ITU-T協議,適用於幀中繼(Frame Relay)網路;
IEEE 802.2,通常指LLC,具有三種類型,適用於區域網(Local Area Network);
QLLC,適用於在 X.25網路上傳輸SNA數據。
協議結構
1 byte 1-2 bytes 1-2 bytes Variable 2 bytes 1 byte
Flag Address field Control field Data FCS Flag
Flag―啟動和終止差錯校驗。
Address―包括次站SDLC地址,表明幀來自於主站還是次站。
Control―使用3種不同格式,取決於使用的SDLC幀類型:
Information(I)frame―傳遞上層信息和一些控制信息。
Supervisory (S)frame―提供控制信息。S幀可以請求和掛起傳輸、報告狀態、確認I幀接收。S幀不包含信息幀(information field)。
Unnumbered (U)frame ― 支持控制目標,無編號。U 幀用於啟動次站。取決於 U 幀,其控制欄位可能為1位元組也可能為2位元組。有些 U 幀包含信息欄位。
Data ― 包含路徑信息單元(PIU)或交換識別(XID)信息。