第一篇:《影視導演實用教程——張樂平編著》要點總結
《影視導演實用教程——張樂平編著》要點總結 第一章
1、梅里愛被后人稱為“第一個電影導演”
2、火車大劫案“話分兩頭”的平行蒙太奇方法
3、導演的工作程序: 1)選定文學劇本
2)組成主創人員班子,選演員,外景,商定內景,確定人物造型,商定音樂音響構成; 3)寫出分鏡頭劇本;
4)擬定拍攝計劃,宣講《導演闡述》; 5)實拍;
6)剪輯和后期配音; 7)混合錄音。
(前4為前期,5為中期,67為后期)
第二章
1、導演的基本素質:
1)熟諳電影藝術專門規律和導演專門技能 2)具有領導組織和創作合作的才干
3)較深厚的生活閱歷和全面的文化藝術修養 4)獨特的藝術創作思維個性
2、導演與攝制組成員的關系,首要是真誠與信任
3、導演的品格:自信心,明確的主張和判斷力,堅持到底,絕不半途而廢的品格
第三章
1、文學劇本提供給導演的三個基本東西:意念、人物、情境。
2、意念是每部影片構思的藝術起點
3、人物是意念的依托,電影劇本的中心是人物
第四章
1、導演和觀眾之間的唯一媒介是畫面和聲音組合的視聽綜合影像
2、導演創作真正開始于對畫面和聲音的構思
3、視聽影像的構成因素:景、人物造型,動作的造型形象,相對獨立的造型因素
4、景:1動作環境(劇情的依托)2生存空間(性格生成的典型環境)3意念形象
5、動作最基本的任務是塑造性格
6、試聽影像的構成規律:1色調和影調2構圖(鏡頭規范)3全片造型形式
7、鏡頭規范是指景別角度鏡頭運動方式以及鏡頭光學性能在每一個鏡頭中的確定形態。
8、電影畫面構圖的明顯特點: 1)畫幅比例不變 2)畫面的運動性
3)由鏡頭組接形成的畫面整體關系
第五章
1、聲音的作用:劇情表達,性格展示,鏡頭組接,節奏產生,畫內畫外空間形成,場面情景的氣氛營造
2、電影聲音的基本構成:人聲,音響,音樂
3、人聲,主要指人物的對白,畫外人聲,和那些未成詞成句的情緒語態
4、人物語言最基本的要求:準確,精煉,性格化,口語化
5、音響構成:簡單地說,包括除了對話和音樂之外的一切聲音,一般分為動作音響,環境音響自然音響,特殊音響等若干類
6、音樂的作用:抒發感情,渲染氣氛,概括主題思想,描繪事物,加強戲劇性,加強連貫性和整體性
7、視覺規范的三個方面: 1)聲音和畫面組合的基本方式 2)在聲音自身屬性上的音響總譜
3)和影片美學傾向相一致的聲音藝術風格
8、聲音和畫面組合的基本方式:同步,對位(畫面中沒有聲源)
第六章
1、熒幕形象的形成:扮演者相貌,形體,表情,聲音,畫面,音響,鏡頭語言中各種組合表演和補充表演的成分
2、影視表演的特征:
1)演員的適應性,不斷擴充表演風格; 2)演員面對攝像機,不是觀眾和生活;
3)演員表演的單元性,不同分寸,非連續性。
3、如何選演員:形象氣質演技
4、演員成功與否所有角色的搭配是否和諧
5、導演與演員的關系:準備。拍攝,后期
6、所有演員的創作都以認識角色為起點。認識角色最終是文化的認識
7、演員創造人物的資本:知識結構,思維方式,行為邏輯,成長經歷等
第七章
1、單個鏡頭的形態是蒙太奇最基本的元素。
2、鏡頭形態的特征:1敘事方式的原始性和完整性2拍攝角度的區別
3、鏡頭形態的構成:景別,角度,運動形式,長度
4、鏡頭組接的技巧是蒙太奇的基本形式
5、鏡頭組接的功能:構成銀幕所特有的組合空間和時間流程,敘述的感染力,表達涵義
6、蒙太奇的作用: 1),敘事意義上的組織銀幕空間和時間流程 2)表現意義:創造富有感染力的視聽效果
3)表達內在涵義,并暗示敘述者的思想情感傾向
7、構成影片開端的要素:時間地點,人物事件
8、鏡頭組接常用技巧: “切”鏡頭間的直接切換
“劃”以直線或各種圖形使下一個鏡頭出現在上一個鏡頭的最后一幅畫面中,漸漸取代 “疊化”亦稱“化出化入” “漸隱漸顯”亦稱“淡入淡出”
9、蒙太奇的章法構成:時空流程(全片結構的時空配置),敘述角度,鏡頭風格(一部影片敘述魚臺的總括)
10、鏡頭風格形成:1導演以心靈中的視像來構成影片的藝術過程2影片對蒙太奇規律的選擇
第二篇:《軟件工程導論》第五版 張海藩 編著 總結
《軟件工程導論》第五版 張海藩 編著 總結
分類: Computer System2011-01-04 10:14 6417人閱讀 評論(10)收藏 舉報
測試數據結構工具任務文檔軟件測試
總結重點: ??Unit1
??軟件危機包含兩方面的問題:一是如何開發軟件,怎樣滿足人們對軟件日益增長的需求?二是如何維護軟件,使它們持久地滿足人們的要求。
??軟件工程學定義:把軟件當作一種工業產品,采用工程學的原理來管理和組織軟件的開發和維護,稱為軟件工程。
??軟件是指程序、數據和文檔三者共同構成的配臵。
??包含與數據處理系統操作有關的程序、規程、規則以及相關文檔的智力創作稱為軟件。文檔是描述程序開發過程的,是智力創作的真實記錄,是創作活動的歷史檔案和結晶。??軟件的描述性定義:軟件由計算機程序,數據結構和文檔組成。
??軟件質量定義為“與軟件產品滿足規定的和隱含的需求能力有關的特征和特性的全體” 具體來說: 1)軟件產品中能滿足給定需求的性質和特性的總體; 2)軟件具有所期望的各種屬性的組合程度。
??將軟件質量屬性劃分為六個特性(功能性、可靠性、易用性、效率、維護性和可移植性),這六個屬性是面向用戶的觀點——面向管理的觀點,且是定性描述的。
??軟件質量度量體系:內部度量可用于開發階段的非執行軟件產品,外部度量只能在生存周期過程中的測試階段和任何運行階段使用。
??軟件工程項目的基本目標:(1)低成本;(2)滿足功能要求;(3)高性能;(4)易移植;(5)易維護。??軟件工程方法學就是要從技術和管理上提供如何去設計和維護軟件。
??軟件開發方法:面向數據流(約旦)方法、面向數據結構方法、面向對象方法。
??結構程序設計是進行以模塊功能和處理過程設計為主的詳細設計的基本原則。它的主要觀點是采用自頂向下、逐步求精的程序設計方法;使用三種基本控制結構構造程序,任何程序都可由順序、選擇、循環三種基本控制結構構造。
??用來輔助軟件開發、運行、維護、管理、支持等過程中活動的軟件稱為軟件工具(CASE)。
??軟件生存周期定義:軟件產品從形成概念開始,經過開發、使用和維護,直到最后不再使用的整個過程。各階段的任務彼此間盡可能的相對獨立,同一階段內各項任務的性質盡可能的相同。軟件的開發就是“按軟件順時間發展的過程分階段進行”的。??軟件生存周期模型:
瀑布模型(階段間具有順序型和依賴性,清楚地區分邏輯設計與物理設計、盡可能推遲程序的物理實現,是文檔驅動模型,遵循結構化設計);
原型模型(軟件產品的開發是線性順序進行的,本質是快速,用途是獲知用戶的真正需求,一旦需求確定,原型將被拋棄)。其核心都是將軟件開發劃分為:分析、設計、編碼、測試和維護。
??軟件生存周期劃分為以下幾個階段:可行性研究與計劃、需求分析、總體設計、詳細設計、實現、組裝測試、確認測試、使用和維護。
??軟件過程:是為了獲得高質量軟件所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟 ??軟件工程方法學:通常把在軟件生命周期全過程中使用的一整套技術方法的集合稱為方法學,也稱范型 ??軟件工程過程是軟件生存周期中各個可能的過程,這些過程可進一步劃分成為了提供或獲得軟件產品或服務,或是為了完成軟件工程項目需要完成的有關軟件工程活動,每一項活動又可分解為一些軟件工程任務。標準定義了21個過程分屬三類:基本過程(include獲取、供應、開發、運作、維護過程)、支持過程和組織過程。??軟件工程三要素:方法、工具和過程。??軟件工程管理
目的:為了按照進度及預算完成軟件計劃,實現預期的經濟和社會效益。內容:成本估算、進度安排、人員組織、質量保證、配臵管理等等。怎么強調軟件工程管理的極其重要性都不會過分
??Unit2 ??可行性研究
任務和目的:用最小的代價在盡可能短的時間內確定問題是否能夠在一定規模之內解決。(確定這一問題是否存在值得去做的解)
過程和步驟:
實質:進行一次大大壓縮簡化了的系統分析和設計過程,也就是在較高層次上以抽象方式進行的系統分析和設計過程。
技術和工具:DFD+DD
??主要內容
(1)澄清問題定義 ——規模、約束和限制
(2)導出新系統的邏輯模型
(3)導出若干個供選擇的物理解法(物理模型),并分別研究它們的可能行:
??數據流圖符號
Example:
??數據流圖的基本目的是 利用它作為交流信息的工具,另一個主要目的是作為分析和設計的工具。
??數據字典是關于數據信息的集合,也就是對數據流圖中包含的所有元素的定義的集合,它是通過對數據元素和數據結構的定義,來描述數據流和數據存儲的邏輯內容的。??數據流和數據字典共同構成系統的邏輯模型。??數據字典的內容:
數據流、數據元素、數據存儲、處理
??數據字典最重要的用途是作為分析階段的工具。
??Unit3 ??需求分析:
目的:精確地定義系統必須做什么,也就是對目標系統提出完整、準確、清晰、具體的要求。——為目標系統提出精確的邏輯模型。
任務:確定對系統的綜合要求,包括功能需求、性能需求、可靠性和可用性需求、運行要求、將來可能提出的要求。過程:處理邏輯的分解:自頂向下逐步分解直到每個處理邏輯已是不可再分的“功能單元”為止。書寫文檔:軟件需求規格說明
工具:狀態圖、IPO圖、層次方框圖、Warnier圖
??結構化分析設計技術是70年代中期由E.Yourdon等人提出來的一種面向數據流的方法;要求系統的開發工作在結構化和模塊化的基礎上進行,它系統的運用了描述模型的概念,按照軟件內部數據傳遞和變換的關系,自頂向下逐層分解,直到找出滿足要求的可實現的軟件。
在這個方法里,“抽象”,“分解”,“模塊化”,“結構化”是它的主要手段;面向數據傳遞、變換所形成的數據流(Dataflow)和數據流程圖(DFD)是它的主要依據。
這個方法的關鍵工作是:畫分層的DFD和確定數據定義與加工策略。??Yourdon方法(對應的瀑布模型)的缺陷: 其實Yourdon方法是建立在三個假設之上的:
假設1:所有的需求都是可以預先定義的;
假設2:需求在較長一段時間內是不變的(相對穩定的);
假設3:運用所提供的工具可以做到項目參與者之間清晰、準確、有效的溝通。這三個假設往往是很難成立的:
“邏輯模型”的精確描述依賴于“自頂向下的求精過程”,而“自頂向下的求精過程”的順利進行又依賴于精確的“邏輯模型”,這二個問題互相纏繞依賴而構成方法學上的“死鎖”。??原型法(原型模型):
原型就是模型的意思(原型=模型),它指的是模擬某種產品的原始模型。運用原型的策略:拋棄策略&附加策略 對原型的逐步求精過程是一個迭代過程
相對于Yourdon方法來說原型法是一個非線性的系統開發方法。不再強調高質量的階段性文檔。
??螺旋模型:沿螺線自內向外每旋轉一圈便開發出一個更為完善的軟件版本 ??Yourdon方法適合于“預先指定的系統”; ??原型法適合于“用戶驅動的系統”。
??通常用“范式”定義消除數據冗余程度。第一范式數據冗余程度最大,第五范式數據冗余程度最小。??狀態轉換圖:
狀態時可以被觀察到的系統行為模式,一個狀態代表系統的一種行為模式,它規定了系統對事件的響應方式。一張狀態圖有一個初態和0至多個終態。
事件:在某個特定時刻引起系統做動作和(或)狀態轉換的控制信息。
??驗證軟件需求的正確性:
一致性、完整性、現實性、有效性
??Unit4 ??總體設計:
目的:確定系統的具體物理實現方案(系統結構設計),確定組成每一個程序的模塊,以及模塊間的關系(軟件結構設計)。任務:軟件結構設計(過程設計是詳細設計階段的任務)過程:
設想供選擇的方案
選取合理方案(每份方案有 系統流程圖、組成系統的物理元素清單、成本/效益分析、實現這個系統的進度計劃 4份資料)等9步(P92)
??在軟件開發早期階段考慮測試問題,能促使軟件設計人員在設計時注意提高軟件的可測試性。??總體設計階段書寫的文檔:系統說明、用戶手冊、測試計劃、詳細的實現計劃、數據庫設計結果。
??總體設計過程中,推薦最佳方案后進入“軟件結構”設計:設計出組成這個系統的所有程序、文件和數據庫,以及它們之間的聯系。軟件結構:由模塊組成的層次系統。模塊:數據說明、可執行語句等程序。??C/S(Client/Server)結構是軟件系統體系結構
??“結構化設計”概括地說就是:用一組標準的工具和準則來確定系統應該由哪些模塊、用什么方式聯結在一起,才能構成一個最好的軟件結構。
??模塊化就是把程序劃分成若干個模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能滿足用戶的需求。
??模塊: 具有四種屬性的一組程序語句稱為一個模塊,這四種屬性分別是:輸入和輸出、邏輯功能、運行程序、內部數據。(前兩個是模塊外部屬性,后兩個是內部屬性,總體設計完成外部屬性設計、詳細設計完成內部屬性設計)
??軟件結構圖中,模塊用一矩形表示。??模塊間調用:用→連接
??開發具有獨立功能而且和其它模塊之間沒有過多相互作用的模塊,可以做到模塊獨立。??影響模塊獨立的因素:
耦合(不同模塊間互聯程度)內聚(同一模塊內各元素緊密程度)
??力爭高內聚、低耦合。??5種耦合形式:
數據耦合、控制耦合、特征耦合、公共耦合、內容耦合(從左到右耦合程度遞增)最弱的耦合是非直接耦合
??7種內聚形式:
功能內聚、順序內聚、通信內聚、過程內聚、時間內聚、邏輯內聚、偶然內聚(從左到右程度依次遞減)??模塊的扇出與扇入:
模塊的扇出是指一個模塊擁有的直接下級模塊的個數。模塊的扇入是指一個模塊的直接上級模塊的個數。
模塊的扇出系數應控制在7以內,盡可能的加大模塊的扇入系數。
??作用域應該是控制域的子集;
??模塊的控制域和作用域:
模塊的控制域(控制范圍):是指這個模塊本身以及所有直接或間接從屬于它的模塊的集合。
模塊的作用域(判斷作用范圍):是指受該模塊內一個判斷影響的所有模塊的集合。(也就是該模塊內存在著判斷調用語句,而所有受到該判斷邏輯影響的模塊,就是該模塊的作用域。)作用域應該是控制域的子集;理想的是作用域都是直接下屬模塊。??數據流類型——數據在DFD中流徑特征
變換流:進入系統中的數據所流經的路徑幾乎是一樣的。事務流:進入系統中的數據所流經的路徑不完全是一樣的。
??
??事務中心往往包含多個處理邏輯。
??
??“事務”是指一組輸入數據。
??Unit5 ??詳細設計:
目的:完成模塊的過程設計(為SC中每個模塊確定采用的算法和塊內數據結構,用某種選定的表達工具給出詳細清晰的描述。)
模塊的邏輯設計(模塊的過程描述)主要內容:
1)為每個模塊確定采用的算法 2)確定每個模塊使用的內部數據結構 3)確定模塊的接口細節 4)制定模塊的測試計劃
完成模塊的“內部屬性”設計,即給出系統中各個模塊的“運行程序”和“內部數據”;由此可見詳細設計的結果基本上決定了最終軟件的質量。
詳細設計的目標更重要的是便于維護。工具:
1.程序流程圖(流程圖)2.N-S圖(盒圖)
3.PAD圖(問題分析圖)
4.偽代碼和PDL語言
??邏輯設計應遵循的理念:
1.從效率第一到清晰第一
2.結構化的控制結構:結構化程序設計=僅使用單入口單出口的三種基本控制結構 3.逐步細化的實現方法
[例] 在一組數中找出其中的最大數 分別用程序流程圖、N-S圖和PAD圖描述 用“結構化”保證程序的清晰易讀,用“逐步細化”實現程序的正確可靠,它們導致了一條自然的結論:模塊的邏輯設計必須用結構化程序設計的原理來指導。(結構化分析設計在詳細設計階段)??Yourdon方法的技術途徑:DFD→DFD+DD→SC→PDL
??Yourdon方法在分析階段,我們用DFD來表示軟件的邏輯模型;在設計階段,又按照數據流類型,分別用變換分析或事務分析將它們轉換成相應的軟件結構。??面向數據結構設計方法的根據和基本思想:
算法和數據結構是程序設計中不可分割的側面,算法的結構依賴于它要處理的數據結構。只要事先知道一個問題的數據結構,就可以由此導出它的程序結構。
??基于數據流還是基于數據結構的出發點不同,最終目標也不同。SADT(結構化分析設計工具)方法的目標是得出軟件的最終SC圖,它把注意力集中在模塊的合理劃分上;面向數據結構的設計則要求得出程序的過程性描述,并不明確也提出軟件應該先分成模塊等概念。
??SADT方法:DFD->SC(軟件結構圖)->模塊的過程性描述(PDL等)|<-------總體設計-------> | |<--------詳細設計------->|
Jackson方法(面向數據結構):數據結構->程序結構->程序的過程性描述(偽代碼等)|<-----總體設計-----> | |<----------詳細設計--------->| ??程序復雜程度的定量度量:
1.程序圖(流圖)(用任何方法表示的詳細設計結果都可以變換成程序圖)
流程圖中的各種處理框均簡化成一個結點
2.環域復雜度
程序的結構復雜度可用強連通的有向圖中線性無關環的個數來度量 V(G)= 判定結點數 + ??Unit6
??編碼(也稱實現)
任務:把模塊的過程性描述翻譯為用該語言書寫的源程序(或源代碼)。??編碼的風格
1.程序要清晰直觀,不要過于巧妙
2.用一定的原則指導控制結構的使用(避免使用容易引起混淆的結構和語句)3.有規律地使用GOTO語句
不得不把效率的考慮放在首位的時候,而結構化程序又不能滿足時間要求時,就可用GOTO語句來減少重復的代碼段;
4.實現源程序的文檔化(軟件=程序+文檔)<有意義的變量名稱、適當注釋、標準的書寫格式>
??Unit7: ??軟件測試:
定義:程序測試是為了發現錯誤而執行程序的過程。糾錯(調試)是為了確定錯誤的性質,并且加以糾正。
??軟件測試包括機器測試(動態測試)(黑盒測試&白盒測試)和人工測試(代碼復審)(代碼走查+會審+辦公桌檢查)程序編譯通過后,應該先人工測試(發現邏輯錯誤)后機器測試(在設定的測試數據上執行被測程序).??動態測試是一個包括:①設計“測試用例”→②執行被測程序→③分析測試結果并發現錯誤的過程。(①設計“測試用例”是最關鍵)
測試用例={ 輸入數據 + 期望結果 }
按照在設計“測試用例”時,是否涉及程序的內部結構,把動態測試分為: 白盒測試:從程序的內部邏輯入手,按照一定原則設計測試用例。
黑盒測試:僅以程序外部功能為依據來設計測試用例。檢查程序是否完成應做的和是否做了不該做的。(按規格說明書的規定)
??軟件測試的的步驟:[見筆記本上圖]
單元測試:在編碼階段完成;以模塊為單位,(主要白盒)發現的往往是編碼和詳細設計的錯誤
綜合測試:(模塊組裝測試、集成測試)以軟件的設計信息為依據,主要用黑盒,發現設計錯誤,也可能發現需求說明錯誤。
確認測試(驗收測試):以軟件的需求信息為依據,用黑盒,發現需求說明書中的錯誤,驗證軟件的有效性 系統測試:指整個計算機系統(包括軟件與硬件)的測試。??代碼復審
1.代碼會審:開會逐句朗讀和講解程序,精力集中于發現錯誤,會后改正錯誤 2.走查:與會者扮演“計算機”的角色 3.辦公桌檢查:一個人參加的代碼會審 ??黑盒測試方法:
??等價分類法:
按測試結果“等價”把被測程序的輸入域劃分為若干個等價類,每一個等價類都選擇一例“測試用例”,與“應做的事情”相對應的是“有效等價類”,而與“不應該做的事情”相對應的稱之為“無效等價類”。
設計等價類的測試用例分為兩步: 1.劃分等價類并給出定義;
2.選擇測試用例的原則:有效等價類的測試用例盡量公用;無效等價類必須每類一例。[例]某城市的電話號碼……[看筆記] ??邊界值分析法(邊值法)??錯誤猜測法(猜錯法)??因果圖法
??白盒測試方法:[見筆記]
合理的白盒測試,就是要選取足夠的測試用例,以實現對源程序比較充分的覆蓋。??邏輯覆蓋法:(按照由低到高對程序邏輯覆蓋程度的順序)
語句覆蓋:每條語句至少執行一次;
判定覆蓋:不僅每條語句至少執行一次,而且每一分支至少執行一次;
條件覆蓋:不僅語句覆蓋,而且每個條件均按“真”、“假”兩種結果至少執行一次; 條件組合覆蓋:不僅語句覆蓋,而且每個條件的所有可能組合都至少執行一次。
??路徑覆蓋法:(按照由低到高對程序邏輯覆蓋程度)
結點覆蓋:每個結點走一次;相當于語句覆蓋 邊覆蓋:每條邊走一次;相當于判定覆蓋
路徑覆蓋:每條路徑走一次;(不需要考慮程序的循環)
??Unit8
??面向對象基本原理:使描述問題的問題空間和在計算機上解決問題的解空間在結構上盡可能一致。??基本概念:
(1)對象:由數據以及可以施加在這些數據上的操作(或服務、方法、處理)所構成的統一體,它是面向對象軟件的基本模塊。
(2)類:對具有相同數據和相同操作的一組相似對象的定義(抽象)。(3)不同的對象彼此之間只能通過消息相互作用、相互聯系
(4)繼承:處于下一層次上的派生類自動繼承了位于上一層次基類的屬性(數據)和行為(操作)??面向對象就是既使用對象又使用類和繼承等機制,而對象之間僅能通過傳遞消息實現彼此間的通信。??UML 用視圖來表示被建模系統的各個方面,它把軟件模型分成5個視圖,每一個視圖代表完整系統的一個特定方面。每一個視圖又由一種或多種模型圖構成。
1. 用例視圖:用來支持需求分析,也就是說系統將提供的功能是在用例視圖中描述的。
2. 邏輯視圖:定義系統的實現邏輯,重點關注的是系統的靜態結構(類、對象及它們之間的關系),也描述系統內部的動態協作關系。它的模型圖包括類圖、對象圖、狀態圖、順序圖、協作圖及活動圖等。3. 組件視圖:描述系統的實現模塊及它們之間的依賴關系。組件是不同類型的代碼模塊,通過代碼模塊的結構和依賴關系來表示。
4. 部署視圖:描述軟件系統在計算機硬件系統和網絡上的安裝、分發和分布情況。5. 實現視圖:描述組成軟件系統的各個物理部件。??UML由三部分組成:基本構造塊、規則和公用機制
??UML 定義了二類模型元素的圖形表示:一類模型元素用于表示模型中的某個概念,一類模型元素用于表示模型元素之間的關系 ?? 面向對象建模:
對象模型——“誰做?”(類圖)動態模型——“什么時候做?”(狀態圖)功能模型——“做什么?”(用例圖)
這三種模型都是必不可少的,對象模型是最核心的。
在面向對象分析中,構造出完全獨立于實現的應用域模型;在面向對象設計中,把求解域的結構逐漸加入到模型中;在實現階段,把應用域和求解域的結構進行編碼和驗證。
??OO方法:OOA→OOD→OOP→OOT 是一個逐漸擴充模型的過程,其間無需轉換概念和表示,開發活動之間基本做到了平滑無縫過渡; ??對象模型:
類與類之間一般有四種關系:關聯、泛化(繼承)、依賴和細化。1.關聯:表示兩個類的“對象”之間存在某種語義上的聯系。
2.聚集:聚集是關聯的特例,它表示類與類之間的關系是整體與部分的關系。3.泛化(繼承):泛化關系指的是類與類之間是“一般---特殊”的關系。4.依賴和細化:依賴關系是指一個模型元素依賴于另一個獨立的模型元素,細化關系是指一個模型元素細化成了另一個模型元素。??動態模型:
描述了對象模型中對象的生命周期過程,即對象的狀態,我們把一個觸發行為稱為一個事件。動態模型就是通過描述對象的狀態、觸發狀態轉換的事件、以及對象的行為來描述軟件系統的動態行為(行為模型)。??功能模型:
UML提供用例圖來表示功能模型,并稱之為用例模型。
功能模型也可用SADT中的一組DFD來表示。(也是需求分析階段)一幅用例圖包含的模型元素有:系統、行為者、用例和用例之間的關系。
一個用例是系統的一個完整的功能,通過關聯與行為者連接,關聯指出一個用例與哪些行為者交互,這種交互是雙向的。
用例是一個類,用例的實例是系統的一種實際使用方法,我們稱之為腳本。用例之間的關系主要有二種:擴展關系和使用關系。
創建用例模型的工作包括:定義系統、尋找行為者和用例、描述用例、定義用例之間的關系,并確認用例模型。
??Unit9:
??面向對象分析(Object-Oriented Analysis,簡稱OOA)的關鍵就是識別出對象與類,并分析它們之間的關系,最終建立對象模型、動態模型和功能模型。
圖: 參照當前系統建立目標系統
??通過劃分“主題”把一個復雜系統的對象模型分解成幾個不同的概念范疇。??
??軟件維護就是在軟件已經交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程。??維護過程本質上是修改和壓縮了的軟件定義和開發過程,而且事實上遠在提出一項維護要求之前,與軟件維護有關的工作已經開始了。
??進行維護的原因:改正程序中的錯誤和缺陷;改進設計以適應新的軟、硬件環境;增加新的應用范圍;為了將來的維護工作。
??維護分為以下幾類:改正性維護;適應性維護;完善性維護;預防性維護
----------
??未涵蓋進來的內容:
??需求分析目的:確定目標系統必須具備哪些功能
??總體設計的主要任務:一.制定幾種可能的實現方案;二.設計程序的體系結構 ??詳細設計(模塊設計)任務:設計出程序的詳細規格說明 ??集成測試和驗收測試:
集成測試(組裝測試):根據設計的軟件結構
驗收測試:按照規格說明書的規定,由用戶參與下對目標系統進行驗收的測試
??通過對軟件測試結果的分析可以預測軟件的可靠性。??傳統軟件工程方法學的軟件過程,可以用瀑布模型來描述 ??瀑布模型的特點:階段間具有順序性和依賴性、推遲實現的觀點
清楚地區分邏輯設計與物理設計,盡可能推遲程序的物理實現。
??瀑布模型帶反饋環,發現前面階段的錯誤時,沿反饋線回頭修改
??快速原型模型不帶反饋環,軟件產品開發是線性順序進行的,用途是獲知用戶的需求
??增量模型(漸增模型):把軟件產品分解成增量構件。原則:當把新構件集成到原有構件時,所形成的產品必須是可測試的。它能在較短時間內向用戶提交可完成部分工作的產品。要求開始實現各個構件前就全部完成的需求分析、規格說明、總體設計。
??螺旋模型的基本思想:使用原形及其他方法來盡量降低風險。可以看作每個階段前都加了風險分析的快速原型模型。螺旋模型是風險驅動型的。
??噴泉模型體現了面向對象開發過程迭代和無縫的特性。
??采用先行順序的開發方法不可能開發出當今客戶需要的大型復雜系統。
構件:功能清晰的模塊或子系統。模型:對事物的無歧義的書面描述。
RUP強調采用迭代和漸增的方式來開發軟件,重復一系列組成軟件生命周期的循環。??面向對象方法=對象+類+繼承+用消息通信
??可行性分析中導出供選擇的解法的最簡單途徑,是從技術角度出發考慮解決問題的不同方案。
??系統流程圖是概括地描繪物理系統的工具,表達數據在系統各部件之間的流動情況,而非對數據加工處理。??數據流圖(DFD)描繪信息流和數據從輸入移動到輸出的過程中所經受的變換。(描繪數據在軟件中流動和被處理的邏輯過程),設計時只考慮系統必須完成的基本邏輯功能。
畫數據流圖的基本目的:利用它作為交流信息的工具;作為分析和設計的工具。符號:數據源點/終點,變換數據的處理,數據存儲,數據流 ??數據存儲是處于靜止狀態的數據流,數據流是處于運動中的數據。
??數據字典是關于數據的信息的集合,即對數據流圖中包含的所有元素的定義的集合。
數據字典包含內容:數據流,數據流分量,數據存儲,處理 數據字典用途:分析階段的工具。
??逆向需求說明軟件系統不應該做什么
??分析系統常用圖形工具:層次方框圖、Warnier圖 ??需求分析時要把數據結構規范化。
??結構化分析方法就是面向數據流自頂向下逐步求精進行需求分析的方法。
把分析過程中得到的有關數據元素記錄在數據字典中,對算法的簡明描述記錄在IPO圖中。快速建立軟件原型是最好的需求分析技術。為快速構建和修改原型,使用三種工具和方法: 第四代技術 可重用的軟件構件 形式化規格說明和原型環境
??概念性數據模型是一種面向問題的數據模型,是按照用戶的觀點對數據建立的模型。??數據對象是軟件必須理解的復合信息的抽象。
??用“范式”定義消除數據冗余的程度,第一范式冗余最大。
??狀態是任何可被觀察到的系統行為模式,一個狀態代表系統的一種行為模式。??狀態圖的活動表中經常使用entry,exit,do三種標準事件。
??IPO圖是輸入、處理、輸出圖,處理框中列出處理的次序暗示了執行的順序。??驗證軟件需求的正確性:一致性、完整性、現實性、有效性 ??結構設計是總體設計階段的任務,過程設計是詳細設計階段的任務 ??軟件結構(即由模塊組成的層次系統)可以用層次圖或結構圖描繪。
??在軟件開發的早期階段考慮測試問題,可以促使軟件開發者設計時注意提高軟件的可測試性。??隨著模塊數增加,設計模塊間接口所需工作量也增加。??逐步求精是規格說明技術、設計和實現技術的基礎。
逐步求精定義:為了能集中精力解決主要問題而盡量推遲對問題細節的考慮。
??模塊獨立的概念是模塊化、抽象、信息隱藏和局部化概念的直接結果。
??耦合強弱取決于模塊接口的復雜程度,進入或訪問一個模塊的點,以及通過接口的數據。??模塊間的耦合程度影響系統的可理解性、可測試性、可靠性和可維護性 ??內聚比耦合更重要。
??深度表示軟件結構中控制的層數,能粗略標識系統大小。
寬度是軟件結構內同一層次上的模塊總數的最大值。
扇出過大意味著模塊過分復雜,扇入越大則共享該模塊的上級模塊越多(好)。好的軟件結構通常頂層扇出高,中層扇出較少,底層模塊有高扇入。
??面向數據流的設計方法把信息流映射成軟件結構,信息流的類型(變換流、事務流)決定映射方法。??經典程序設計:只允許使用順序、IF_THEN_ELSE、DO_WHILE
擴展的結構程序設計:外加DO_CASE、DO_UNTIL 修改的結構程序設計:外加BREAK ??系統響應時間的兩個屬性:長度、易變性 ??用戶界面設計是一個迭代過程。
??過程涉及工具:程序流程圖、盒圖、PAD圖、判定表、判定樹、過程設計語言PDL ??程序復雜度定量度量:
1.McCabe方法(流圖,也叫程序圖):流圖中的區域數=環形復雜度=判定節點數+1
程序的環形復雜度取決于程序控制流的復雜程度,即取決于程序結構的復雜程度。所以它是對測試難度的定量度量,也能對軟件可靠性預測。
2.Halstead方法(根據程序中運算符和操作數總數來度量)??編碼和測試統稱為實現。
??程序的質量主要取決于軟件設計的質量。
??測試的目的:發現軟件中的錯誤,根本任務:保證軟件質量 ??調試的目的:診斷并改正測試中發現的錯誤 ??效率主要指處理機時間和存儲器容量兩方面。
??用戶角度:最嚴重的錯誤是導致程序不能滿足用戶需求的錯誤。
??一旦完成了需求模型就可以著手制定測試計劃,建立了設計模型之后就可以立即開始設計詳細的測試方案。??最佳測試效果:有最大可能性發現錯誤的測試
??模塊組裝測試兩種方法:非漸增式測試(分別測試每個模塊)&漸增式測試(把下一個要測試的同已經測好的結合起來測試)
??漸增方式分 自頂向下集成和自底向上集成
??為了保證加入模塊沒有引進新的錯誤,可能需要進行回歸測試
??自頂向下測試方法主要優點:不需要測試驅動程序,能夠在測試階段的早期發現接口錯誤。
??回歸測試:重新執行已經做過的測試的某個子集。它用于保證由于調試或其他原因引起的變化,不會導致非預期的軟件行為或額外錯誤。
??確認測試的目的:驗證軟件的有效性。
??如果軟件的功能和性能如同用戶期望的,就是有效的 ??確認測試以用戶為主,重要內容是復查軟件配臵。
??條件測試的目的不僅是檢測程序條件中的錯誤,而且是檢測程序中的其他錯誤。??在一段程序中已經發現的錯誤數往往和尚未發現的錯誤數成正比。
??等價劃分法和邊界值分析法都只孤立地考慮各個輸入數據的測試功效,而未考慮多個輸入數據的組合效應。??軟件可靠性:程序在給定的時間間隔內,按照規格說明書的規定成功運行的概率 ??錯誤:由開發人員造成的bug;故障:由錯誤引起的軟件的不正確行為
??軟件可用性:程序在給定的時間點,按照規格說明書上的規定,成功地運行的概率。??預防性維護:為了改進未來的可維護性或可靠性…… ??軟件維護分為 非結構化維護和結構化維護
??維護事件流的最后一個事件是復審,它再次檢驗軟件配臵的有效性,并保證事實上滿足了維護要求表中的要求。??軟件的可維護性:維護人員理解、改正、改動或改進這個軟件的難易程度。提高軟件維護性是支配軟件工程方法學所有步驟的關鍵目標。
??決定軟件可維護性因素:可理解性、可測試性、可修改性、可移植性、可重用性 ??用戶文檔包括:功能描述、安裝文檔、使用手冊、參考手冊、操作員指南 ??面向對象方法用對象分解取代了傳統方法的功能分解。??對象彼此之間僅通過消息傳遞相互聯系。??面向對象=對象+類+繼承+消息傳遞通信
如果僅用對象和消息,則稱為基于對象的方法,而非面向對象的方法。
如果進一步要求把所有對象都劃分成類,則稱為基于類的方法,仍非面向對象的方法。只有同時使用以上4點,才是面向對象的。
??OOD不同于面向過程設計,其思想是:使用現實世界的概念抽象地思考問題而自然的解決問題。(重要的是應用模型)
??人在認識和解決復雜問題時最有力的思維工具是抽象。
??傳統的軟件開發方法以算法為核心,開發過程基于功能分析和分解。
面向對象方法基于構造問題領域的對象模型,以對象為中心構造軟件系統。??對象=描述屬性的數據+對數據施加的操作
??對象是具有相同狀態的一組操作的集合。(從OOD看對象)
對象是對問題域中某個東西的抽象,這種抽象反映了系統保存有關這個東西的能力與他交互的能力。(從信息模擬看對象)
??對象:以數據為中心的、主動的、實現了數據封裝、本質上具有并行性、模塊獨立性好 ??一個對象類型也可以看成是一種抽象數據類型
??類:對具有相同數據和相同操作的一組相似對象的定義。??消息具有:接受消息的對象、消息選擇符(消息名)、變元。??屬性是對客觀世界實體所具有的性質的抽象
??繼承分但繼承和多重繼承(多個父類),使用多重繼承是要注意避免二義性。繼承中,底層的性質將屏蔽高層的同名性質。
??多態性通過虛函數實現。??虛函數->實現動態聯編 ??函數重載通過靜態聯編實現。??OO 3models:
??描述 系統數據結構——對象模型 ??描述 系統控制結構——動態模型 ??描述 系統功能計算——功能模型
??典型的軟件系統使用數據結構(對象模型),執行操作(動態模型)并且完成數據值的變化(功能模型)??聚集表示類與類之間的關系是整體與部分的關系。??泛化即繼承。
??動態模型表示瞬時的、行為化的系統的“控制”性質,它規定了對象模型中的對象的合法變化序列。??所有對象都具有自己的生命周期,狀態是對對象屬性值的一種抽象。一個觸發行為稱作一個事件。??用狀態圖描繪對象的狀態、觸發狀態轉換的事件以及對象的行為(對事件的響應)。
??每個類的動態行為用一張狀態圖來描繪,各個類的狀態圖通過共享事件合并,從而構成系統的動態模型。動態模型是基于事件共享而相互關聯的一組狀態圖的集合。??用例模型描述的是外部行為者所理解的系統功能。
??用例是一個類,他代表一類功能而不是使用該功能的某個具體實例。用例的實例稱腳本。??一個用例模型的創建包括:定義系統、尋找行為者和用例、描述用力、定義用力之間的關系、確認模型。??針對每個類建立的動態模型,描述了類實例的生命周期或運行周期。
??狀態轉換趨勢行為發生,這些行為在數據流圖中->處理,在用例圖中->用例,同時與類圖中的服務對應 ??數據流圖的對應:
數據存儲,原點/終點:對象 數據流:對象的屬性值或對象
對象模型描述了數據流圖中的數據流、數據存儲以及數據原點/終點的結構。
??分析過程總是提取系統需求的過程。
??需求陳述的內容:問題范圍、功能需求、性能需求、應用環境、假設條件 ??面向對象分析首要的工作:建立問題域的對象模型。??對象模型的建立:
確定對象類和關聯 給類增添屬性
用適當的繼承關系合并組織類
建立了動態模型和功能模型后,再定義類中的操作
??應該按問題領域而不是功能分解方法來確定主題。??腳本描述事件序列
??從OOA到OOD,是一個逐漸擴充模型的過程,OOD即是用OO的觀點建立求解域模型的過程。??OO中,對象是最基本的模塊。
??對象之間,應降低交互耦合,提高繼承耦合。??對象間存在 服務內聚、雷內聚、一般-特殊內聚。
??OOD準則:模塊化、抽象、信息隱藏、若耦合、強內聚、可重用。
??類構件的三種重用方式:實例重用(最基本的重用)、繼承重用和多態重用。??系統的總框架是基于問題域的。
??設計實現服務的算法:算法復雜度、易理解、易實現、容易修改 ??程序設計風格中從所完成的功能看,有兩類不同類型的方法:
策略方法:檢查系統運行狀態,處理出錯情況,并不直接完成計算或實現復雜算法。實現方法:僅針對具體數據完成特定處理,用于實現復雜算法。
??OO測試:單元測試、集成測試、確認測試
——授課教師:寧波大學 錢旭明老師
——總結人:寧波大學
張睿卿
第三篇:[ASP.net教程]DevExpress控件開發常用要點(項目總結版)
[ASP.net教程]DevExpress控件開發常用要點(項目總結版)
使用DevExpress控件來做項目開發已經有很長一段時間了,在摸索開發到客戶苛刻要求的過程中,其中碰到過很多問題需要解決的,隨著一個個問題的解決,也留下很多對DevExpress控件的使用經驗及教訓,綜合設計到的多個項目的問題,對這些開發常用的要點進行總結,方便別人也方便自己。提供這些解決方法,一個可以快速應用到項目中,二個也可以作為對界面開發的更高要求對待自己的項目,使得自己的東西更加完美,更加受歡迎。
1、GridControl控件的數據顯示的樣式控制
如上兩圖所示,我們有時候需要控制列表訪問過的顏色變化,或者是時間顯示格式等內容,這個時候設置GridView的RowCellStyle即可實現,如下所示。this.gridView1.RowCellStyle += new DevExpress.XtraGrid.Views.Grid.RowCellStyleEventHandler(gridView1_RowCellStyle);
void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
{
if(e.Column.FieldName == “PublishType”)
{
if(e.CellValue!= null && e.CellValue.ToString()== “中介”)
{
e.Appearance.BackColor = Color.DeepSkyBlue;
e.Appearance.BackColor2 = Color.LightCyan;
}
}
if(e.Column.FieldName == “PublishTime”)
{
e.Column.DisplayFormat.FormatString = “yyyy-MM-dd HH:mm:ss”;
}
if(e.Column.FieldName == “Title”)
{
string id = this.winGridViewPager1.gridView1.GetRowCellDisplayText(e.RowHandle, “Id”);
if(historyDict.ContainsKey(id))
{
e.Appearance.BackColor = Color.DeepSkyBlue;
e.Appearance.BackColor2 = Color.LightCyan;
}
}
}
2、在LayoutControl布局中固定控件寬度 固定寬度后的真實效果。
為了使得界面統一性及更好的控制性,我們一般使用LayoutControl布局控件作為我們添加控件的布局容器,但是這個控件默認是對其中的控件進行按窗口比例進行縮放的,有些客戶就不喜歡這些特點,因為他們的顯示器可能是30寸的(夸張一點點,不過很多寬屏的),這樣很多輸入框就會被拉得很長,這樣小小一個輸入框,可能有很長的一段空白的距離,那樣可能真的不好看,如下圖所示。
設置固定寬度,其實不是很麻煩,需要設置幾個屬性即可 1)設置控件的SizeConstraintsType為DevExpress.XtraLayout.SizeConstraintsType.Custom;2)設置控件的FillControlToClientArea 為False 3)設置控件的ControlMaxSize的大小(必要時也可以設置ControlMinSize),設置例子如下所示。
3、GridControl中的GridView內容打印
由于GridView的良好封裝性,實現打印的代碼很簡單。
private void menu_Print_Click(object sender, EventArgs e)
{
PrintableComponentLink link = new PrintableComponentLink(new PrintingSystem());
link.Component = this.gridControl1;
link.Landscape = true;
link.PaperKind = System.Drawing.Printing.PaperKind.A3;
link.CreateMarginalHeaderArea += new CreateAreaEventHandler(Link_CreateMarginalHeaderArea);
link.CreateDocument();
link.ShowPreview();
}
private void Link_CreateMarginalHeaderArea(object sender, CreateAreaEventArgs e)
{
string title = string.Format(“大體檢-({0})”, this.txtYear.Text);
PageInfoBrick brick = e.Graph.DrawPageInfo(PageInfo.None, title, Color.DarkBlue,new RectangleF(0, 0, 100, 21), BorderSide.None);
brick.LineAlignment = BrickAlignment.Center;
brick.Alignment = BrickAlignment.Center;
brick.AutoWidth = true;
brick.Font = new System.Drawing.Font(“宋體”, 11f, FontStyle.Bold);
}
4、設置GridView的行指示器(行頭)顯示行號
在我的分頁控件以及Winform開發框架很多項目介紹里面,很多都顯示了行號,其實這個在DevExpress中的實現很簡單,如果需要,可以實現在自己的代碼里面。
1)先實現GridView的CustomDrawRowIndicator事件,實現代碼如下所示。
private void advBandedGridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
{
e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
if(e.Info.IsRowIndicator)
{
if(e.RowHandle >= 0)
{
e.Info.DisplayText =(e.RowHandle + 1).ToString();
}
else if(e.RowHandle < 0 && e.RowHandle >-1000)
{
e.Info.Appearance.BackColor = System.Drawing.Color.AntiqueWhite;
e.Info.DisplayText = “G” + e.RowHandle.ToString();
}
}
} 2)然后設置GridView控件的IndicatorWidth為合適的寬度,如40左右則比較好。這樣設置后,就能順利顯示行號了,是不是很方便呢。
5、GridView表頭多行顯示(折行),表頭及行內容居中操作
在一些自定義的列表中,我們為了合理顯示表頭的內容,可能會要求表頭顯示的文字可以折行顯示,然后還需要內容居中顯示,那么在DevExpress該如何操作呢,代碼設置如下所示。
//表頭折行設置
this.gridView1.ColumnPanelRowHeight = 40;
this.gridView1.OptionsView.AllowHtmlDrawHeaders = true;
this.gridView1.Appearance.HeaderPanel.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
//表頭及行內容居中顯示
this.gridView1.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.gridView1.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;然后設置表頭的時候,設置內容使用rn來進行換行,如:體重rn(kg)下面是我分頁控件里面的例子設置,供參考。
this.winGridViewPager1.AddColumnAlias(“Weight”, “體重rn(kg)”);
this.winGridViewPager1.AddColumnAlias(“Pulse”, “脈搏rn(次)”);
this.winGridViewPager1.AddColumnAlias(“BloodSystolic”, “收縮壓”);
this.winGridViewPager1.AddColumnAlias(“BloodDiastolic”, “舒張壓”);
this.winGridViewPager1.AddColumnAlias(“SightLeft”, “視力rn(左)”);
this.winGridViewPager1.AddColumnAlias(“SightRight”, “視力rn(右)”);
6、控件內容輸入問題
在客戶使用軟件的時候,反饋說有一些數字輸入框、日期輸入框,不支持鍵盤輸入內容,經測試,確實是存在這個問題,默認的數字、日期等輸入,都要切換輸入法才可以輸入,不能默認就支持數字的輸入,那么是否有辦法解決呢,當然辦法總是有的。
其實只需要設置 ImeMode=Off 即可解決問題,關于這個屬性,大家可以參考下面的介紹。(就開發而言,記得逢數字,日期的控件,必須設置 ImeMode=Off,否則你的軟件使用客戶會罵娘。
ImeMode 枚舉:指定一個值,該值是用來確定在選定了對象時該對象的輸入法編輯器(IME)的狀態。以下是微軟的解釋:
成員名稱 說明
Alpha 字母數字單字節字符(SBC)。此設置僅對朝鮮語和日語 IME 有效。
AlphaFull 字母數字雙字節字符。此設置僅對朝鮮語和日語 IME 有效。
Close Disable IME 被禁用。如果使用此設置,則用戶無法從鍵盤打開 IME,而且 IME 浮動窗口處于隱藏狀態。
Hangul 朝鮮文 SBC。此設置僅對朝鮮語 IME 有效。
HangulFull 朝鮮文 DBC。此設置僅對朝鮮語 IME 有效。
Hiragana平假名 DBC。此設置僅對日語 IME 有效。
Inherit 繼承父控件的 IME 模式。
Katakana 片假名 DBC。此設置僅對日語 IME 有效。
KatakanaHalf 片假名 SBC。此設置僅對日語 IME 有效。
NoControl 無(默認)。
Off IME 已關閉。此模式指示 IME 已關閉,這意味著該對象的行為方式與英語輸入模式相同。此設置僅對日語、簡體中文和繁體中文 IME 有效。
On IME 已打開。此值指示 IME 已打開,可以輸入中文或日語特定的字符。此設置僅對日語、簡體中文和繁體中文 IME 有效。