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

第1章 軟件開發(fā)與程序設(shè)計(jì)

1.1 任務(wù)一:軟件的開發(fā)

軟件被應(yīng)用于世界的各個(gè)領(lǐng)域,對(duì)人們的生活和工作產(chǎn)生了深遠(yuǎn)的影響。近年來,軟件開發(fā)作為現(xiàn)代科學(xué)研究和解決工程問題的基礎(chǔ),成為當(dāng)今世界不可缺少的一部分。在不久的將來,軟件將成為驅(qū)動(dòng)社會(huì)發(fā)展的新動(dòng)力。

任務(wù)描述

軟件開發(fā)的目標(biāo):以客戶與市場(chǎng)為導(dǎo)向、理解軟件真正的需求,開發(fā)出具有可修改性、有效性、可靠性、可理解性、可維護(hù)性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性并滿足用戶需要的軟件產(chǎn)品,獲取最大的商業(yè)利益。

任務(wù)分析與設(shè)計(jì)

如果硬件是人的身體,那么軟件就是人的思維。在開發(fā)軟件過程中,開發(fā)的步驟、方法甚至技巧和習(xí)慣都會(huì)直接影響軟件成品的質(zhì)量。軟件開發(fā)項(xiàng)目的成功有以下幾個(gè)主要的目標(biāo)作為驗(yàn)證標(biāo)準(zhǔn):

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

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

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

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

(5)需要較低的維護(hù)費(fèi)用。

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

任務(wù)實(shí)現(xiàn)

1.初識(shí)“軟件”

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

凡是能看見、能摸到的都是硬件,如鍵盤、顯示器、鼠標(biāo)、主機(jī)等。

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

2.軟件的分類

1)按功能劃分

(1)貼近計(jì)算機(jī)硬件的小軟件。通?!肮袒痹谥蛔x存儲(chǔ)器芯片中,因此稱為固件。

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

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

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

2)按軟件規(guī)模劃分

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

表1.1 軟件規(guī)模的分類

3.軟件生命周期與開發(fā)階段

軟件生命周期是按時(shí)間分程的思想方法描述軟件的產(chǎn)生直到報(bào)廢的生命周期。軟件生命周期包含制訂計(jì)劃、需求分析、系統(tǒng)設(shè)計(jì)、程序編碼、軟件測(cè)試、運(yùn)行維護(hù)6個(gè)開發(fā)階段,如表1.2所示。

表1.2 軟件生命周期的6個(gè)開發(fā)階段

4.各個(gè)開發(fā)階段之間的交接——開發(fā)文檔

軟件并非只包括可以在計(jì)算機(jī)上運(yùn)行的程序,與這些程序相關(guān)的文件一般也被認(rèn)為是軟件的一部分。軟件文檔是軟件工程實(shí)施中的重要成分,它不僅是軟件開發(fā)各階段的重要依據(jù),而且也影響軟件的可維護(hù)性。

各個(gè)開發(fā)階段之間的交接實(shí)際上就是文檔與文檔之間的交接。換句話說,每個(gè)開發(fā)階段都應(yīng)該產(chǎn)生相應(yīng)的開發(fā)文檔。文檔是開發(fā)團(tuán)隊(duì)中技術(shù)人員的交流工具,可以快速地找到相關(guān)的位置,避免重復(fù)閱讀程序。

一份合格的開發(fā)文檔應(yīng)該全面,要有條理地詮釋軟件開發(fā)流程,要包含技術(shù)難點(diǎn)的解釋、邏輯判斷、重要算法,要包括部分業(yè)務(wù)流程的說明。技術(shù)人員通過看文檔可迅速了解程序的流程、調(diào)用關(guān)系,測(cè)試人員可以知道開發(fā)人員對(duì)用戶需求了解的程度、是否有偏差,以快速定位錯(cuò)誤,提高開發(fā)效率和開發(fā)質(zhì)量。

5.軟件的開發(fā)方法

1)開發(fā)方法的分類

(1)功能分解法——計(jì)算任務(wù)。

(2)結(jié)構(gòu)化法——以數(shù)據(jù)為中心。

(3)面向?qū)ο蠓ā詫?duì)象為中心。

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

2)結(jié)構(gòu)化系統(tǒng)開發(fā)方法(Structured System Development Methodology

結(jié)構(gòu)化系統(tǒng)開發(fā)方法是由E.Yourdon和L.L.Constantine提出的,首先對(duì)軟件進(jìn)行需求分析,然后進(jìn)行總體設(shè)計(jì),最后結(jié)構(gòu)化編程(SP)。

按照程序設(shè)計(jì)方法的發(fā)展,程序設(shè)計(jì)方法可以分為:

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

(2)結(jié)構(gòu)化程序設(shè)計(jì),以數(shù)據(jù)為中心。

(3)面向?qū)ο蟪绦蛟O(shè)計(jì),以對(duì)象為中心。

(4)組件程序設(shè)計(jì),以組件為中心。

初學(xué)者更容易理解結(jié)構(gòu)化(模塊化)的理念,即自頂向下對(duì)系統(tǒng)進(jìn)行分析與設(shè)計(jì)。這種開發(fā)方法能產(chǎn)生清晰、易懂的程序代碼,使用程序易于維護(hù)。

