軟件工程生命周期模型的學(xué)習(xí)總結(jié)_第1頁
軟件工程生命周期模型的學(xué)習(xí)總結(jié)_第2頁
軟件工程生命周期模型的學(xué)習(xí)總結(jié)_第3頁
軟件工程生命周期模型的學(xué)習(xí)總結(jié)_第4頁
軟件工程生命周期模型的學(xué)習(xí)總結(jié)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1 綜述軟件過程定義了軟件開發(fā)中采用的方法。軟件工程是集成計(jì)算機(jī)軟件開發(fā)的過程、方法和工具的學(xué)科。軟件工程的一般視圖:定義階段(做什么)、開發(fā)階段(如何做)、支持階段(變化)。 2 線性順序模型有時(shí)被稱為“傳統(tǒng)生存周期或瀑布模型”?;顒?dòng)包括:系統(tǒng)/信息工程和建模、軟件需求分析、設(shè)計(jì)、代碼生成、測(cè)試、支持 為什么線性模型有時(shí)候不能奏效?建議:雖然線性模型經(jīng)常被嘲笑為“舊式的”,但是,在需求被很好理解的情況下,它仍然是一種合理的方法。缺點(diǎn):1、實(shí)際的項(xiàng)目大部分情況難以按照該模型給出的順序進(jìn)行,而且這種模型的迭代是間接的,這很容易由微小的變化而造成大的混亂。2、 經(jīng)常情況下客戶難以表達(dá)真正的需求,而

2、這種模型卻要求如此,這種模型是不歡迎具有二義性問題存在的。3、 客戶要等到開發(fā)周期的晚期才能看到程序運(yùn)行的測(cè)試版本,而在這時(shí)發(fā)現(xiàn)大的錯(cuò)誤時(shí),可能引起客戶的驚慌,而后果也可能是災(zāi)難性的。4、采用這種線性模型,會(huì)經(jīng)常在過程的開始和結(jié)束時(shí)碰到等待其他成員完成其所依賴的任務(wù)才能進(jìn)行下去,有可能花在等待的時(shí)間比開發(fā)的時(shí)間要長(zhǎng)。我們稱之為“堵賽狀態(tài)”。 優(yōu)點(diǎn):1、它提供了一個(gè)摸板,這個(gè)摸板使得分析、設(shè)計(jì)、編碼、測(cè)試和支持的方法可以在該摸板下有一個(gè)共同的指導(dǎo)。2、雖然有不少缺陷但比在軟件開發(fā)中隨意的狀態(tài)要好得多。瀑布模型將軟件開發(fā)活動(dòng)分為需求分析、設(shè)計(jì)、編碼、測(cè)試等幾個(gè)階段,這幾個(gè)階段是對(duì)工程活動(dòng)的劃分,瀑

3、布模型沒有再涉及其它方面的活動(dòng),因此瀑布模型關(guān)注于工程活動(dòng)。關(guān)于選取開發(fā)模型有時(shí)開發(fā)模型的選取不是很容易判斷的,這里面有時(shí)不單是需求及開發(fā)的問題,對(duì)于開發(fā)商有開發(fā)周期、開發(fā)費(fèi)用的問題,對(duì)于用戶同樣有內(nèi)部計(jì)劃、公司發(fā)展計(jì)劃等因素進(jìn)行影響。一般來說對(duì)于應(yīng)用開發(fā)為客戶開發(fā)軟件,客戶在開發(fā)及測(cè)試完畢軟件后就要實(shí)際開始使用,那么就使用瀑布模型。當(dāng)然在需求明確的情況下自然也要使用瀑布模型對(duì)于自主開發(fā)及客戶需求不明并有較長(zhǎng)的設(shè)計(jì)時(shí)間可以用演化模型。而螺旋模型適于適合于大型軟件開發(fā),吸收了"演化"概念,不過有時(shí)也用于用戶需求不明的情況下。 當(dāng)然還有其他開發(fā)模型,沒有在本文討論。名詞定義:瀑

