编程学习笔记(第一篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(1)...
?
軟件工程的課程,對(duì)于從事大中型的軟件開發(fā)是至關(guān)重要的一門課程。
《面向?qū)ο蠹夹g(shù)高級(jí)課程》深入、系統(tǒng)、完整地講解當(dāng)今主流的面向?qū)ο筌浖_發(fā)方法的分析、設(shè)計(jì)、實(shí)現(xiàn)及重構(gòu)方法,深入講解UML語(yǔ)言的高級(jí)技術(shù)細(xì)節(jié),以及近年來(lái)面向?qū)ο蠓椒ㄗ钚碌陌l(fā)展趨勢(shì)。
面向?qū)ο蠹夹g(shù)主要內(nèi)容是面向面向?qū)ο筌浖_發(fā)的分析、設(shè)計(jì)和實(shí)現(xiàn)方法。
?
首先介紹下軟件工程的一些概念。
?
一、理論基礎(chǔ)知識(shí)
?
1、系統(tǒng)的概念
這個(gè)概念有不同的解讀。
相互作用的多元素的復(fù)合體 ---貝塔朗菲(系統(tǒng)論和理論生物學(xué)創(chuàng)始人)
-
多元性
-
相關(guān)性或相干性
-
整體性
相互作用和相互依賴的若干組成部分結(jié)合成的具有特定功能的有機(jī)整體。---錢學(xué)森
-
由許多部分組成
-
部分之間存在著相互關(guān)聯(lián)、相互制約、相互作用
-
具有某種功能的整體,整體的功能性
整體大于部分之和 ---亞里士多德
?
耗散系統(tǒng)
-
耗散系統(tǒng)是比利時(shí)皇家科學(xué)院院長(zhǎng)布魯塞爾學(xué)派領(lǐng)導(dǎo)人伊利亞·普里高津提出的,為此他獲得了1977年諾貝爾化學(xué)獎(jiǎng)。
-
耗散系統(tǒng)就是指一個(gè)遠(yuǎn)離平衡態(tài)的開放系統(tǒng)(力學(xué)的、物理的、化學(xué)的、生物的、社會(huì)的等等)通過(guò)不斷地與外界交換物質(zhì)和能量,在外界條件的變化達(dá)到一定閾值時(shí),就有可能從原有的混沌無(wú)序狀態(tài)過(guò)渡到一種在時(shí)間上、空間上或功能上有序的規(guī)范狀態(tài),這樣的新結(jié)構(gòu)就是耗散結(jié)構(gòu),或稱為耗散系統(tǒng)。
-
耗散系統(tǒng)具有真正意義上的時(shí)間單向性。時(shí)間變成了不可逆的矢量,單向流逝,一去不返。
-
我們生存的宇宙是一個(gè)我們現(xiàn)在能感知的最大的耗散系統(tǒng)。
-
軟件系統(tǒng)也是耗散系統(tǒng)。
系統(tǒng)結(jié)構(gòu)
-
靜態(tài)結(jié)構(gòu):系統(tǒng)處于尚未運(yùn)行或者停止運(yùn)行狀態(tài)時(shí)各部分之間的基本聯(lián)接方式。
-
動(dòng)態(tài)結(jié)構(gòu):系統(tǒng)處于運(yùn)行過(guò)程中所體現(xiàn)出來(lái)的各部分之間的相互依存,相互支持,相互制約的關(guān)聯(lián)方式。
-
時(shí)間結(jié)構(gòu):系統(tǒng)組成部分依賴于時(shí)間流程所體現(xiàn)出來(lái)的關(guān)聯(lián)方式。
-
空間結(jié)構(gòu):系統(tǒng)組成部分依賴于空間的分布、排列或者配置所決定的關(guān)聯(lián)方式。
-
時(shí)空結(jié)構(gòu):系統(tǒng)組成部分既依賴于空間又依賴于時(shí)間的關(guān)聯(lián)方式。
?
2、結(jié)構(gòu)的概念
結(jié)構(gòu)是一個(gè)由種種轉(zhuǎn)換規(guī)律組成的體系。---皮亞杰
這個(gè)轉(zhuǎn)換體系作為體系(相對(duì)于其各成分的性質(zhì)而言)含有一些規(guī)律。
正是由于有一套轉(zhuǎn)換規(guī)則的作用,轉(zhuǎn)換體系才能保持自己的守恒或使自己本身得到充實(shí)。
性質(zhì):
-
? 整體性?
-
轉(zhuǎn)換性:一個(gè)元素可以轉(zhuǎn)換為另一個(gè)元素 ?
-
自身調(diào)整性:根據(jù)情況進(jìn)行調(diào)整
結(jié)構(gòu)廣泛地適用于數(shù)學(xué)、邏輯學(xué)、心理學(xué)、社會(huì)學(xué)、藝術(shù)等領(lǐng)域。
?
3、模型與科學(xué)模型
? 模型在日常生活中我們經(jīng)常見到。模型在科學(xué)研究和工程中應(yīng)用的更加廣泛,所有的科學(xué)研究以及各種比較成熟的 工程領(lǐng)域,工程學(xué)領(lǐng)域,基本上都會(huì)出現(xiàn)很多的各種各樣的模型。
? 模型是一個(gè)人的一種對(duì)現(xiàn)實(shí)世界的一種反應(yīng), 因?yàn)楝F(xiàn)實(shí)世界過(guò)于抽象,所以我們建立一個(gè)現(xiàn)實(shí)世界的一個(gè)指代物,它要比理解現(xiàn)實(shí)世界更加簡(jiǎn)單, 所以用它來(lái)代指現(xiàn)實(shí)世界的某一個(gè)事物, 這樣理解起來(lái)呢就非常容易。
模型對(duì)人類認(rèn)識(shí)世界至關(guān)重要,編寫代碼用模型可以提高代碼的復(fù)用性、可拓展性,減少一些隱含的風(fēng)險(xiǎn)。
?
人類知識(shí)分類:常識(shí)、經(jīng)驗(yàn)性知識(shí)、神話故事(傳說(shuō))、科學(xué)知識(shí)、哲學(xué)、藝術(shù)知識(shí)、宗教七類---卡爾波普爾
在現(xiàn)實(shí)世界,在認(rèn)識(shí)現(xiàn)實(shí)世界過(guò)程中建立的模型, 現(xiàn)實(shí)世界對(duì)于人來(lái)說(shuō), 直接認(rèn)識(shí)過(guò)于復(fù)雜,人直接利用各種各樣的經(jīng)驗(yàn),各種各樣的知識(shí), 抽象簡(jiǎn)化成一些模型來(lái)進(jìn)行認(rèn)識(shí)。
?
? 卡爾·波普爾最關(guān)鍵一個(gè)貢獻(xiàn)就是他把科學(xué)模型和其他的一些 知識(shí)做了一個(gè)非常明確的一個(gè)界定,他通過(guò) 三個(gè)性質(zhì)來(lái)講科學(xué)模型與其他的模型做了一個(gè)很好的切割。
這三個(gè)性質(zhì)分別是:
-
可解釋性:現(xiàn)象可以被理論解釋
-
可預(yù)言性:可以根據(jù)理論對(duì)現(xiàn)象進(jìn)行預(yù)言
-
可證偽性:可以被證明是正確的
這三個(gè)性質(zhì)可以是如果我們要認(rèn)定某一些知識(shí)是科學(xué),這三個(gè)性質(zhì)可以說(shuō)是缺一不可。
?現(xiàn)代數(shù)學(xué)中數(shù)理邏輯的一個(gè)分支,恰恰是研究模型的,我們稱之為模型論。 它的模型論實(shí)際上恰恰是對(duì)一些復(fù)雜的 一些理論建立 一種比較容易理解的直觀的模型。
?
4、工程模型
工程:(狹義)以某組設(shè)想的目標(biāo)為依據(jù),應(yīng)用有關(guān)的科學(xué)知識(shí)和技術(shù)手段,通過(guò)一群人的有組織活動(dòng)將某個(gè)(或某些)現(xiàn)有實(shí)體(自然的或人造的)轉(zhuǎn)化為具有預(yù)期使用價(jià)值的人造產(chǎn)品的過(guò)程。
(廣義)一群人為達(dá)到某個(gè)目的,在一個(gè)較長(zhǎng)時(shí)期內(nèi)進(jìn)行協(xié)作活動(dòng)的過(guò)程。
?
工程師:實(shí)踐和研究工程學(xué)的人。工程師在構(gòu)造實(shí)物前,先構(gòu)建模型,之后向模型學(xué)習(xí)。
工程模型:
實(shí)際系統(tǒng)的簡(jiǎn)化表示,支持理解復(fù)雜問題或情況、針對(duì)某一問題或情況交流思想和驅(qū)動(dòng)實(shí)現(xiàn)。有用的工程模型必須具有抽象、可理解、可模擬(反映實(shí)際系統(tǒng)行為)、精確、預(yù)言、便宜和轉(zhuǎn)化(實(shí)現(xiàn))。工程模型只能檢驗(yàn),不能證明,當(dāng)前嘗試證明。被證偽,危害嚴(yán)重。
工程模型在設(shè)計(jì)和實(shí)現(xiàn)之間存在語(yǔ)義鴻溝:構(gòu)造方法、技術(shù)和誤解。工程模型是雙刃劍。工程模型不能被證明,只能檢驗(yàn)。一旦模型出錯(cuò)危害嚴(yán)重。
?
在一些比較成熟的工業(yè)中存在大量的模型,人們往往在 建造實(shí)體之前要建立各種各樣的工程模型,比如說(shuō)一個(gè)建筑領(lǐng)域的工程師要建一個(gè)橋梁,在一開始他要建立 一些數(shù)學(xué)的模型來(lái)計(jì)算,為了傳達(dá)他的這個(gè)橋梁的一些建設(shè)一些意圖和思想,它必須要畫一些圖紙。 來(lái)這個(gè)傳達(dá)自己的一些想法,因?yàn)橛辛藞D紙之后,就可以使成千上萬(wàn)的一些工程設(shè)計(jì)的一些人員, 可以協(xié)作的一些工作,傳遞準(zhǔn)確的信息。
建造模型的目的還是為了交流,第一個(gè)目的是為了 這個(gè)控制復(fù)雜性,第二個(gè)目的是為了交流,這個(gè) 第三個(gè)目的就是為了驅(qū)動(dòng)實(shí)現(xiàn)。 這個(gè)建立 這個(gè)模型實(shí)際上呢是從我們頭腦中的構(gòu)想, 和這個(gè)現(xiàn)實(shí)的未來(lái)的這個(gè)建造是實(shí)際的 工程系統(tǒng)中搭建了一個(gè)橋梁,使得我們 按照有計(jì)劃的有步驟的一步一步的逼近 這個(gè)未來(lái)的這個(gè)我們這個(gè)重要構(gòu)建的那個(gè) 宏圖。
有用的工程模型必須包含的特征
-
抽象
強(qiáng)調(diào)重要的方面忽略無(wú)關(guān)的方面
-
可理解
以一種對(duì)觀察者容易理解的方式表現(xiàn)
-
可模擬
模仿其代表的事物的結(jié)構(gòu)與行為
-
精確
忠實(shí)的反映被建模系統(tǒng)
-
預(yù)言
可用來(lái)導(dǎo)出關(guān)于被建模系統(tǒng)的正確結(jié)論
-
便宜
比被建模系統(tǒng)更便宜構(gòu)造及學(xué)習(xí)
-
轉(zhuǎn)化
模型可以轉(zhuǎn)化為現(xiàn)實(shí)事物
5、軟件模型
軟件模型
軟件模型是一種特殊的工程模型, 是在軟件工程領(lǐng)域應(yīng)用的一個(gè)模型, 軟件模型基本上都是一些泡泡和箭頭, 這個(gè)相對(duì)于程序而言它們不會(huì) crash,也就是它們不會(huì)崩潰。
軟件模型的問題:與工程模型有很多相似的地方,但主觀性強(qiáng)、可模擬性不強(qiáng)、轉(zhuǎn)換為代碼需要經(jīng)歷多種模型的轉(zhuǎn)化。
模型:所研究系統(tǒng)、過(guò)程、事物或概念的一種表達(dá)形式,也可指根據(jù)實(shí)驗(yàn)、圖樣放大或縮小而制作的樣品。
?
建模:為了某一認(rèn)知的目的,有效益地用某一事物替代另一事物。 允許我們 為了特定的目的來(lái)替代現(xiàn)實(shí), 模型是對(duì)現(xiàn)實(shí)的抽象,因?yàn)樗豢赡鼙硎?現(xiàn)實(shí)的所有的方面。 模型使得我們以一種簡(jiǎn)單的方式來(lái)認(rèn)識(shí)世界, 避免現(xiàn)實(shí)中的復(fù)雜、 危險(xiǎn)和不相關(guān)性。 但是呢,我們也由此不得不承受 由于這種簡(jiǎn)化而造成的一些風(fēng)險(xiǎn)。
?
軟件開發(fā)復(fù)雜性:
- 需求難以精確描述、
- 開發(fā)過(guò)程需求經(jīng)常變化、
- 大量文本二義沖突、
- 難以發(fā)現(xiàn)大項(xiàng)目隱藏復(fù)雜性、
- 人類處理復(fù)雜現(xiàn)象能力有限、
- 難以評(píng)估預(yù)期執(zhí)行結(jié)構(gòu)能否滿足用戶期望
- 1+1+1>3.
軟件開發(fā)過(guò)程中模型支持理解、準(zhǔn)確交流及模擬或驗(yàn)證設(shè)計(jì)結(jié)果。
?
軟件開發(fā)過(guò)程中模型的作用
模型的重要性
- 便于更好地理解我們正在開發(fā)的系統(tǒng)
- 可以模擬或者驗(yàn)證設(shè)計(jì)結(jié)果,造成不必要的損失或者浪費(fèi)
- 便于工程中所涉及的人員之間的準(zhǔn)確、快速的信息傳遞。
?
在軟件領(lǐng)域一個(gè)獨(dú)特的地方是所有的模型呢 實(shí)際上是主觀性非常強(qiáng),依賴于建模者的 視角,建模者所持有的方法學(xué),以及建模者個(gè)體 。即使對(duì)相同的事物,可以允許我們以不同的視角,不同的方法學(xué)去來(lái)看待 ,可以允許仁者見仁,智者見智。 即使對(duì)相同的事物存在有不同的模型 ,仍然可以采取一些比較寬容的態(tài)度來(lái)面對(duì)。
轉(zhuǎn)載于:https://www.cnblogs.com/Nicholas0707/p/9203766.html
總結(jié)
以上是生活随笔為你收集整理的编程学习笔记(第一篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(1)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt读取TXT文件时,GBK与UTF-8
- 下一篇: JavaScript——max-age