freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java教學評價管理系統(tǒng)畢業(yè)設計英文文獻翻譯-資料下載頁

2024-11-17 23:06本頁面

【導讀】beginningtocode.thatiteration.Whataretheobjects?(Howdoyoup

  

【正文】 似乎有風險是由于“匆忙”進入初步實現(xiàn)而引 起的,但是這樣反而可以降低風險,因為我們正在較早地確定一個特定的方法對這個問題是不是可行的。產(chǎn)品開發(fā)也是一種風險管理。 經(jīng)常有人提到“建立一個然后丟掉”。在 OOP 中,我們?nèi)匀豢梢园岩徊糠謥G掉,然而由于代碼被封裝成類,在第一次的迭代中我們必將生成一些有用的類設計,并且一些不必拋棄的關于系統(tǒng)設計的有價值的思想。因此,在問題的第一次快速遍歷中不僅要為下一遍分析、設計及實現(xiàn)產(chǎn)生關鍵的信息,還為下一遍建立代碼基礎。 也就是說,如果我們正在考慮的是一個包含豐富細節(jié)且需要許多步驟和文檔的方法學,將很難判斷什么時候停止。應 當牢記我們正努力尋找的是什么: 1. 什么是對象? (如何將項目分成多個組成部分?) 2. 它們的接口是什么? (需要向每個對象發(fā)送什么信息?) 只要我們知道了對象和接口,就可以編寫程序了。由于各種的原因我們可能需要比這些更多的描述和文檔,但我們需要的信息不能比這些更少。 整個過程可以分 5 個階段完成,階段 0 只是使用一些結(jié)構(gòu)的初始約定。 階段 0:制定計劃 我們必須首先決定在此過程中應有那些步驟。這聽起來很簡單(事實上,所有聽起來都是挺簡單的),但是人們常常在開始編碼之前沒有考慮這一問題。如果計劃是“讓我們一開始就編碼”,那 很好(有時,當我們對問題充分理解時,這是合適的)。至少,我們承認這是一個計劃。 在這個階段,我們可能還要決定一些另外的過程結(jié)構(gòu),但不是全部。可以理解,有些程序員喜歡用“休假方式”工作,也就是在開展他們的工作過程中,沒有強制性的結(jié)構(gòu)?!跋胱龅臅r候就做”。這也許在短時間內(nèi)是吸引人的,但是我發(fā)現(xiàn),在進程中設立一些里程碑可以幫助集中我們的注意力,激發(fā)我們的熱情,而不是只注意“完成項目”這個單一的目標。另外,里程碑將項目分成更細的階段使得風險更小(此外里程碑還提供更多慶祝的機會)。 當我開始研究小說結(jié)構(gòu)時(有一天我也 要寫小說),我最初是反對結(jié)構(gòu)思想的,我覺得自己在寫作時,直接下筆千言就行了,但是,稍后我認識到,在涉及計算機的文字時,本身結(jié)構(gòu)足夠清晰,所以不需要多想。但是我仍然要組織文字結(jié)構(gòu),雖然這在我頭腦中是半意識的。即便我們認為自己的計劃只是一上來就開始編碼,在后續(xù)階段仍然需要不斷地詢問和回答一些問題。 任務陳述 無論構(gòu)建什么系統(tǒng),不管如何復雜,都有其基本目的的,有其要處理的業(yè)務,有其所要滿足的基本需要。通過依次審視用戶界面、硬件或系統(tǒng)的特殊細節(jié)、算法編碼和效率問題,我們將最終找出它的核心。通常簡單又直接。就像來自好 萊塢電影的所謂的高層概念,我們能用一句或兩句話表述。這種純粹的表述是起點。 高層概念很重要,因為它設定了項目的基調(diào),這是一種任務陳述。我們不必一開始就讓它正確(我們也許正處于在項目變得完全清晰之前的最后階段),但是要不停地努力直到它越來越正確。例如:在一個空中交通指揮系統(tǒng)中,我們可以從關于正在建立的系統(tǒng)的一個高層概念入手:“塔樓程序跟蹤飛機”。但是當我們將這一系統(tǒng)收縮以適用于一個非常小的機場時,它考慮將發(fā)生什么情況:可能只有一個控制人員甚至什么都沒有。一個更有用的模型不應當它描述問題那樣多地關注正在創(chuàng)建的解 決方案,例如“飛機到達、卸貨、維修、重新裝貨和離開等”。 第一階段:我們在做什么? 這一階段中我們有必要把注意力始終放在核心問題上:確定這個系統(tǒng)要做什么。為此,最有價值的工具是一組所謂的“用例”。用例指明了系統(tǒng)中的關鍵特性,它們將戰(zhàn)線我們使用的一些基本的類。它們實際上是對類似下述這些問題的描述性回答: ? “誰將使用這個系統(tǒng)?” ? “執(zhí)行者用這個系統(tǒng)做什么? ? “執(zhí)行者如何使用這個系統(tǒng)工作?” ? “如果其他人也做這件事,或者同一個執(zhí)行者有不同的目標,該怎么辦?(揭示變化) ? “當使用這個系統(tǒng)時,回發(fā)生什么問題?(揭示異 常) 通過確定用戶在系統(tǒng)中可能有的所有的交互行為,用例就生成了需求規(guī)范說明。我們試圖找到系統(tǒng)的完整用例,完成之后,我們就得到了系統(tǒng)任務的核心內(nèi)容。將注意力集中在用例上的好處是,它們總是帶回到要點部分而不留心那些對完成任務無關緊要的問題。也就是說,如果得到了全部用例就可以描述系統(tǒng)并進入到下一個階段。在最初的嘗試中我們很難完全得到特征,但這已經(jīng)很好了。任何事物隨著時間的推移都會自己暴露出來,如果在這一點上就要求系統(tǒng)規(guī)范說明完美將會永遠止步不前。 階段 2:我們將如何建立對象? 在這一階段,我們必須做出設計,描述這 些類和他們?nèi)绾谓换?。確定類和交互的出色技術是類職責協(xié)同 (ClassResponsibilityCollaboration, CRC)卡片。此技術的部分價值是它非常簡單:只有一組 3 到 5 英寸的空白卡片,在上面書寫。每張卡片描述一個類,在卡片上寫的內(nèi)容是: 1. 類的名字。這是很重要的,因為名字體現(xiàn)了類行為的本質(zhì),所以有一目了然的作用。 2. 類的職責:它應當做什么。通常,它可以僅由成員函數(shù)的名字陳述(因為在好的設計中,這些名字應當是描述性的),但并不產(chǎn)生其他的注記。如果需要開始這個過程,請從一個懶程序員的立場來看這個問題:你希望有什么樣的對象魔術般地表現(xiàn),把你的問題全部解決? 3. 類的協(xié)同:它與其他類有哪些交互?“交互”是非常寬泛的術語。它可以是一些已經(jīng)存在的其他對象對這個類的對象提供的服務。協(xié)同還應當考慮這個類的觀眾。例如如果創(chuàng)建了鞭炮,那么誰將觀察它,是藥劑師,還是觀眾?前者希望知道鞭炮由什么化學成分組成,后者對鞭炮爆炸后的顏色和形狀有反應。 我們可能想讓卡片更大一些,因為我們希望從中得到全部信息,但是他們是非常小的,這不僅能保持我們的類小,而且能防止過早地陷入許多的細節(jié)。如果一張小卡片上放不下類所需要的信息,那么這個類就太復雜了(或者是考慮過細了,或者應當創(chuàng)建多個類)。理想的類應當一目了然。 CRC 卡片的思想是幫助我們找到設計的第一印象,是的我們能得到總體概念,然后精煉我們的設計。 在我們開始用 CRC 卡片之前,當提出最初的設計時,我最成功的咨詢經(jīng)驗就是站在一個沒有 OOP 經(jīng)驗的項目組前,在白板上描述對象。我們討論對象應當如何互相通信,擦除其中的一些 ,用其他的對象代替它們。實際上我是在白板上管理所有的“ CRC 卡片”。項目組(他們知道項目的目標)真正地在做這個設計,他們“擁有”這個設計,而不是獲得即成的設計。我所做的所有事情就是通過提問正確的問題,提煉這些假設,并且從項目組得到反饋,修改這些假設來指導這個過程。這個過程的真正好處是項目組學習了如何做面向?qū)ο蟮脑O計,不是通過復審抽象的例子,而是通過在一個設計上工作,這對于他們是最有興趣的。 制作了一組 CRC 卡片之后,我們可能希望用 UML 創(chuàng)建這個設計的更形式化的描述。我們并不非要用 UML,但它可能有所幫助,特 別是如果我們要將一個圖表掛在墻上,讓大家一起思考時,這是一個很好的想法。除了 UML 之外的另一個選擇是對象機器接口的文字描述,這或許依賴于我們的程序設計語言,也就是代碼本身。 UML 還提供了另外一種圖形符號來描述系統(tǒng)的動態(tài)模型。在一個系統(tǒng)或子系統(tǒng)的狀態(tài)轉(zhuǎn)換占主導地位,以至于它們需要自己的圖表的情況下,這是有幫助的(例如在控制系統(tǒng)中)。我們可能還需要描述數(shù)據(jù)結(jié)構(gòu),因為系統(tǒng)或子系統(tǒng)中數(shù)據(jù)結(jié)構(gòu)是重要因素(例如數(shù)據(jù)庫)。 當已經(jīng)描述了對象及其接口后,階段 2 也就要完成了。這時已經(jīng)知道了對象中的大多數(shù),通常會有對象漏掉, 知道階段 3 才被發(fā)現(xiàn)。這沒問題。我們關心的是最終能夠找到所有的對象。在這個階段較早地發(fā)現(xiàn)它們是好的。因為 OOP 提供了充分的結(jié)構(gòu),所以如果我們稍遲發(fā)現(xiàn)它們也可以。事實上,對象設計可能在程序設計全過程的五個階段中都會發(fā)生。 對象設計的五個階段 階段 3:創(chuàng)建核心 這是從粗線條設計向編譯和執(zhí)行可執(zhí)行代碼體的最初轉(zhuǎn)換階段,特別是,它將證明或否定我們的體系結(jié)構(gòu)。這不是一遍的過程,而是反復地建立系統(tǒng)的一系列步驟的開始,我們將在階段 4 中看到這一點。 我們的目標是尋找實現(xiàn)系統(tǒng)體系結(jié)構(gòu)的核心,盡管這個系統(tǒng)在第一遍不太完整。我們正 在創(chuàng)建一個框架,在將來的反復中可以完善它。我們正在完成第一遍多系統(tǒng)集成和測試,向風險承擔者提出反饋意見,關于他們的系統(tǒng)看上去如何以及如何發(fā)展等等。理想情況下,我們還可以暴露一些嚴重的問題。我們大概還可以發(fā)現(xiàn)對最初的體系結(jié)構(gòu)能做那些改變和改進 本來在沒有實現(xiàn)這個系統(tǒng)之前,可能是無法了解這些內(nèi)容的。 建立這個系統(tǒng)的一部分工作是實際檢查,就是對照需求分析和系統(tǒng)規(guī)范說明與測試結(jié)果(無論需求分析和規(guī)范說明以何種形式存在)。確保我們的測試結(jié)果與需求和用例符合。當系統(tǒng)核心穩(wěn)定后,我們就可以向下進行和增加更多的功能了 。 階段 4:迭代用例 一旦代碼框架運行起來,我們增加的每一組特征本身就是一個小項目。在一次迭代期間,我們增加一組特征,一次迭代是一個相當短的開發(fā)時期。 一次迭代有多長時間?理想情況下,每次迭代為一到三個星期(具體歲實現(xiàn)語言而異)。在這個 期間的最后,我們得到一個集成的、測試過的、比前一周期有更多功能的系統(tǒng)。特別有趣的是迭代的基礎:一個用例。每個用例是一組相關功能,在一次迭代中加入系統(tǒng)。這不僅為我們更好地提供了“用例應當處于什么范圍內(nèi)”的概念,而且還對用例概念進行了鞏固,在分析和設計之后這個概念并為丟棄,它是 整個軟件建造過程中開發(fā)的基礎單元。 當我們達到目標功能或外部最終期限到了,并且客戶對當前版本滿意時,我們就停止迭代, (記住,軟件行業(yè)是建立在雙方約定的基礎上的。)因為這個過程是迭代的,所以我們有許多機會交貨,而不是只有一個終點;開放源代碼項目是在一次迭代的和高反饋的環(huán)境中開發(fā),而這正是它成功的原因。 有許多理由說明迭代開發(fā)過程是有價值的。我們可以更早地揭露和解決嚴重問題,客戶有足夠的機會改變它們的意見,程序員會更滿意,能更精確地掌握項目。而另一個重要的好處是對風險承擔者意見的反饋,他們能從項目當前狀態(tài)準確地 看到各方面因素。這可以減少或消除令人頭腦昏昏然的會議,增強風險承擔者的信心和支持。 階段 5:進化 這是開發(fā)周期中,傳統(tǒng)上稱為“維護”的一個階段,是一個含義廣泛的術語,包含了從“讓軟件真正按最初提出的方式運行”到“添加用戶忘記說明的性能”,到更傳統(tǒng)的“排除暴露的錯誤”和“在出現(xiàn)新的需求時添加性能”。所以,對術語“維護”有許多誤解,它已經(jīng)有點虛假的成分,部分因為它假設我們已經(jīng)實際上建立了原始的程序,且所有的需要就是改變其中一些部分,加加油,防止生銹。也許,有更好的術語來描述所進行的工作。 此處將使用術語“進化” 。這就是說,“我們不可能第一次就使軟件正確,所以應該為學習、返工和修改留有余地”。當我們對問題有了深入學習和領會之后,可能需要做大量的修改。如果我們使軟件不斷進化,直到使軟件正確,無論在短期內(nèi)還是在長期內(nèi),將產(chǎn)生極為優(yōu)雅的程序。進化是使程序從好到優(yōu)秀,是使第一遍不理解的問題變清楚的過程。它也是我們的類能從只為一個項目使用進化為可重用資源的過程。 “使軟件正確”的意思不只是使程序按照要求和用例工作,還意味著我們理解代碼的內(nèi)部結(jié)構(gòu),并且認識到它能很好地協(xié)同工作,沒有笨拙的語法和過大的對象,也沒有難看的暴露的代碼 。另外,必須認識到,程序結(jié)構(gòu)將經(jīng)歷各種修改而保全下來,這些修改貫穿整個生命期,也要認識到,這些修改可以是很容易進行和很簡潔的。這可不是小成就。我們不僅必須懂得我們正在建造的程序,而且必須懂得這個程序?qū)⑦M化 [我稱之為改變矢量( vector of change) ]。幸運的是,面向?qū)ο蟪绦蛟O計語言特別適合支持這樣連續(xù)的修改,由對象創(chuàng)建的邊界是防止結(jié)構(gòu)被破壞的保障。面向?qū)ο蟪绦蛟O計語言還允許我們做大幅度改變而不引起代碼的全面動蕩,這在面向過程型程序中似乎太劇烈了。事實上,支持進化可能是 OOP的最重要的好處。
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1