4、布模型:規(guī)定了各項(xiàng)軟件工程活動(dòng)。包括:制定開發(fā)計(jì)劃、進(jìn)行需求分析和說明、軟件設(shè)計(jì)、程序編碼、測(cè)試及維護(hù)。特點(diǎn):自上而下,相互銜接的固定次序,如瀑布流水、逐級(jí)下落。演化模型:第一次只是試驗(yàn)開發(fā),其目標(biāo)只在于探索可行性,弄清軟件需求;第二次則在此基礎(chǔ)上獲得較為滿意的軟件產(chǎn)品,通常把一次得到的試驗(yàn)性產(chǎn)品稱"原型"。特點(diǎn):減少由于軟件需求不明確而給開發(fā)帶來的風(fēng)險(xiǎn)。螺旋模型:將瀑布模型及演化螺旋模型結(jié)合起來,并且加入被兩種模型都忽略了的風(fēng)險(xiǎn)分析,彌補(bǔ)了兩者的不足。 瀑布模型的特點(diǎn): 瀑布模型為軟件的開發(fā)和維護(hù)提供了一種有效有管理模式,對(duì)保證軟件產(chǎn)品的質(zhì)量有重要的作用; 可根據(jù)這一模式

5、制定出開發(fā)計(jì)劃,進(jìn)行成本預(yù)算,組織開發(fā)力量,以項(xiàng)目的階段評(píng)審和文檔控制為手段,有效地對(duì)整個(gè)開發(fā)過程進(jìn)行指導(dǎo); 在一定程度上消除非結(jié)構(gòu)化軟件、降低軟件的復(fù)雜度、促進(jìn)軟件開發(fā)工程化方面起到顯著作用; 瀑布模型缺乏靈活性、無法通過開發(fā)活動(dòng)來澄清本來不夠確切的需求,這將導(dǎo)致直到軟件開發(fā)完成時(shí)發(fā)現(xiàn)所開發(fā)的軟件并非是用戶所需求的。3 原型實(shí)現(xiàn)模型原型實(shí)現(xiàn)范型定義:需求收集快速設(shè)計(jì)原型實(shí)現(xiàn)模型是迭代的,是幫助客戶或開發(fā)者理解需求的,總體上講,并不是交付一個(gè)最終產(chǎn)品系統(tǒng)。其流程從聽取客戶意見開始、隨后是建造/修改原型、客戶測(cè)試運(yùn)行原型、然后回頭往復(fù)循環(huán)直到客戶對(duì)原型滿意為止。由于這種模型可以讓客戶快速的感受到

6、實(shí)際的系統(tǒng)(雖然這個(gè)系統(tǒng)不帶有任何質(zhì)量的保證),所以客戶和開發(fā)者都比較喜歡這種過程模型(對(duì)于那些僅僅用來演示軟件功能的公司而言或從來不考慮軟件質(zhì)量和不害怕長(zhǎng)期維護(hù)的公司而言)。 缺點(diǎn):1、沒有考慮軟件的整體質(zhì)量和長(zhǎng)期的可維護(hù)性。2、大部分情況是不合適的操作算法被采用目的為了演示功能,不合適的開發(fā)工具被采用僅僅為了它的方便,還有不合適的操作系統(tǒng)被選擇等等。3、由于達(dá)不到質(zhì)量要求產(chǎn)品可能被拋棄,而采用新的模型重新設(shè)計(jì)。優(yōu)點(diǎn):1、如果客戶和開發(fā)者達(dá)成一致協(xié)議:原型被建造僅為了定義需求,之后就被拋棄或者部分拋棄, 那么這種模型很合適了。2、迷惑客戶搶占市場(chǎng),這是一個(gè)首選的模型。原型實(shí)現(xiàn)仍然是軟件工程的

