2012年10月16日 星期二

傳統軟體開發模型

瀑布式模型   (Waterfall Model) 古典生命週期 (Classic life cycle) 線性序列模型 (linear sequential model) 將軟體開發的生命週期分為6個階段:
(1) 系統規劃 (System Planning) 考慮整個系統的大部規劃,由上而下設計。
(2) 需求分析 (Requirement Analysis) 蒐集使用者對於系統的需求。
(3) 設計 (Design) 設計工程師將需求轉化成軟體,通常在程式碼產生前瞭解其設計品質如何。
(4) 建置 (Implement) 程式開始Coding ,設計工程師將程式轉變成機器碼。
(5) 測試 (Testing) 開始測試所設計的程式碼。
(6) 維護 (Support) 軟體交付給客戶之後,針對客戶反應的問題,需求的變更等,提供調整與改變。

雛形式模型 (Prototyping Model) 設計者先以經濟有效的方式快速建立一個可操作的系統模型,完成系統部分的關鍵功能供使用者評估,藉以展示或的客戶的認同或意見後再逐步修改雛形系統,反覆客戶意見回饋與雛形修改後,最後完成所有正式的系統功能。
優點: (1)允許使用者隨時改變需求(2)與使用者互動中可以隨時協助發現使用者新的需求(3)隨著系統開發,可以充分瞭解使用者需求(4)系統開發迅速、應變性高,可以降低風險。
缺點:(1)缺少有效的設計評估準則以決定軟體開發成熟與否。(2)缺少嚴謹的分析與設計,系統執行效率差(3)因雛形系統改變快速,文件製作管理落後,造成維護上的困難(4)使用者必須不斷的參與,如果使欲者無法配合將造成開發中斷或延遲

快速開發模型 (RAD Model) 線性順序軟體開發模型的變種,強調快速,利用基礎元件建造快速開發,如果對於需求掌握清楚,可以在短時間發展出功能完善的系統。分為5個開發階段:
(1) 企業流程建模  將企業活動中的資訊流模型化,決定需要產生哪些資訊,資訊的傳遞流程,資訊的使用者。
(2) 資料模型建立  將資訊流簡化,並建立所需資料的物件,標出物件的特徵與定義物件之間的關係。
(3) 處理建模  資料物件導入資訊流,再加以描述其操作如增加、修改、刪除或查詢等功能。
(4) 應用程式生成  利用自動化輔助軟體來建造模型,與4GL程式語言來編寫系統程式。
(5) 測試與反覆  RAD過程強調重複使用,大多數持繩原都已經測試與驗證過,可大幅縮短開發時間。
優點:系統在節省成本下快速被開發,具有瀑布式模型的優點,模型件過程循序漸進,且標準化流程。
缺點:需有足夠人力建立RAD小組。快速開發的結果,難免影響到品質。並非適用於所有型態的應用程式開發。技術性風險高時不適用。

漸增式模型  結合了瀑布型模型與雛形式模型的觀念,時間進行時交錯的使用線性序列,使得每個線性序列都能夠產生可交付的軟體與版次。例如:第一版產出基礎的檔案管理,第二版再產出版面編排功能,第三版產出拼字校對語文法見查,第四版產出頁面設定,每一次漸增式營的軟體的產出都是完整的軟體系統。
優點:每一層都是序列性開發,因此解決了雛形法維護困難的問題。開發過程可以即時接受使用者的回饋,於下一層開發時做修改。
缺點:開放式體系,會使設計效率變差。

螺旋式模型  結合線性序列模型與雛形模型,並加入風險分析。以螺線形式,由內往外發展,每旋轉一圈便開發出新的一個更完善的版本。在旋轉的圓圈切成若干扇形區,稱為任務區。分為(1)需求溝通(2)專案計畫(3)風險分析(4)工程執行(5)建構與釋出(6)客戶評估 此六階段如圓圈般週而復始,每轉一圈便完成一個新的版本。

軟體能力成熟度模型 CMMI (Capability Maturity Model)  卡耐基美隆軟體工程學院將軟體開發目前的程序的成熟度定義了5個等級:
(1) 初始級 (Initial)
(2) 可重複級 (Repeatable)
(3) 已定義級 (Defined)
(4) 已管理級 (Managed)
(5) 優化級 (Optimized)

2012年10月15日 星期一

資料庫一二三

