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