7、一個(gè)有效范型。關(guān)鍵是定義開始時(shí)的游戲規(guī)則,即客戶和開發(fā)者達(dá)成一致:原型被建造僅是為了定義需求,之后就被拋棄了(或至少部分被拋棄),實(shí)際的軟件在充分考慮了質(zhì)量和可維護(hù)性之后才被開發(fā)。建議:當(dāng)你的客戶有一個(gè)合理的續(xù)簽,但對(duì)細(xì)節(jié)沒有任務(wù)線索時(shí),先開發(fā)一個(gè)原型。原型模型則主要是為了解決需求獲取的難題而創(chuàng)建原型用于需求的獲取和確認(rèn),再將需求轉(zhuǎn)化為軟件系統(tǒng),其主要內(nèi)容集中在軟件開發(fā)本身,因此原型模型也關(guān)注于工程活動(dòng)。4 RAD模型快速應(yīng)用開發(fā)(Rapid Application Development、RAD)是一個(gè)增量型的軟件開發(fā)過程模型,強(qiáng)調(diào)極短的開發(fā)周期。是線性順序模型的一個(gè)“高速”變種,通過使用基

8、于構(gòu)件的建造發(fā)放贏得了快速開發(fā)。如果需求理解的好而且約束了項(xiàng)目的范圍,利用這種模型可以很快的創(chuàng)建出功能完善的“信息系統(tǒng)”。其流程從業(yè)務(wù)建模開始,隨后是數(shù)據(jù)建模、過程建模、應(yīng)用生成、測(cè)試及反復(fù)。RAD過程強(qiáng)調(diào)的是復(fù)用,復(fù)用已有的或開發(fā)可復(fù)用的構(gòu)件。實(shí)際上RAD采用第四代技術(shù)。基于構(gòu)件的軟件工程(不理解)適用范圍:如果需求理解得很并且約束了項(xiàng)目范圍。主要適用于信息系統(tǒng)應(yīng)用,包括以下階段:業(yè)務(wù)建模、數(shù)據(jù)建模、過程建模、應(yīng)用生成、測(cè)試及反復(fù)。 業(yè)務(wù)建模工作流程與其他工作流程的關(guān)系如下:業(yè)務(wù)模型是需求工作流程的一種重要輸入,用來了解對(duì)系統(tǒng)的需求。業(yè)務(wù)實(shí)體是分析設(shè)計(jì)工作流程的一種輸入,用來確定設(shè)計(jì)模型中的

9、實(shí)體類。 缺點(diǎn):1、只能用于信息系統(tǒng)。2、對(duì)于較大的項(xiàng)目需要足夠的人力資源去建造足夠的RAD組。3、開發(fā)者和客戶必須在很短的時(shí)間完成一系列的需求分析, 任何一方配合不當(dāng)都會(huì)導(dǎo)致RAD項(xiàng)目失敗。4、這種模型對(duì)模塊化要求比較高,如果有哪一功能不能被模塊化,那么建造RAD所需要的構(gòu)件就會(huì)有問題。5、技術(shù)風(fēng)險(xiǎn)很高的情況下不適合這種模型。優(yōu)點(diǎn):1、開發(fā)速度快,質(zhì)量有保證。2、對(duì)信息系統(tǒng)特別有效。5 演化軟件過程模型演化模型是迭代的。它的特征是:使軟件工程師漸進(jìn)地開發(fā)逐步完善的軟件版本。5.1 增量模型增量模型融合了線性順序模型的基本成分(重復(fù)的應(yīng)用)和原型實(shí)現(xiàn)的迭代特征。增量模型采用隨著日程時(shí)間的進(jìn)展而

