官术网_书友最值得收藏!

第1章 軟件開發與程序設計

1.1 任務一:軟件的開發

軟件被應用于世界的各個領域,對人們的生活和工作產生了深遠的影響。近年來,軟件開發作為現代科學研究和解決工程問題的基礎,成為當今世界不可缺少的一部分。在不久的將來,軟件將成為驅動社會發展的新動力。

任務描述

軟件開發的目標:以客戶與市場為導向、理解軟件真正的需求,開發出具有可修改性、有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性并滿足用戶需要的軟件產品,獲取最大的商業利益。

任務分析與設計

如果硬件是人的身體,那么軟件就是人的思維。在開發軟件過程中,開發的步驟、方法甚至技巧和習慣都會直接影響軟件成品的質量。軟件開發項目的成功有以下幾個主要的目標作為驗證標準:

(1)付出較低的開發成本。

(2)達到要求的軟件功能。

(3)取得較好的軟件性能。

(4)開發的軟件易于移植。

(5)需要較低的維護費用。

(6)能按時完成開發工作,即時交付使用。

任務實現

1.初識“軟件”

軟件(software)是一系列按照特定順序組織的計算機數據和指令的集合。

凡是能看見、能摸到的都是硬件,如鍵盤、顯示器、鼠標、主機等。

運行于硬件上的、我們常用的瑞星、Office、操作系統等都是軟件!沒有軟件的計算機是“裸機”,相當于廢鐵一堆。軟件和計算機密不可分,計算機軟件是為了解除人們繁重、重復的工作而產生的。軟件是為了告訴計算機要做什么、如何做而編寫的,是計算機能夠理解的一串指令、代碼、程序。

2.軟件的分類

1)按功能劃分

(1)貼近計算機硬件的小軟件。通常“固化”在只讀存儲器芯片中,因此稱為固件。

(2)系統軟件。包括操作系統和編譯器等軟件,如Windows、Linux、UNIX、Mac OS。系統軟件與硬件共同搭建起一個操作“平臺”,可以管理和優化計算機硬件資源的使用。

(3)支撐軟件。是支撐各種軟件的開發與維護的軟件,又稱為軟件開發環境,如Microsoft Visual C、Microsoft Visual Studio、Maromedia Dreamweaver等。

(4)應用軟件。它的種類最多,如辦公軟件、電子商務軟件、通信軟件、行業軟件,游戲軟件等。根據用戶和所服務的領域提供不同的功能,是為了某種特定的用途而開發的軟件。本書開發實例的方向就是應用軟件。

2)按軟件規模劃分

根據開發軟件所需的人員數量、時間期限以及完成的源程序(有效)行數,劃分出6種不同規模的軟件,如表1.1所示。

表1.1 軟件規模的分類

3.軟件生命周期與開發階段

軟件生命周期是按時間分程的思想方法描述軟件的產生直到報廢的生命周期。軟件生命周期包含制訂計劃、需求分析、系統設計、程序編碼、軟件測試、運行維護6個開發階段,如表1.2所示。

表1.2 軟件生命周期的6個開發階段

4.各個開發階段之間的交接——開發文檔

軟件并非只包括可以在計算機上運行的程序,與這些程序相關的文件一般也被認為是軟件的一部分。軟件文檔是軟件工程實施中的重要成分,它不僅是軟件開發各階段的重要依據,而且也影響軟件的可維護性。

各個開發階段之間的交接實際上就是文檔與文檔之間的交接。換句話說,每個開發階段都應該產生相應的開發文檔。文檔是開發團隊中技術人員的交流工具,可以快速地找到相關的位置,避免重復閱讀程序。

一份合格的開發文檔應該全面,要有條理地詮釋軟件開發流程,要包含技術難點的解釋、邏輯判斷、重要算法,要包括部分業務流程的說明。技術人員通過看文檔可迅速了解程序的流程、調用關系,測試人員可以知道開發人員對用戶需求了解的程度、是否有偏差,以快速定位錯誤,提高開發效率和開發質量。

5.軟件的開發方法

1)開發方法的分類

(1)功能分解法——計算任務。

(2)結構化法——以數據為中心。

(3)面向對象法——以對象為中心。

(4)組件法——以組件為中心。

