十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
借助隱喻可以更加深刻地理解軟件開(kāi)發(fā)的過(guò)程。通過(guò)把不太理解的東西和一些你較為理解、且十分類(lèi)似的東西做比較,這樣可以對(duì)不太理解的東西產(chǎn)生更深刻的理解,這種使用隱喻的方式叫做建模。
隱喻的威力在于其生動(dòng)性,能夠讓你把握整個(gè)概念,暗示各種屬性、關(guān)系以及需要查證的部分。但是過(guò)度引申時(shí),模型也會(huì)誤導(dǎo)人們。
軟件隱喻的作用更像是啟示,而不是算法,告訴你如何去尋找答案。算法是一套定義明確的指令使你完成某個(gè)特定的任務(wù),算法是可預(yù)測(cè)的、確定的、不易變化的。
算法與啟發(fā)式方法之間的區(qū)別就在于其距離最終解決辦法的間接程度:算法直接給你解決問(wèn)題的指導(dǎo),而啟發(fā)式方法告訴你如何發(fā)現(xiàn)這些指導(dǎo)信息或者至少到哪里去尋找他們。
對(duì)于編程來(lái)說(shuō),大的挑戰(zhàn)是將問(wèn)題概念化(建模),編程中的很多錯(cuò)誤是概念性的錯(cuò)誤,因?yàn)槊恳粋€(gè)問(wèn)題在概念上都是獨(dú)特的,所以要找到一套能解決所有問(wèn)題的指導(dǎo)規(guī)則是很難得,甚至不太可能,所以能夠一般性質(zhì)地知道大致如何解決問(wèn)題,至少也和知道如何解決特定問(wèn)題一樣有價(jià)值。
軟件的牡蠣養(yǎng)殖觀點(diǎn):牡蠣制造珍珠的過(guò)程隱喻軟件開(kāi)發(fā),其中關(guān)鍵詞語(yǔ)有“增量的”,“迭代的”,“自適應(yīng)的”以及“演進(jìn)的”。以增量方式進(jìn)行設(shè)計(jì)、編譯和測(cè)試,都是目前已知的最強(qiáng)有力的軟件開(kāi)發(fā)概念。
在進(jìn)行增量式開(kāi)發(fā)時(shí),先做出軟件系統(tǒng)的一個(gè)盡可能簡(jiǎn)單、但能夠運(yùn)行的版本,它不必接受真實(shí)的輸入,無(wú)須對(duì)數(shù)據(jù)進(jìn)行真正的處理,不用產(chǎn)生真實(shí)的輸出,僅僅只需要一個(gè)足夠強(qiáng)壯的骨架,支撐起未來(lái)將要開(kāi)發(fā)的真實(shí)系統(tǒng)。對(duì)于標(biāo)志處的每一項(xiàng)基本功能,僅需要調(diào)用虛假的類(lèi)。在骨架形成之后,要一點(diǎn)點(diǎn)地在其上附著肌肉和皮膚:將虛假的類(lèi)替換為真正的類(lèi),接受真實(shí)的輸入,產(chǎn)生真實(shí)的輸出。
軟件構(gòu)建:首先要決定準(zhǔn)備建一個(gè)什么類(lèi)型的房子---問(wèn)題定義,接下來(lái)與建筑師探討總體設(shè)計(jì)---軟件架構(gòu)設(shè)計(jì),然后畫(huà)出詳細(xì)的藍(lán)圖并雇承包人---軟件詳細(xì)設(shè)計(jì),在然后打地基、搭房屋框架、砌墻、通水電等---軟件構(gòu)建,油漆工、裝修工將房子美化---軟件優(yōu)化,檢查人員檢查工地、地基、框架、布線等---軟件評(píng)審。
通常自己編寫(xiě)現(xiàn)成的、可以買(mǎi)得到的代碼是沒(méi)有意義的,除非在特殊情況下需要定制。