10、交錯(cuò)的線性序列。每一個(gè)線性序列產(chǎn)生軟件的一個(gè)可發(fā)布的“增量”。當(dāng)使用增量模型時(shí),第一個(gè)增量往往是核心的產(chǎn)品,也就是說第一個(gè)增量實(shí)現(xiàn)了基本的需求,但很多補(bǔ)充的特征還沒有發(fā)布。客戶對(duì)每一個(gè)增量的使用和評(píng)估,都做為下一個(gè)增量發(fā)布的新特征和功能。這個(gè)過程在每一個(gè)增量發(fā)布后不斷從復(fù),直到產(chǎn)生了最終的完善產(chǎn)品。增量模型強(qiáng)調(diào)每一個(gè)增量均發(fā)布一個(gè)可操作的產(chǎn)品。缺點(diǎn):1、至始至終開發(fā)者和客戶糾纏在一起,直到完全版本出來。優(yōu)點(diǎn):1、人員分配靈活,剛開始不用投入大量人力資源,當(dāng)核心產(chǎn)品很受歡迎時(shí),可增加人力實(shí)現(xiàn)下一個(gè)增量。2、當(dāng)配備的人員不能在設(shè)定的期限內(nèi)完成產(chǎn)品時(shí),它提供了一種先推出核心產(chǎn)品的途徑,這樣就可以先發(fā)

11、布部分功能給客戶,對(duì)客戶起到鎮(zhèn)靜劑的作用。3、具有一定的市場(chǎng)。增量模型將瀑布模型的順序化和多次迭代相結(jié)合,每個(gè)增量開發(fā)都是一次瀑布模型的過程,強(qiáng)調(diào)每一個(gè)增量均發(fā)布一個(gè)可運(yùn)行版本,以滿足客戶和市場(chǎng)的需要。增量模型主要考慮當(dāng)需要快速推出可運(yùn)行的版本,而該版本不需要完整的功能時(shí),在工程活動(dòng)上的解決方案,因此增量模型也關(guān)注于工程活動(dòng)。5.2 螺旋模型這是一個(gè)演化軟件過程模型,它將原型實(shí)現(xiàn)的迭代特征和線性順序模型中控制的和系統(tǒng)化的方面結(jié)合起來。使得軟件的增量版本的快速開發(fā)成為可能。在螺旋模型中,軟件開發(fā)是一系列的增量發(fā)布。在每一個(gè)迭代中,被開發(fā)系統(tǒng)的更加完善的版本逐步產(chǎn)生。螺旋模型被劃分為若干框架活動(dòng),

12、也稱為任務(wù)區(qū)域。典型地,有3到6個(gè)任務(wù)區(qū)域:1、客戶交流:建立開發(fā)者和客戶之間有效通信所需要的任務(wù)。2、計(jì)劃:定義資源、進(jìn)度、及其它相關(guān)項(xiàng)目信息所需要的任務(wù)。3、風(fēng)險(xiǎn)分析:評(píng)估技術(shù)的及管理的風(fēng)險(xiǎn)所需要的任務(wù)。4、工程:建立應(yīng)用的一個(gè)或多個(gè)表示說需要的任務(wù)。5、構(gòu)造及發(fā)布:構(gòu)造、測(cè)試、安裝和提供用戶支持所需要的任務(wù)。6、客戶評(píng)估:基于對(duì)在工程階段產(chǎn)生的或在安裝階段實(shí)現(xiàn)的軟件表示的評(píng)估,獲得客戶反饋所需要的任務(wù)。這是一個(gè)相對(duì)較新的模型,它的功效還需要經(jīng)歷若干年的使用方能確定下來。 缺點(diǎn):1、需要相當(dāng)?shù)娘L(fēng)險(xiǎn)分析評(píng)估的專門技術(shù),且成功依賴于這種技術(shù)。2、很明顯一個(gè)大的沒有被發(fā)現(xiàn)的風(fēng)險(xiǎn)問題,將會(huì)導(dǎo)致問題