資料庫  是一組相關資料的集合。由最底層之的欄位構成記錄,相關的紀錄組成檔案,而相關的檔案組成資料庫
資料庫的優點
(1) 減少重複
(2) 維持資料一致性
(3) 資料共享
(4) 強迫推行標準
(5) 確保安全
(6) 維持整合性
(7) 提供程式物件永久的儲存空間
(8) 提供處理查詢
(9) 提供多種使用者介面
(10) 允許使用規則來進行推理與主動執行
(11) 縮短運用程式的開發時間
資料庫的缺點
(1) 初期必須購置軟硬體設備,花費極大的成本
(2) 為了特定需求與一般需求而造成資源重複投入的浪費
(3) Database Administrator 若無適當的人管理,可能造成資料庫監控失靈
資料庫系統的功能
(1) 資料定義
(2) 資料操作
(3) 資料安全性與整合性
(4) 復原與同步控制
(5) 資料字典
(6) 效能

2012年10月10日 星期三

資料庫正規化形式

正規化形式(Normal Form) 滿足某一組特別規定的條件的關聯式,可稱為正規化形式。例如一關聯式其中各屬性只有包含基元值(Atomic Value)的條件,就屬於第一正規化形式(First Normal Form, 1NF)
正規化    靠著分割關聯式的屬性,可以將原本不滿足某些條件的關聯式綱要,分成幾個較小的關連式以滿足我們希望它擁有的特性。
無失分割(Nonloss decomposition)   一個關連式如果分割後,自將分割後的關聯式合併,則可得的到原來的關聯式,也就是分割過程沒有損失任何資訊,則我們稱此分割為無失分割。此分割過程稱為可逆的(Reversible)
第一正規化形式      關聯式屬性所屬的定義域中僅能有基元值(Atomic Value),也就是每一個屬性必須是單一的。  關聯式的屬性如果是多值屬性或是複合屬性,就不符合1NF。
正規化的步驟   (1)先將複合屬性分解為單一屬性 (2)多值屬性集合的部份鍵納入主鍵屬性集合,不同值的拆成許多值組。
第二正規化形式    關聯式必須符合第一正規化形式,同時其中非屬主鍵集合的屬性必須完全功能相依於主鍵。
第三正規化形式    關聯式必須符合第二正規化形式,同時其中非屬主鍵屬性集合的屬性必須非遞移地功能相依於主鍵。
非遞移性功能相依  指兩個屬性是直接功能相依如A->C而非經由遞移而達成功能相依,也就是不存在A->B,B->C的情形。

資料倉儲

Bill Inmon 所提的『資料倉儲』的概念就是建立一個資訊環境,提供企業整合性資訊來協助企業主做決策,並使企業內的資訊一致並能建立彈性互動的策略。
資料倉儲的特性有(1)主題導向 (2)整合性 (3)時間變異性 (4) 非揮發性
主題導向:依系統的設計資料倉儲功能可為一銷售管理系統,但各部門對於資料倉儲的主題會有不同觀點,例如經營階層希望以區域別的角度來比較各產品的銷售狀況,營業部門則可能以客戶別或產品別來推估市場需求。同時會計部門則希望由時間別來分析獲利趨勢。
整合性:因企業資訊分散於各地,或導入系統時間不同,造成資料格式不一,因此整合分散的資訊,供企業經營參考。利用資料倉儲的系統機制,將分散的交易資料庫進行資料萃取,擷取相關的欄位與紀錄,進行清理與轉換,統一資料格式為一致性的資料描述。資料倉儲將切業內的營運資訊統一定義與管理。使其具有一致性,達到整合性。
時間變動性:交易處理系統,屬於作業性質,每日有其交易記錄或異動,為短期的歷史紀錄或目前現況。資料倉儲則定期向交易系統擷取資料轉化成長期保存的歷史資料,並進行整理與彙總已變後續的時間趨勢分析。例如交易處理統中的每日、週、月、年的資料定期匯入資料倉儲並累積有關產品、客戶、庫存等資料並將摘要資訊重新計算與彙總。
非揮發性:交易性質的作業資料,隨時會新增更新與刪除或查詢,但是資料倉儲的的資料內容具有非揮發性,乃因為資料倉儲的資料只會定期匯入資料,而且保存的是企業經營參考的歷史資料與彙總資訊,因此不可刪除與修改,只能進行查詢,也因為只會增加資料,不會刪除資料,並只允許查詢具有唯讀性質,因此稱為非揮發性。
資料倉儲的主要功能有:(1)整合性的資料儲存 (2)有價值的資料存取
資料倉儲的優點:(1)整合企業內部資訊,降低查詢成本。(2)統一資料格式,提供一致性的溝通與呈現方式(3)資料來源直接來自企業各部門,提高資料的正確性,藉由資料的自動轉換,提高作業效率與企業的生產力(4)能快速的提供『整合的』資訊,利於企業決策效率與品質(5)使用者不需瞭解資料儲存位置,經由統一的介面(WEB)便可以查到所需的資訊。
資料倉儲的缺點:(1)系統建置需要投入大量的資源(時間,人力,金錢),失敗的風險也大。(2)系統龐大,若軟硬體沒有妥善規劃,擴充不易。