谈谈软件开发方法
? ? ?軟件工程主要講述軟件開發(fā)的道理,軟件開發(fā)的基本策略,大致總結(jié)為以下3點(diǎn):“復(fù)用”、“分而治之”、“優(yōu)化與折衷”,也是運(yùn)用于軟件開發(fā)過程中基本的一些世界觀和方法論。
1.軟件工程框架
? ? ? 軟件工程聚焦于軟件開發(fā),軟件開發(fā)本質(zhì)實(shí)現(xiàn)問題域中的概念和處理邏輯到運(yùn)行平臺的概念和處理邏輯的映射,而實(shí)現(xiàn)映射的基本手段就是建模。為了控制開發(fā)的復(fù)雜度,我們會基于不同抽象層次對問題進(jìn)行逐步求解,一個(gè)抽象層由一組確定的術(shù)語定義,對系統(tǒng)包括系統(tǒng)邊界、系統(tǒng)內(nèi)模型元素以及元素之間的關(guān)系進(jìn)行描述,從而實(shí)現(xiàn)建模。
?
? ? ??軟件工程主張用工程化的方法來進(jìn)行軟件開發(fā),目標(biāo)是生成具有正確性、可用性和開銷合宜的產(chǎn)品。因此,軟件項(xiàng)目的成功要以項(xiàng)目所消耗的時(shí)間、成本以及滿足需求的程度來進(jìn)行評判。軟件工程的原則包括選取適宜的開發(fā)模型、提供高質(zhì)量的工程支持、重視開發(fā)過程的管理;涉及到的主要內(nèi)容,包括軟件開發(fā)模型、軟件開發(fā)方法、軟件過程、以及為過程和方法提供的支持。
? ? ? ?軟件開發(fā)模型,即軟件生存周期模型,是軟件過程、活動和任務(wù)的結(jié)構(gòu)框架。軟件活動包括需求、設(shè)計(jì)、實(shí)現(xiàn)、確認(rèn)和支持活動;過程是活動的集合;活動可拆分成任務(wù)執(zhí)行。
? ? ? ?軟件開發(fā)方法,為建造軟件提供技術(shù)上的解決方法,即解決“如何做”的問題,也就是提供問題域到處理邏輯域上各個(gè)抽象層面的建模方法。
? ? ? ?軟件過程,為建造高質(zhì)量的軟件所需完成任務(wù)的框架,即軟件生存周期過程。其中包括與軟件生產(chǎn)直接相關(guān)的基本過程、相關(guān)方按其目標(biāo)所從事的支持過程、與軟件生產(chǎn)組織相關(guān)的組織過程。
? ? ??
?
? ? ? ? 通過以上三個(gè)概念,我們要認(rèn)識到:軟件開發(fā)只是軟件生存周期過程的一部分;軟件是通過一系列的開發(fā)方法設(shè)計(jì)出來的,掌握并能正確運(yùn)用開發(fā)方法,具有事半功倍的作用。?
?2.結(jié)構(gòu)化的開發(fā)方法
? ? ?結(jié)構(gòu)化方法是一種系統(tǒng)化的軟件開發(fā)方法,也是迄今為止最傳統(tǒng)、應(yīng)用最廣泛的一種開發(fā)方法。結(jié)構(gòu)化方法看待世界的基本觀點(diǎn):一切系統(tǒng)都是有信息流構(gòu)成的(其中包括一些必要的數(shù)據(jù)變換),每一個(gè)信息流都有自己的起點(diǎn)和歸屬,有驅(qū)動信息流程的加工,因此信息處理主要表現(xiàn)為信息的流動。從問題空間到解空間分為了需求分析層、設(shè)計(jì)層、實(shí)現(xiàn)層,分別對應(yīng)結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計(jì)方法、結(jié)構(gòu)化程序設(shè)計(jì)方法。
? ? ? ?結(jié)構(gòu)化方法是一種系統(tǒng)化的軟件系統(tǒng)建模方法,實(shí)現(xiàn)了從問題空間到解空間自頂向下的映射。結(jié)構(gòu)化方法圍繞“自頂向下功能分解,數(shù)據(jù)抽象、功能/過程抽象、模塊化”基本原則,給出完備的符號,可操作的過程、易理解的表達(dá)工具,并提供了控制信息組織復(fù)雜性的機(jī)制,如逐層分解、數(shù)據(jù)打包等。
?
3. 面向?qū)ο蟮拈_發(fā)方法??
? ? ? ?面向?qū)ο蠓椒ㄊ且环N以對象和對象關(guān)系來構(gòu)造軟件系統(tǒng)模型的系統(tǒng)化方法。其世界觀是:一切系統(tǒng)都是由對象構(gòu)成的,他們之間的相互作用、相互影響,構(gòu)成了客觀世界各式各樣的系統(tǒng)。
? ? ?面向?qū)ο蠓椒ǖ闹饕攸c(diǎn)為:(1)從問題域中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),用對象作為對這些事物的抽象表示,并以此作為系統(tǒng)的基本構(gòu)成單元,事物的靜態(tài)特征用對象的屬性表示,事物的動態(tài)特征(事物的行為)用對象的操作表示;(2)對象的屬性和操作合為一體,對外屏蔽其內(nèi)部細(xì)節(jié),實(shí)現(xiàn)了封裝;(3)對事物進(jìn)行分類,具有相同屬性和操作的對象歸為一類,類就是對這些對象的抽象描述,對象就是類的一個(gè)實(shí)例;(4)通過在不同程度運(yùn)用抽象的原則(事物之間或多或少的差異),可以得到一般類和特殊類,特殊類繼承了一般類的屬性和操作,這種繼承關(guān)系的描述和實(shí)現(xiàn),簡化了系統(tǒng)的構(gòu)造過程及其文檔設(shè)計(jì)。(5)通過聚合關(guān)系,可以用簡單對象來構(gòu)成復(fù)雜的對象;(6)對象之間只能通過消息進(jìn)行通信,實(shí)現(xiàn)對象之間的動態(tài)聯(lián)系;(7)用關(guān)聯(lián)表達(dá)類之間的靜態(tài)關(guān)系。因此,面向?qū)ο蠓椒◤?qiáng)調(diào)運(yùn)用人類在日常邏輯思維中經(jīng)常采用的方法和原則,這使得軟件開發(fā)者能更有效地思考問題,并能通過更加容易理解的方式來進(jìn)行表達(dá);強(qiáng)調(diào)直接以問題域中的事物來思考和認(rèn)識問題,這也使得系統(tǒng)能夠直接映射到問題域,保持問題域中事物及其相互關(guān)系的本來面貌。
?
4.敏捷開發(fā)方法
? ? ? ?敏捷軟件開發(fā)又稱敏捷開發(fā),是一種新型軟件開發(fā)方法,是一種應(yīng)對快速變化的需求的一種軟件開發(fā)能力。敏捷開發(fā)沒有統(tǒng)一的過程和術(shù)語,相對于 “非敏捷”(結(jié)構(gòu)化開發(fā)、面向?qū)ο箝_發(fā)),它更強(qiáng)調(diào)程序員團(tuán)隊(duì)和業(yè)務(wù)專家之間的緊密協(xié)作、面對面的溝通、頻繁交付的軟件版本、緊湊和自我組織型團(tuán)隊(duì)、適應(yīng)需求變化的代碼編寫和團(tuán)隊(duì)組織方式,注重軟件開發(fā)中人的作用。因此,敏捷軟件工程是哲學(xué)理念和一系列開發(fā)指南的綜合,其開發(fā)的指導(dǎo)方針強(qiáng)調(diào)超越分析和設(shè)計(jì)(但是并不排斥這類活動)的發(fā)布,以及開發(fā)人員和客戶之間主動和持續(xù)的溝通。圍繞敏捷軟件工程的理念,敏捷聯(lián)盟概括了一些可以讓軟件開發(fā)團(tuán)隊(duì)具有快速工作、響應(yīng)變化能力的價(jià)值觀和原則,其中包括4條宣言和12條原則,分別從軟件質(zhì)量、項(xiàng)目規(guī)劃、態(tài)度、團(tuán)隊(duì)組成和精神、溝通、進(jìn)度度量、持續(xù)發(fā)展、技能和設(shè)計(jì)、自我調(diào)整和適應(yīng)等多方面給出了指導(dǎo)性說明。
?
5. 總結(jié)
? ? ? ?軟件工程中提到的軟件開發(fā)方法,基本都是在軟件開發(fā)與實(shí)踐中不斷積累的成果總結(jié)。從早期以機(jī)器處理過程出發(fā)的結(jié)構(gòu)化開發(fā)方法、到以人類認(rèn)識世界視角的面向?qū)ο箝_發(fā)方法、再到以人的主觀能動性持續(xù)改進(jìn)的敏捷開發(fā)方法,軟件開發(fā)方法也隨著技術(shù)發(fā)展和應(yīng)用場景在不斷進(jìn)步。
總結(jié)
- 上一篇: 在excel中如何快速准确录入身份证号码
- 下一篇: cocoa touch