13、的發(fā)生,可能導(dǎo)致演化的方法失去控制。3、這種模型相對(duì)比較新,應(yīng)用不廣泛,其功效需要進(jìn)一步的驗(yàn)證。優(yōu)點(diǎn):1、對(duì)于大型系統(tǒng)及軟件的開發(fā),這種模型是一個(gè)很好的方法。開發(fā)者和客戶能夠較好地對(duì)待和理解每一個(gè)演化級(jí)別上的風(fēng)險(xiǎn)。螺旋模型的主要貢獻(xiàn)在于明確提出迭代概念和風(fēng)險(xiǎn)的問題,并指出在項(xiàng)目定義、需求、設(shè)計(jì)等階段均存在風(fēng)險(xiǎn),需要重點(diǎn)考慮,并通過多次迭代的原型主動(dòng)誘發(fā)風(fēng)險(xiǎn)。風(fēng)險(xiǎn)管理不屬于工程活動(dòng)的范圍,但我們?nèi)匀徽J(rèn)為螺旋模型的主要內(nèi)容是工程方面的:因?yàn)閷?duì)于非工程活動(dòng),螺旋模型僅考慮了風(fēng)險(xiǎn)問題,而風(fēng)險(xiǎn)管理僅是非工程活動(dòng)的一個(gè)小部分,不足以依此推斷螺旋模型主要關(guān)注于非工程活動(dòng)。5.3 WINWIN螺旋模型螺旋模型

14、提出了強(qiáng)調(diào)客戶交流的一個(gè)框架活動(dòng)。該活動(dòng)的目標(biāo)是從客戶處誘導(dǎo)項(xiàng)目需求。在理想情況下,開發(fā)者簡(jiǎn)單地詢問客戶需要什么,而客戶提供足夠的細(xì)節(jié)進(jìn)行下去。不幸的是這種情形很少發(fā)生。在現(xiàn)實(shí)中,客戶和開發(fā)者進(jìn)入一個(gè)談判過程,客戶被要求在成本和應(yīng)市之間的約束下平衡功能、性能、和其它產(chǎn)品或系統(tǒng)特征。最好的談判追求“雙贏”結(jié)果,也就是說通過談判客戶獲得大部份系統(tǒng)的功能,而開發(fā)者則獲得現(xiàn)實(shí)的和可達(dá)到的預(yù)算和時(shí)限。對(duì)客戶的交流定義了下面的活動(dòng):1、系統(tǒng)或子系統(tǒng)的關(guān)鍵“風(fēng)險(xiǎn)承擔(dān)者”的標(biāo)識(shí)。2、風(fēng)險(xiǎn)承擔(dān)者的“贏條件”的確定。3、風(fēng)險(xiǎn)承擔(dān)者的贏條件談判,以將它們協(xié)調(diào)為一組滿足各方考慮的雙贏條件。 缺點(diǎn):1、需要額外的談判技

15、巧。優(yōu)點(diǎn):1、客戶和開發(fā)者達(dá)到一種平衡。5.4 并發(fā)開發(fā)模型這種模型關(guān)注于多個(gè)任務(wù)的并發(fā)執(zhí)行,表示為一系列的主要技術(shù)活動(dòng)、任務(wù)及它們的相關(guān)狀態(tài)。并發(fā)過程模型是由客戶要求、管理決策、評(píng)審結(jié)果驅(qū)動(dòng)的。該模型不是將軟件工程活動(dòng)限定為一個(gè)順序的事件序列,而是定義了一個(gè)活動(dòng)網(wǎng)絡(luò)。網(wǎng)絡(luò)上的每一個(gè)活動(dòng)均可于其它活動(dòng)同時(shí)發(fā)生。這種模型可以提供一個(gè)項(xiàng)目的當(dāng)前狀態(tài)的準(zhǔn)確視圖。缺點(diǎn):暫時(shí)無優(yōu)點(diǎn):1、可用于所有類型的軟件開發(fā),而對(duì)于客戶/服務(wù)器結(jié)構(gòu)更加有效。2、可以隨時(shí)查閱到開發(fā)的狀態(tài)。6 基于構(gòu)件的開發(fā)模型面向?qū)ο蟮募夹g(shù)為軟件工程的基于構(gòu)件的過程模型提供了技術(shù)框架。面向?qū)ο竽P蛷?qiáng)調(diào)了類的創(chuàng)建、類的封裝了的數(shù)據(jù)、操縱