2)結構化系統開發方法(Structured System Development Methodology

結構化系統開發方法是由E.Yourdon和L.L.Constantine提出的,首先對軟件進行需求分析,然后進行總體設計,最后結構化編程(SP)。

按照程序設計方法的發展,程序設計方法可以分為:

(1)功能分解法,以計算任務為中心。

(2)結構化程序設計,以數據為中心。

(3)面向對象程序設計,以對象為中心。

(4)組件程序設計,以組件為中心。

初學者更容易理解結構化(模塊化)的理念,即自頂向下對系統進行分析與設計。這種開發方法能產生清晰、易懂的程序代碼,使用程序易于維護。

按用戶至上的原則,將系統開發過程劃分為若干個相對獨立的階段,然后再考慮局部實現。實施階段堅持自底向上地逐步實施,即從最基層的模塊做起(編程),然后按照系統設計的結構,將模塊一個個拼接到一起進行調試,自底向上、逐步地構成整個系統。

引導文獻

軟件工程是隨著軟件的發展而誕生的學科。軟件工程由程序、數據和文檔組成,其中程序是主體,數據是使程序能正常操縱信息的數據結構,文檔是與軟件的開發、維護和使用有關的材料。軟件開發方法應規范化。

1.軟件開發的主要環節

軟件開發的主要環節如圖1.1所示。

圖1.1 軟件開發的主要環節

2.軟件開發的策略與步驟

軟件開發有三種基本策略:“復用”、“分而治之”、“優化—折中”。

(1)復用是指“利用現成的東西”。

(2)分而治之是指把一個復雜的問題分解成若干個簡單的問題,然后逐個解決,如圖1.2所示。

圖1.2 分而治之

軟件人員在分而治之時應考慮:問題分解后能否用程序實現?程序能否集成為一個軟件系統以解決問題?

(3)優化—折中。優化工作不是可有可無的事情,而是必須要做的事情。當優化工作成為一種責任時,程序員才會不斷改進軟件中的算法、數據結構和程序組織,從而提高軟件質量。折中策略是指通過協調各個質量因素,實現整體質量的最優。

3.軟件開發模型

軟件開發模型是軟件開發全部過程、活動和任務的結構框架。最早出現的軟件開發模型是于1970年由W.Royce提出的瀑布模型,而后隨著軟件工程學科的發展和軟件開發的實踐,相繼提出了演化模型、螺旋模型、增量模型、噴泉模型、智能模型等。

軟件也有一個孕育、誕生、成長、成熟、衰亡的生存過程。根據這一思想,可以得到軟件生命周期的6個開發階段,即制訂計劃、需求分析、設計、程序編碼、測試、運行與維護。

軟件生命周期模型是從軟件項目需求定義直至軟件經使用后廢棄為止,跨越整個生命周期的系統開發、運作和維護所實施的全部過程、活動和任務的結構框架。

(1)瀑布模型:制訂計劃,進行需求分析和說明、軟件設計、程序編碼、軟件測試、運行與維護,固定次序、自上而下、相互銜接。瀑布模型如圖1.3所示。

圖1.3 瀑布模型

(2)演化模型:在項目開發的初始階段,對軟件的需求認識不夠清晰,可以先做試驗開發與探索可行性,弄清軟件需求;在此基礎上獲得較為滿意的軟件產品。第一次得到的試驗性產品稱為“原型”。

(3)螺旋模型:開發復雜的大型軟件時,結合瀑布模型與演化模型沿著螺線旋轉,自內原型處向外拓展,每旋轉一圈便更新完善一個新的版本。螺旋模型如圖1.4所示。

圖1.4 螺旋模型

① 制訂計劃——確定軟件目標,選定實施方案,弄清項目開發的限制條件。

② 風險分析——分析所選方案,考慮如何識別和消除風險。

③ 實施工程——實施軟件開發。測試驗收產品。

④ 客戶評估——評價開發工作,提出修正建議。

(4)噴泉模型:主要支持面向對象的開發方法。分析、設計和編碼之間不存在明顯的邊界。噴泉模型如圖1.5所示。

圖1.5 噴泉模型

(5)智能模型:基于知識的軟件開發模型,綜合以上模型,結合專家系統,采用歸約和推理機制,幫助軟件人員完成開發工作。

即時訓練

1.軟件工程實現的目標

(1)付出較低的開發成本。

(2)實現要求的軟件功能。

(3)獲取較好的軟件性能。

(4)提高軟件的可移植性。

(5)降低系統的維護費用。

(6)按時交付軟件的使用。

2.軟件工程工作的內容

(1)分階段實施系統的開發。

(2)控制調整開發的進度。

(3)控制優化資金的使用。

(4)提交階段性文檔。

拓展任務

(1)較常見應用軟件如下。

① 行業管理軟件:如計算機行業管理軟件開龍IT200商軟ERP等。

② 文字處理軟件:如Office、WPS等。

③ 信息管理軟件:如Access數據庫。

④ 輔助設計軟件:如AutoCAD、Photoshop。

⑤ 媒體播放軟件:如暴風影音、豪杰超級解霸、Windows Media Player、RealPlayer等。

⑥ 系統優化軟件:如Windows優化大師、超級兔子魔法設置。

⑦ 圖形圖像軟件:Coreldraw、Painter、MAX,MAYA等。

⑧ 數學軟件:Mathematica、Maple、Matlab、MathCad等。

⑨ 統計軟件:SAS、SPSS等。

⑩ 后期合成軟件:After Effects、Combustion、Digital Fusion、Shake、Flame等。

?殺毒軟件:如瑞星、金山毒霸、卡巴斯基、江民等。

(2)列舉出更多的軟件并歸類。

主站蜘蛛池模板: 平陆县| 大新县| 朝阳市| 绥滨县| 滨海县| 肃南| 莫力| 奎屯市| 黄平县| 铁力市| 称多县| 兴海县| 石棉县| 霞浦县| 四子王旗| 古交市| 通辽市| 化州市| 定远县| 高淳县| 巍山| 和田县| 榕江县| 磴口县| 新津县| 天长市| 临潭县| 安吉县| 东乌| 肇庆市| 上犹县| 精河县| 长乐市| 宽甸| 长乐市| 芒康县| 肇州县| 淮北市| 景泰县| 遂川县| 古交市|