按用戶至上的原則,將系統(tǒng)開發(fā)過程劃分為若干個(gè)相對(duì)獨(dú)立的階段,然后再考慮局部實(shí)現(xiàn)。實(shí)施階段堅(jiān)持自底向上地逐步實(shí)施,即從最基層的模塊做起(編程),然后按照系統(tǒng)設(shè)計(jì)的結(jié)構(gòu),將模塊一個(gè)個(gè)拼接到一起進(jìn)行調(diào)試,自底向上、逐步地構(gòu)成整個(gè)系統(tǒng)。

引導(dǎo)文獻(xiàn)

軟件工程是隨著軟件的發(fā)展而誕生的學(xué)科。軟件工程由程序、數(shù)據(jù)和文檔組成,其中程序是主體,數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu),文檔是與軟件的開發(fā)、維護(hù)和使用有關(guān)的材料。軟件開發(fā)方法應(yīng)規(guī)范化。

1.軟件開發(fā)的主要環(huán)節(jié)

軟件開發(fā)的主要環(huán)節(jié)如圖1.1所示。

圖1.1 軟件開發(fā)的主要環(huán)節(jié)

2.軟件開發(fā)的策略與步驟

軟件開發(fā)有三種基本策略:“復(fù)用”、“分而治之”、“優(yōu)化—折中”。

(1)復(fù)用是指“利用現(xiàn)成的東西”。

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

圖1.2 分而治之

軟件人員在分而治之時(shí)應(yīng)考慮:問題分解后能否用程序?qū)崿F(xiàn)?程序能否集成為一個(gè)軟件系統(tǒng)以解決問題?

(3)優(yōu)化—折中。優(yōu)化工作不是可有可無的事情,而是必須要做的事情。當(dāng)優(yōu)化工作成為一種責(zé)任時(shí),程序員才會(huì)不斷改進(jìn)軟件中的算法、數(shù)據(jù)結(jié)構(gòu)和程序組織,從而提高軟件質(zhì)量。折中策略是指通過協(xié)調(diào)各個(gè)質(zhì)量因素,實(shí)現(xiàn)整體質(zhì)量的最優(yōu)。

3.軟件開發(fā)模型

軟件開發(fā)模型是軟件開發(fā)全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。最早出現(xiàn)的軟件開發(fā)模型是于1970年由W.Royce提出的瀑布模型,而后隨著軟件工程學(xué)科的發(fā)展和軟件開發(fā)的實(shí)踐,相繼提出了演化模型、螺旋模型、增量模型、噴泉模型、智能模型等。

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

軟件生命周期模型是從軟件項(xiàng)目需求定義直至軟件經(jīng)使用后廢棄為止,跨越整個(gè)生命周期的系統(tǒng)開發(fā)、運(yùn)作和維護(hù)所實(shí)施的全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。

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

圖1.3 瀑布模型

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

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

圖1.4 螺旋模型

① 制訂計(jì)劃——確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開發(fā)的限制條件。

② 風(fēng)險(xiǎn)分析——分析所選方案,考慮如何識(shí)別和消除風(fēng)險(xiǎn)。

③ 實(shí)施工程——實(shí)施軟件開發(fā)。測(cè)試驗(yàn)收產(chǎn)品。

④ 客戶評(píng)估——評(píng)價(jià)開發(fā)工作,提出修正建議。

(4)噴泉模型:主要支持面向?qū)ο蟮拈_發(fā)方法。分析、設(shè)計(jì)和編碼之間不存在明顯的邊界。噴泉模型如圖1.5所示。

圖1.5 噴泉模型

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

即時(shí)訓(xùn)練

1.軟件工程實(shí)現(xiàn)的目標(biāo)

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

(2)實(shí)現(xiàn)要求的軟件功能。

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

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

(5)降低系統(tǒng)的維護(hù)費(fèi)用。

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

2.軟件工程工作的內(nèi)容

(1)分階段實(shí)施系統(tǒng)的開發(fā)。

(2)控制調(diào)整開發(fā)的進(jìn)度。

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

(4)提交階段性文檔。

拓展任務(wù)

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

① 行業(yè)管理軟件:如計(jì)算機(jī)行業(yè)管理軟件開龍IT200商軟ERP等。

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

③ 信息管理軟件:如Access數(shù)據(jù)庫。

④ 輔助設(shè)計(jì)軟件:如AutoCAD、Photoshop。

⑤ 媒體播放軟件:如暴風(fēng)影音、豪杰超級(jí)解霸、Windows Media Player、RealPlayer等。

⑥ 系統(tǒng)優(yōu)化軟件:如Windows優(yōu)化大師、超級(jí)兔子魔法設(shè)置。

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

⑧ 數(shù)學(xué)軟件:Mathematica、Maple、Matlab、MathCad等。

⑨ 統(tǒng)計(jì)軟件:SAS、SPSS等。

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

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

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

主站蜘蛛池模板: 宣威市| 朝阳县| 山丹县| 湘潭县| 诏安县| 晋城| 勃利县| 湟源县| 郧西县| 浑源县| 山阳县| 丹东市| 博兴县| 个旧市| 太原市| 灯塔市| 原平市| 迁安市| 名山县| 延寿县| 南汇区| 商洛市| 岱山县| 汽车| 济阳县| 平遥县| 谷城县| 通辽市| 观塘区| 集安市| 兰考县| 伊宁市| 中方县| 白玉县| 安达市| 金山区| 沁水县| 内乡县| 古蔺县| 米泉市| 正宁县|