16、該數(shù)據(jù)的算法。一般來講經(jīng)過合適的設(shè)計(jì)和實(shí)現(xiàn),面向?qū)ο蟮念惪梢栽诓煌膽?yīng)用及基于計(jì)算機(jī)的系統(tǒng)的體系結(jié)構(gòu)中復(fù)用?;跇?gòu)件的開發(fā)模型融合了螺旋模型的許多特征,它本質(zhì)上是演化形的,要求軟件創(chuàng)建的迭代方法。然而基于構(gòu)件的開發(fā)模型是利用預(yù)先包裝好的軟件構(gòu)件(有時(shí)成為類)來構(gòu)造應(yīng)用。開發(fā)活動(dòng)從候選類的標(biāo)識(shí)開始,這一步是通過檢查將被應(yīng)用系統(tǒng)操縱的數(shù)據(jù)及用于實(shí)現(xiàn)該操縱的算法來完成的。相關(guān)的數(shù)據(jù)和算法被封裝成一個(gè)類。缺點(diǎn):1、 過分依賴于構(gòu)件,構(gòu)件庫的質(zhì)量影響著產(chǎn)品質(zhì)量。優(yōu)點(diǎn):1、構(gòu)件可復(fù)用。提高了開發(fā)效率。2、采用了面向?qū)ο蟮募夹g(shù)。7 形式化方法模型形式化方法模型包含了一組活動(dòng),他們導(dǎo)致了計(jì)算機(jī)軟件的數(shù)學(xué)規(guī)約。

17、形式化方法使得軟件工程師們能夠通過應(yīng)用一個(gè)嚴(yán)格的數(shù)學(xué)符號(hào)體系來規(guī)約、開發(fā)、和驗(yàn)證基于計(jì)算機(jī)的系統(tǒng)。 這種方法的一個(gè)變種,稱為凈室軟件工程,已經(jīng)被一些組織所采用。在開發(fā)中使用形式化方法時(shí),它們提供了一種機(jī)制,能夠消除使用其它軟件過程模型難以克服的很多問題。二義性、不完整性、不一致性能被更容易地發(fā)現(xiàn)和糾正,而不是通過專門的評(píng)審,是通過對(duì)應(yīng)用的數(shù)學(xué)分析。 形式化方法提供了可以產(chǎn)生無缺陷軟件的承諾。缺點(diǎn):1、開發(fā)費(fèi)用昂貴(對(duì)開發(fā)人員需要多方面的培訓(xùn)),而且需要的時(shí)間較長(zhǎng)。2、不能將這種模型作為對(duì)客戶通信的機(jī)制,因?yàn)榭蛻魧?duì)這些數(shù)學(xué)語言一無所知。3、目前還不流行。優(yōu)點(diǎn):1、形式化規(guī)約可直接作為程序驗(yàn)證的基礎(chǔ),可以盡早的發(fā)現(xiàn)和糾正錯(cuò)誤(包括那些其它情況下不能發(fā)現(xiàn)的錯(cuò)誤)。2、開發(fā)出來的軟件具有很高的安全性和健壯性,特別適合安全部門或者軟件錯(cuò)誤會(huì)造成經(jīng)濟(jì)損失的開發(fā)者。3、具有開發(fā)無缺陷軟件的承諾。8 第四代技術(shù)一系列的軟件工具的使用,是第四代技術(shù)的特點(diǎn)。這些工具有一個(gè)共同的特點(diǎn):能夠使軟件工程師們?cè)谳^高級(jí)別上規(guī)約軟件的某些特征,然后根據(jù)開發(fā)者的規(guī)約自動(dòng)生成源代碼。我們知道,軟件在越高的級(jí)別上被規(guī)約,就越能被快速的建造出程序。軟件工程的4GT模型集中于規(guī)約軟件的能力:使用特殊的語言形式或一種采用客戶可以理解的術(shù)語描述待解決問題的圖形符號(hào)體系。和其它模型一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論